APRESIA Technical Blog

AN-ManagerStationによるサーバー監視

はじめに

◆AN-ManagerStationは主にネットワーク装置を管理・監視するのに利用されますが、サーバーやPCなどを
 対象にすることも可能です。
◆サーバーやPCなどの監視オペレーションとして最もポピュラーなのはPingを利用した死活監視になりますが、
 SNMPを利用することでより高度な管理・監視を実現することもできます。
◆今回はAN-ManagerStationでSNMPを用いたサーバー(PC)の管理・監視について検証しましたので、
 ご紹介したいと思います。

検証環境

◆監視対象装置
 ◇今回はLinuxサーバー(Ubuntu22.04) を使用して検証します。
  −Linuxサーバーはubuntu-22.04.2-live-server-amd64.isoを使用してインストール
◆監視対象MIB
 ◇監視対象の項目をCPU・ディスク・メモリの使用量とし、下記MIB(配下含む)を監視します。
  −UCD-SNMP-MIB::ucdavis(.1.3.6.1.4.1.2021)

検証環境構築手順

◆監視対象のサーバー(PC)でSNMPエージェントを稼働させ、監視したいMIBの値を取得できるようにします。
 下記手順で設定・確認していきます。
  1.SNMPエージェントのインストールと自ホストからアクセス確認
  2.他ホストからSNMPエージェントへのアクセス許可設定・確認
  3.監視したいMIBの取得許可設定・確認
◆AN-ManagerStationに、上記で取得可能になったMIBを監視対象として設定します。

1. SNMPエージェントのインストールと自ホストからアクセス確認

◆Ubuntu22.04をインストール済みでIPアドレスなどを設定し、aptコマンドを使ってネットワーク経由で
 パッケージをインストール可能な状態であることを前提とします。
 Ubuntuのインストール・設定などの説明は省きます。
◆aptコマンドを使ってsnmp関連のパッケージをインストールします。下記例では「snmp(マネージャー) 」と
 「snmpd(エージェント)」を指定しています。
ubuntu@test-srv:~$ sudo apt install snmp snmpd

◆インストール完了後、localhost宛にsnmpwalkコマンドを実行してエージェントが動作してアクセス可能か
 確認します。
 ◇snmpのバージョンは1、コミュニティ名はpublicを指定
◆下記のような実行結果が表示されれば、エージェントが動作して自ホストからアクセス可能状態です。
ubuntu@test-srv:~$ snmpwalk -v 1 -c public localhost
iso.3.6.1.2.1.1.1.0 = STRING: "Linux test-srv 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 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.25.1.6.0 = Gauge32: 137
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
End of MIB
ubuntu@test-srv:~$

2. 他ホストからSNMPエージェントへのアクセス許可設定・確認

◆先ほどはエージェントをインストールしたサーバー自身から、自ホスト宛にsnmpwalkを実施しましたが、
 他のホストから同様にsnmpwalkをサーバー宛に実施してもタイムアウトしてしまいます。
 ◇他ホストからはIP到達可能でファイアウォールなどの影響が無いものとします。
◆エージェントのデフォルトの設定は自ホストからのアクセスに限定しているため、設定ファイルを修正します。
◆/etc/snmp/snmpd.confのagentaddress行をコメントアウトしてローカルホスト限定を解除します。
 ◇今回は検証ということで、便宜的に特定のアクセス制限が無いようにしていますが、
  実際はセキュリティポリシーを考慮した制限を設定して運用してください。
◆/etc/snmp/snmpd.conf

◆設定ファイル修正後、エージェントをリスタート
ubuntu@test-srv:~$ sudo vi /etc/snmp/snmpd.conf
ubuntu@test-srv:~$ sudo systemctl restart snmpd.service
ubuntu@test-srv:~$
◆エージェントをリスタート後、他ホストからリスタートしたエージェントが動作しているサーバー(PC)に
 snmpwalkコマンドを実行してエージェントが動作してアクセス可能か確認します。
◆下記のような実行結果が表示されれば、エージェントが動作して他ホストからアクセス可能状態です。
 ◇下記は他ホスト(Windows PC)からsnmpwalkを実施した例になります。
C:\WINDOWS\system32>snmpwalk -On -v 1 -c public test-srv
.1.3.6.1.2.1.1.1.0 = STRING: Linux test-srv 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.8072.3.2.10
…
(省略)
…
.1.3.6.1.2.1.25.1.6.0 = Gauge32: 121
.1.3.6.1.2.1.25.1.7.0 = INTEGER: 0

