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エージェントのインストールと自ホストからアクセス確認
パッケージをインストール可能な状態であることを前提とします。
Ubuntuのインストール・設定などの説明は省きます。
◆aptコマンドを使ってsnmp関連のパッケージをインストールします。下記例では「snmp(マネージャー) 」と
「snmpd(エージェント)」を指定しています。
ubuntu@test-srv:~$ sudo apt install snmp snmpd
確認します。
◇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:~$
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が取得可能な状態になっています。
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コマンドなどで適宜負荷を与えたりファイルを作成したりして数分経過するのを待ち、
【モニタリング】タブパネルに移動し、【パフォーマンス監視】タブを表示、先ほど設定した各監視登録を
全て選択した状態で【グラフ表示】ボタンをクリックします。
それぞれの項目の使用率がグラフにプロットされていることが確認できると思います。
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】
ファイアウォールなどの影響が無く、既に他の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を取得可能であれば、
様々な項目について監視を行うことができますので、ぜひお試しください。