パラメータストアから複数コンフィグ読み込み

作業概要

前回からのつづき
https://knowledge.hdora.tokyo/?p=1686

・パラメータストアからファイルを読み込むようにする
・複数コンフィグを読み込む

インスタンス1台1台にコンフィグを設置していくのは面倒なのでパラメータストアから読み込むようにしたい。
また、複数コンフィグを読み込むようにしたい
※以前チャレンジしたとき、うまく複数コンフィグを読み込めなかったので再チャレンジ。
ついでにプロセス監視も行います。(Apache、Postfix等)

・複数の CloudWatch エージェント設定ファイルを読み込む
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html
fetch-configの代わりにappend-configを使うことで設定ファイルを追加できるようだ。
なるほど。

・パラメータストアから設定ファイルを読み込む
https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-EC2-Instance-fleet.html
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:configuration-parameter-store-name

これでいけそう。

作業記録

パラメータストアに2つコンフィグを作成

AmazonCloudWatch-processes

種類   String
データ型 text
値
-----
{
    "metrics": {
        "metrics_collected": {
            "procstat": [
                {
                    "exe": "httpd",
                    "measurement": [
                        "pid_count"
                    ]
                },
                {
                    "exe": "postfix",
                    "measurement": [
                        "pid_count"
                    ]
                },
                {
                    "exe": "named",
                    "measurement": [
                        "pid_count"
                    ]
                },
                {
                    "exe": "dovecot",
                    "measurement": [
                        "pid_count"
                    ]
                },
                {
                    "exe": "mysqld",
                    "measurement": [
                        "pid_count"
                    ]
                }
            ]
        }
    }
}
-----

AmazonCloudWatch_disk-mem-swap

種類   String
データ型 text
値
-----
{
        "agent": {
                "metrics_collection_interval": 60,
                "run_as_user": "root"
        },
        "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
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}
-----

パラメータストアからコンフィグ読み込み

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:AmazonCloudWatch_disk-mem-swap
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -s -c ssm:AmazonCloudWatch-processes

あとはダッシュボードに追加し、アラームを設定して閾値越えやプロセスダウン時にメール通知するようにしておきます。

宿題

あとはログ監視。
CloudWatch Logsではなく推奨されている方法でやってみよう。
どのログを監視するか、監視キーワードは何にするかなどがポイントか。