8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Zabbix5.0 を公式 docker-compose で構築し SNMPTRAP 監視をして Slack 通知設定をする

Last updated at Posted at 2020-11-01

はじめに

自宅サーバ監視を Zabbix でする際に、公式の docker-compose を使ってコンテナで構築した
ネットワーク機器もあるので SNMPTRAP 受信時にアラート通知も出せるようにする
Alert は Slack 通知にしたのでその際の構築メモも記載する
(情報は 2020.11.01 時点での構築の際の情報)

下記ざっくり絵
zabbix-comopse-slack.png

実施内容

  1. docker-compose での Zabbix 構築
  2. zabbix 設定
  3. 監視設定
  4. zabbix slack 連携
  5. Alert 試験

実施環境

  • dockerサーバ
    • OS: CentOS 7.8.2003
    • Docker: docker-ce 19.03.13
    • Docker-compose: 1.18.0
  • Slack
    • ワークスペース:HomeLabという名前で作成済み

1. docker-compose でインストール

Zabbix が下記 GitHub にて zabbix-docker を公開している
https://github.com/zabbix/zabbix-docker

こちらの docker-compose を利用して起動する

zabbix-docker のサイトで5.0の最新タグを確認して、タグ指定で clone する (タグ指定しないと 5.2 などの最新バージョンになる)
https://github.com/zabbix/zabbix-docker/tags

git_clone
git clone https://github.com/zabbix/zabbix-docker.git -b 5.0.5

今回は、centos イメージで mysql を DB として使用するバージョンを使用ので、
下記の yaml を docker-compose.yaml にしてデフォルトにする

cp_use_version
cd zabbix-docker/
cp -p docker-compose_v3_centos_mysql_latest.yaml docker-compose.yaml

下記でデーモン起動する

docker-compose_up
docker-compose up -d

下記で起動状況の確認。一番上は Exit 0 で問題ない

check_ps
# docker-compose ps
WARNING: Some services (zabbix-agent, zabbix-java-gateway, zabbix-proxy-mysql, zabbix-proxy-sqlite3, zabbix-server, zabbix-snmptraps, zabbix-web-apache-mysql, zabbix-web-nginx-mysql) use the 'deploy' key, which will be ignored. Compose does not support 'deploy' configuration - use `docker stack deploy` to deploy to a swarm.
                 Name                               Command               State                    Ports                
------------------------------------------------------------------------------------------------------------------------
zabbixdocker_db_data_mysql_1             sh                               Exit 0                                        
zabbixdocker_mysql-server_1              docker-entrypoint.sh mysql ...   Up                                            
zabbixdocker_zabbix-agent_1              /sbin/tini -- /usr/bin/doc ...   Up                                            
zabbixdocker_zabbix-java-gateway_1       docker-entrypoint.sh /usr/ ...   Up                                            
zabbixdocker_zabbix-proxy-mysql_1        /sbin/tini -- /usr/bin/doc ...   Up       0.0.0.0:10071->10051/tcp             
zabbixdocker_zabbix-proxy-sqlite3_1      /sbin/tini -- /usr/bin/doc ...   Up       0.0.0.0:10061->10051/tcp             
zabbixdocker_zabbix-server_1             /sbin/tini -- /usr/bin/doc ...   Up       0.0.0.0:10051->10051/tcp             
zabbixdocker_zabbix-snmptraps_1          /usr/bin/supervisord -c /e ...   Up       0.0.0.0:162->1162/udp                
zabbixdocker_zabbix-web-apache-mysql_1   docker-entrypoint.sh             Up       0.0.0.0:80->8080/tcp,                
                                                                                   0.0.0.0:443->8443/tcp                
zabbixdocker_zabbix-web-nginx-mysql_1    docker-entrypoint.sh             Up       0.0.0.0:8081->8080/tcp,              
                                                                                   0.0.0.0:8443->8443/tcp 

http://[dockerサーバIP] でブラウザアクセスすると下記画面になるので Username: Admin,Password: zabbixでログイン

スクリーンショット 2020-11-01 12.29.28.png

ログインすると下記の画面になる

スクリーンショット 2020-11-01 12.32.40.png

