PC & IT

AWS EC2 の ブログサイトを監視する Amazon CloudWatch

Amazon CloudWatch(リソースとアプリケーションの監視と管理)

プログの投稿記事が増えるとサイトの障害対策が必要となります、バックアップ&リストアー対策は必須さらにプログサイトの監視も必要です、事前に不具合を検知して対策することが被害を最小限の抑えることができます。

またサービス停止時間を最小限にするそのためある程度の自動監視は必要です

❏最低限行うべき監視項目   

   ・ 外部から監視して http 通信はできているか   
   ・
ディスクの使用率( ディスクのパンクが致命傷になることも)
   ・CPU使用
 ・メモリ使用率

Cloudwatch による監視画面サンプル
しきい値を設定してメールで通知することもできます

お勧め書籍
スペシャリストが解説する Amazon Web Services 知っておきたい基礎知識 IT Leaders選書

クラウドサービスにおいて最有力候補に挙げられるAmazon.comが提供する「Amazon Web Services(AWS)」を、AWSのスペシャリストである著者が解説!
 AWSは、2006年7月にたった2つのサービスでスタートしたが、その後加速度的に拡張され、約50のサービスが提供されている。クラウドサービス競合各社が、AWSのサービス/料金を基準に、自社のサービス内容を決めているのが現状だ。一方で、サービスの種類が多く、かつ変化が早いために、AWSの全容を把握することが容易ではないのも事実である。
 本書は、このAWSの概要や特徴、個々のサービス内容や仕組みが理解できるよう、図解を使って丁寧に解説。
 解説する内容は、ネットワーク設計の自由度も高く、セキュリティ機能も豊富な仮想サーバー、機能やOS・ストレージ容量、使用用途の選択など柔軟性も高いデータベースなどのインフラ系のサービスから、デスクトップ環境やDevOpsによるアプリ開発環境、IoTやモバイル、アナリティクス向けサービスまで、続々投入される最新のAWSサービスを、図解を使って丁寧に紹介。
 AWSの基本知識がないユーザー、導入を検討している企業経営者でも、本書を読めば、AWS導入の障壁が解消できる!

                       

今回利用するサービス・イメージ図

Amazon CloudWatch よる  http 通信、ディスク容量などの監視

Amazon CloudWatchについては AWS サイトに詳細が記載されているがかなりの量がある、特定のOS、特定バージョンでの記載がないので特定のEC2に関して具体的な例を紹介します。

Amazon CloudWatchの構成はLinux,Windoows ともに同じです、OSの種類やバージョンにより下記エージェントが既に導入済みの場合や、バージョンや種類が異なります。

参照リンク:コマンドラインを使用して CloudWatch エージェントをダウンロードおよび設定する
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html

インスタンスにamazon-cloudwatch-agentを導入しないでできる監視項目もありますが、ディスク容量などは監視できないのでamazon-cloudwatch-agentの導入をお勧め致します

今回は以下を例に紹介しますWordPress Certified by Bitnami and Automattic-5-2-1-r50 on Ubuntu 16-04-AutogenByAWSMP-1
OS の種類やバージョンはEC2のインスタンスの説明欄に表示されています

設定の項目

EC2からCloudWatchへのアクセス、AWS System Managerとの連携(ロール)の作成
amazon-ssm-agent インストール (Ubuntu 16-04は導入済み)
amazon-cloudwatch-agent インストールと設定 

AWSマネージメントコンソールにログインし、IAMを開きます

マネージメントコンソールにログインし、IAMを開きます

ロールを開き、[ロールの作成] ボタンを押す
下記画面が表示されるので 
AWS サービス 選択
EC2 を選択
[次のステップ:アクセス権限]  に進む

下記2つのポリシーが既にあるのでフィルターに以下を入力し、それぞれにチェックを付け、
[
次のステップ: タグ] を選択。

ポリシーのフィルターに 
AmazonEC2RoleforSSM , CloudWatchAgentAdminPolicy
を入ロする

タグの追加 (オプション) で[次のステップ: 確認] を選択
ロール名を「CloudWatchAgentServerRole」と入力して ロールを作成する
( ロール名はわかりやすければ何でも良い)

[ロールの作成] を選択

 

作成したロールCloudWatchAgentServerRole 監視するインスタンスへ割り当てる

EC2の監視するインスタントを選択して 「アクション」「インスタンスの設定」「IAMロールのの割当て/置き換」を選択してロールを割り当てる

CloudWatchAgentServerRole を選択して 

[適用] ボタンを押す

amazon-ssm-agent インストール (Ubuntu 16-04は導入済み)

導入されているか確認する方法
コマンドラインで行います。インスタンスへの接続は AWS EC2 で ブログサイトを立ち上げる 参照
https://www.tiemblog.com/archives/177 

SSM エージェント が実行中であるかどうかを判断するために次のコマンドを実行します。
sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service

Ubuntu Server 18.04 および 16.04 LTS 64 ビットインスタンス (Snap パッケージ使用) への SSM エージェント のインストール

sudo snap install amazon-ssm-agent –-classic

❏ amazon-ssm-agent の開始、停止、ステータスコマンド
sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service
sudo systemctl stop snap.amazon-ssm-agent.amazon-ssm-agent.service
sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service

