Raspberry Pi 2でCactiを導入する(サーバの登録)

Mon Jan 9, 2017 in server using tags raspberrypi , home-network , homenas1 , homemon1 , homemon2 , homepxy1 , homepot1

FortiGate 60DとRaspberry Piを使用して家庭内インターネット接続環境を構築します。 最終的には以下のような構成を想定しています。

前回はCactiを導入しました。 今回はCactiにhomenas1homemon1homemon2homepxy1homepot1を登録していきます。SNMPv3を使用してSNMPの値を取得します。

snmpdのインストール

追加するデバイス(Server)にsnmpdをインストールする。

$ sudo -E apt-get install snmpd snmp
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libperl5.20 libsensors4 libsnmp-base libsnmp30
提案パッケージ:
  lm-sensors snmp-mibs-downloader snmptrapd
以下のパッケージが新たにインストールされます:
  libperl5.20 libsensors4 libsnmp-base libsnmp30 snmp snmpd
アップグレード: 0 個、新規インストール: 6 個、削除: 0 個、保留: 1 個。
3,836 kB のアーカイブを取得する必要があります。
この操作後に追加で 7,088 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libperl5.20 armhf 5.20.2-3+deb8u6 [1,354 B]
取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libsensors4 armhf 1:3.3.5-2 [48.9 kB]
取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main libsnmp-base all 5.7.2.1+dfsg-1 [1,544 kB]
取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main libsnmp30 armhf 5.7.2.1+dfsg-1 [2,040 kB]
取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main snmp armhf 5.7.2.1+dfsg-1 [145 kB]
取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main snmpd armhf 5.7.2.1+dfsg-1 [56.8 kB]
3,836 kB を 2秒 で取得しました (1,283 kB/s)
パッケージを事前設定しています ...
以前に未選択のパッケージ libsensors4:armhf を選択しています。
(データベースを読み込んでいます ... 現在 32914 個のファイルとディレクトリがインストールされています。)
.../libsensors4_1%3a3.3.5-2_armhf.deb を展開する準備をしています ...
libsensors4:armhf (1:3.3.5-2) を展開しています...
以前に未選択のパッケージ libperl5.20 を選択しています。
.../libperl5.20_5.20.2-3+deb8u6_armhf.deb を展開する準備をしています ...
libperl5.20 (5.20.2-3+deb8u6) を展開しています...
以前に未選択のパッケージ libsnmp-base を選択しています。
.../libsnmp-base_5.7.2.1+dfsg-1_all.deb を展開する準備をしています ...
libsnmp-base (5.7.2.1+dfsg-1) を展開しています...
以前に未選択のパッケージ libsnmp30:armhf を選択しています。
.../libsnmp30_5.7.2.1+dfsg-1_armhf.deb を展開する準備をしています ...
libsnmp30:armhf (5.7.2.1+dfsg-1) を展開しています...
以前に未選択のパッケージ snmp を選択しています。
.../snmp_5.7.2.1+dfsg-1_armhf.deb を展開する準備をしています ...
snmp (5.7.2.1+dfsg-1) を展開しています...
以前に未選択のパッケージ snmpd を選択しています。
.../snmpd_5.7.2.1+dfsg-1_armhf.deb を展開する準備をしています ...
snmpd (5.7.2.1+dfsg-1) を展開しています...
man-db (2.7.0.2-5) のトリガを処理しています ...
systemd (215-17+deb8u5) のトリガを処理しています ...
libsensors4:armhf (1:3.3.5-2) を設定しています ...
libperl5.20 (5.20.2-3+deb8u6) を設定しています ...
libsnmp-base (5.7.2.1+dfsg-1) を設定しています ...
libsnmp30:armhf (5.7.2.1+dfsg-1) を設定しています ...
snmp (5.7.2.1+dfsg-1) を設定しています ...
snmpd (5.7.2.1+dfsg-1) を設定しています ...
adduser: 警告: ホームディレクトリ `/var/lib/snmp' は、現在作成中のユーザの所属になっていません。
libc-bin (2.19-18+deb8u6) のトリガを処理しています ...
systemd (215-17+deb8u5) のトリガを処理しています ...
$

snmpconfツールを使用してsnmpd.confを作成します。 SNMPv3を使用する前提で質問に回答していきます。

$ snmpconf -g basic_setup

The following installed configuration files were found:

   1:  /etc/snmp/snmp.conf
   2:  /etc/snmp/snmpd.conf

Would you like me to read them in?  Their content will be merged with the
output files created by this session.

Valid answer examples: "all", "none","3","1,2,5"

Read in which (default = all): 2
************************************************ 
*** Beginning basic system information setup ***
************************************************ 
Do you want to configure the information returned in the system MIB group (contact info, etc)? (default = y): n
************************************** 
*** BEGINNING ACCESS CONTROL SETUP ***
************************************** 
Do you want to configure the agent's access control? (default = y): y
Do you want to allow SNMPv3 read-write user based access (default = y): n
Do you want to allow SNMPv3 read-only user based access (default = y): y

Configuring: rouser
Description:
  a SNMPv3 read-only user
    arguments:  user [noauth|auth|priv] [restriction_oid]

Enter the SNMPv3 user that should have read-only access to the system: snmpuser
The minimum security level required for that user [noauth|auth|priv, default = auth]: priv
The OID that this community should be restricted to [if appropriate]: 

Finished Output: rouser  snmpuser priv 
Do another rouser line? (default = y): n
Do you want to allow SNMPv1/v2c read-write community access (default = y): n
Do you want to allow SNMPv1/v2c read-only community access (default = y): n
**************************************** 
*** Beginning trap destination setup ***
**************************************** 
Do you want to configure where and if the agent will send traps? (default = y): n
**************************************** 
*** Beginning monitoring setup ***
**************************************** 
Do you want to configure the agent's ability to monitor various aspects of your system? (default = y): n


The following files were created:

  snmpd.conf  

These files should be moved to /usr/share/snmp if you
want them used by everyone on the system.  In the future, if you add 
the -i option to the command line I'll copy them there automatically for you.

Or, if you want them for your personal use only, copy them to
/home/pi/.snmp .  In the future, if you add the -p option to the
command line I'll copy them there automatically for you.
$

snmpd.confを設置します。

$ sudo mv /etc/snmp/snmpd.conf{,.org}
$ sudo mv snmpd.conf /etc/snmp/
$
$ sudo chown root:root /etc/snmp/snmpd.conf
$ sudo chmod 600 /etc/snmp/snmpd.conf
$
$ ls -l /etc/snmp/*
-rw-r--r-- 1 root root  211  4月 15  2015 /etc/snmp/snmp.conf
-rw------- 1 root root  472  1月  9 17:39 /etc/snmp/snmpd.conf
-rw------- 1 root root 7116  4月 18  2015 /etc/snmp/snmpd.conf.org
$

SNMPv3ユーザを作成します。

$ sudo systemctl stop snmpd
$ sudo cp -p /var/lib/snmp/snmpd.conf{,.org}
$
$ ls -l /var/lib/snmp/snmpd.conf*
-rw------- 1 snmp snmp 1089  1月  9 17:43 /var/lib/snmp/snmpd.conf
-rw------- 1 snmp snmp 1089  1月  9 17:43 /var/lib/snmp/snmpd.conf.org
$
$ sudo vi /var/lib/snmp/snmpd.conf
createUser snmpuser SHA snmp_pass AES snmp_pass
$ sudo systemctl start snmpd
$

SNMPv3で値を取得できることを確認します。

$ snmpwalk -v 3 -u snmpuser -l authPriv -a SHA -A snmp_pass -x AES -X snmp_pass localhost .

iptablesの通信許可

CactiからのSNMP通信を許可します。

##INPUTチェーン
#SNMPは許可
$ sudo iptables -A INPUT -m state --state NEW -m udp -p udp -s 192.168.30.0/24 --dport 161 -j ACCEPT

iptablesの設定を保存します。

$ sudo netfilter-persistent save

Cactiにデバイス(Server)を登録

↓Cactiにログイン。User NamePasswordを入力してLoginをクリックします。

↓Cactiログイン後の画面。Devicesをクリックします。

↓デバイスの管理画面。Addをクリックします。

↓デバイスの登録画面。必要事項を入力してCreateをクリックします。

↓デバイスの登録完了画面。SNMP Informationにデバイスの情報が表示されていることを確認します。Create Graphs for this Hostをクリックします。

↓作成したいグラフを選択してCreateをクリックします。

↓グラフが作成されたことを確認します。

↓左のメニューからGraph Treesをクリックし、Default Treeをクリックします。

↓ツリーの管理画面。Addをクリックします。

↓ツリーへのデバイス登録画面。必要事項を入力してCreateをクリックします。

↓ツリーの管理画面。デバイスが登録されたことを確認します。

↓グラフ画面。追加したデバイスのグラフが表示されることを確認します。

以上