C:\WINDOWS\system32>

3. 監視したいMIBの取得許可設定・確認

◆今回監視したいMIBは下記MIBの配下のMIBになります。
 ◇UCD-SNMP-MIB::ucdavis(.1.3.6.1.4.1.2021)
  −エージェントのデフォルトの設定では参照できないので設定ファイルを修正します。
  −また、ディスク(パーティション)の使用量に関するMIBは、事前に監視するディスクを紐づける設定が
   必要になるため、合わせて設定ファイルを修正します。

◆/etc/snmp/snmpd.conf

◆設定ファイル修正後、エージェントをリスタート
ubuntu@test-srv:~$ sudo vi /etc/snmp/snmpd.conf
ubuntu@test-srv:~$ sudo systemctl restart snmpd.service
ubuntu@test-srv:~$

◆各監視項目について下記MIBの値を監視します。
 ◇CPU使用率監視
  −UCD-SNMP-MIB::ssCpuIdle(.1.3.6.1.4.1.2021.11.11)
   ・取得した時点(過去1分間)での使用率になる
    -CPU使用率 = 100 - ssCpuIdle.0
 ◇メモリ使用率監視
  −UCD-SNMP-MIB::memTotalReal(.1.3.6.1.4.1.2021.4.5)
  −UCD-SNMP-MIB::memAvailReal(.1.3.6.1.4.1.2021.4.6)
   ・取得した時点での使用率になる(100分率の値)
    -メモリ使用率 = (memTotalReal.0 - memAvailReal.0) ÷ memTotalReal.0 × 100
 ◇ディスク使用率監視
  −UCD-SNMP-MIB::dskPercent(.1.3.6.1.4.1.2021.9.1.9)
   ・取得した時点での使用率になる(100分率の値)
    -設定(snmpd.conf)によってIndexの値が変化する可能性あり

◆監視項目に関連したMIBが取得可能か確認
 ◇下記のような実行結果が表示されれば、対象のMIBが取得可能な状態になっています。
ubuntu@test-srv:~$
ubuntu@test-srv:~$ snmpwalk -v 1 -c public localhost UCD-SNMP-MIB::ssCpuIdle
UCD-SNMP-MIB::ssCpuIdle.0 = INTEGER: 57
ubuntu@test-srv:~$ 
ubuntu@test-srv:~$ snmpwalk -v 1 -c public localhost UCD-SNMP-MIB::memTotalReal
UCD-SNMP-MIB::memTotalReal.0 = INTEGER: 8128052 kB
ubuntu@test-srv:~$ snmpwalk -v 1 -c public localhost UCD-SNMP-MIB::memAvailReal
UCD-SNMP-MIB::memAvailReal.0 = INTEGER: 7413232 kB
ubuntu@test-srv:~$ 
ubuntu@test-srv:~$ snmpwalk -v 1 -c public localhost UCD-SNMP-MIB::dskPercent
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 18
ubuntu@test-srv:~$ 

AN-ManagerStation側の設定

◆監視したいサーバーでSNMPエージェントを稼働させ、監視したいMIBの値を取得できるようになりましたら、
 続いてAN-ManagerStationから管理対象装置として登録し、パフォーマンス監視の監視設定を実施します。
◆AN-ManagerStationにはパフォーマンス監視のテンプレートとして下記が登録してありますので、
 これらをコピー登録していきます。
 ◇[サンプル] Linux:CPU使用率
 ◇[サンプル] Linux:ディスク使用率
 ◇[サンプル] Linux:メモリー使用率

◆まず【管理対象機器】タブパネルから今回監視したいサーバーを登録します。

◆つづいて【監視設定】ダブパネルから【パフォーマンス監視】タブを表示し、
 【  [サンプル] Linux:CPU使用率】を選択します。
◆パネル上部の【コピー登録】ボタンを押して【パフォーマンス監視: 登録 [Linux: CPU使用率]】ダイアログを
 開き適宜設定します。今回はデフォルトから設定を変更したのは下記になります。
 ◇名前:[サンプル] Linux:CPU使用率⇒Linux:CPU使用率
 ◇運用:Disable⇒Enable
 ◇監視間隔:15分⇒1分(今回は検証のため最小値に設定)
 ◇コメント:本サンプルをコピー登録して、利用してください。⇒検証のため監視間隔を1分に設定
 ◇実行対象:機種⇒機器(さきほど登録したサーバーを選択)

