【Linux】CentOSでSNMP(ポーリング)を実施する方法

Linux

はじめに

LinuxでSNMPエージェント設定し、Cisco機器から実施からMIB情報を取得する方法を紹介します。

検証環境

【localhost】

今回SNMPマネージャーの設定を入れる機器です。

IPアドレス:192.168.68.250

OS:CentOS8

【rt01】

今回SNMPエージェントして監視したいルーターです。

IPアドレス:192.168.68.51

機器名:Cisco1921/K9 

設定手順

SNMPエージェントのインストール

SNMPマネージャーにnet-snmpとnet-snmp-utilsをインストールします。

dnf(RHEL7ではyum)コマンドでパッケージインストールをします。

設定ファイル(snmpd.conf)の編集

インストールが完了したら、設定ファイルを編集します。

SNMPマネージャーの設定ファイルは/etc/snmp/snmpd.confにあります。中身を見ると割と膨大にデータが入っていますが、コメントアウト・空白が大半です。

以下は、コメントアウトと空白を除いたものだけを出力した結果です。

上記の中で不要な部分を削除し、以下のように書き換えます。細かい部分は次のセクションで説明します。

設定ファイルの書式について

書き換えた設定について、1つ1つみていきましょう。

com2sec omotiNetwork 192.168.68.250 omotiComName

【com2sec】この行が「コミュニティ名とセキュリティを指定する行」という意味になります。

【omotiNetwork】セキュリティ名を定義します。名前は任意に設定可能です。

【192.168.68.250】SNMPマネージャーのIPを定義します。

【omotiComName】コミュニティ名を定義します。名前は任意に設定可能です。

group omotiGroup v1 omotiNetwork

【group】この行が「グループを設する行」という意味になります。

【omotiGroup】グループ名を定義します。名前は任意に設定可能です。

【v1】セキュリティモデルを指定します。バージョン1で設定しています。

【omotiNetwork】セキュリティ名を指定します。名前は任意に設定可能です。

group omotiGroup v2c omotiNetwork

【group】この行が「グループを設定する行」という意味になります。

【omotiGroup】グループ名を定義します。名前は任意に設定可能です。

【v2c】セキュリティモデルを指定します。バージョン2でも対応できるように設定しています。

【omotiNetwork】セキュリティ名を指定します。名前は任意に設定可能です。

view omotiViewName included .1 80

【view】この行が「viewを設定するの行」という意味になります。

【omotiViewName】view名を定義します。名前は任意に設定可能です。

【included】「include」または「exclude」を指定します。includedは許可、excludeは拒否となります。

【.1】MIBの範囲を指定します。「.1」は、マスク値と連携することで意味をなします。

【80】マスク値を指定します。「80」は16進数表記です。これを2進数に変換すると「1000 0000」となります。

  OIDの形式は、「.1*」となるので、マスク値と合わせるとすべてのOIDが該当します。

  ゆえに、omotiViewNameは、すべてを許可することになります。

access omotiGroup “” any noauth exact omotiViewName none none

【access】この行が「アクセス許可設定を行う」という意味になります。

【omotiGroup 】グループ名の指定します。上記で設定したグループ名を指定します。

【”” 】contextの指定します。v1またはv2の場合は、空白で指定します。(””)

【any】sec.modelを指定します。セキュリティモデルを指定します。

【noauth】levelを指定します。v1またはv2の場合は「noauth」を指定します。

【exact】prefixを指定します。「exact」または、「prefix」のいずれかを指定します。

【omotiViewName】readの指定します。ここでviewで指定した名前を使います。

【none】writeを指定します。viewで指定した名前を使います。なければ「none」とします。

【none】notifyを指定します。viewで指定した名前を使います。なければ「none」とします。

disk /10000

disk:ディスクに関する設定行であることを表します。

/10000:ディレクトリの空き容量が10000K bB以下(10MB)になった場合、エラーとします。

syslocation LocalLab

syslocation:マシンの場所などを記載できます。

syscontact orangetea <orange0227jas☆ricecake24book.com>

syscontact:管理者の名前を登録できます。

dontLogTCPWrappersConnects yes

SNMPの問い合わせがあったときに、ログに書き込まない設定です。

【参考】

http://changineer.info/server/monitoring/monitoring_snmpd.html

https://qiita.com/toshiro3/items/e8f87da88cd383a6421d

上記の通り、編集した結果が以下です。

firewallの設定

SNMPマネージャーがSNMPエージェントから受け取った情報を取得できるように許可設定を入れます。

SNMPポーリングのポート番号は161(UDP)番が使用されます。

「service」内に「snmp」が追加されていることがわかります。

snmpd.serviceの起動

systemctlコマンドで、snmpd.serviceを起動します。

ポート、プロセスの確認

lsofコマンド、netstatコマンドでポートの状態とプロセスの状態を確認します。

161番ポートでsnmpdが起動していることが確認できました。

rt01(監視対象)のSNMPエージェント設定

rt01にSNMPエージェントの設定を行います。※今回はCiscoのルータですが、監視対象に応じて設定をします。

Ciscoの場合、簡単に設定できます。以下の通り、IPの指定がないためコミュニティ名を変更しなければSNMPマネージャーのIPは変更できます。また、新たにSNMPマネージャーを追加する場合も、コミュニティ名を合わせれば複数のSNMPマネージャーからMIB情報を取得することもできます。

※Ciscoの場合、SNMPマネージャーの設定の確認するには「show running-config」「show snmp」コマンドを使用することで確認できます。

設定の確認について

設定が正確にできているかどうかを確認する方法があります。SNMPマネージャーで「snmpwalkコマンド」を使用します。

OIDを指定し、対象の機器からMIB情報を取得できるかをテストしてみます。

SNMPエージェントの状態を取得することができました。コマンドが成功すれば、SNMPマネージャーとして機能できる最低限の設定ができていることになります。

snmpwalkコマンド

実行している「snmpwalk -v1 -c omotiComname 192.168.68.51:161 .1.3.6.1.2.1.1.1」について簡単に説明します。

-v1 … バージョンを指定します。

-c omotiComname … コミュニティ名を指定します。

192.168.68.51:161 … IPが192.168.68.51で、ポート番号を161番で指定しています。

.1.3.6.1.2.1.1.1 … MIBのOIDを指定しています。OIDについての詳しい説明はここでは割愛します。

以下、OIDを変えて情報を取得している例を記載しておきます。

まとめ

CentOS8をSNMPマネージャーとして機能させる手順を紹介しました。

SNMPの設定をするだけということは、実際にはあまりないかもしれません。以下の記事でZabbixをSNMPマネージャーとして機能させる記事を載せておりますので、興味のある方は是非どうぞ!

タイトルとURLをコピーしました