OSS 監視ソフトウェア
Zabbix, Prometheusのご紹介

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

1

自己紹介
名前： 盛 宣陽(Yoshiharu Mori)y-mori@sraoss.co.jp
所属：SRA OSS,Inc.日本支社
基盤技術グループ
職務内容:
 PostgreSQL以外のOSS全般のサポートやミドルウェアの構築、コンサルティング
 グループ統括

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

2

内容
1. Zabbixについて
2. Prometheusについて
3. Zabbix と Prometheus の連携
監視メトリックス編

4. Zabbix と Alertmanager の連携


通知の集約編

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

3

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

4Zabbix?
 IT インフラやサービス、アプリケーションの可用性や性能を監視するためのエンタープライズ向け統合監視ソフトウェア
 オープンソースソフトウェアとして開発されており、無料で利用可能
 開発元はラトビア共和国の Zabbix LLC.
 最新バージョンは 4.0（安定版、LTS）と 4.4（ポイントリリース）
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

5

Zabbixのアーキテクチャ

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

6

監視メトリックス
エージェント監視

エージェントレス監視
VMware

DB

ICMP

SNMP

SSH

TelnetCopyright © 2019 SRA OSS, Inc. Japan All rights reserved.

Java(JVM)

HTTP
WEB

7

障害検知

閾値

文字列

異常値

予測値

2019 05/14 09:13:25 [INFO] …
2019 05/14 09:15:10 [ERR] …
2019 05/14 09:21:47 [INFO] …

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

8

アラート通知メッセージ• E-mail• SMS
リモートコマンド• アラートスクリプト• SSH、Telnet• IPMI• カスタムスクリプト

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

9ビジュアリゼ―ション

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

10ネットワークディスカバリ
ネットワークを探索し自動でアクションを実行• 探索対象• IP アドレス：監視対象から削除• サービス（FTP、SSH、HTTP、SNMP、etc.）：監視対象に追加…

• Zabbix agent• アクション
• 監視対象の追加・削除• メトリクスの追加・削除• スクリプトの実行
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

11ローレベルディスカバリ

発見されたデバイスに対して自動的に監視を開始：監視対象に追加：監視対象から削除• CPU• ファイルシステム…

• ネットワークインタフェース• SNMP OID• Windows サービス

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

12

Prometheus ?

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

13

Prometheus?
 メトリックスベースのモニタリングシステム
 Apache ライセンス 2.0
 Cloud Native Computing Foundationで開発・メンテナンス
 CNCFの目的
オープンソースでベンダー中立プロジェクトのエコシステムを育成・維持して、このパラダイムの採用を促進したいと考えてます。
私たちは最先端のパターンを民主化し、これらのイノベーションを誰もが利用できるようにします。
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

14

成熟度

6プロジェクト

17プロジェクト
15プロジェクト

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

15

Prometheusのアーキテクチャ
Prometheusサーバ
discovery

evaluation
scraping

WEB APIHTTPPushAWS EC2

Azure

DNS

GCP GCE

Kubernetes

OpenStack

監視対象の自動登録

FileAlertmanager

HTTP Pull metrics
HTTP
PromQL

exporterPushgateway

監視対象
HTTP PUSH

Prometheus
WEB UI

可視化

通知

バッチジョブ
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

16サーバとexporterについて
Prometheusサーバ

exporter メトリックスを収集するエージェント

discovery

evaluation
scraping

WEB API
各exporterは異なるポート番号でHTTPリクエストを待ち受け

HTTP Pull metrics

exporter

収集したいメトリックスごとにexporterを導入
Ex) http,postgresql,nodePushgateway

Prometheusサーバは定期的にHTTPリクエストを発行してexporterで公開されているメトリックスを収集

監視対象
HTTP PUSH

exporter側の設定で公開するメトリックスを定義

バッチジョブ
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

17

exporterの種類

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

18サーバとPushgateway
Prometheusサーバ

メトリックスをPUSHしたい場合に利用

discovery

evaluation
scraping

バッチジョブ等の実行結果をPushgatewayにPUSH

WEB API
PushgatewayではPUSHされた最新値を保存

HTTP Pull metrics

PrometheusサーバからはPushgatewayに対してデータをPULLする