2. zabbix 設定

使い始めの基本的な設定として、ユーザ設定と zabbix server の監視有効化をする

2.1. ユーザ設定

スクリーンショット 2020-11-01 12.35.09.png

2.2. zabbix-server

zabbix-server が障害になっているので対処する
スクリーンショット 2020-11-01 12.48.01.png

設定 > ホスト > >Zabbix server
スクリーンショット 2020-11-01 12.40.37.png

下記画面のように、DNS名zabbix-agent、接続方法DNSに変更して更新をクリックする
スクリーンショット 2020-11-01 12.46.18.png

少し経つとエージェント通信ができるようになっていることを確認できる
スクリーンショット 2020-11-01 12.50.30.png

3. 監視設定

3.1 SNMP Trap のトリガー作成

docker-compose には zabbix-snmptraps のコンテナも起動して 162 をアサインされており、SNMP Trap もアイテムとして取得できる
SNMP TRAP をトリガーにして発報するテンプレートが見当たらなかったので、作成しておく

デフォルトのTemplate Net Network Generic Device SNMPSNMP traps (fallback)というアイテムは有るので、これを受信したらトリガーとしてアラートを出すようにする
SNMP Trap は復旧との紐付けなどはできるかもしれないが難しいので、ここでは 60sec でとりあえず復旧とする

設定 > テンプレート > テンプレートの作成 に移動する
スクリーンショット 2020-11-01 13.01.51.png

下記は例でテンプレート名Template Net Network Generic Device SNMP plus SNMPTRAP Trigger として、グループはTemplates/Network devicesとして入力

スクリーンショット 2020-11-01 17.38.13.png

テンプレートとのリンクタブに移動して、新規テンプレートをリンクでTemplate Net Network Generic Device SNMPを選択して追加をクリックしてテンプレートを作成
スクリーンショット 2020-11-01 17.39.28.png

作成したテンプレートに入って、トリガータブを指定して右上のトリガーの作成をクリックしてトリガー追加作成する
スクリーンショット 2020-11-01 13.18.14.png

トリガーは下記内容で作成する (深刻度はてきとう)

  • 名前
    • SNMP trap received from {HOST.NAME}
  • 深刻度
    • 警告
  • 条件式
    • {Template Net Network Generic Device SNMP plus SNMPTRAP Trigger:snmptrap.fallback.nodata(60)}=0

スクリーンショット 2020-11-01 17.41.36.png

3.2. ホスト登録

ここで Network 機器の SNMP 監視設定でホスト登録を実施する (発報試験にも使用する)

設定 > ホスト > ホストの作成 で作成する

  • ホスト名
    • 設定するホスト名
  • グループ
    • Templates
  • インターフェース
    • SNMP
      • ポーリング先の IP アドレス
    • SNMPコミュニティ
      • 機器設定のコミュニティ名を入れる

スクリーンショット 2020-11-01 14.07.22.png

テンプレートタブを開いて作成したテンプレートを選択して追加する

スクリーンショット 2020-11-01 17.43.35.png

SNMP ポーリングがうまく行けばSNMP箇所がグリーンになる
スクリーンショット 2020-11-01 17.44.38.png

4. zabbix slack 連携

Slack には Bot での連携となる

Slack Bots 作成

事前に通知用のチャンネルを作成しておく
スクリーンショット 2020-11-01 0.58.20.png

slack api を開いてYour Appsを開く
https://api.slack.com/
スクリーンショット 2020-11-01 14.22.59.png

Create New Appを開く
スクリーンショット 2020-11-01 14.25.34.png

App Name: zabbix_alerter Development Slack WorkspaceHomeLab(連携先ワークスペース)を選択してCreate Appをクリックする
スクリーンショット 2020-11-01 0.46.30.png

Botsを選択する
スクリーンショット 2020-11-01 0.46.46のコピー.png

Features > OAuth & Permissions を開き、
Scopes のなかで Token をcalls:writeで作成する
スクリーンショット 2020-11-01 0.49.44のコピー.png

OAuth Tokens & Redirect URLsInstall App to Workspaceをクリックする
スクリーンショット 2020-11-01 0.51.21のコピー.png

