share facebook facebook twitter menu hatena pocket slack

2018.03.12 MON

CloudWatch AgentでCloudWatch Logsに転送するログファイルのエンコードを指定する

土持 昌志

WRITTEN BY 土持 昌志

結論

パラメータストアのjsonに encoding を追加して適用します。

{
    "logs": {
        "logs_collected": {
            "files": {
                "collect_list": [
                    {
                        "file_path": "C:\\Application\\appname\\logs\\logfile.log",
                        "log_group_name": "logfile.log",
                        "encoding": "shift_jis",
                        "timestamp_format": "%m/%d/%y %H:%M:%S"
                    }
                ]
            }
        }
    }
}

ドキュメントにはエンコード指定の方法が載っていない?

WindowsインスタンスからShift JISのログをそのままCloudWatch Logsに転送したところAWSコンソール上で文字化けしてしまったので、エンコード指定の方法を調べたのですがCloudWatch Agentのドキュメントには記載がありませんでした。CloudWatch Logsのドキュメントには encoding を指定するように記載があります。

そこでCloudWatch Logsのドキュメントを参考に、冒頭のようにパラメータストアのjsonに encoding を追加するとうまく表示されるようになりました。ドキュメントに記載はありませんがある程度の互換性はあるようです。
CloudWatch Logsで出来ていたあの設定、CloudWatch Agentではどうするんだろう?という時はLogsを参考に値を入れてみると良さそうです。

対応していない設定はRun Commandでパラメータ適用時にちゃんと怒られるので大丈夫です。(Agentにdatetime_formatでタイムスタンプを指定しようとして弾かれました)

Start configuration validation...

Invalid Json input schema.

Under path : /logs/logs_collected/files/collect_list/0 | Error : Additional property datetime_format is not allowed

Configuration validation first phase failed. Agent version: 1.208.0. Verify the JSON input is only using features supported by this version.

----------ERROR-------

2018/02/21 12:28:25 I! AmazonCloudWatchAgent Version 1.208.0.

failed to run commands: exit status 1

元記事はこちら

CloudWatch AgentでCloudWatch Logsに転送するログファイルのエンコードを指定する

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。