Zabbix4.0LTS Ubuntuを監視対象に追加

ウチの中で動いている Samba ad dc サーバーと、Router(2)は Ubuntu で構築している。これらを監視対象にする。



やること。

※アイテムタイプのマニュアル
ZABBIX / Item types 4.0LTS(英語)
ZABBIX / アイテムタイプ 2.2(日本語)

 

Ubuntuにエージェントをインストール

監視対象となる Ubuntu にエージェントをインストールする。

サーバーのインストールの時 zabbix-agent をインストールしている。きっと同じ手順でエージェントだけをインストールすればいいんだろうと考えた。

#リポジトリのインストール
$ wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+bionic_all.deb
$ sudo dpkg -i zabbix-release_4.0-3+bionic_all.deb
$ sudo apt update

#パッケージインストール
$ sudo apt install zabbix-agent

#サービスの有効化
$ sudo systemctl enable zabbix-agent ← うまくいかない場合も…
Synchronizing state of zabbix-agent.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable zabbix-agent
$ sudo /lib/systemd/systemd-sysv-install enable zabbix-agent ← これなのか?

 

ポートを開放。

$ sudo ufw allow to any port 10050 from any comment "ZABBIX agent"

 

設定ファイルをいじる。
Qiita / Zabbixエージェントの設定 (CentOS編)

/etc/zabbix/zabbix_agentd.conf
Server=172.16.nnn.nnn,fdxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
ServerActive=172.16.nnn.nnn,fdxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Hostname=addc

※172.16.nnn.nnn と fdxx:~:xxxx は Zabbix Server が動いているサーバー。

ホスト名で名前解決しようとしたとき、IPv6 アドレスが返ってくる環境では IPv6 アドレスも指定しておいた方が無難。エージェントは問い合わせてくるサーバーをIPアドレスで判断して回答するかどうかを決めるから。

サービスを再起動。

$ sudo systemctl restart zabbix-agent

 

サーバーに zabbix_get をインストールしてあるので、サーバーからこのこのコマンドを打って試してみる。

$ zabbix_get -s addc -k agent.hostname
addc

 

ホスト名が帰ってくる。エージェントは動き出したようだ。

 

監視対象のホストにUbuntuを追加

Zabbix サーバーに監視するホストとして Ubuntu サーバーを登録する。

設定 → ホスト → ホストの作成ボタン で Samba ad dc サーバーと、Router(2) サーバーを追加する。

ホストはホストグループ My Home Servers に紐付ける。

ホスト名として addc、表示名は Samba ad dc とした。これはこの記事を書きやすくするために指定しただけで、表示名は特に指定しなければ addc と表示される。

ホストが登録される。エージェントはインストールされているはずだが…この時点では有効にならない。

ホストにテンプレートを割り付ける。
新規テンプレートをリンク のところに My Home Servers Templates を表示させるだけではだめで、「追加」のリンクをクリックして登録し、更新ボタンをクリックする。

これで、Zabbix サーバーは Ubuntu を監視し始める。

 

監視するアイテムとグラフの登録

設定 → テンプレート から My Home Servers Templates を選択し、アイテムタブを選択、アイテムの作成 ボタンで監視するアイテムを登録できる。

同様に My Home Servers Templates を選択し、グラフタブを選択、グラフの作成 ボタンでグラフを登録できる。

監視するアイテムがどんな値を返してくれるのか、というのを事前にチェックするために zabbix_get コマンドを利用した。これは上の方で Zabbixサーバーにインストールしている。

CPU使用率

CPU使用率を取るためにこんなアイテムを設定してみた。
これは実際にはちょっと自信がなくて、後で取り替えるかもしれない。

$ zabbix_get -s addc -k "proc.cpu.util[all,all users,total,avg1]"

 

グラフを追加してみる。

取り出せるデータはパーセントなので、軸は0~100で固定した。

 

ディスクの使用帯域

ディスクの使用帯域は Read と Write が別々。

$ zabbix_get -s addc -k "vfs.dev.read[all,sps,avg1]"
$ zabbix_get -s addc -k "vfs.dev.write[all,sps,avg1]"

※どうも Bytes per second ってのは取れないらしく、Sector per second を取る。

アイテムを2つ追加。

単位は sector としたけれど、正しくは sectors/second か…

グラフは Read と Write を重ねて表示するのがいいかなぁ。

最大値はハードディスクの最大転送量から設定できればグラフ表示が安定して、やけにディスクアクセスが多いといった事象が一目で分かるが、このタイミングではよく分からなかったので自動スケールにしてある。

メモリ使用量

そもそもどれくらいのメモリを割り当ててるんだっけ…

  • Samba ad dc → 512MB
  • Router(2) → 512MB
  • Application Server → 4GB

ん~だいぶプアー。
それはさておき一定ではないので、利用率で監視することを考えた。

$ zabbix_get -s addc -k vm.memory.size[pused]

 

グラフも作成。

 

ネットワーク帯域

ネットワーク帯域は累積数が取れる模様。

$ zabbix_get -s addc -k net.if.in[ens160,bytes]
$ zabbix_get -s addc -k net.if.out[ens160,bytes]

※Ubuntu18.04だけだったので ens160 だったけど…Ubuntu16.04は eth0 だなぁ。インターフェースがIPアドレスを1つだけ持つなら {IPADDRESS} を指定するといいみたい。

※単位は bytes/s だったがここでは記入忘れ。後から入力して更新すればOK。

