snmp使ってみた

## 参考

* [エンタープライズ： - 第6回：SNMPによるネットワークモニタリング](http://www.itmedia.co.jp/help/howto/linux/0007master/06/05.html)

# インストール

```bash:Ubuntuの場合
apt-get install -y snmpd
apt-get install -y snmp snmp-mibs-downloader
```

```bash:CentOSの場合
sudo yum install net-snmp-utils
```

## SNMP値取得

* [snmpwalk, snmpgetの引数 - kiyotakakの日記](http://d.hatena.ne.jp/kiyotakak/20081022/1224681470)

```diff:/etc/snmp/snmpd.conf
- rocommunity public  default    -V systemonly
+ rocommunity public  default
```

```bash:SNMP値全取得
snmpwalk -v1 localhost -c public
```

```bash:結果
iso.3.6.1.2.1.1.1.0 = STRING: "Linux debsrv1 4.2.3-2-pve #1 SMP Sun Nov 15 16:08:19 CET 2015 x86_64"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (48332) 0:08:03.32
iso.3.6.1.2.1.1.4.0 = STRING: "Me <me@example.org>"
iso.3.6.1.2.1.1.5.0 = STRING: "debsrv1"
iso.3.6.1.2.1.1.6.0 = STRING: "Sitting on the Dock of the Bay"
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
...(略)
```

```bash:特定のMIB値だけ取得
$ snmpwalk -v1 localhost -c public iso.3.6.1.2.1.25.1.1.0 
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (51977649) 6 days, 0:22:56.49
```

```bash:snmpstatus
$ snmpstatus -v 1 -c public localhost
[UDP: [127.0.0.1]:161->[0.0.0.0]:40345]=>[Linux debsrv1 4.2.3-2-pve #1 SMP Sun Nov 15 16:08:19 CET 2015 x86_64] Up: 1:18:36.91
Interfaces: 3, Recv/Trans packets: 14747404/9752459 | IP: 8961633/9364840
1 interface is down!
```


## 他のサーバから取得可能にする

```diff:/etc/snmp/snmpd.conf
- agentAddress  udp:127.0.0.1:161
+ agentAddress  udp:161
```

* [net-snmpについて（機器監視） (1/4)：CodeZine（コードジン）](http://codezine.jp/article/detail/2865)

```bash:他のサーバから取得
snmpwalk -v1 debsrv1 -c public UCD-SNMP-MIB::laTable
snmpwalk -v1 debsrv1 -c public UCD-SNMP-MIB::memory
snmpwalk -v1 debsrv1 -c public UCD-SNMP-MIB::dskTable
```

## `.`をつけると全取得できる

* [snmpwalkで全MIB取得する方法 - ike-daiの日記](http://d.hatena.ne.jp/ike-dai/20100913/1284385067)

```bash:
$ snmpwalk -v1 windesk1 -c public | wc -l 
3320
$ snmpwalk -v1 windesk1 -c public .| wc -l
3673
```


# windowsのSNMP値を取得

![snmp1.png](https://qiita-image-store.s3.amazonaws.com/0/25728/24dd1166-161a-8d06-3414-065800c755d6.png)

```bash:Ubuntuから実施
snmpwalk -v1 192.168.0.64 -c public
```

```bash:結果
iso.3.6.1.2.1.1.1.0 = STRING: "Hardware: x86 Family 15 Model 6 Stepping 1 AT/AT COMPATIBLE 
- Software: Windows Version 6.1 (Build 7601 Multiprocessor Free)"
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.311.1.1.3.1.1
iso.3.6.1.2.1.1.3.0 = Timeticks: (78696420) 9 days, 2:36:04.20
iso.3.6.1.2.1.1.4.0 = ""
iso.3.6.1.2.1.1.5.0 = STRING: "windesk1"
iso.3.6.1.2.1.1.6.0 = ""
iso.3.6.1.2.1.1.7.0 = INTEGER: 76
iso.3.6.1.2.1.2.1.0 = INTEGER: 21
...(略)
```

* DISKの空き容量や、uptimeもこれで取得できますね。

# YamahaルータのSNMP

* [SNMP機能を設定する « 設定例](http://jp.yamaha.com/products/network/solution/switch_swx/switch_swx-command/switch-command-snmp/)

```bash:Yamahaルータで実施
snmp host 192.168.0.64 public
```

```bash:192.168.0.64から実施
snmpwalk -v1 192.168.0.1 -c public
```

```bash:config取得
snmpwalk -v1 192.168.0.1 -c public \
  iso.3.6.1.4.1.1182.2.2.10.1.2
```

```bash:IP一覧取得(OIDで取得)
snmpwalk -On \
  -v1 192.168.0.1 -c public \
  .1.3.6.1.2.1.4.22.1.3.1
```

# Mib browser

* [qtmib](http://qtmib.sourceforge.net/index.html#download)

----

# Mib

* [サーバ監視項目でよく使う SNMP の MIB オブジェクト ID まとめ - drk7jp](http://www.drk7.jp/MT/archives/001604.html)

## load average

```bash:1.3.6.1.4.1.2021.10.1.3
snmpwalk -v1 localhost -c public 1.3.6.1.4.1.2021.10.1.3
iso.3.6.1.4.1.2021.10.1.3.1 = STRING: "0.07" # 1分
iso.3.6.1.4.1.2021.10.1.3.2 = STRING: "0.21" # 5分
iso.3.6.1.4.1.2021.10.1.3.3 = STRING: "0.22" # 15分
```

## プロセス数

* `.1.3.6.1.4.1.2021.2.1`を参照する。

```diff:/etc/snmp/snmpd.conf
+ proc  apache2
```

```bash:成功例
$ snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.2.1 | grep 4\ 
...
iso.3.6.1.4.1.2021.2.1.5.4 = INTEGER: 11
...
```

```bash:失敗例
$ snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.2.1 | grep 4\ 
...
iso.3.6.1.4.1.2021.2.1.101.4 = STRING: "No httpd process running"
...
```