連携を許可する
スクリーンショット 2020-11-01 0.51.35のコピー.png

生成された Access Token をCopyして保存しておく (Zabbix側で使用する)
スクリーンショット 2020-11-01 0.51.59のコピー.png

作成した Slack のチャンネルの詳細・・・ その他アプリを追加するを開く
スクリーンショット 2020-11-01 15.10.06.png

作成したzabbix_alerter追加する
スクリーンショット 2020-11-01 15.09.34.png

追加されると下記のようにチャンネルに表示される
スクリーンショット 2020-11-01 15.09.10.png

Zabbix設定

管理 > メディアタイプ を開いて Slackを開く
スクリーンショット 2020-11-01 0.53.03のコピー.png
bot_tokenにSlack API で作成した Access Token を入力して、下のほうにいって更新をクリックする
スクリーンショット 2020-11-01 14.54.20.png

管理 > ユーザー を開いて Admin を開く
スクリーンショット 2020-11-01 14.56.10.png

メディアタブを開いて追加をクリック
スクリーンショット 2020-11-01 14.58.03.png

タイプSlack、送信先#homelab-zabbix(通知先チャンネル名)を入力して追加
スクリーンショット 2020-11-01 14.59.33.png

更新
スクリーンショット 2020-11-01 15.00.04.png

グローバルマクロの設定をするため、
管理 > 一般設定 > 表示設定 > マクロ を開く
スクリーンショット 2020-11-01 15.02.04.png

マクロ{$ZABBIX.URL},値http://[dockerサーバのIP]/を入力して更新をクリック
スクリーンショット 2020-11-01 15.03.52.png

トリガーアクションの設定をするために、
設定 > アクション を開いてReport problems to Zabbix administratorsをクリックする
スクリーンショット 2020-11-01 15.20.35.png

有効にチェックを入れて、追加をクリックする
スクリーンショット 2020-11-01 15.24.41.png

タイプトリガーの深刻度、オペレータ以上、深刻度情報を選択して追加をクリックする (通知したい深刻度以上を選択しておく)
スクリーンショット 2020-11-01 15.25.18.png

最後に更新をクリックして更新する
スクリーンショット 2020-11-01 15.26.07.png

5. Alert 試験

Ping 疎通でのアラート試験

登録したホスト機器側で Ping を止めて、Alert 発報試験をする
スクリーンショット 2020-11-01 15.42.22.png

Slack 通知は下記のようになる
スクリーンショット 2020-11-01 15.42.37.png

Ping を再有効にして復旧させると、同じメッセージが書きかわりグリーン・Upとなる
スクリーンショット 2020-11-01 15.47.46.png

Open in Zabbixをクリックすると、ブラウザで詳細表示ができる
スクリーンショット 2020-11-01 15.57.19.png

SNMP TRAP でのアラート試験

ホスト側で VPN トンネルをダウンさせて SNMPTRAP を出す
スクリーンショット 2020-11-01 15.50.57.png
スクリーンショット 2020-11-01 15.51.38.png

60秒経つと自動で復旧扱いになる(同じメッセージ書きかわり)
スクリーンショット 2020-11-01 15.52.17.png

VPN トンネルを復旧させるともう一度 SNMPTRAP が出て障害扱いになり再度60秒で復旧扱いとなる
スクリーンショット 2020-11-01 15.53.47.png
スクリーンショット 2020-11-01 15.55.28.png

以上、アラート発報試験完了

おわりに

Zabbix を公式が公開している docker-compose で簡単に構築して、SNMPTRAP のトリガー設定もした
アラート通知は Slack と連携し、動作確認できた
今後、Zabbix 5.0 を色々触っていきたい

参考

GitHub zabbix-docker
https://github.com/zabbix/zabbix-docker
Zabbix 公式: Start with SNMP traps in Zabbix > Create "Template SNMP trap fallback"
https://zabbix.org/wiki/Start_with_SNMP_traps_in_Zabbix#Create_.22Template_SNMP_trap_fallback.22
Zabbix Integration Slack
https://www.zabbix.com/integrations/slack

8
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?