LoginSignup
0
0

More than 1 year has passed since last update.

ZabbixとOxidizedを連携させてみた

Last updated at Posted at 2022-10-17

はじめに

ネットワーク機器のコンフィグ管理ツールOxidizedを使っていますが、管理対象となる機器の情報は予め用意される、CSV・HTTP・SQLの何れかで定義しておく必要があります。
機器の情報を多重管理するのに嫌気が差してきたので、機器の情報をZabbixに登録して、OxidizedからZabbixに機器の情報を問い合わせることができれば幸せになれそうなのでやってみました。

環境

  • Zabbix 6.2.3 on Docker
  • Oxidized v0.28.0 on Docker

やること

g3285.png

  • ZabbixのマクロにOxidizedが必要な情報(model、username、password、enableとか)を登録する。
  • OxidizedからZabbixのAPIをぶっ叩いて情報を取得

やったこと

Zabbixのマクロを定義するテンプレートを作成

zbx_templates_oxidized.yml

マクロ定義してるだけですが、こいつをZabbixにインポートしてください。
Oxidized Templateがインポートされるはずです。

対象になるホストにテンプレートを適用

インポートしたOxidized Templateを対象ホストに適用します。

対象になるホストにマクロを設定

Oxidizedで必要になる値をZabbixのマクロで設定します。

usermacro.png

マクロ 設定する値 設定例
{$OXIDIZED_MODEL} OxidizedのModel ios
{$OXIDIZED_USERNAME} 機器へのログインID admin
{$OXIDIZED_PASSWORD} 機器へのログインパスワード cisco
{$OXIDIZED_ENABLE} 特権ユーザのパスワード c1sc0

OxidizedにZabbix連携モジュール(zabbix.rb)を配置

Oxidized用のZabbix連携モジュールzabbix.rbはOxidizedのSourceとして実装してみました。初めてRuby書いた💦

こいつを、Oxidizedのconfig等が置かれている~/.config/oxidized/sourcesに配置します。

# mkdir ~/.config/oxidized/sources
# cd ~/.config/oxidized/sources
# wget 
https://raw.githubusercontent.com/bluekirin55/oxidized/zabbix_support/lib/oxidized/source/zabbix.rb

Oxidizedの設定

Oxidizedの~/.config/oxidized/configにZabbix連携モジュールの設定をします。
以下の内容をコピペして、最低限、url、user、passwordを環境に合わせて変更すればOKです。

source:
  default: zabbix
  zabbix:
    url: "http://localhost/api_jsonrpc.php"
    user: "Admin"
    password: "zabbix"
    token: "HOGEHOGEHOGEHOGEHOEGEHOGEHOEHEOGHOEOHEOHGOEHGOHO"
    template: "Template Oxidized"
    map:
      username: "{$OXIDIZED_USERNAME}"
      password: "{$OXIDIZED_PASSWORD}"
      model: "{$OXIDIZED_MODEL}"
    vars_map:
      enable: "{$OXIDIZED_ENABLE}"
項目 設定する値 設定例
url ZabbixのJSON RPCのURL http://localhost/api_jsonrpc.php
user Zabbixにログインする際のユーザID(tokenを指定する場合は不要) Admin
password Zabbixにログインする際のパスワード(tokenを指定する場合は不要) zabbix
token Zabbixで発行したAPIトークン(user/passwordを指定する場合は不要) HOGEHOGEEOHOGHEOHOGEGE
template Oxidizedでの管理対象の機器を識別するためのZabbixテンプレート名 Oxidized Template
map.model OxidizedのModelが定義されたマクロ {$OXIDIZED_MODEL}
map.username 機器へのログインIDが定義されたマクロ {$OXIDIZED_USERNAME}
map.password 機器へのログインパスワードが定義されたマクロ {$OXIDIZED_PASSWORD}
vars_map.enable 特権ユーザのパスワードが定義されたマクロ {$OXIDIZED_ENABLE}

ちなみ、ホスト名やIPアドレスはZabbixのホストやホストインタフェース情報から取ってきますので、特にmapする必要はありません。

その他

特にありません。コレで設定完了です。

実行

Oxidizedを再起動すると、うまくZabbixと連携できているんじゃないでしょうか。

最後に

思いつきで始めて見たものの、初めてのZabbix APIやRubyと格闘しながらなんとか形になりました。
Oxidizedはよくできていて、ネットワーク機器の構成管理ツールとして充分使えるレベルになっています。またRubyで簡単に拡張できるのもいいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0