◆ディスク使用率、メモリー使用率に関しても同様に適宜設定します。

◆stressコマンドなどで適宜負荷を与えたりファイルを作成したりして数分経過するのを待ち、
 【モニタリング】タブパネルに移動し、【パフォーマンス監視】タブを表示、先ほど設定した各監視登録を
 全て選択した状態で【グラフ表示】ボタンをクリックします。
 それぞれの項目の使用率がグラフにプロットされていることが確認できると思います。

◆CPU負荷実施例
ubuntu@test-srv:~$ stress -c 1 &
[1] 2827
ubuntu@test-srv:~$ stress: info: [2827] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

ubuntu@test-srv:~$ stress -c 2 &
[2] 2830
ubuntu@test-srv:~$ stress: info: [2830] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd

ubuntu@test-srv:~$ jobs
[1]-  Running                 stress -c 1 &
[2]+  Running                 stress -c 2 &
ubuntu@test-srv:~$ kill %1 %2
ubuntu@test-srv:~$ jobs
[1]-  Terminated              stress -c 1
[2]+  Terminated              stress -c 2
ubuntu@test-srv:~$
◆メモリ消費実施例
ubuntu@test-srv:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       225Mi       6.6Gi       1.0Mi       999Mi       7.3Gi
Swap:          4.0Gi          0B       4.0Gi
ubuntu@test-srv:~$ stress -m 1 --vm-bytes 1024M --vm-hang 0 -v &
[1] 2840
ubuntu@test-srv:~$ stress: info: [2840] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [2840] using backoff sleep of 3000us
stress: dbug: [2840] --> hogvm worker 1 [2841] forked
stress: dbug: [2841] allocating 1073741824 bytes ...
stress: dbug: [2841] touching bytes in strides of 4096 bytes ...
stress: dbug: [2841] sleeping forever with allocated memory

ubuntu@test-srv:~$ jobs
[1]+  Running                 stress -m 1 --vm-bytes 1024M --vm-hang 0 -v &
ubuntu@test-srv:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       1.2Gi       5.6Gi       1.0Mi       999Mi       6.3Gi
Swap:          4.0Gi          0B       4.0Gi
ubuntu@test-srv:~$ stress -m 1 --vm-bytes 2048M --vm-hang 0 -v &
[2] 2843
ubuntu@test-srv:~$ stress: info: [2843] dispatching hogs: 0 cpu, 0 io, 1 vm, 0 hdd
stress: dbug: [2843] using backoff sleep of 3000us
stress: dbug: [2843] --> hogvm worker 1 [2844] forked
stress: dbug: [2844] allocating 2147483648 bytes ...
stress: dbug: [2844] touching bytes in strides of 4096 bytes ...
stress: dbug: [2844] sleeping forever with allocated memory

ubuntu@test-srv:~$ jobs
[1]-  Running                 stress -m 1 --vm-bytes 1024M --vm-hang 0 -v &
[2]+  Running                 stress -m 1 --vm-bytes 2048M --vm-hang 0 -v &
ubuntu@test-srv:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       3.2Gi       3.6Gi       1.0Mi       999Mi       4.3Gi
Swap:          4.0Gi          0B       4.0Gi
ubuntu@test-srv:~$ kill %1 %2
ubuntu@test-srv:~$ jobs
[1]-  Terminated              stress -m 1 --vm-bytes 1024M --vm-hang 0 -v
[2]+  Terminated              stress -m 1 --vm-bytes 2048M --vm-hang 0 -v
ubuntu@test-srv:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           7.8Gi       223Mi       6.6Gi       1.0Mi       999Mi       7.3Gi
Swap:          4.0Gi          0B       4.0Gi
ubuntu@test-srv:~$
◆ディスク消費実施例
ubuntu@test-srv:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           794M  1.1M  793M   1% /run
/dev/sda2        40G  7.2G   30G  20% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           794M  4.0K  794M   1% /run/user/1000
ubuntu@test-srv:~$ dd if=/dev/zero of=/tmp/disk_5g bs=1G count=5 status=progress
5368709120 bytes (5.4 GB, 5.0 GiB) copied, 22 s, 244 MB/s
5+0 records in
5+0 records out
5368709120 bytes (5.4 GB, 5.0 GiB) copied, 21.967 s, 244 MB/s
ubuntu@test-srv:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           794M  1.1M  793M   1% /run
/dev/sda2        40G   13G   25G  33% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           794M  4.0K  794M   1% /run/user/1000
ubuntu@test-srv:~$ dd if=/dev/zero of=/tmp/disk_2g bs=1G count=2 status=progress
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 5 s, 474 MB/s
2+0 records in
2+0 records out
2147483648 bytes (2.1 GB, 2.0 GiB) copied, 4.53428 s, 474 MB/s
ubuntu@test-srv:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           794M  1.1M  793M   1% /run
/dev/sda2        40G   15G   23G  39% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           794M  4.0K  794M   1% /run/user/1000
ubuntu@test-srv:~$ rm /tmp/disk_5g
ubuntu@test-srv:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           794M  1.1M  793M   1% /run
/dev/sda2        40G  9.2G   28G  25% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           794M  4.0K  794M   1% /run/user/1000
ubuntu@test-srv:~$ rm /tmp/disk_2g
ubuntu@test-srv:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           794M  1.1M  793M   1% /run
/dev/sda2        40G  7.2G   30G  20% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           794M  4.0K  794M   1% /run/user/1000
ubuntu@test-srv:~$

 

