始めに
今回は自分のzabbix学習のスタートとして、以下の図の構成でメール送信テストを行います。
まず、windowsマシン上でZabbix-AgentとZabbix-Serverを起動させます。Zabbix-Serverはdockerから起動し、監視対象から送られてくる統計情報を受け取ります。また、VMwareから起動したUbuntuにはZabbix-Agentをインストールし、Zabbix-Serverに対して統計情報を送信します。
Zabbix-ServerがZabbix-Agentから統計情報を受け取り、「Ubuntu上でのCPU使用率が高くなっている」と判断すると、Zabbix-Serverはアラーム通知用のgmailアカウントにログインして、システム管理者にgmailを送信します。
このシナリオを実際に作成し、gmailが正常に送信されることを確認します。
Zabbix Serverの導入
windowsにdockerを導入後、あらかじめ公式で用意されているdokcer composeを用いてサクッとZabbix Serverを建てます。
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
docker compose -f docker-compose_v3_centos_mysql_latest.yaml up -d
コンテナが立ち上がったら、http://localhost:80/ からWeb Interfaceにアクセスしてみます。ログイン画面が表示されればOKです。
正常にログイン画面が表示されたら、usernameをAdmin、passwordをzabbixでログインしてみましょう。
Zabbix Agentの導入
VMWare Workstation ProでUbuntuの仮想マシンを作成し、以下のコマンドを用いてZabbix agentをインストールします。
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
apt install zabbix-agent2
正常にインストールできたら、/etc/zabbix/zabbix_agent2.confの中を編集し、ServerとServerActiveのパラメータを0.0.0.0/0に設定してしまいます(横着してます)。また、Hostnameが「Zabbix Server」であることを確認します。
ここまでの設定・確認が終わったら、以下のコマンドでプロセスを再起動しましょう。
systemctl restart zabbix-agent2
また、後でAgent側のIPアドレスが必要になるので、「ip a」コマンドで控えておきましょう。
VMwareとdockerを共存させる際の注意点
Windows上でVMwareとdockerの両方を用いている場合、VMware側の仮想マシンが正常にDHCPからIPアドレスを受け取れない場合があります。これは、VMware側で接続しようとするNWが、通常(普段)使用しているNW(wifi等)ではなく、dockerで生み出された仮想的なNW構成側と接続することが原因らしいです(詳しいことはわかりませんが、、、)。
このような現象が発生すると、仮想NICにIPアドレスが割り振られないので外部と通信できなくなり、この後のgmail・シナリオテストができなくなります。これを防ぐためにVMWare上で、特定のネットワークと接続するように設定をする必要があります。
設定手順は以下になります。
- 「編集」→「仮想ネットワークエディタ」を選択
- 「設定の変更」を選択し、管理者権限を付与
- ブリッジ先を普段使っていそうなアダプタに変更
- 「適応」→「OK」
これにより、VMware側でも正常にIPアドレスが割り当てられます。
Zabbix Serverの設定
Zabbix ServerがZabbix Agentに対して監視統計情報をリクエストできるように、web Interfaceから設定を行います。「Data collection」メニューから「Hosts」を選択し、ページ中央あたりに出ている「Zabbix server」ホストを選択します。
設定画面が表示されるので、「interfaces」に先ほど控えたAgentのIPを入力して適用します。Hostsの画面上でAvailabilityの欄が緑色になればOKです(多少時間がかかるので何度かれフレッシュしましょう)。
Server/Agent間の疎通確認
ここまでで、Zabbix Serverとzabbix Agentの通信が可能となったはずなのでテストをしてみます。ここでは、Ubuntu仮想マシンのCPU使用率を意図的に上昇させることにより、Zabbix Serverでアラームが発報されることを確認します。
まずは、Zabbix Server上でアラームの発報頻度が上がるように設定を行います。「Data collection」メニューから「Templates」を選択します。表示されるページで「Name」の欄に"load"と入力し、「Apply」ボタンをクリックします。以下の画面のように表示されるはずです。
ここで、「Linux by Zabbix agent」の列が表示されると思います。この「Linux by Zabbix agent」テンプレートは、すでに先ほど設定した「Zabbix server」ホストと紐づいているので、このテンプレートの編集を行っていきましょう。
「Linux by Zabbix agent」の列の「items」をクリックします。その後表示される画面で「Name」の欄に"load"と入力し、「Apply」ボタンをクリックします。以下の画面のように、「Load average」の項目が表示されているはずです。
このうち、一番上に表示されている「Load average(1m avg)」をクリックし、「Update interval」を"10s"に設定します。また、Triggersをクリックすることで表示されるポップアップウィンドウから「Linux: load average is too high」をクリックします。これがCPU使用率によってアラーム発報させるためのトリガーとなります。
設定画面が表示されるので、Expressionの欄に以下のスクリプトを入力し、更新します。
min(/Linux by Zabbix agent/system.cpu.load[all,avg1],10s)/last(/Linux by Zabbix agent/system.cpu.num)>{$LOAD_AVG_PER_CPU.MAX.WARN}
これで、発報頻度を上げることができました。
さて、実際にアラーム発報テストをしてみましょう。Ubuntu仮想マシンで以下のコマンドを何回か実行し、CPUの負荷を上昇させます。
yes > /dev/null &
数十秒待つとZabbix Web Interfaceにてアラームが発報されます。
これで、Server/Agent間の疎通確認ができました。先ほど負荷試験に使ったプロセスはkillしておきましょう。
Gmailテスト
次にZabbixサーバとGmailのつなぎこみを行いますが、このためにはGmailのアプリパスワードを取得する必要があります。https://myaccount.google.com/apppasswords から、任意のgoogleアカウントにログインし、アプリパスワードを控えておきましょう。ここからは、Zabbix Web Interfaceでの操作になります。「Alert」メニューから「Media Type」を選択します。表示された画面の「Email」列からStatusを「enable」にし、「Email」をクリックして設定画面に移ります。
設定画面では「Email propider」を「Gmail」にし、「Email」に先ほどログインしたアカウント、「Password」には控えたアプリパスワードを入力します。設定更新後、「Email」列の「Test」をクリックし、「Send to」にメール送信先を設定して、テストメールを送ってみましょう。
実際にメールを受信できれば、ZabbixサーバとGmailのつなぎこみは完了となります。
シナリオテストの設定
ここまでで、以下の図の赤枠・青枠で囲った部分の設定が完了しました。
そして、シナリオテストを行うためには「アラーム発報時にGmailを送信する」部分の設定を行う必要があります。まず、「Alerts」→「Actions」→「Trigger actions」から、「Report problems to Zabbix administrators」のステータスをenableにします。次に、「Users」→「Users」のadminをクリックし、「Media」の設定画面に移ります。
本設定画面で、「Send to」にメール送信先を設定し、設定を更新します。これで、すべての設定が完了しました!最後にシナリオテストを行ってみましょう。
シナリオテスト
以下のコマンドを数回実行してCPUに負荷をかけ、Zabbixでアラート発報したらGmail送信が行われることを確認します。
yes > /dev/null &
「Problem: Linux: Load average is too high (per CPU load over 1.5 for 5m)」みたいなメールが来ればOKです。これで、zabbixをちょっとだけ使えるようになりました!