参考:Amazon EC2 Linux インスタンスに SSM エージェント を手動でインストールする
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-manual-agent-install.html#agent-install-ubuntu Ubuntu Server 18.04 および 16.04 LTS 64 ビットインスタンス (Snap パッケージ使用) への SSM エージェント のインストール

CloudWatchエージェントのインストール

amazon-ssm-agentが稼働している場合 AWS System Manager経由でもCloudWatchエージェントのインストールが可能ですが設定はコマンドラインでしかできないので今回はコマンドラインで行います

参考:コマンドラインを使用して CloudWatch エージェントをダウンロードおよび設定する
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html

cloudwatch-agentをダウンロードする

wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

cloudwatch-agentをインストールする
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb

amazon-cloudwatch-agen の環境設定を行う

amazon-cloudwatch-agent-config-wizard で行います
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

空・改行でdefault が設定されます、今回は選択の数値を入力します


=============================================================
= Welcome to the AWS CloudWatch Agent Configuration Manager =
=============================================================
On which OS are you planning to use the agent?
1. linux
2. windows
default choice: [1]:
1
Trying to fetch the default region based on ec2 metadata...
Are you using EC2 or On-Premises hosts?
1. EC2
2. On-Premises
default choice: [1]:
1
Which user are you planning to run the agent?
1. root
2. cwagent
3. others
default choice: [1]:
2    ※ ここは 2. cwagent を選択 後で cwagent を root  権限に変更しました Cloudwatch 監視画面に cwagent で表示したいため

Croudwatchで 監視可能なメトリックス一覧のグループ

Do you want to turn on StatsD daemon?
1. yes
2. no
default choice: [1]:
1
Which port do you want StatsD daemon to listen to?
default choice: [8125]
8125
What is the collect interval for StatsD daemon?
1. 10s
2. 30s
3. 60s
default choice: [1]:
1
What is the aggregation interval for metrics collected by StatsD daemon?
1. Do not aggregate
2. 10s
3. 30s
4. 60s
default choice: [4]:
4
Do you want to monitor metrics from CollectD?
1. yes
2. no
default choice: [1]:
1
Do you want to monitor any host metrics? e.g. CPU, memory, etc.
1. yes
2. no
default choice: [1]:
1
Do you want to monitor cpu metrics per core? Additional CloudWatch charges may apply.
1. yes
2. no
default choice: [1]:
1
Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName) into all of your metrics if the info is available?
1. yes
2. no
default choice: [1]:
1
Would you like to collect your metrics at high resolution (sub-minute resolution)? This enables sub-minute resolution for all metrics, but you can customize for specific metrics in the output json file.
1. 1s
2. 10s
3. 30s
4. 60s
default choice: [4]:
4
Which default metrics config do you want?
1. Basic
2. Standard
3. Advanced
4. None
default choice: [1]:   ※ ここはディスクの容量を監視するので 2 を選択しました
2

※ config が表示されますが  略

Are you satisfied with the above config? Note: it can be manually customized after the wizard completes to add additional items.
1. yes
2. no
default choice: [1]:
1
Do you have any existing CloudWatch Log Agent (http://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html) configuration file to import for migration?
1. yes
2. no
default choice: [2]:
2
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
1
Log file path:
/opt/aws/amazon-cloudwatch-agent/logs
Log group name:
default choice: [logs]
空 enter 

Log stream name:
default choice: [{instance_id}]
空 enter

Do you want to specify any additional log files to monitor?
1. yes
2. no
default choice: [1]:
1
The value ris not valid to this question.
Please retry to answer:
Do you want to specify any additional log files to monitor?
1. yes
2. no
default choice: [1]:
2
Saved config file to /opt/aws/amazon-cloudwatch-agent/bin/config.json successfully.
Current config as follows:
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"

※ config が表示されますが  略

Please check the above content of the config.
The config file is also located at /opt/aws/amazon-cloudwatch-agent/bin/config.json.
Edit it manually if needed.
Do you want to store the config ix the SSM parameter store?
1. yes
2. no
default choice: [1]:
1
What parameter store name do you want to use to store your config? (Use 'AmazonCloudWatch-' prefix if you use our managed AWS policy)
default choice: [AmazonCloudWatch-linux]

Trying to fetch the default region based on ec2 metadata...
Which region do you want to store the config in the parameter store?
default choice: [ap-northeast-1]

Which AWS credential should be used to send json config to parameter store?
1. ASIART5VN4MSB6XNVLTY(From SDK)
2. Other
default choice: [1]:
2

※ 今回はIAM の admin のキーを割り振ることにしました
Please provide credentials to upload the json config file to parameter store.
AWS Access Key:
xxxxxxVN4MSKH4SQ7QG
AWS Secret Key:
xxxxxxxxxxxxxn28gm2cDnybJp77/CfXuFyAK

Successfully put config to parameter store AmazonCloudWatch-linux.
Program exits now.

❏ amazon-cloudwatch-agentの開始、停止、ステータスコマンド

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
amazon-ssm-agent が起動されていることが前提です)

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop

AWSマネージメントコンソールにログインし、cloudwatch を開く
メトリクスに cwagent が追加されます

-PC & IT