LoginSignup
3
2

More than 5 years have passed since last update.

CloudWatch Logs Agentの中身を探してみた

Last updated at Posted at 2016-09-11

はじめに

CloudWatch Logsエージェントの中身を(途中まで)調べてみた の続きがきになる! ということで調べてみました。上のブログを読んだという前提で話を進めます。

結論

/var/awslogs/lib/python2.7/site-packages/cwlogs/push.py

が、監視対象のログを読み込み、CloudWatch Logsのサービスにイベントをプッシュするコードでした。1800行くらいのコードです。慣れない自分には結構よむのつらいですが、主要な処理はこのコード内で完結しているので読めば動作がわかります。FileEventsReader._run(self) が実際にログを読みこむ部分です

これから先は余談です。

awscliにlogsのコードは含まれていない

aws cliに含まれているんだということで、

/usr/lib/python2.7/dist-packages/awscli (awscliのインストール先ディレクトリ)
https://github.com/aws/aws-cli (awscliのgitリポジトリ)
https://github.com/boto/boto3/ (awscliが使っているライブラリ)

配下を散々さがしましたが、何もありませんでした。

cloudwatch logs agentの実行処理

方向をかえてcloudwatch logs agent の実行時オプションに注目しました。
/var/awslogs/bin/awslogs-agent-launcher.sh
をみると以下のようになっています。
```
/usr/bin/env -i \
HTTPS_PROXY=$HTTPS_PROXY \
HTTP_PROXY=$HTTP_PROXY \
NO_PROXY=$NO_PROXY \
AWS_CONFIG_FILE=/var/awslogs/etc/aws.conf \
HOME=/root \
/bin/nice -n 4 \
/var/awslogs/bin/aws logs push \
--config-file /var/awslogs/etc/awslogs.conf \
--additional-configs-dir /var/awslogs/etc/config \

/var/log/awslogs.log 2>&1
```

設定を消しつつ実際にこのコマンドを実行したところ、以下があれば動作しました

AWS_CONFIG_FILE=/var/awslogs/etc/aws.conf \
/var/awslogs/bin/aws logs push \
--config-file /var/awslogs/etc/awslogs.conf

AWS_CONFIG_FILEの中身をみると以下のようになっています。

$ cat /var/awslogs/etc/aws.conf
[plugins]
cwlogs = cwlogs
[default]
region = us-west-2

awscli プラグイン

おお。プラグイン! ということでpythonのパッケージを探すと
/var/awslogs/lib/python2.7/site-packages/cwlogs
が存在していて、以下のようなファイルがあります

filter.py
__init__.py
kvstore.py
parser.py
pull.py
push.py
retry.py
threads.py
utils.py

この中でpush.pypull.pyがコマンドで残りはユーティリティクラスでした。
pullの機能については根性がなくて調べていません。

おわりに

AWSCLIはプラグインで機能を追加できるというのは初めて知りました。cwlogsを参考にプラグインを作るのもありかとおもいます。

参考

CloudWatch Logsエージェントの中身を(途中まで)調べてみた
CloudWatch Logs Agent の挙動について調べたことのまとめ

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2