やりたい事
Cloudwatch 上で EC2上サーバーに負荷かけ、どの程度の帯域が発生しているか統計情報を出力するための方法を調べました。
Cloudwatch の agentを利用することで ethtool のカスタムメトリックスを表示することが出来ます。
Agentのインストール
CloudWatch Agentのインストール
CloudWatchをインストールしていない場合、下記をインストールします。
sudo yum install amazon-cloudwatch-agent
Amazon Linux2を利用しており下記でウィザードを実行しテンプレートを作成する下記でウィザードを実行しテンプレートを作成できます。詳細まで設定可能ですが、今回は記載の項目以外はデフォルトで回答しました。
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
※ 変更した回答
Do you want to monitor any log files?
1. yes
2. no
default choice: [1]:
2
Do you want to store the config in the SSM parameter store?
1. yes
2. no
default choice: [1]:
2
wizardで作成したJSONファイルは下記に出力されます /opt/aws/amazon-cloudwatch-agent/bin/config.json `bw_in_allowance_exceeded` 等を追加したいので、collectd に ethtool のカスタムメトリックスを追加する
"ethtool":
{
"interface_include":
[
"eth0"
],
"metrics_include":
[
"rx_packets",
"tx_packets",
"bw_in_allowance_exceeded",
"bw_out_allowance_exceeded",
"conntrack_allowance_exceeded",
"linklocal_allowance_exceeded",
"pps_allowance_exceeded"
]
}
最終的な JSONファイルは下記になります。この内容を /opt/aws/amazon-cloudwatch-agent/bin/config.json に反映します。
{
"agent":
{
"metrics_collection_interval": 60,
"run_as_user": "root"
},
"metrics":
{
"aggregation_dimensions":
[
[
"InstanceId"
]
],
"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"
},
"ethtool":
{
"interface_include":
[
"eth0"
],
"metrics_include":
[
"rx_packets",
"tx_packets",
"bw_in_allowance_exceeded",
"bw_out_allowance_exceeded",
"conntrack_allowance_exceeded",
"linklocal_allowance_exceeded",
"pps_allowance_exceeded"
]
}
}
}
}
scpを利用する場合は下記で実行可能です。
scp ./config.json <Copy先Host>:/opt/aws/amazon-cloudwatch-agent/bin/config.json
IAMロール設定
EC2のIAMロールに必要な下記 Policy をアタッチします。 * CloudWatchAgentServerPolicy
Agentの実行
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
カスタムメトリックスの動作確認
実際に動作するか負荷をかけてみます。iperfコマンドを利用するのが簡単です。
iperfのインストール
yum -y install iperf
サーバー側
sudo iperf -s -p 30000
クライアント側
iperf -c <サーバーIP> -p 30000 --parallel 40 -i 1 -t 2
参考
Дружище, как круто, что ты создал такую классную и актуальную тематику, сейчас очень важно общаться и обсуждать новости. С тем учётом, что новости стали всё больше и больше преобладать в нашей жизни, то нужно и читать их на качественном новостном портале. Это предоставит доступ к проверенной и актуальной информации, я к примеру пользуюсь таким информационным порталом. Благодаря ему, я с лёгкостью узнаю все новости, особенно финансовые, такие как новости инвестиций и стартапов https://delo.ua/ru/finance/investiciyi-ta-startapi-de-i-yak-znajti-investora-dlya-vdalogo-rozvitku-433124/, что даёт мне более качественное понимание того, что именно происходит в этой сфере деятельности. Таким образом, благодаря качественному новостному порталу, я всегда нахожусь в информационном ресурсе, что в свою очередь позволяет мне быть более объективным к восприятию новостей и событий.