2018年10月3日水曜日

Prometheus と cAdvisor でコンテナの死活監視をする方法

概要

cAdvisor のメトリックを使って Prometheus でコンテナの死活監視をする方法です
どうやら cAdvisor のバグっぽいのでいずれはこの方法を使わないでも監視できるようになるかもしれないです

環境

  • Ubuntu 16.04 LTS
  • Prometheus 2.4.2
  • Prometheus AlertManager v0.15.2
  • cAdvisor v0.27.4
  • docker 18.03.1-ce

Prometheus の監視ルール

特定のコンテナを死活監視するルールは以下の通りです

groups:
  - name: 'Containers monitoring'
    rules:
    - alert: 'container_1 not running'
      expr: absent(container_tasks_state{name="container_1",state="running"}) == 1
      for: 5s
      annotations:
        summary: "{{ $value }}"

ポイントは absent を使う点です
本来 container_tasks_statestate に応じて適切な値を返却するはずなのですがどの state も常に 0 を返却するバグがあるようです
そしてコンテナが停止した場合には何もデータが入ってきません

absent はデータがない場合に 1 を返却してくれる関数になります
つまりデータがない = コンテナが停止しているときにアラートを上げる監視ルールを追加して上げれば OK です

Issue を見ると bug のラベルが振られているのでいずれ修正される問題かなと思います

参考サイト

0 件のコメント:

コメントを投稿