Windowsサーバー(PC)を監視する方法

◆AN-ManagerStationにはLinuxサーバーの監視についていくつかのテンプレートがデフォルトで登録されて
 いますが、残念ながらWindowsに対応したテンプレートはありません。
◆しかしWindowsには標準のSNMPエージェントがあり、似たような監視が可能な部分もありますので
 ご紹介します。
◆今回はWindowsの標準SNMPエージェントを使用しCPU使用率を監視する検証を行います。

検証環境(Windows)

◆監視対象装置
 ◇今回はWindows 10を使用して検証します。
  −snmpエージェントはWindows標準のものを使用します。
◆監視対象MIB
 ◇監視対象の項目をCPU使用率とし、下記MIBを監視します。
  −HOST-RESOURCES-MIB::hrProcessorLoad(.1.3.6.1.2.1.25.3.3.1.2)

SNMPエージェントのインストールアクセス確認【Windows】

◆Windows 10がインストール済みで、IPアドレスなどが設定されており、他ホストからIP到達可能で
 ファイアウォールなどの影響が無く、既に他のSNMPエージェントが稼働していないことを前提とします。
◆【設定】⇒【アプリ】で【アプリと機能】画面を開き、【オプション機能】をクリックして【オプション機能】
 画面を開きます。【機能の追加】ボタンをクリックし、【簡易ネットワーク管理プロトコル(SNMP)】を
 チェックしてインストールを実施します。
 ◇Linuxと同じNET-SNMPをWindowsにインストールことも可能ですが、現在入手可能なWindows版の
  インストーラーは「net-snmp-5.7.0-1.x86.exe」が最新バージョンとなり、 32bit版かつリリースが
  2011-08-09と古いものになります。
  −Ubuntuで使用したNET-SNMPはバージョン5.9.1
◆Windows標準エージェントインストール直後のデフォルトの設定では他ホストからのSNMPアクセスが
 無効になっています。
 左下のWindowsボタンから【Windows 管理ツール】⇒【サービス】をクリックしサービス画面を開き、
 【SNMP サービス】をダブルクリックしてプロパティダイアログを開きます。【セキュリティ】タブを
 クリックしラジオボタン【すべてのホストからSNMP パケットを受け付ける】をクリックして有効にします。
 ◇実際の運用においては設置環境のセキュリティのガイドラインに準拠して適宜受け付けるホストを
  制限してください。
◆他ホストから、Windows標準SNMPエージェントをインストールしたPC宛にsnmpwalkコマンドを実行して
 MIBを取得できることを確認します。また、今回CPU使用率を監視するのに使用するHOST-RESOURCES-
 MIB::hrProcessorLoad(.1.3.6.1.2.1.25.3.3.1.2)が取得できることも確認します。
