dockerコンテナのパフォーマンスモニター準備
■はじめに
最近、SelenoidやGgrの妥当性を説明する文章を書く機会がちょいちょいあったのですが、その時の根拠としてリソースの枯渇があります。
が、ちゃんとDockerコンテナのパフォーマンスモニタリングをしていなかったので、簡単な整理をはじめます。
■今回使うもの
- prometheus(サービス監視ツール)
- grafana(監視データの可視化ツール)
- grafana loki(ログ収集ツール)
- cAdvisor(コンテナ監視ツール)
- promtail(ログ収集ツールへの送信ツール)
■本日はdocker-compose.ymlのみ
実はこの構成、ログ周り以外は1年ぐらい前に個人的に組んでいたのです。
今回良い機会なので、ちょっと時間をとって綺麗に整理していこうと思います。
まずは忘れないうちにdocker-compose.yml
version: "3.8" services: prometheus: image: prom/prometheus container_name: prometheus volumes: - ./prometheus:/etc/prometheus command: "--config.file=/etc/prometheus/prometheus.yml" ports: - '127.0.0.1:9090:9090' networks: default: aliases: - prometheus restart: always healthcheck: test: ["CMD-SHELL", "stat /etc/prometheus || exit 1"] interval: 10s timeout: 10s retries: 3 start_period: 40s cadvisor: image: google/cadvisor container_name: cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - '127.0.0.1:8080:8080' networks: default: aliases: - cadvisor restart: always healthcheck: test: ["CMD-SHELL", "stat /var/lib/docker || exit 1"] interval: 10s timeout: 10s retries: 3 start_period: 40s grafana: image: grafana/grafana:latest container_name: grafana ports: - '127.0.0.1:3000:3000' volumes: - ./grafana:/var/lib/grafana networks: default: aliases: - loki restart: always environment: GF_SECURITY_ADMIN_USER: admin GF_SECURITY_ADMIN_PASSWORD: admin GF_USERS_ALLOW_SIGN_UP: "false" GF_USERS_ALLOW_ORG_CREATE: "false" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000"] interval: 10s timeout: 10s retries: 3 start_period: 40s promtail: image: grafana/promtail:latest container_name: promtail volumes: - /var/log:/var/log command: -config.file=/etc/promtail/docker-config.yaml networks: default: aliases: - loki healthcheck: test: ["CMD-SHELL", "stat /usr/bin/promtail || exit 1"] interval: 10s timeout: 10s retries: 3 start_period: 40s loki: image: grafana/loki:latest container_name: loki ports: - '127.0.0.1:3100:3100' command: -config.file=/etc/loki/local-config.yaml networks: default: aliases: - loki healthcheck: test: ["CMD-SHELL", "stat /etc/loki/local-config.yaml || exit 1"] interval: 10s timeout: 10s retries: 3 start_period: 40s
次回以降、順次ブラッシュアップしていきます!
簡単ですが今回はここまで。
ではでは。