exporterPushgateway

Prometheusサーバに対して直接メトリックスをPUSHできない

監視対象
HTTP PUSH

バッチジョブ

サーバはメトリックスをPullするだけ→ 安定性に貢献

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

19

WEB UI と PromQL
PrometheusサーバがWEB UIを提供しているが1度きりのグラフ作成

Prometheusサーバ
discovery

ダッシュボードとしてはGrafanaを利用

evaluation
scraping

WEB API
GrafanaはHTTPを利用してサーバからメトリックスを取得

PromQLでデータの選択、集計

HTTP
PromQL

多数から絞り込んで少数のデータを参照
例) パーティションの利用率を知りたい
part_usage → 各パーティションの利用率(/,/var,/home,/data)
part_usage{part=‘/var’}→ /varの利用率

Prometheus
WEB UI

可視化

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

20

ディスカバリ 自動登録
Prometheusサーバ
discovery

evaluation
scraping

WEB APIAWS EC2

Azure

DNS

GCP GCE

Kubernetes

OpenStack

監視対象の自動登録

File

定期的にPrometheusがサービスディスカバリを行い監視対象を自動登録

EC2のインスタンスのディスカバリを行う設定- job_name: ‘ec2sd'
ec2_sd_configs:- region: xxx
access_key: yyy
secret_key: zzz
port: 9100
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

21評価と通知Scraping処理とは別処理でメトリックスの評価

Prometheusサーバ

scraping

discovery

PromQLによりメトリックに対して計算式を定義し新たなメトリックスを定義することもできる

evaluation

閾値を定義してAlertmanagerにHTTPでPush

WEB APIHTTP
Push

Alertmanager
Alertmanagerが受け取ったデータはラベルが定義されており、ラベル別に整理、集約ができる
ラベル“service”:”database”があるアラートは管理者に通知
ラベル“env”:”staging”は通知を行わない
ラベル“alertname”:”httpd_down”のアラートは5分ごとにまとめてWEB管理者へ通知
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

通知22

３．Zabbix x Prometheusとの連携
監視メトリックスの連携

X
対象:Zabbix 4.2以降
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

23

Zabbix 4.2からの新機能
アイテムの保存前処理でPrometheus との連携が可能に

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

24

exporter から metrics を取得

exporter

HTTP

メトリクス名{ラベル名=“ラベル値”,…} メトリクス値
Prometheus の metrics を HTTP エージェントで取得・解析可能に
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

25

exporterの種類Zabbixで使える！
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

26

Pushgatewayとの連携

PushgatewayもExporterとして機能

Pushgateway
HTTP PUSH

cat <<EOF | curl --data-binary @http://pushgateway.example.org:9091/metrics/job/s
ome_job/instance/some_instance# TYPE some_metric counter
some_metric{label="val1"} 42# TYPE another_metric gauge# HELP another_metric Just an example.
another_metric 2398.283
EOF

バッチジョブ
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

27

Prometheus Federationとの連携

Federation
Prometheusサーバ自身がExporterとして機能
PrometheusPrometheus

Prometheus

サーバ

サーバ

サーバ

HTTP エージェント

Prometheus

サーバ
Prometheus
サーバ

オンプレ-クラウド/コンテナ
基盤との連携-部分参照
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

28

4. Zabbix と Alertmanagerの連携
通知の集約

X
対象: Zabbix 3.2(障害の手動クローズ) 以降
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

29

Alertmanagerが受信するデータ 1[障害発生] PrometheusサーバからAlertmanager(AM)へ次の形式のデータをPOST[ { "labels":{ “alertname”: “<requiredAlertName>”,“<labelname>”: “<labelvalue>”,...
},"annotations":{ "<labelname>": "<labelvalue>", },“startsAt”: “<rfc3339>”,“endsAt”: “<rfc3339>”,"generatorURL": "<generator_url>"}]赤文字：必須緑文字：自由定義

青文字：省略可Labelsの内容が変わると違う通知データと解釈
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

30

