CloudWatch Logsエージェントの中身を(途中まで)調べてみた
CloudWatch Logs連投です。
CloudWatch Logsエージェントの中身が気になったので、調べてみました。
ファイル構造
こんなんなってました。
# tree /var/awslogs/ -L 2 /var/awslogs/ ├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── activate_this.py │ ├── aws │ ├── aws.cmd │ ├── aws_completer │ ├── awslogs-agent-launcher.sh │ ├── awslogs-nanny.sh │ ├── aws_zsh_completer.sh │ ├── easy_install │ ├── easy_install-2.6 │ ├── jp │ ├── pip │ ├── pip2 │ ├── pip2.6 │ ├── pyrsa-decrypt │ ├── pyrsa-decrypt-bigfile │ ├── pyrsa-encrypt │ ├── pyrsa-encrypt-bigfile │ ├── pyrsa-keygen │ ├── pyrsa-priv2pub │ ├── pyrsa-sign │ ├── pyrsa-verify │ ├── python -> python2.6 │ ├── python2 -> python2.6 │ ├── python2.6 │ ├── rst2html.py │ ├── rst2latex.py │ ├── rst2man.py │ ├── rst2odt_prepstyles.py │ ├── rst2odt.py │ ├── rst2pseudoxml.py │ ├── rst2s5.py │ ├── rst2xetex.py │ ├── rst2xml.py │ └── rstpep2html.py ├── etc │ ├── aws.conf │ └── awslogs.conf ├── include │ └── python2.6 -> /usr/include/python2.6 ├── lib │ └── python2.6 ├── lib64 -> lib └── state ├── agent-state ├── awslogs.lock └── awslogs.pid
これくらの規模なら把握できそうです。
/etc/init.d/awslogs
CloudWatch Logsエージェントをインストールすると、サービススクリプトが/etc/init.d/awslogsとして配置されます。
#!/bin/sh ### BEGIN INIT INFO # Provides: awslogs # Required-Start: networking # Required-Stop: networking # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Daemon for AWSLogs agent. # Description: This script is responsible for running AWSLogs agent # as a daemon. ### END INIT INFO CONFIG_FILE=/var/awslogs/etc/awslogs.conf DAEMON=/var/awslogs/bin/awslogs-agent-launcher.sh DAEMON_NAME=awslogs DAEMON_USER=root PIDFILE=/var/awslogs/state/awslogs.pid LOCKFILE=/var/awslogs/state/awslogs.lock START_CMD="start-stop-daemon --start --background --pidfile $PIDFILE --user $DAEMON_USER --chuid $DAEMON_USER --startas $DAEMON" STATUS_CMD="status_of_proc -p $PIDFILE "$DAEMON_NAME" "$DAEMON" && exit 0 || exit $?" (以下省略)
デーモンは/var/awslogs/bin/awslogs-agent-launcher.shのようです。
/var/awslogs/bin/awslogs-agent-launcher.sh
デーモンは下記の4行。
#!/bin/sh echo -n $$ > /var/awslogs/state/awslogs.pid /usr/bin/env -i AWS_DEFAULT_REGION=us-east-1 AWS_CONFIG_FILE=/var/awslogs/etc/aws.conf HOME=$HOME /bin/nice -n 4 /var/awslogs/bin/aws logs push --config-file /var/awslogs/etc/awslogs.conf >> /var/log/awslogs.log 2>&1
/var/awslogs/bin/awsを呼んでいることがわかります。
$ /var/awslogs/bin/aws logs
これ、AWS CLIですね。
CloudWatch Logsエージェント自体のログは/var/log/awslogs.logに出力されていることがわかります。
ちなみに、/var/log/awslogs.logをCloudWatch Logsで監視すると、メッセージを登録しようとしてエラーが発生してメッセージが出力されて・・・という無限ループが発生しそうな気がします。やめといたほうがよさそうです。
/var/awslogs/bin/aws logs
AWS CLIとわかれば、help見ちゃいましょう。help。
/var/awslogs/bin/aws logs help
NAME logs - DESCRIPTION This is the Amazon CloudWatch Logs API Reference . Amazon CloudWatch Logs is a managed service for real time monitoring and archival of application logs. This guide provides detailed information about Amazon CloudWatch Logs actions, data types, parameters, and errors. For detailed information about Amazon CloudWatch Logs features and their associated API calls, go to the Amazon CloudWatch Logs Developer Guide . Use the following links to get started using the Amazon CloudWatch Logs API Reference : o Actions : An alphabetical list of all Amazon CloudWatch Logs actions. o Data Types : An alphabetical list of all Amazon CloudWatch Logs data types. o Common Parameters : Parameters that all Query actions can use. o Common Errors : Client and server errors that all actions can return. o Regions and Endpoints : Itemized regions and endpoints for all AWS products. In addition to using the Amazon CloudWatch Logs API, you can also use the following SDKs and third-party libraries to access Amazon Cloud- Watch Logs programmatically. o AWS SDK for Java Documentation o AWS SDK for .NET Documentation o AWS SDK for PHP Documentation o AWS SDK for Ruby Documentation Developers in the AWS developer community also provide their own libraries, which you can find at the following AWS developer centers: o AWS Java Developer Center o AWS PHP Developer Center o AWS Python Developer Center o AWS Ruby Developer Center o AWS Windows and .NET Developer Center AVAILABLE COMMANDS o create-log-group o create-log-stream o delete-log-group o delete-log-stream o delete-metric-filter o delete-retention-policy o describe-log-groups o describe-log-streams o describe-metric-filters o get-log-events o help o put-log-events o put-metric-filter o put-retention-policy o test-metric-filter
だ・・・だめだ・・・眠くなってきた・・・
ということでここまでで今日はギブアップ。