RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

ちょっとうれしいZabbixLLDテクニックメモ

f:id:tech-rakus:20210129121357p:plain

こんにちわ、インフラエンジニアをしている rakus-tatsu-kashi です。

今回は代理投稿です。同じ部署のインフラエンジニアが見つけてくれたテクニックをまとめてくれてました!

この場を借りて、改めてお礼させていただきます! ありがとうございます!!!

また、インフラエンジニアをやっていると、泥臭くなりやすい設定作業もあります。それを、

  • それを当たり前だと思いこまず、解決しようとするマインド
  • 実際に解決する手段を見つけて、実現する実行力

が素晴らしい、また凄いなー、と思いました!!負けてはいられん...。

ということで、下記、本編です!!


はじめに

今回は皆さんおなじみ、ZabbixのLLD(ローレベルディスカバリ)についてです。 ちょっと便利だなって思ったものがあるのでご紹介したいと思います。

ではさっそくですが、ご紹介する内容は以下2つです。

  • 1.LLDに任意の監視を入れたい!
  • 2.LLDのトリガの深刻度を変えたい!

また、実施した環境はこちらになります。

利用するのは、以下の2つです。
いずれも Version 4.0.12 です。

  • ZabbixServer
  • ZabbixAgent

1.LLDに任意の監視を入れたい!

さっそく「1.LLDに任意の監視を入れたい!」からお話ししたいと思います。

皆さんご存じのとおりZabbixLLDはとても便利です。 サーバ(機器)によってデバイスが何個ほどあるかを考慮せず、

  • データを取得できるようになったり、
  • トリガを設定できるようになったり、

をすることができます。 とっても便利です。

ただ、

  • 意外と痒いところに手が届かない。
  • デフォルトで用意されているアイテムが多くない

などはあります。

うちでいうとRAID監視を作成するときに困りました。

環境によってコントローラの数やvdiskの数が異なるのに…。それぞれ用に結局作らなくちゃいけないの…?

この面倒を、LLDの拡張というので解消を試みました。

任意のアイテムキーをjson形式で出力するようにして、そのアイテムキーをディスカバリで指定するとLLDを使えるようになります。

たとえばRAIDのvdiskが複数個存在していて、そのvdiskごとにzabbixのアイテムをLLDで作りたい場合は、以下のようなスクリプトを書きます

#!/bin/bash
LIST=`VDISKIDを取得するコマンド`

if [ "${LIST}" = "" ] ;then
    echo "ZBX_NOTSUPPORTED"
    exit 1
fi

echo "{"
echo "  \"data\":["
FIRST=1
for VER in ${LIST}
do
   if [ ${FIRST} -eq 1 ] ; then
      echo ""
      FIRST=0
   else
      echo ","
   fi
   echo -e -n "\t\t{ \"{#VDISKID}\":\"${VER}\" }"
done
echo ""
echo "  ]"
echo "}"

すると出力結果はこんな感じ

{
  "data":[

                { "{#VDISKID}":"0" },
                { "{#VDISKID}":"2" }
  ]
}

ここまで準備できたら、ZabbixAgentに以下の設定を読み込ませます。

UserParameter=vfs.vdisk.discovery,/etc/zabbix/vfs_vdisk_discovery.sh

次に、ZabbixServerでは、

  • vfs.adisk.discovery」をディスカバリルールのキーに指定
  • 「storage.vdisk[{#VDISKID}]をアイテムのプロトタイプのキーに指定

すると!

任意の個数のVDISKがキーとして読み込める!!!

という仕組みです。

実施してみると意外と簡単なので試してみてください。

2.LLDのトリガの深刻度を変えたい!

つづいて「2.LLDのトリガの深刻度を変えたい!」について

とっても便利なLLD、運用していく中で、監視の内容を変更したいと思うことが出来ました。 通常であればテンプレートのトリガの深刻度を修正して…と対応するのですが、LLDのトリガプロトタイプの深刻度を修正しても反映されない!

困りました。

大量にディスカバリで作成されたサーバたち、それらを一つずつ修正しろと…? 現実的ではない…と途方にくれました。

途方に暮れてしばらく空を眺めているうちにひらめきました。

LLDのトリガプロトタイプの深刻度は変更しても反映されない…が、LLDのトリガプロトタイプの条件式の変更は反映される。

ならば

深刻度を修正したうえで、条件式を修正して、また条件式を戻せば…?

はやる気持ちを抑えて実験…!

無事深刻度が修正できました!

キタ━━(☆∀☆)━━!!!

どうやらトリガの無効などもうまく反映されない模様、同じやり方で試してみるのもいいかもしれませんね。

最後に

今回は、ZabbixのLLDについてのTips?を記載させていただきました。

Zabbixはせっかく機能が多いため、こういったTipsを身に身に付けていって、有効活用していきたいですね!!

以上!

Copyright © RAKUS Co., Ltd. All rights reserved.