ubuntu@test-srv:~$ snmpwalk -v 1 -c public test-win
iso.3.6.1.2.1.1.1.0 = STRING: "Hardware: Intel64 Family 6 Model 94 Stepping 3 AT/AT COMPATIBLE - Software: Windows Version 6.3 (Build 19045 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: (295270) 0:49:12.70
…
(省略)
…
iso.3.6.1.2.1.55.1.12.1.6.19.16.255.2.0.0.0.0.0.0.0.0.0.0.0.0.0.251 = INTEGER: 1
iso.3.6.1.2.1.55.1.12.1.6.19.16.255.2.0.0.0.0.0.0.0.0.0.0.0.1.0.2 = INTEGER: 1
iso.3.6.1.2.1.55.1.12.1.6.19.16.255.2.0.0.0.0.0.0.0.0.0.1.255.131.108.35 = INTEGER: 1
ubuntu@test-srv:~$
ubuntu@test-srv:~$ snmpwalk -v 1 -c public test-win .1.3.6.1.2.1.25.3.3.1.2
iso.3.6.1.2.1.25.3.3.1.2.12 = INTEGER: 2
iso.3.6.1.2.1.25.3.3.1.2.13 = INTEGER: 2
iso.3.6.1.2.1.25.3.3.1.2.14 = INTEGER: 2
iso.3.6.1.2.1.25.3.3.1.2.15 = INTEGER: 0
iso.3.6.1.2.1.25.3.3.1.2.16 = INTEGER: 1
iso.3.6.1.2.1.25.3.3.1.2.17 = INTEGER: 6
iso.3.6.1.2.1.25.3.3.1.2.18 = INTEGER: 2
iso.3.6.1.2.1.25.3.3.1.2.19 = INTEGER: 1
ubuntu@test-srv:~$

AN-ManagerStation側の設定【Windows PC監視】

◆監視したいWindows PCでSNMPエージェントを稼働させ、監視したいMIBの値を取得できることを確認しま
 したら、続いてAN-ManagerStationから管理対象装置として、そのWindows PCを登録し、パフォーマンス監視
 の監視設定を実施します。
◆AN-ManagerStationにはパフォーマンス監視のテンプレートとして下記が登録してありますので、
 これをコピー登録し編集して設定していきます。
 ◇[サンプル] CPU使用率

AN-ManagerStation側の設定

◆まず【管理対象機器】タブパネルから今回監視したいWindows PCを登録します。

◆つづいて【監視設定】ダブパネルから【パフォーマンス監視】タブを表示し、【[サンプル] CPU使用率】を
 選択します。
◆パネル上部の【コピー登録】ボタンを押して【パフォーマンス監視: 登録 [一般]】ダイアログを開き適宜
 設定します。今回はデフォルトから設定を変更したのは下記になります。
 ◇名前:[サンプル] CPU使用率⇒Windows:CPU使用率
 ◇運用:Disable⇒Enable
 ◇監視間隔:15分⇒1分(今回は検証のため最小値に設定)
 ◇コメント:本サンプルをコピー登録して、利用してください。⇒検証のため監視間隔を1分に設定
 ◇監視対象:1つを残し、それ以外を削除
  −実行対象:機種 ⇒機器(さきほど登録したWindows PCを選択)
  −監視MIB:
   ・Object ID: 1.3.6.1.2.1.25.3.3.1.2
   ・Indexの個数: 1
   ・Index(1番目): 12-19
    -設定するIndexの値(範囲)はWindows PCのハード構成によって値が異なります。
     今回検証に使用したPCは4コア8スレッドのCPUで、スレッドごとに8つのIndexが割り当てられました。
     事前にsnmpwalkで確認した、hrProcessorLoad(.1.3.6.1.2.1.25.3.3.1.2)のIndexの範囲(12-19)
     を使用します。

◆適宜CPUに負荷を与えて数分経過するのを待ち、【モニタリング】タブパネルに移動して、【パフォーマンス
 監視】タブを表示し、先ほど設定した「Windows:CPU使用率」の登録を全て選択した状態で【グラフ表示】
 ボタンをクリックします。CPUの各スレッドの使用率がグラフにプロットされていることが確認できると
 思います。

◆今回はWindows PCに標準のSNMPエージェントをインストールして、 HOST-RESOURCES-
 MIB::hrProcessorLoad(.1.3.6.1.2.1.25.3.3.1.2)MIBを取得することでCPU使用率の監視を行いましたが、
 HOST-RESOURCES-MIB::hrStorage(.1.3.6.1.2.1.25.2)配下のMIBを取得することで、メモリやディスクの
 使用量を監視することもできます。
◆このようにテンプレートに登録されていない項目に関しても、監視したい内容のMIBを取得可能であれば、
 様々な項目について監視を行うことができますので、ぜひお試しください。