michimani.net

[レポート] JAWS-UG 初心者支部#31 「監視編 サーバーのモニタリングの基本を学ぼう」 #jawsug_bgnr

2020-09-01

JAWS-UG 初心者支部のオンラインイベント 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう に参加してきました。今回は監視編ということで、 WordPress でサイトを構築して CloudWatch で様々なメトリクスを確認するという内容でした。

目次

概要

今回のハンズオンの概要です。資料は slideshare で公開されています。

イベントページはこちら。

CloudFormation で WordPress 環境をサクッと構築

今回のハンズオンでは、まず最初に CloudFormation で次のような構成を作ってしまいます。

JAWS-UG 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう from Hiroki Uchida

今回のメインは 監視 なので、その土台となる WordPress の環境をサクッと一律で準備できてしまうのは、やはり CloudFormation の、というか IaC の良いところだなと思いました。とりあえず CloudFormation のスタック作成さえできればハンズオンの準備が整うので。

各メトリクスの確認

今回作成したリソース (EC2, ELB, RDS) に関するメトリクスをマネジメントコンソールで確認しました。

JAWS-UG 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう from Hiroki Uchida

アラームの設定

メトリクスに対してアラームを設定して、 SNS 経由でメールアドレスに通知が飛んでくることを確認しました。

JAWS-UG 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう from Hiroki Uchida

WordPress のログ確認

WordPress のアクセスログ、エラーログを CloudWatch Logs 確認しました。

JAWS-UG 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう from Hiroki Uchida

WordPress のログ (Apache のログ) を CloudWatch Logs に送信するには、 CloudWatch Agent で次のように設定します。

{
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "/var/log/httpd/access_log",
                        "log_group_name": "wordpress_access_log",
                        "log_stream_name": "{instance_id}"
                    }, {
                        "file_path": "/var/log/httpd/error_log",
                        "log_group_name": "wordpress_error_log",
                        "log_stream_name": "{instance_id}"
                    }
                ]
            }
        }
    }
}

今回は、上記の情報を含んだ CloudWatch Agent の設定ファイルを /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/ に配置するようなスクリプトが EC2 インスタンスの User Data に記載されていました。

知らんかったぞ、それ

今回のハンズオンでは「へぇ〜」「知らんかった」という部分があったのでメモしておきます。

CloudWatch メトリクスグラフの現地時間表示

CloudWatch の各メトリクスをグラフ表示した際に、 X 軸の時刻は UTC になっています。これを現地時間に変換して表示できるというのを初めて知りました。

厳密にいつからこの機能があったかというのはわからないのですが、クラメソさんの記事で 2017 年時点で紹介されていたので、自分が AWS を触り始めた頃からあったようです。

さすがクラメソさん、その機能がいつ頃から存在していたかもわかってしまうんですね…。

当たり前ですが、公式ドキュメントにもしっかり記述がありました。

RDS のメトリクスはデフォルトで 1 分間隔

CloudWatch で取得しているメトリクスはデフォルトで 5 分間隔で、有料の詳細モニタリングを有効にすることで 1 分間隔で値を取得できるという認識でいました。

これはそうなんですが、今回出てきた RDS に関するメトリクスに関してはデフォルトで 1 分間隔でデータを取得できるようです。

Amazon RDS は、アクティブな各データベースのメトリクスを 1 分ごとに CloudWatch に自動送信します。CloudWatch の Amazon RDS メトリクスに対する追加料金は発生しません。

Amazon RDS ​のモニタリングの概要です。 - Amazon Relational Database Service

まとめ

JAWS-UG 初心者支部のオンラインイベント 初心者支部 #31 監視編 サーバーのモニタリングの基本を学ぼう に参加してきました。

久々に初心者支部のハンズオンに参加することができて、やっぱり決められた時間で集中して作業するというのはいいなと再確認しました。

メトリクスのグラフを見て、メトリクスに対してアラート設定して、というのは普段からやっているのですが、それでも初めて知ることがあり勉強になりました。

参加者からの質問にもありましたが、今回は Apache の access_logerror_log を別々のロググループに設定していましたが、そのあたりの設計思想に関してはオライリーから出ている「入門 監視」が参考になるということでした。この書籍に関しては以前に読んだのですが、あらためて読んでみようと思います。

また、今回のハンズオンは下記のハンズオンが元になっているようなので、合わせて確認してみると良いかもということでした。

あらためて、家にいながらにしてこういったハンズオンイベントに参加できるのは大変ありがたいことだなと感じました。オンラインで開催していただいた運営の方々、ありがとうございました!

あと全然関係ないですが、今回のハンズオンを進行していただいた AWS の内田さん ( @nikuyoshi ) の映りがめちゃくちゃキレイでした。


comments powered by Disqus