2019年6月23日日曜日

Zabbix4.2 で Inventory 機能を使ってみた

概要

Inventory 機能はアイテムで取得した値を Inventory という特別な領域に登録することができます
Inventory に登録した情報を使ってホストを検索したり GROUP BY してカウントしたりできます
今回は docker 上で機能を試してみました

環境

  • Zabbix サーバ
    • Ubuntu 16.04 LTS
    • docker 18.09.6
    • Zabbix Server 4.2
  • Zabbix エージェント
    • macOS 10.14.5
    • docker 18.09.2
    • Zabbix Agent 4.2

Zabbix サーバ起動

Ubuntu 16.04 上で起動します
前回の記事で紹介しているのでそちらを参考にしてください
Zabbix サーバが起動していればいいので docker でなくても OK です

Zabbix Agent 起動

Agent も docker で起動します
ホストを準備するのが面倒な場合に便利です

  • docker run -d -e ZBX_HOSTNAME="c1" -e ZBX_SERVER_HOST="192.168.99.200,172.17.0.1" -p 10050:10050 zabbix/zabbix-agent

ZBX_HOSTNAME はサーバ上に登録するホストの名前と同じにします
マシンのホスト名である必要がありません
ZBX_SERVER_HOST は Zabbix サーバの IP アドレスを指定します
2 つ指定しているのは Zabbix サーバの Incomming と Outgoing の IP が docker の場合異なっているからです
普通に VM などで Zabbix サーバを起動している場合は Incomming と Outgoing が同じになるので 1 つで OK です

Zabbix Agent コンテナが起動したログを確認してみましょう

  • docker logs -f 069e4e9ee319

active check configuration update from [172.17.0.1:10051] started to fail (cannot connect to [[172.17.0.1]:10051]: [111] Connection refused) というログが出ていますが無視で OK です
先程説明した Zabbix サーバコンテナの Outgoing IP にはアクセスしようとしているため出ているだけです
もし Zabbix サーバコンテナの Outgoing IP を指定しない場合は以下のエラーになりうまく監視対象に入りません

failed to accept an incoming connection: connection from "172.17.0.1" rejected, allowed hosts: "192.168.99.200"

Configuration -> Hosts 登録

サーバとエージェントが起動したらサーバ側に監視するホストの情報を登録しましょう (今回はテスト用のコンテナですが)
Zabbix は pull 型の監視がベースのためホスト側に監視対象の情報がないとデータの収集が始まりません

UI にアクセスして Configuration -> Hosts -> Create Host を選択します
そして以下のように登録します

  • Host name・・・c1
  • Groups・・・Linux servers
  • Agent Interfaces -> IP address ・・・192.168.99.1

まだ登録しません
Templates タブを選択し以下の通り入力します

  • Link new templates・・・Template OS Linux
  • Add を押す

忘れずに Add を押しましょう
これでホストを登録します

Inventory にデータを登録するためのアイテムを登録する

先程登録したホストに新規でアイテムを登録します
テンプレートを紐づけたのでテンプレートにアイテムを追加しましょう

Configuration -> Templates から Template OS Linux を選択します

そして Items タブを選択して Create tem を選択します
入力フィールドが出るので以下のように入力しましょう

  • Name・・・system.sw.arch
  • Key・・・system.sw.arch
  • Type of information・・・Text
  • Populates host inventory field・・・HW architecture

Name は何でも OK です
Populates host inventory field も正直何でも OK です
取得できるアイテムにあった項目を選択してください
今回はシステムアーキテクチャが取得できるのでそれっぽいのを選択しました

ホストの Inventory を有効にする

最後にホストの Inventory を有効にします
デフォルトではアイテムで取得できたとしても Inventory には登録してくれません
まずは Configuration -> Hosts で c1 ホストを選択しましょう

そして Inventory タブを選択して Automatic を選択します
すると Name や OS で使われるアイテムが右に表示されます

更に下に行くと HW architecture の欄があるので登録したアイテム名が割り当てられていることを確認しましょう

動作確認

しばらく (30秒) するとデータが入ってきます
まずは Monitoring -> Latest data で確認してみましょう
アイテム登録時にアプリケーションを指定していないので other にあります

あとは Inventory を確認してみましょう
Inventory -> Overview で右上のプルダウンから HW architecture を選択します
すると x86 ホストを GROUP BY してカウントしてくれるのが確認できると思います
今回は 1 台しかいないので 1 になれば OK です

Hosts タブでは Inventory 情報から検索して対象の Inventory を持つホストを探すことができます

最後に

Zabbix4.2 で Inventory 機能を試してみました
Inventory 機能自体は 2 系から登場しているので今更感しかないですがよくわからに機能だったので試してみました
うまく使えばおもしろそうなデータが見えるようにはなりそうですが、正直監視に必須な機能ではないかなと思います

今回はすべて docker 上で行いましたがバイナリでも同じようにできると思います

参考サイト

0 件のコメント:

コメントを投稿