累積なので、保存前に差分計算をして保管する設定が必要。
保存前処理タブで行う。

グラフを作成。ウチは 100BASE-T なネットワーク環境なのでこれを超えることは絶対にできない…という前提で、最大値を固定。

 

グラフの確認

これで、実際にどんな風なグラフが見えるのかを見てみた。

監視データ → グラフ と進み、ネットワーク帯域使用を選択してみた。

ちょっと受信量が上がっているところでは、テストで250MB程のファイルを Samba 経由で転送している。

スクリーンの作成

1つのホストでも見たいものはいっぱいあるし、複数のホストをいっぺんに見たい、グラフを並べてみたい。

これにはスクリーンという機能を使うらしい。

監視データ → スクリーン → スクリーン作成 ボタンで作成する。

スクリーンができたら、変更リンクをクリックする。

スクリーンの編集画面になるので、グラフを埋め込む。

ダイナミックアイテムについては、今はよく分からない。

4列にしたので幅は200位にしないと入らなかった。
並べた結果はこちら。

スクリーンができたら、これを利用すべきユーザーと共有することができる。
ここでは、Zabbix administrators グループに対して表示と設定変更の権限を渡している。

なんか形になってきた気がする。さあ、次に行ってみよう。

 

やったこと

CPU使用率

CPU の使用率を見ようと思ったけれど、テンプレートにあった CPU の使用率に関する項目の意味がよく分からなかった。こんな感じで簡単に見られるんだとばっかり思っていたが…

CPUの使用率に関しては sar コマンドで確認できるみたい。
あぱーブログ / Zabbix 3-3. CPU使用率 監視テンプレート設定

sar コマンドの説明は以下。
ubuntu manuals / sar

sarコマンドは、オペレーティングシステムで選択された累積アクティビティカウンターの内容を標準出力に書き込みます。

とあり、エージェントもこれを取り出しているのかな…。指定可能な値を sar コマンドのマニュアルから探して Google 先生に翻訳してもらってみた。

設定値 意味
idle 1つまたは複数のCPUがアイドル状態で、システムに未処理のディスクI/O要求がなかった時間の割合。
nice 優先度指定されてユーザーレベルで実行しているCPUの使用率。
user (default) ユーザーレベル(アプリケーション)で実行中に発生したCPU使用率。このフィールドには、仮想プロセッサの実行に費やされた時間が含まれていることに注意してください。
system (default for Windows) システムレベル(カーネル)で実行中に発生したCPU使用率。このフィールドには、ハードウェアおよびソフトウェア割り込みの処理に費やされた時間が含まれていることに注意してください。
iowait 1つまたは複数のCPUがアイドル状態になっていて、システムに未処理のディスクI/O要求があった時間の割合。
interrupt [sarコマンドではirqで報告される想定]
1つまたは複数のCPUがハードウェア割り込みの処理に費やした時間の割合。
softirq [sarコマンドではsoftで報告される想定]
1つまたは複数のCPUがソフトウェア割り込みの処理に費やした時間の割合。
steal ハイパーバイザーが別の仮想プロセッサーにサービスを提供している間に、1つまたは複数の仮想CPUが不本意に待機した時間の割合。
guest (Linuxカーネル2.6.24以降) 1つまたは複数のCPUが仮想プロセッサを実行するために費やした時間の割合。
guest_nice (Linuxカーネル2.6.33以降) CPUが優先度指定されたゲストを実行するために費やした時間の割合。

さらに、ここでそれぞれの意味を補完してみる。
CodeZine / Linux OSリソースのパフォーマンス分析(2) ~ CPUとメモリの使用状況を分析してみよう

自分的には、

  • 1 – idle
  • user + system + interrupt + softirq

のいずれかの値が欲しいように思う。で、CPU 使用率が高いなーとなってから、それが何故なのかを調べたい感じだろうな…と。

改めて Zabbix のマニュアルを見てみると、4.0には proc.cpu.util という監視アイテムもあるみたい。これ、プロセス ALL だったら、なんとなくイメージしている CPU 使用率に近いのかもしれないなーって思ったりして。

$ zabbix_get -s addc -k "proc.cpu.util[all,all users,total,avg1]"

 

ディスク使用帯域が取れない

このキーで取れたら簡単?と思ったけど、エラーになった。

$ zabbix_get -s addc -k "system.stat[disk,]"
ZBX_NOTSUPPORTED: Unsupported item key.

 

このことについては、ここで触れられていた。
誰でも ZABBIX / 2. 監視アイテムの追加 – Zabbix Agent

エージェントはホストが持っている仕組みを利用して情報を取り出しているようなので、そのホストが持っていない情報は取り出せないみたい。
ZABBIX Documentation / Items supported by platform

ホストが持っていない情報は取り出せないのであれば、持っている情報を取ってこよう。

$ zabbix_get -s addc -k "vfs.dev.read[all,bps,avg1]"
ZBX_NOTSUPPORTED: Invalid second parameter.
$ zabbix_get -s addc -k "vfs.dev.read[all,sps,avg1]"
0.000000

 

 

さいごに

この投稿を書いている最中、何度も修正をして、何度も作り直しをして…とガチャガチャやったけれど、最終的にきちんとした設定ができればちゃんと動く。

安心してカットアンドトライができる。Zabbix は色々とやってみれば、最後には結果がちゃんと出せる環境だと思う。

さぁ、次は Windows の監視だー。

お気軽にどうぞ ~ 投稿に関するご意見・感想・他

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です