コンテナ内に「CloudWatch-Agent」をインストールし、各種ログを収集出来ます。
Dockerfile
ENV RUN_IN_CONTAINER=True
# aws設定
RUN mkdir -p /root/.aws/ \
&& { \
echo '[profile AmazonCloudWatchAgent]'; \
echo 'region = ap-northeast-1'; \
} > /root/.aws/config \
&& { \
echo '[AmazonCloudWatchAgent]'; \
echo 'aws_access_key_id = xxx'; \
echo 'aws_secret_access_key = xxx'; \
} > /root/.aws/credentials
# CloudWatch-Agentのインストール
RUN mkdir -p /usr/share/man/man1/ \
&& apt-get install -y collectd \
&& curl https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb -o /tmp/amazon-cloudwatch-agent.deb \
&& dpkg -i -E /tmp/amazon-cloudwatch-agent.deb \
&& rm -f /tmp/amazon-cloudwatch-agent.deb
# CloudWatch-Agentの設定
# AWS Fargate?: /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# docker: /etc/cwagentconfig
RUN { \
echo '{'; \
echo ' "agent": {'; \
echo ' "metrics_collection_interval": 60,'; \
echo ' "run_as_user": "root"'; \
echo ' },'; \
echo ' "logs": {'; \
echo ' "logs_collected": {'; \
echo ' "files": {'; \
echo ' "collect_list": ['; \
echo ' {'; \
echo ' "file_path": "/var/log/test/test_*/*.log",'; \
echo ' "log_group_name": "testgroup",'; \
echo ' "log_stream_name": "access"'; \
echo ' }'; \
echo ' ]'; \
echo ' }'; \
echo ' }'; \
echo ' },'; \
echo ' "metrics": {'; \
echo ' // いろいろと設定'; \
echo ' }'; \
echo '}'; \
} > /etc/cwagentconfig
# いろいろな立ち上げ処理を行う
RUN { \
echo '#!/bin/bash'; \
echo "nohup /opt/aws/amazon-cloudwatch-agent/bin/start-amazon-cloudwatch-agent > /dev/null 2> /dev/null &"; \
} > /usr/local/bin/app.sh
ENTRYPOINT ["/usr/local/bin/app.sh"]
- ルートユーザで動作をさせる想定ですので、AWSの認証情報を
/root/.aws/
に配置しています。 - debianで
collectd
をインストールする際、/usr/share/man/man1/
を前もって作成しておく必要があります。
作成をせずに実行するとインストール途中でエラーが発生します。
エラーが発生した場合collectd-core
を削除する必要があります。
削除はremove
とpurge
でライブラリを削除してください。
※削除しないとapt-getで何もインストールが出来なくなります。 -
/etc/cwagentconfig
はamazon-cloudwatch-agent-config-wizard
で作成できます。
CloudWatch-Agentをインストールするとamazon-cloudwatch-agent-config-wizard
は使用できますので、適当に調整してください。 - 収集するログの
file_path
はアスタリスクが使用可能です。 -
start-amazon-cloudwatch-agent
で実行できますのでバックグラウンドで起動します。
docker-compose.yml
docker-compose.yml
version: '3.7'
services:
test:
#
# いろいろな設定
#
ports:
# CloudWatch-Agentのデフォルトポート
- 8125:8125
※ポートは変更できます