top of page

Cloudwatchで EC2 の 帯域情報を確認したい



やりたい事

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

参考




閲覧数:354回0件のコメント

最新記事

すべて表示

Comentários


bottom of page