この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
はじめに
こんにちは。
株式会社協栄情報クラウド事業本部の伊藤です。
まず初めに、技術ブログを書くのは今回が初めてですので、
記事の中で間違っている部分がございましたらご教示いただければと思います。
目的
今回は、ハンズオン演習を通してAWS System Mnager(以下、SSM)というサービスについて
ちゃんと理解できていないなと感じたので、サービス全体の概要と目的を把握して
有効活用していけるように記事にまとめました。
本ブログでは、私が実際にハンズオン演習で使用した
「アプリケーション管理」の中の"パラメータシート"について
ピックアップしてハンズオンを行っております。
説明
SSMについて
SSMとは、「AWS上およびマルチクラウドやハイブリッド環境内のリソースを管理」するサービスです。
特徴は主に4つに分類されます。
【業務管理(運用データの一元化)】
Explorer
Opscenter
Incident Manager
【アプリケーション管理(アプリケーションの問題解決・管理)】
Application Manager
App config
パラメータストア
【変更管理(パッチ適用やリソース変更の自動化など)】
オートメーション
Change Manager
メンテナンスウインドウ
【ノード管理(セキュリティイベントの修復)】
Fleet Manager
セッションマネージャ
パッチマネージャ
このように、SSMを使用するときははAWSリソースのインフラを管理したいときです。
「障害発生した時の通知や障害発生時の記録が欲しい」といったときはIncident Mnanagerを使ったり、
「作業したいから承認者にリクエストしたい」ときはChange Managerを使用して、
それを"オートメーション"で安全に実行することが可能になったりします。
SSMを利用するためには「SSM Agent」を対象のEC2インスタンスへインストールしてあげる必要があります。
SSMのパラメータストアとは
EC2に対して構成変更を加えるときに使う設定ファイルを保存できる機能"のことです。
サービスを開発するときにパラメータストアに保存されているパスワードやデータ等を
パラメータストアから引っ張ってくることが可能になります。
今回のハンズオンでは、
①SSMからパラーメータ作成
②EC2インスタンス作成
③EC2にSSH接続し、CloudWatchAgentをインストール
④collectedをインストール
※DiskUsedPercentメトリクスを取得するため
⑤①で作成したパラメータを参照してCloudWatchAgentを起動
⑥実際にCloudWatchにEC2が反映されているか確認
の順番にやっていきます。
ハンズオンの構成
今回のハンズオンの構成図はこちらになります。
確認したいこと
今回は、EC2作成後に打つコマンドによってEC2の欲しい情報が
CloudWatchに反映できているかどうかを確認します。
ハンズオンの事前準備
ハンズオンを始めていく前に、前提として以下のものは作成済みとします。
【事前に作成したもの】
・インターネットゲートウェイ
・EC2インスタンス(パブリック)
※AMIはAmazon Linux 2を使用
※SSHでEC2に接続するためにセキュリティグループにはタイプSSHソースMYIP
・EC2用のIAMロール
(IAMポリシーにはCloudWatchAgentServerのみ)
では実際にやっていきます。
ハンズオン
①SSMからパラーメータ作成
設定項目 | 設定値 | 理由 |
---|---|---|
名前 | AmazonCloudWatch-demo-ito-blog | CloudWatchAgentの設定パラメータとして使用する場合AmazonCloudWatchより始まる名前である必要がある |
値 | 下記の値 | DiskUsedpercentメトリクスとApacheのアクセスログを出力するため |
※上記以外はデフォルトで作成しています。
・値の設定値
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/httpd/access_log",
"log_group_name": "/var/log/httpd/access_log",
"log_stream_name": "{instance_id}"
}
]
}
}
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
}
}
③EC2にSSH接続し、CloudWatchAgentをインストール
wget https://s3.us-east-1.amazonaws.com/amazoncloudwatch-agent-us-east-1/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
sudo rpm -U ./amazon-cloudwatch-agent.rpm
④collectedをインストール
sudo amazon-linux-extras install collectd
※DiskUsedPercentメトリクスを取得するため
⑤①で作成したパラメータを参照してCloudWatchAgentを起動
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch-demo-itodaisuke-blog
※ssm:[SSMで作成したパラメータ名]
⑥実際にCloudWatchにEC2が反映されているか確認
作成したEC2のIDを検索します。
disk_used_percentが表示されていることを確認します。
これで、作成したEC2がCloudwatchに反映されていることが確認できました。
これを複数インスタンスに適用したい時は、
EC2インスタンス作成時に上記コマンドをユーザデータに入れてあげるともっと簡単に
しかも複数のインスタンスを作成したりも可能です。
※ユーザデータに適用する場合は、先頭に"#!/bin/bash"を入力する必要があるので注意が必要です。
まとめ
以上、社内演習でわからなかったサービスの1つに対して理解を深めることができました。
間違えている部分がありましたらご指摘頂けたらと思います。
まだまだ理解を深められていないサービスや、気になるサービスがあるので、
その都度、ブログを通してアウトプットしていきます。
ご一読ありがとうございました。