snmp sysNameに応じた、Zabbixのホストの自動名前変更

Zabbixに関する一連の記事は、未登録ユーザーによって継続されます。 最初の記事はこちらでご覧いただけます

なぜこれが必要ですか?


Zabbixに新しいホストを追加するには、主に2つの方法があります。自動検出と手動ホスト追加です。 非常に多数のノードがある場合、それらをペンで監視システムに追加するのには多くの時間がかかり、その数を追跡して最新の状態に保つことも簡単な作業ではありません。 この場合、自動検出を使用すると便利です。 この記事での使用方法については説明しません(誰かが興味を持っているなら、主な機能の簡単な概要を準備することができます)。 自動検出の主な欠点は、追加されたホストがデバイスのIPアドレスと同じ名前を取得することです。 どこに問題があるのか​​を把握するために多数のデバイスを使用します。

解決策。


原則として、snmpによって制御されるデバイスには、標準OID .1.3.6.1.2.1.1.5.0またはsystem.sysName.0があります。 これは、鉄片のいわゆるホスト名です。 Zabbixの標準的な方法を使用してOIDによって取得された値をデバイス名として使用することはできません。
最も簡単な方法は、外部スクリプトを使用することです。

PostgresSQLの場合:


#!/bin/bash

PGSQL="psql -d < > -h < > -U < > -W -c"

$PGSQL" SELECT ip FROM hosts where ip ILIKE '192.168.1.%' " | while read line
do
arr=($line)
x=`snmpwalk -Ou -Oq -v2c -c <community string> ${arr[0]} system.sysName.0 2> /dev/ null | awk '{print$2}' | tr "[: upper :]" "[: lower :] " `
[[ -n $x ]] && $PGSQL" UPDATE hosts SET host = '$x' WHERE ip = '${arr[0]}' "

done


* This source code was highlighted with Source Code Highlighter .


MYSQLの場合:


#!/bin/bash

MYSQL="mysql --connect_timeout 10 < > -h < > -u < > --password=<> --skip- column - names -B -e"

$MYSQL " SELECT ip FROM hosts where ip like '192.168.1.%' " | while read line
do
arr=($line)
x=`snmpwalk -Ou -Oq -v2c -c <community string> ${arr[0]} system.sysName.0 2> /dev/ null | awk '{print$2}' | tr "[: upper :]" "[: lower :] " `
[[ -n $x ]] && $MYSQL " UPDATE hosts SET host = '$x' WHERE ip = '${arr[0]}' "

done


* This source code was highlighted with Source Code Highlighter .


「192.168.1。%」の代わりに、腺のIPアドレスの望ましい範囲を置き換えます。
スクリプトを使いやすい場所に保存し、chmod + Xを実行して、必要に応じて実行します。 このスクリプトは冠で書くことができます。

さらに進んで、スクリプトを少し変更して、zabix自体による自動検出のアクションの下でそれを実行するオプションがありますが、見つかった鉄片に対してのみです。 これを行うことは難しくありませんが、必要はありませんでした。

ここに登録されて ない sersadによって書かれた記事

Source: https://habr.com/ru/post/J82465/


All Articles