Version: Xanadu
やること
Mac OSのDockerコンテナに立てたZabbix 7.0からWebhookでServiceNowにIncidentを起票します
端末スペック
このマシンで頑張ります
機種名: MacBook Air
チップ: Apple M1
コアの総数: 8(パフォーマンス: 4、効率性: 4)
メモリ: 16 GB
OS: MacOS Squoia 15.6.1
購入価格: 2024-08に中古で10万円しないくらい
Docker Desktopのインストール
ライセンス確認
Dockerのオフィシャルサイトでライセンスを確認します
*Docker Desktop は、Docker Personal サブスクリプションの一部として、個人、非商用のオープンソース開発者、学生と教育者、および従業員数 250 人未満で収益が1000 万ドル未満の小規模企業向けに無料で使用できます。
個人が試す分には問題無しと判断しました
ダウンロード&インストール
オフィシャルサイトからApple Silicon用のDocker Desktop(578.2MB)をダウンロードします
ダウンロードしたDocker.dmgをダブルクリックするとFinderに以下が表示されるのでdrag and dropするとプログレスバーが表示されて
Launchpadに入りました
Zabbix7.0を立てる
こちらの手順が簡潔で分かりやすかったので参考にさせていただきました
git cloneでローカルにレポジトリを作成して
% git clone https://github.com/zabbix/zabbix-docker.git
Cloning into 'zabbix-docker'...
remote: Enumerating objects: 130820, done.
remote: Counting objects: 100% (7644/7644), done.
remote: Compressing objects: 100% (470/470), done.
remote: Total 130820 (delta 7522), reused 7185 (delta 7173), pack-reused 123176 (from 4)
Receiving objects: 100% (130820/130820), 39.04 MiB | 175.00 KiB/s, done.
Resolving deltas: 100% (102846/102846), done.
作成されたレポジトリのディレクトリに移動して一応ファイルを確認して
% cd zabbix-docker
% ls -ltra
total 592
drwx------+ 229 user staff 7328 12 6 15:05 ..
-rw-r--r-- 1 user staff 3049 12 6 15:06 .env
drwxr-xr-x 7 user staff 224 12 6 15:06 .github
-rw-r--r-- 1 user staff 117 12 6 15:06 .gitignore
-rw-r--r-- 1 user staff 1041 12 6 15:06 .pre-commit-config.yaml
drwxr-xr-x 19 user staff 608 12 6 15:06 Dockerfiles
-rw-r--r-- 1 user staff 34523 12 6 15:06 LICENSE
-rw-r--r-- 1 user staff 6540 12 6 15:06 README.md
-rw-r--r-- 1 user staff 2990 12 6 15:06 SECURITY.md
-rw-r--r-- 1 user staff 1295 12 6 15:06 build.json
-rwxr-xr-x 1 user staff 1997 12 6 15:06 build.sh
lrwxr-xr-x 1 user staff 42 12 6 15:06 compose.yaml -> docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r-- 1 user staff 1199 12 6 15:06 compose_additional_components.yaml
-rw-r--r-- 1 user staff 2747 12 6 15:06 compose_databases.yaml
-rw-r--r-- 1 user staff 18519 12 6 15:06 compose_zabbix_components.yaml
drwxr-xr-x 7 user staff 224 12 6 15:06 config_templates
-rw-r--r-- 1 user staff 5401 12 6 15:06 docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r-- 1 user staff 8328 12 6 15:06 docker-compose_v3_alpine_mysql_local.yaml
-rw-r--r-- 1 user staff 5438 12 6 15:06 docker-compose_v3_alpine_pgsql_latest.yaml
-rw-r--r-- 1 user staff 8764 12 6 15:06 docker-compose_v3_alpine_pgsql_local.yaml
-rw-r--r-- 1 user staff 5401 12 6 15:06 docker-compose_v3_centos_mysql_latest.yaml
-rw-r--r-- 1 user staff 8328 12 6 15:06 docker-compose_v3_centos_mysql_local.yaml
-rw-r--r-- 1 user staff 5438 12 6 15:06 docker-compose_v3_centos_pgsql_latest.yaml
-rw-r--r-- 1 user staff 8840 12 6 15:06 docker-compose_v3_centos_pgsql_local.yaml
-rw-r--r-- 1 user staff 5313 12 6 15:06 docker-compose_v3_ol_mysql_latest.yaml
-rw-r--r-- 1 user staff 8076 12 6 15:06 docker-compose_v3_ol_mysql_local.yaml
-rw-r--r-- 1 user staff 5350 12 6 15:06 docker-compose_v3_ol_pgsql_latest.yaml
-rw-r--r-- 1 user staff 8500 12 6 15:06 docker-compose_v3_ol_pgsql_local.yaml
-rw-r--r-- 1 user staff 5025 12 6 15:06 docker-compose_v3_ubuntu_mysql_latest.yaml
-rw-r--r-- 1 user staff 8046 12 6 15:06 docker-compose_v3_ubuntu_mysql_local.yaml
-rw-r--r-- 1 user staff 5062 12 6 15:06 docker-compose_v3_ubuntu_pgsql_latest.yaml
-rw-r--r-- 1 user staff 8495 12 6 15:06 docker-compose_v3_ubuntu_pgsql_local.yaml
drwxr-xr-x 22 user staff 704 12 6 15:06 env_vars
-rw-r--r-- 1 user staff 45007 12 6 15:06 kubernetes.yaml
-rw-r--r-- 1 user staff 57 12 6 15:06 sonar-project.properties
drwxr-xr-x 38 user staff 1216 12 6 15:06 .
drwxr-xr-x 3 user staff 96 12 6 15:06 sources
drwxr-xr-x 12 user staff 384 12 6 15:06 .git
% git checkout 7.0
branch '7.0' set up to track 'origin/7.0'.
Switched to a new branch '7.0'
docker composeでコンテナを起動して
% docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d
[+] Running 28/28
✔ zabbix-web-nginx-mysql Pulled 746.4s
✔ 0230c02e7d01 Pull complete 3.5s
✔ fc5847db77d9 Pull complete 731.0s
✔ 3f44868732c6 Pull complete 731.6s
✔ a825ab3f86d4 Pull complete 3.5s
✔ 4f4fb700ef54 Pull complete 0.9s
✔ db-data-mysql Pulled 227.9s
✔ 5bc51b87d4ec Pull complete 212.5s
✔ server-db-init Pulled 536.5s
✔ 8cff2d2481f5 Pull complete 0.9s
✔ 8325014871be Pull complete 521.7s
✔ be68d8067e59 Pull complete 243.7s
✔ 915fccd74642 Pull complete 3.5s
✔ d3d507908f79 Pull complete 238.2s
✔ 6b99bb34b272 Pull complete 5.6s
✔ zabbix-server Pulled 537.4s
✔ mysql-server Pulled 830.7s
✔ 0d86225d469f Pull complete 732.1s
✔ a1dd8cadb823 Pull complete 732.2s
✔ e50b19e58c3b Pull complete 815.2s
✔ 5bcf432ee766 Pull complete 732.8s
✔ 5670e3d652a6 Pull complete 3.8s
✔ 9fafa8e66b96 Pull complete 3.8s
✔ e8114797ee6f Pull complete 3.8s
✔ af0cb767785c Pull complete 3.8s
✔ 5e625c6ed2b4 Pull complete 3.8s
✔ 3284b0d66176 Pull complete 92.6s
✔ 331b724db889 Pull complete 3.8s
[+] Running 11/11
✔ Network zabbix-docker_default Created 0.0s
✔ Network zabbix-docker_database Created 0.0s
✔ Network zabbix-docker_backend Created 0.0s
✔ Network zabbix-docker_frontend Created 0.0s
✔ Network zabbix-docker_tools_frontend Created 0.0s
✔ Volume zabbix-docker_snmptraps Created 0.0s
✔ Container zabbix-docker-mysql-server-1 Started 9.5s
✔ Container zabbix-docker-db-data-mysql-1 Started 9.7s
✔ Container zabbix-docker-server-db-init-1 Exited 22.8s
✔ Container zabbix-docker-zabbix-web-nginx-mysql-1 Started 22.9s
✔ Container zabbix-docker-zabbix-server-1 Started 22.9s
起動したコンテナを確認します
% docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d624e696eb81 zabbix/zabbix-server-mysql:alpine-7.0-latest "/usr/bin/docker-ent…" About a minute ago Up 52 seconds 0.0.0.0:10051->10051/tcp, [::]:10051->10051/tcp zabbix-docker-zabbix-server-1
729810ba997d zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest "docker-entrypoint.sh" About a minute ago Up 52 seconds (healthy) 0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp zabbix-docker-zabbix-web-nginx-mysql-1
add4e1db2424 mysql:8.0-oracle
ブラウザで http://127.0.0.1 にアクセスして以下の画面で
有名な初期パスワードのAdmin/zabbixでログインします
手順通りだとZabbix Agentも入れてありましたがとりあえずここまでで十分です
Docker DesktopでContainers情報を見るとなかなか賑やかになっています
WebhookでServiceNowにIncidentを起票する
Zabbix.4.4以降はServiceNowとの連携にWebhook(ServiceNow)が選べるようになっています それまではRESTするScriptを実装してZabbix ServerのOS上に配置してパスを指定、だったのでモダンになったなと思いました
ServiceNowにWebhook用のユーザーを作成
ServiceNowでroleにitlをつけてweb service access onlyのユーザーを作成します
ZabbixにMedia Typeを追加
Alert - Media types を選択してNameで ServiceNow で絞り込みます
ServiceNowをクリックして servicenow_url, servicenow_user, servicenow_password を設定してUpdateをクリックして保存します
StatusがDisabledになっているのでクリックしてEnableに変更した後で右端の Test をクリックします
Test用のダイアログが開くので変数になっている箇所に適当な値を入力して Test をクリックします
Testに成功するとダイアログ上部にsuccessfulと表示されます
起票確認
ServiceNowのインスタンスでZabbixから起票されたIncidentを確認できました
余談
Zabbixのuser.loginというAPIの引数が5.3で変更されているようです
Zabbixのドキュメントを確認するとuser.loginというAPIの引数が5.2まではuserだったのが
5.4からusernameに変更されているようです
てっきりもう枯れてきているプロダクトかなと思っていたのですが…なかなか思い切ったことをするなと感じました
















