2020 年 11 月 29 日
OSS 運用管理ツール Zabbix でどのような値を監視できるのか
はじめに
前回までの記事では Zabbix サーバーの構築、そしてアイテムとトリガーの設定を説明しました。
今回の記事では、監視対象に Raspberry Pi 3 Model B を使用し Zabbix センダを利用したトラップ監視、エージェントを使用しポーリング監視を行う方法を説明します。
環境
本記事では以下の環境にて行いました。
本記事では、Zabbix サーバーに弊社製品である「MIRACLE ZBX」を使用しています。
Raspberry Pi にはコミュニティ版 Zabbix を使用しています。
Zabbix サーバー 仮想マシン
使用ソフトウェア | バージョン |
---|---|
Oracle VM VirtualBox | 6.1.6 r137129 (Qt5.6.2) |
CentOS | 7.7.1908 (Core) |
MIRACLE ZBX Server | 4.0.18-6 |
MariaDB | 15.1 Distrib 10.4.12-MariaDB |
監視対象
Raspberry Pi 3 Model B
*コミュニティ版 Zabbix を使用しています
使用ソフトウェア | バージョン |
---|---|
Raspbian | 10.4 |
Zabbix sender | 4.0.17 |
Zabbix agent | 4.0.17 |
アイテム
Zabbix では、監視対象の CPU 使用率やディスク使用率など個別の監視項目を「アイテム」と呼びます。
Zabbix はアイテムごとに値の取得方法および取得のために動作するプロセスが異なります ( アイテムタイプ )。
アイテムタイプは Zabbix エージェントの有無、監視通信の開始起点の観点から 4 種類に分類できます。
(1) エージェントレス監視
Zabbix エージェントを使わないで監視を行う方式です。SNMP などを利用する場合は監視 対象に監視に使用するためのクライアントを導入する必要があります。
(2) トラップ監視
監視対象が主体となり Zabbix サーバーへ監視情報を送信する方式です。
(3)Zabbix エージェント監視 ( ポーリング )
監視対象に Zabbix エージェントを導入し、Zabbix サーバーが Zabbix エージェントにポーリ ング監視を行う方式です。
(4)Zabbix エージェント監視 ( アクティブチェック )
監視対象に導入した Zabbix エージェントが監視情報をリストに基づいてあらかじめ取得 し、Zabbix エージェントを起点として監視情報を連携する方式です。
前回の記事 では、(1) エージェントレス監視、(4)Zabbix エージェント監視 ( アクティブチェック ) にて監視を行いました
本記事では、(2) トラップ監視、(3)Zabbix エージェント監視 ( ポーリング ) を Raspberry Pi を用いて行います。
Zabbix エージェント、Zabbix センダのインストール
監視対象である Raspberry Pi に Zabbix エージェント、Zabbix センダをインストールする方法を紹介します。
注意事項
- MIRACLE ZBX の動作環境が「ia32/x86-64」のため今回は OSS コミュニティで公開されている Raspbian 用のコミュニティ版の Zabbix を使用します。
- MIRACLE ZBX とコミュニティ版の Zabbix では、互換性があるため連携することができます。
しかし MIRACLE ZBX とコミュニティ版 Zabbix のバージョンに気をつけてください。
以下の対応例の表のようにバージョンを同一もしくは、低くする必要があります。 - メジャーバージョンが異なるとそのバージョンで追加された機能を利用することはできません。
表 MIRACLE ZBX とコミュニティ版 Zabbix の対応例
MIRACLE ZBX | コミュニティ版 Zabbix | 対応 |
---|---|---|
server 4.0.20 | agent 4.0.21 | × |
server 4.0.20 | agent 4.0.20 | 〇 |
server 4.0.20 | server 4.0.20 | 〇 |
server 4.0.20 | server 4.0.20 | 〇 |
(1) コミュニティ版リポジトリの追加
コミュニティ版ダウンロードページ から対象の OS やバージョンを選択してください。
今回の記事の環境での例
$ wget https://repo.zabbix.com/zabbix/4.0/raspbian/pool/main/z/zabbix-release/zabbix-release_4.0- 3+buster_all.deb $ sudo dpkg -i zabbix-release_4.0-3+buster_all.deb $ sudo apt update
バージョンを指定してインストールを行いたい場合は 過去のバージョン一覧 から目的のバージョンのものをダウンロードしインストールしてください。
(2)Zabbix エージェント、Zabbix センダのインストール
$sudo apt install zabbix-agent zabbix-sender
Zabbix エージェント監視 ( ポーリング )
Zabbix サーバーが監視対象にポーリングを行い監視を行う方式です。
監視対象に Zabbix エージェントを入れる必要があります。
今回は、Raspberry Pi に Zabbix エージェントを導入し CPU の温度を監視する方法を紹介します。
エージェントの設定
(1) SELinux が有効な場合は無効化します。
設定ファイル /etc/sysconfig/selinux の該当行を以下のように変更します。
SELINUX=disabled
(2) ファイアウォールの設定を変更します。
$ sudo ufw allow 10050 $ sudo ufw reload
(3) 設定を反映させるため再起動します。
$ sudo reboot
(3)Zabbix エージェントの設定ファイルを編集します。
設定ファイル /etc/sysconfig/selinux の該当行を以下のように変更します。
Server=<Zabbix サーバーの IP アドレス > ServerActive=<Zabbix サーバーの IP アドレス > Hostname=< ホスト名 >
(6)Zabbix エージェントを起動し、自動起動設定を行います。
$ sudo systemctl start zabbix-agent $ sudo systemctl enable zabbix-agent
ホストの登録
Zabbix エージェントを導入した Raspberry Pi を Zabbix サーバーに登録します。
CentOS7 への Zabbix エージェントの導入の Zabbix エージェントのインストールを参考にホストを追加します。
(1)Zabbix サーバーの Web インターフェースにアクセスします。
( デフォルトでは http://<Zabbix サーバーの ip アドレス >/zabbix )
(2) 画面上部にある「設定」→「ホスト」をクリックします。
(3) 画面右上の「ホストの作成」をクリックします。
(4) 下記の項目を入力します。
- ホスト名 「Zabbix エージェントの設定ファイルに設定した Hostname」
登録する監視対象のホスト名です。
Zabbix エージェントの設定ファイルと違うものを入力するとエラーが発生するため注意し てください。 - グループ 「Linux servers」
登録する監視対象が所属するグループを設定します。 - エージェントのインターフェース 「< 監視対象の IP アドレス >」
監視対象に接続する方法を設定します。
(5)「テンプレート」をクリックし、タブを移動します。
(6)「新規テンプレートをリンク」の右にある「選択」をクリックします。
(7) テンプレートの一覧が出てくるので「Template OS Linux」をクリックします。
(8) 青文字の「追加」をクリックします。
(9) 青枠白文字の「追加」をクリックします。
アイテムの設定
Raspberry Pi の CPU の温度を監視できるようにアイテムに追加します。
しかしながら Raspberry Pi の CPU 温度は Zabbix の標準では監視することはできません。
そのためユーザーパラメータを使い監視できるようにします。
ユーザーパラメータ
ユーザーパラメータとは、Zabbix が標準で持っていない監視内容をユーザーが拡張して登録できる機能です。
Zabbix エージェントがコマンドを実行し、その結果を Zabbix サーバーに送信します。
(1)Zabbix エージェントの設定ファイルを編集します。
ユーザーパラメータの構文は以下のとおりです。
UserParameter = 任意のキー名 , コマンド
Raspberry Pi の CPU 温度は、次のコマンドで取得することができます。
$ cat /sys/class/thermal/thermal_zone0/temp
キー :system.cpu.temperature
コマンド:cat /sys/class/thermal/thermal_zone0/temp
設定ファイル /etc/sysconfig/selinux の該当行を以下のように変更します。
UserParameter=system.cpu.temperature,cat /sys/class/thermal/thermal_zone0/temp
設定変更後は Zabbix エージェント再起動を行う
$ sudo systemctl restart zabbix-agent
アイテムの追加
(1)Zabbix の Web インターフェースにアクセスします。
( デフォルトでは http://<Zabbix サーバーの ip アドレス >/zabbix )
(2) 画面上部にある「設定」→「ホスト」をクリックします。
(3) 監視対象の名前の横にある「アイテム」をクリックします。
今回の例の場合は、監視対象は Raspberry Pi なのでその横にあるアイテム ( 下記図の赤丸 )
(4) 画面右上にある「アイテムの作成」をクリックします。
(5) 各項目に下記を入力します。
- 名前 「CPU 温度」
登録名です。任意の名前を指定できます。 - タイプ 「Zabbix エージェント」
アイテムタイプ ( 監視を行う方式 ) を指定します。ポーリング監視では Zabbix エージェントを選択します。 - キー 「system.cpu.temperature」
取得したい値に応じてキーを指定する必要があります。
Zabbix エージェントのユーザーパラメータで設定したキーを選択してください。
今回は追加したキーである「system.cpu.temperature」を指定します。 - ホストインターフェース Raspberry Pi の IP アドレスを設定してください。
- データ型 「数値 ( 浮動小数 )」
小数点以下の値があるため - 単位 「℃」
- 更新間隔 「任意」例では 30s になっています。
(6) 保存前処理をクリックし下記のように設定してください。
- 乗数 0.001
$ cat /sys/class/thermal/thermal_zone0/temp のコマンドでは 1000 倍の値で CPU の温度が出力されるため
(7)「追加」をクリックするとアイテムが追加されます。これで設定は完了です。
(8) 監視結果を確認するには「監視データ」→「最新データ」をクリックします。
トラップ監視
監視対象から Zabbix サーバーに監視情報を送る方式です。
監視対象に Zabbix エージェントを入れる必要はありません。
今回は、Zabbix センダを用い Raspberry Pi に接続した温度センサ (BME280) から取得した温度を監視する方法を紹介します。
ホストの登録
前項を参考にホストの登録をしてください。
アイテムの設定
(1)Zabbix の Web インターフェースにアクセスします。
( デフォルトでは http://<Zabbix サーバーの ip アドレス >/zabbix )
(2) 画面上部にある「設定」→「ホスト」をクリックします。
(3) 監視対象の名前の横にある「アイテム」をクリックします。
(4) 画面右上にある「アイテムの作成」をクリックします。
(5) 各項目に下記を入力します。
- 名前 「温度センサ」
登録名です。任意の名前を指定できます。 - タイプ 「Zabbix トラッパー」
アイテムタイプ ( 監視を行う方式 ) を指定します。Zabbix トラッパーを選択します。 - キー 「environment.temperature」
この後設定する Zabbix センダで設定するキーを選択してください。
今回は「environment.temperature」を指定します。 - データ型 「数値 ( 浮動小数 )」
小数点以下の値があるため - 単位 「℃」
Zabbix センダ
Zabbix センダは監視データを Zabbix サーバーに送信するためのコマンドラインユーティリティです。
今回は Raspberry Pi に接続した温度センサの値を Zabbix センダを用いて送信します。
使用するセンサは BME280 です。このセンサでは、温度、湿度、気圧を測定することができますが本記事では温度の値しか使用しません。
接続方法、サンプルプログラムには以下のサイトを参考にしました。
BME280 搭載 温湿度・気圧センサモジュール
SWITCHSCIENCE/samplecodes
(1) 上記サイトからサンプルコードをダウンロードします。
(2) 温度だけを出力するようサンプルプログラムを変更します。
(3) 変更後のプログラムを bme280_sample_temperture.py に名前を変更してください。
- print "temp : %-6.2f C" % (bar["temp"])
- print "hum : %6.2f %%" % (bar["hum"])
- print "pressure : %7.2f hPa" % (bar["pres"])
+ print "%-6.2f" % (bar["temp"])
+ #print "hum : %6.2f %%" % (bar["hum"])
+ #print "pressure : %7.2f hPa" % (bar["pres"])
(4)1行目に以下を追加してください。
#!/usr/bin/env python
(5)bme280_sample_temperture.py に実行権限を追加する
$ sudo chmod +x ./bme280_sample_temperture.py
変更後はプログラムを実行すると温度のみが出力されます。
(6)Zabbix センダを用いて送信してみます。
$ zabbix_sender -z Zabbix サーバーホスト -s " ホスト名 " -k アイテムキー -o 監視する値
z:Zabbix サーバーホスト(IP アドレスも使用できます)
s:監視対象ホスト名(Zabbix フロントエンドに登録したホスト名)
k:アイテムキー
o:送信する値
$ zabbix_sender -z Zabbix サーバーの IP アドレス -s " ホスト名 " -k environment.temperature -o `./bme280_sample_temperture.py` > info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000033" sent: 1; skipped: 0; total: 1
(7)Zabbix の Web インターフェースの「監視データ」→ 「最新データ」をクリックします。
作成したアイテムを探し、送信した値が反映されていれば成功です。
*今回は監視する値を Zabbix サーバーに送信する例を紹介しました。しかし、送信するのはコマンドの実行時の一度のみです。定期的に値を送信したい場合には、crontab 等のコマンドを使用し定期的に Zabbix センダ コマンドを実行する設定を行う必要があります。
まとめ
今回は Raspberry Pi を使用してポーリング監視、トラップ監視を行いました。
また Zabbix 標準では監視できない CPU 温度と温度センサデータの監視を行いました。
次回は Windows マシンにエージェントをインストールする記事を掲載する予定です。お楽しみに!