Alertmanagerが受信するデータ 2[障害復旧] PrometheusサーバからAlertmanager(AM)へ次の形式のデータをPOST[ { "labels":
赤文字：必須{ “alertname”: “<requiredAlertName>”,“<labelname>”: “<labelvalue>”,
緑文字：自由定義...
},"annotations":{ "<labelname>": "<labelvalue>", },青文字：省略可“startsAt”: “<rfc3339>”,“endsAt”: “2019-07-04T09:28:21.835576682+09:00”,"generatorURL": "<generator_url>"}]

endsAtで指定した時刻に、同じlabelsのイベントが復旧する
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

31

ZabbixとAlertmanagerの連携 1[障害発生] ZabbixのアクションからcurlでPOST
Zabbixのマクロを利用[{"labels":{EVENT.IDを渡すことで"alertname":"{EVENT.NAME}",labelsがユニークになる"hostname":"{HOST.NAME}","severity":"{EVENT.SEVERITY}",“evnetid":"{EVENT.ID}",
ITEM.VALUEなど変動する値"itemkey":"{ITEM.KEY}",
はannotaionsに入れる},"annotations":{ "lastvalue":"{ITEM.VALUE}“ },"generatorURL":"http://ZabbixURL/zabbix/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}"}]

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

32

ZabbixとAlertmanagerの連携 ２[障害復旧] 復旧時のアクションからPOST[{"labels":{"alertname":"{EVENT.NAME}","hostname":"{HOST.NAME}","severity":"{EVENT.SEVERITY}",“evnetid":"{EVENT.ID}","itemkey":"{ITEM.KEY}",},"annotations":{ "lastvalue":"{ITEM.VALUE}“ },”endsAt”:”アクション発報時刻を埋め込む”,"generatorURL":"http://ZabbixURL/zabbix/tr_events.php?triggerid={TRIGGER.ID}&eventid={EVENT.ID}"}]
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

33

設定の詳細https://www.sraoss.co.jp/event_seminar/2019/zabbix20190710seminer.pdf
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

34

通知 時系列
Labels{“alertname”:“DBエラー","hostname":”server1“,”eventid”: “X”}

Zabbixから発行された通知
X＝1

X＝2

障害

復旧

X＝3

X＝4

時間

Alertmanager
group_wait

group_interval

1通目

２通目
X＝1

メール送信された内容

X＝2

X＝1

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

X＝2

X＝3

X＝435Labels{“alertname”:“DBエラー","hostname":”server1“,”eventid”: “X”}

Zabbixから発行された通知

障害

X＝4

X＝3

復旧
X＝5

X＝1

時間

Alertmanager
group_intervalgroup_interval
3通目

２通目
X＝1

X＝2

メール送信された内容

X＝3

X＝4

X＝1

X＝2

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

X＝3

X＝4

X＝536

Labels{“alertname”:“DBエラー","hostname":”server1“,”eventid”: “X”}

障害

Zabbixから発行された通知
X＝1

復旧

X＝5

X＝2

X＝3

X＝4

X＝5

時間

Alertmanager
3通目
X＝1

group_interval
X＝2

X＝3

メール送信された内容

X＝4

4通目
X＝5

group_interval

X＝2

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

X＝3

X＝4

X＝537

実際のメール内容

AlertManagerのUIへ

Zabbixのイベント障害画面へ

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

38

通知のSilence(ミュート)機能

AlertmanagerのUIから通知の抑止ができる
指定時間内に特定のラベルがある場合には通知をしない

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

39

Alertmanager クラスタ

Labelsの内容が同じであれば同じ通知データ
Alertmanager

Alertmanager

互いのAlertmanagerが連携して通知を抑止
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

40

比較とまとめZabbix

Prometheus

 監視設定はサーバで管理 Agentで値の取得
 Zabbix APIによる監視設定
 ログ監視を標準でサポート
 WEB監視を標準でサポート
 通知でスクリプトが実行が可 専用の管理画面

 監視内容ごとにExporterをインストールして監視値を設定
 クラウド・コンテナ環境のディスカバリ機能がビルトイン
 マネージャー間連携ができる 通知の集約ができる
 通知のミュートができる

まとめ
ZabbixとPrometheusの連携して効率的な監視ができる
Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

41

申し込み先: Zabbix社
https://enterprise.zabbix.co.jp/events/12241

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

42

ご清聴ありがとうございました

Copyright © 2019 SRA OSS, Inc. Japan All rights reserved.

43