Windows Server 2016 CloudWatch Agent の設定再利用でエラー
Contents
概要
- Windows Server では、CloudWatch Agentをインストールしてエージェント(統合 CloudWatch エージェント)を設定することで、EC2 のメトリクス監視やイベントログをCloudWatch Logs に転送することが可能となります。
- 今回は、以前ご紹介した下記の方法で準備したCloudWatch Agentの設定ファイルを別のサーバーで再利用した際にエラーとなった事例をご紹介します。
ハマったこと
Invalid json format, please check. Reason: invalid character ‘i’ looking for beginning of value
- 過去の記事でご紹介する設定ファイルのサンプルとエージェントの起動方法を使用して、別のサーバーで再利用した際にエラーとなりました。以前は、Windows Server 2012 R2 にて実績がありましたが、今回はWindows Server 2016 となります。
- PowerShell で出力されたエラーは、「Invalid json format, please check. Reason: invalid character 'i’ looking for beginning of value」となります。過去の経験より、設定ファイルの記述に問題があると推測しました。
- 一見するとサービスは起動していますが、設定ファイルはdefaultから作られてしまい、こちらで配置したconfig.json が読み込まれてはいません。
- 他にハマるポイントとしては、"files"でローカルのファイルをCloudWatch Logsに出力する際に、\(yenマーク)をエスケープのため\ を2つ付けます。\ が1つの場合にもPowerShell でエラーとなるため、注意です。
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\Windows\system32> cd "C:\Program Files\Amazon\AmazonCloudWatchAgent"
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json
Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp
Start configuration validation...
2019/09/25 16:13:37 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp ...
2019/09/25 16:13:37 Invalid json format, please check. Reason: invalid character 'i' looking for beginning of value
2019/09/25 16:13:37 I! AmazonCloudWatchAgent Version 1.227496.0.
2019/09/25 16:13:37 Configuration validation first phase failed. Agent version: 1.227496.0. Verify the JSON input is only using features supported by this version.
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a start
amazon-cloudwatch-agent is not configured. Applying default configuration before starting it.
Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\default.tmp
Start configuration validation...
2019/09/25 16:14:52 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\default.tmp ...
Valid Json input schema.
No csm configuration found.
No log configuration found.
Configuration validation first phase succeeded
Configuration validation second phase succeeded
Configuration validation succeeded
解決方法
やったこと
- 設定ファイルの記述に問題があることを疑い、過去の記事でもご紹介したウィザードを使った方法で設定ファイルを再作成します。
- ウィザードによって再作成した設定ファイルは一部記述が変わり、次回はエージェントの起動が成功することを確認しました。
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json
Successfully fetched the config and saved in C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp
Start configuration validation...
2019/09/25 16:50:16 Reading json config file path: C:\ProgramData\Amazon\AmazonCloudWatchAgent\Configs\file_config.json.tmp ...
Valid Json input schema.
No csm configuration found.
No metric configuration found.
Configuration validation first phase succeeded
Configuration validation second phase succeeded
Configuration validation succeeded
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a start
PS C:\Program Files\Amazon\AmazonCloudWatchAgent> ./amazon-cloudwatch-agent-ctl.ps1 -a status
{
"status": "running",
"starttime": "2019-09-25T16:50:30",
"version": "1.227496.0"
}
PS C:\Program Files\Amazon\AmazonCloudWatchAgent>
設定ファイルのサンプル
- 以下に再作成したOK例、以前の再利用でNGだった例のサンプルを貼り付けます。event_formatなどパラメータ増えています。詳しく調べていませんが、必須のパラメータが増えたのかもしれません。
【OK例】
{
"agent": {
"metrics_collection_interval": 60,
"logfile": "C:\\ProgramData\\Amazon\\AmazonCloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log"
},
"logs": {
"logs_collected": {
"windows_events": {
"collect_list": [
{
"event_name": "System",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR"
],
"log_group_name": "Windows_SystemEventLog",
"log_stream_name": "{local_hostname}"
},
{
"event_name": "Security",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR"
],
"log_group_name": "Windows_SecurityEventLog",
"log_stream_name": "{local_hostname}"
},
{
"event_name": "Application",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR"
],
"log_group_name": "Windows_ApplicationEventLog",
"log_stream_name": "{local_hostname}"
}
]
}
}
}
}
【NG例】
{
"logs": {
"logs_collected": {
"windows_events": {
"collect_list": [
{
"event_format": "text",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR",
"CRITICAL"
],
"event_name": "System",
"log_group_name": "Windows_SystemEventLog",
"log_stream_name": "{local_hostname}"
},
{
"event_format": "text",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR",
"CRITICAL"
],
"event_name": "Security",
"log_group_name": "Windows_SecurityEventLog",
"log_stream_name": "{local_hostname}"
},
{
"event_format": "text",
"event_levels": [
"INFORMATION",
"WARNING",
"ERROR",
"CRITICAL"
],
"event_name": "Application",
"log_group_name": "Windows_ApplicationEventLog",
"log_stream_name": "{local_hostname}"
}
]
}
}
}
}