【小ネタ】CloudWatchメトリクスのメトリクス名を変える方法

今回はCloudWatchのメトリクス名を切り替える方法について解説します。執筆時点でまとまっている記事が少ない印象でしたので、自分用にまとめました。どなたかのお役に立てば幸いです。CloudWatchの設定は今回省略しますが、環境構築から丁寧に設定方法を知りたい方は、弊社エンジニアが丁寧に記事化しています。ぜひともこちらをご参照ください。

https://qiita.com/tonkatsu_oishi/items/7c39f81fd4e3e2fbe91e
# 前提
・検証時OSはWindows
・CloudWatchAgent導入済みで、下のようにカスタムメトリクスが出力されている

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/1a2741e2-a90c-92c8-6a45-e28997bc054a.png)

# 設定手順

今回は上画像の「Memory % Commited Bytes In Use」で出力されているメトリクスを「MemUtilization」という名前で出力されるよう設定します。

CloudWatchAgentが導入されているEC2にアクセスし、
「C:\ProgramFiles\Amazon\AmazonCloudWatchAgent」内の設定ファイルを編集します。

【2024/8/30 追記】
設定ファイルはウィザードで設定した場合、config.jsonで出力されるので、これを編集します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/fea112dd-6dfe-32f3-59f3-ecf1023177c9.png)

CloudWatchAgentの設定で内容は変わりますが、デフォルトのconfig.jsonファイルは以下のようになっていました。


```json
{
    "metrics": {
        ###### 省略 ######
            "Memory": {
                "measurement": [
                    "% Committed Bytes In Use"
                ],
                "metrics_collection_interval": 60
            },
        ###### 省略 ###### 
  }
```

こちらのファイルを以下のように書き換えます。
measurementの中身を変更しています。

```json
{
    "metrics": {
        ###### 省略 ######
            "Memory": {
                "measurement": [
                    {"name": "% Committed Bytes In Use", "rename": "MemUtilization"}
                ],
                "metrics_collection_interval": 60
            },
        ###### 省略 ######
}
```

config.jsonを編集したら、PowerShellで以下の2つのコードを流し、CloudWatchエージェントの再起動、ステータスの確認をします。

```powershell
 & "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1" -a fetch-config -m ec2 -s -c file:"C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json"

#出力結果#
****** processing amazon-cloudwatch-agent ******
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 timesSuccessfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp
Start configuration validation...
2024/08/20 12:37:32 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp ...
2024/08/20 12:37:32 I! Valid Json input schema.
I! Trying to detect region from ec2
D! [EC2] Found active network interface
I! imds retry client will retry 1 times2024/08/20 12:37:32 D! ec2tagger processor required because append_dimensions is set
2024/08/20 12:37:32 D! metric decorator required because measurement fields are set
2024/08/20 12:37:32 Configuration validation first phase succeeded
Configuration validation second phase succeeded
Configuration validation succeeded
AmazonCloudWatchAgent has been stopped
AmazonCloudWatchAgent has been started
#出力結果ここまで#
 
 & $Env:ProgramFiles\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -m ec2 -a status

#出力結果#
 {
  "status": "running",
  "starttime": "2024-08-20T12:37:33",
  "configstatus": "configured",
  "version": "1.300043.0b781"
}
#出力結果ここまで#
```

しばらくしてからAWSコンソールを見ると以下の通り、出力時のメトリクス名が「Memory % Commited Bytes In Use」から「MemUtilization」に書き換わっていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986198/1e0dfb84-da4c-62d4-4cdf-5cec35f4a956.png)

本記事は短いですが以上です。お読みいただきありがとうございました。

# 参考URL

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html#cloudwatch-agent-preset-metrics