監視
2018年01月26日
MIBファイルの読み方 オブジェクトのOIDを特定する
仕事中に「MIBファイルってどうやって読むねん」みたいな話が話題に上がったことがあったので
ざっくりまとめてみるよ。
●MIBファイルってなんですか
管理情報ベース (Management information base) のことで、頭文字を取って、「MIB」と呼ばれます。
この情報がまとまったファイルをMIBファイルと呼びます。
で、このMIBファイル、どういうことに使うのかと言いますと。
・機器の監視
・機器からの情報取得 …なんかによく使われています。
監視製品でMIBファイルを読み込んで、機器側から送信されてくるSNMP Trapという情報を監視できるようにしたり、
機器側に対して、情報をリクエスト(SNMP walk)して、情報を取得したり…(そしてそれを蓄積して解析する、ということをやっているところも多いです)
そのMIBファイルなんですが、読むのに結構コツが要ります。
せっかくなので、読み方をまとめておこうと思います。
●MIBファイルの読み方
・オブジェクト名からOIDを特定する方法
MIBファイルには、「こういうものを監視するものですよ/この指標はこういうものですよ」という説明と一緒に、 OID(Object IDentifier)が割り振られています。
このOIDですが、実は木構造になっています。
このURLに貼ってある図がわかりやすいと思うので、参考にURLを記載します。
※URL内の木構造の図がわかりやすい
https://www.alaxala.com/jp/techinfo/archive/manual/AX3630S/HTML/11_10/CFGUIDE2/0412.HTM
たとえば、MIBファイル内に以下のような定義があったとします。
tsveOBJN OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS accessible-for-notify
STATUS current
DESCRIPTION
"IBM (orginally TSVE) object name"
::= { ibm2145TSVEObjects 17 }
ここで注目していただきたいのはいちばん下の記載。
これは、『「 tsveOBJN」という名前のオブジェクトが「ibm2145TSVEObjects」という名前のオブジェクトの17番目の要素ですよ』ということを示しています。
では、ibm2145TSVEObjectsの定義を見てみましょう。
ibm2145TSVEObjects OBJECT IDENTIFIER ::= { ibm2145TSVE 4 }
これも実はいちばん後ろを見ればよいです。
『「ibm2145TSVEObjects」という名前のオブジェクトは、「ibm2145TSVE」というオブジェクトの4番目の要素ですよ』と言っています。
この調子で遡れるだけ遡ってみましょう。
ibm2145TSVE MODULE-IDENTITY
LAST-UPDATED "201701120000Z"
ORGANIZATION "IBM SSG"
CONTACT-INFO
"Contact IBM Support"
DESCRIPTION
※中略
::= { ibmProd 190 }
ファイル内に「ibmProd」がありません。遡れなくなりました。
しかし、実は続きがあります。
ファイルの最初のIMPORTS部分で「これはこの定義を使うから、先にインポートしておくよ」という前提を記載しています。
以下のような感じです。
IMPORTS
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
enterprises
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB;
※IMPORTSは、監視製品にMIBファイルを読み込む際に必ず必要なものになります。でないと、定義が想定しない読み込まれ方をします…。
ここに、先ほどのibmProdより先の定義が入っています。
が、ファイルからはどうやっても確認できないため、Google先生に聞いてみることにします。
[ibmProd OID]なんかで検索するとすぐ出てきます。
↓
http://oid-info.com/get/1.3.6.1.4.1.2.6
上記のサイトには、このようなことが書かれています。
{iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) IBM(2) ibmProd(6)}
1.3.6.1.4.1.2.6
これは「rootからibmProdまでを示すOID」となります。
※サイト上では「2」のオブジェクト名だけ欠けちゃってますが、ここには「IBM」というオブジェクト名が入りますので、記載しておきます。
これで、ibmProdまでのOIDがわかりました。
これから、ibmProdから先のOIDをつけ足していきます。
ibm2145TSVE … ::= { ibmProd 190 }
→ 1.3.6.1.4.1.2.6.190
ibm2145TSVEObjects … ::= { ibm2145TSVE 4 }
→ 1.3.6.1.4.1.2.6.190.4
tsveOBJN … ::= { ibm2145TSVEObjects 17 }
→ 1.3.6.1.4.1.2.6.190.4.17
最初に例に出したオブジェクト名まで戻ってきました。
特定の定義のOIDを確認したい場合、その要素がどの要素の子となっているか、またその要素の何番目の要素なのかを確認していくことにより、
OIDを特定することができます。
※ものによってはGoogle検索が早かったりしますが。
※今回の説明に使用したファイルは、V7000(IBMのストレージ製品)のMIBファイルを使用しています。
http://www-01.ibm.com/support/docview.wss?uid=ssg1S4000598
ざっくりまとめてみるよ。
●MIBファイルってなんですか
管理情報ベース (Management information base) のことで、頭文字を取って、「MIB」と呼ばれます。
この情報がまとまったファイルをMIBファイルと呼びます。
で、このMIBファイル、どういうことに使うのかと言いますと。
・機器の監視
・機器からの情報取得 …なんかによく使われています。
監視製品でMIBファイルを読み込んで、機器側から送信されてくるSNMP Trapという情報を監視できるようにしたり、
機器側に対して、情報をリクエスト(SNMP walk)して、情報を取得したり…(そしてそれを蓄積して解析する、ということをやっているところも多いです)
そのMIBファイルなんですが、読むのに結構コツが要ります。
せっかくなので、読み方をまとめておこうと思います。
●MIBファイルの読み方
・オブジェクト名からOIDを特定する方法
MIBファイルには、「こういうものを監視するものですよ/この指標はこういうものですよ」という説明と一緒に、 OID(Object IDentifier)が割り振られています。
このOIDですが、実は木構造になっています。
このURLに貼ってある図がわかりやすいと思うので、参考にURLを記載します。
※URL内の木構造の図がわかりやすい
https://www.alaxala.com/jp/techinfo/archive/manual/AX3630S/HTML/11_10/CFGUIDE2/0412.HTM
たとえば、MIBファイル内に以下のような定義があったとします。
tsveOBJN OBJECT-TYPE
SYNTAX SnmpAdminString
MAX-ACCESS accessible-for-notify
STATUS current
DESCRIPTION
"IBM (orginally TSVE) object name"
::= { ibm2145TSVEObjects 17 }
ここで注目していただきたいのはいちばん下の記載。
これは、『「 tsveOBJN」という名前のオブジェクトが「ibm2145TSVEObjects」という名前のオブジェクトの17番目の要素ですよ』ということを示しています。
では、ibm2145TSVEObjectsの定義を見てみましょう。
ibm2145TSVEObjects OBJECT IDENTIFIER ::= { ibm2145TSVE 4 }
これも実はいちばん後ろを見ればよいです。
『「ibm2145TSVEObjects」という名前のオブジェクトは、「ibm2145TSVE」というオブジェクトの4番目の要素ですよ』と言っています。
この調子で遡れるだけ遡ってみましょう。
ibm2145TSVE MODULE-IDENTITY
LAST-UPDATED "201701120000Z"
ORGANIZATION "IBM SSG"
CONTACT-INFO
"Contact IBM Support"
DESCRIPTION
※中略
::= { ibmProd 190 }
ファイル内に「ibmProd」がありません。遡れなくなりました。
しかし、実は続きがあります。
ファイルの最初のIMPORTS部分で「これはこの定義を使うから、先にインポートしておくよ」という前提を記載しています。
以下のような感じです。
IMPORTS
OBJECT-TYPE, NOTIFICATION-TYPE, MODULE-IDENTITY,
enterprises
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF
SnmpAdminString
FROM SNMP-FRAMEWORK-MIB;
※IMPORTSは、監視製品にMIBファイルを読み込む際に必ず必要なものになります。でないと、定義が想定しない読み込まれ方をします…。
ここに、先ほどのibmProdより先の定義が入っています。
が、ファイルからはどうやっても確認できないため、Google先生に聞いてみることにします。
[ibmProd OID]なんかで検索するとすぐ出てきます。
↓
http://oid-info.com/get/1.3.6.1.4.1.2.6
上記のサイトには、このようなことが書かれています。
{iso(1) identified-organization(3) dod(6) internet(1) private(4) enterprise(1) IBM(2) ibmProd(6)}
1.3.6.1.4.1.2.6
これは「rootからibmProdまでを示すOID」となります。
※サイト上では「2」のオブジェクト名だけ欠けちゃってますが、ここには「IBM」というオブジェクト名が入りますので、記載しておきます。
これで、ibmProdまでのOIDがわかりました。
これから、ibmProdから先のOIDをつけ足していきます。
ibm2145TSVE … ::= { ibmProd 190 }
→ 1.3.6.1.4.1.2.6.190
ibm2145TSVEObjects … ::= { ibm2145TSVE 4 }
→ 1.3.6.1.4.1.2.6.190.4
tsveOBJN … ::= { ibm2145TSVEObjects 17 }
→ 1.3.6.1.4.1.2.6.190.4.17
最初に例に出したオブジェクト名まで戻ってきました。
特定の定義のOIDを確認したい場合、その要素がどの要素の子となっているか、またその要素の何番目の要素なのかを確認していくことにより、
OIDを特定することができます。
※ものによってはGoogle検索が早かったりしますが。
※今回の説明に使用したファイルは、V7000(IBMのストレージ製品)のMIBファイルを使用しています。
http://www-01.ibm.com/support/docview.wss?uid=ssg1S4000598
riku_cha at 11:48|Permalink│Comments(0)
2017年01月31日
Prometheus入れてみた
最近はドキュメント書き書きしてるりくちゃさんです。こんばんは。
AIXを使わなくなったので、Linuxのお勉強をする必要が出てきました。
りくちゃ「(なにかしないと)」
りくちゃ「(そういえばぷろめてうすってあったなぁ)」
というわけで、(この間クーポンをいただいたのもあるので)さくらのクラウド上にサーバを構築してPrometheusを導入してみることにしました。
※今回は導入してPrometheusのグラフが確認できるところまでを目標にしています。
環境: CentOS 7.3 on さくらのクラウド
参考Webサイト:http://tech-sketch.jp/2016/04/prometheus_alertmanager.html
①導入準備
# yum update
# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
# yum install -y epel-release.noarch※導入済み
# yum install -y wget gcc glibc-static git
※gccとgitは導入済み
②Goの導入
# cd /usr/local/src
・モジュールファイルをダウンロード
# wget https://storage.googleapis.com/golang/go1.7.5.linux-amd64.tar.gz
※2017/1/30現在の最新版は1.7.5。
以下のサイトで最新版を確認することができます。
https://golang.org/dl/
# cd /usr/local/
# tar zxvf ./src/go1.7.5.linux-amd64.tar.gz
# vi ~/.bashrc
環境変数GOPATHとPATHの読み込み定義を追加
GOPATH=/usr/local/go/
PATH=$PATH:/usr/local/go/bin
# source ~/.bashrc
・Goの導入確認
# go version
go version go1.7.5 linux/amd64
③Prometheusインストール
# cd /usr/local/src
・Prometheusモジュールをダウンロード
# wget https://github.com/prometheus/prometheus/releases/download/v1.5.0/prometheus-1.5.0.linux-amd64.tar.gz
※2017/1/30現在の最新版は1.5.0.
以下のサイトで最新版を確認することができます。
https://github.com/prometheus/prometheus/releases
# cd /usr/local/
# tar zxvf ./src/prometheus-1.5.0.linux-amd64.tar.gz
・シンボリックリンク作成
# ln -s /usr/local/prometheus-1.5.0.linux-amd64/prometheus /usr/bin/prometheus
# ln -s /usr/local/prometheus-1.5.0.linux-amd64/promtool /usr/bin/promtool
・設定ファイルを配置
# mkdir /etc/prometheus
# ln -s /usr/local/prometheus-1.5.0.linux-amd64/console_libraries /etc/prometheus/console_libraries
# cd /etc/prometheus
# wget https://raw.githubusercontent.com/prometheus/prometheus/master/documentation/examples/prometheus.yml
・OPTIONSファイル作成
# vi /etc/default/prometheus
# prometheus option
OPTIONS="-config.file=/etc/prometheus/prometheus.yml -storage.local.path=/var/lib/prometheus -web.console.libraries=/etc/prometheus/console_libraries -web.console.templates=/etc/prometheus/consoles"
・設定ファイルをチェック
# promtool check-config /etc/prometheus/prometheus.yml
・設定ファイルをチェック
# promtool check-config /etc/prometheus/prometheus.yml
Checking /etc/prometheus/prometheus.yml
SUCCESS: 0 rule files found
・prometheus.serviceの設定ファイルを作成
# vi /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Service
After=syslog.target prometheus.service
[Service]
Type=simple
EnvironmentFile=-/etc/default/prometheus
ExecStart=/usr/bin/prometheus $OPTIONS
PrivateTmp=true
[Install]
WantedBy=multi-user.target
・サービス起動・自動起動設定
# systemctl start prometheus
# systemctl enable prometheus
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.
・Prometheusで使用するポートを開放
# firewall-cmd --add-port=9090/tcp --zone=public --permanent
# firewall-cmd --reload
やってて困ったこと:
1.作成されていないディレクトリがあった(赤文字が作られてなかったディレクトリ)
# cat /etc/default/prometheus
# prometheus option
OPTIONS="-config.file=/etc/prometheus/prometheus.yml -storage.local.path=/var/lib/prometheus -web.console.libraries=/etc/prometheus/console_libraries -web.console.templates=/etc/prometheus/consoles"
# find /etc | grep prometheus
/etc/default/prometheus
/etc/systemd/system/multi-user.target.wants/prometheus.service
/etc/prometheus
/etc/prometheus/console_libraries
/etc/prometheus/prometheus.yml
→mkdirで作成しました
2.systemctl startでprometheusが起動しない
→コマンドを直接実行すると起動する
# vi /usr/lib/systemd/system/prometheus.service
(略)
[Service]
Type=simpre
EnvironmentFile=-/etc/default/prometheus
ExecStart=/usr/bin/prometheus $OPTIONS &
PrivateTmp=true
(略)
赤文字の部分が原因でうまく起動しなかったようです…
そのままコピペしててもやっぱ確認は必要ですね…(´・ω・`)
グラフ見られるようになったよー(/・ω・)/
今度これにいろいろデータが追加できるといいなぁ(ぶっ壊すかもしれないけど)
メモ:
systemctl statusの確認マジ大事
systemctl statusで何か出てきてたらググるより先にログとかディレクトリがあるかを確認した方がいい
バージョンが違いによる、作成されるはずのディレクトリがないとか結構ザラなのかもしれない
ファイル変えた後はsystemctl daemon-reloadしないとエラーになった
2016年11月20日
LogFile Agentでハマったところなどまとめ。
そろそろTivolierから脱出できそうなりくちゃさんですこんばんは。
ITM LogFile Agentでハマったことが結構多かったので、
問題発生時、これが検索にひっかかることを願ってめもめも。
・LogFile Agent 6.3.0はRHEL7系にインストール不可
Install.shを流してみたけどダメだった。。。
→LogFile Agent 6.3.0.1(FP01)以降でないと対応してないらしい。こっちならLFA入った。
→ちなみにOS Agentは6.3.0でもRHEL7系への導入はできる。はず。
・RHEL7からsyslogの出力形式が変更されている
今まで(RHEL6系まで)の出力に合わせたfmtをLFAに食わせてみたけど拾わなかった。
RHEL7系から、LFAのパイプファイルに出力される形式が変更されているっぽい。
ので、パイプファイルに出力される形式を/etc/syslog.confで変更した。
→どのfmtで出力されているかを確認したい場合は、$CANDLEHOME/logs内のLFAログファイルを確認すればわかる、はず。。。
→デフォルトの形式そのままでもfmtさえ書ければ拾うことは可能。実ログ見た感じでは面倒な感じのfmtになりそう。
(正規表現で書けるのがせめてもの救い)
・Windows2012のイベントログ監視で、2008までと微妙にログ監視のフォーマットが変わっている。。。
UserNewEventLogAPI=Y のオプションありなしで変わってそうな気がする。
fmtファイルの定義を書き換えて対応。
・CustomSlotはTEP転送しない限りは不要
これから何依頼されるかわからなかったので、とりあえず全スロットに入れておいた。
入れることによるEIF Probeへの影響は特にないように見える。
ぱっと思い出せるのはこんなところですかね・・・。
2014年05月25日
プロセス監視追加してみた
PandoraFMS用エージェント(Linux)を入れて、プロセス監視を追加した時のメモ。
①エージェントのインストール
/etc/yum.repos.d/pandorafms.repo というファイルを作成して、
以下の設定を流し込む。
(serverのインストールの時と一緒)
[artica_pandorafms]
name=CentOS6 - PandoraFMS official repo
baseurl=http://artica.es/centos6
gpgcheck=0
enabled=1
②パッケージ名を検索[root@FLAMINGO]/etc/yum.repos.d# yum search pandora
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.arsc.edu
* epel: mirror.steadfast.net
* extras: mirrors.arsc.edu
* updates: mirrors.arsc.edu
============================= N/S Matched: pandora =============================
pandorafms_agent_unix.noarch : Pandora FMS Linux agent, PERL version
pandorafms_console.noarch : Pandora FMS Console
pandorafms_server.noarch : Pandora FMS Server
anytermd.i386 : Pandora FMS Remote connection gateway
anytermd.x86_64 : Pandora FMS Remote connection gateway
③インストール
yum install pandorafms_agent_unix.noarch
案外すぐに終わった。
④設定
/etc/pandora/pandora_agent.conf を修正
以下の設定を変更
server_ip <PandoraサーバのIPアドレス>
agent_name <監視対象サーバ名>
⇒これ追加しないと、<サーバ名>.localっていう名前になるみたい。
プロセス監視を追加する場合、以下の設定を追加。
追加場所は最後尾がいい感じ。(あとで確認した時に修正した箇所がわかりやすくなるから)
例として、Zabbixサーバのプロセスを監視する設定を記載する。
③インストール
yum install pandorafms_agent_unix.noarch
案外すぐに終わった。
④設定
/etc/pandora/pandora_agent.conf を修正
以下の設定を変更
server_ip <PandoraサーバのIPアドレス>
agent_name <監視対象サーバ名>
⇒これ追加しないと、<サーバ名>.localっていう名前になるみたい。
プロセス監視を追加する場合、以下の設定を追加。
追加場所は最後尾がいい感じ。(あとで確認した時に修正した箇所がわかりやすくなるから)
例として、Zabbixサーバのプロセスを監視する設定を記載する。
# Zabbix-server module
module_begin
module_name Zabbix-server
module_type generic_proc
module_exec pgrep zabbix_server | wc -l
module_description Check zabbix_server process
module_end
module_execで指定されたコマンドを実行して、返ってきた値をPandoraサーバに通知する仕組み。
⑤起動
service pandora_agent_daemon start
で、コンソールを見てみると、追加されています。
案外簡単に追加できたので、これからいろいろ追加してみます。
ここで気がついたこと。
エージェントをインストールすると、pandoraユーザが追加されます。
インストール時に追加されるのか、サービス起動時に追加されるのかは不明・・・(´・ω・)
module_execで指定されたコマンドを実行して、返ってきた値をPandoraサーバに通知する仕組み。
⑤起動
service pandora_agent_daemon start
で、コンソールを見てみると、追加されています。
案外簡単に追加できたので、これからいろいろ追加してみます。
ここで気がついたこと。
エージェントをインストールすると、pandoraユーザが追加されます。
インストール時に追加されるのか、サービス起動時に追加されるのかは不明・・・(´・ω・)
2014年05月24日
AndroidをPandoraFMSで監視させてみた
昨日インストールしたPandoraFMSにエージェント追加して回っているときに、
Android端末を監視できるようだったのでやってみた。
①GooglePlayで「PandoraFMS」 を検索。
「Pandroid」というアプリケーションをダウンロード・インストール。
②Pandroidを起動
③設定タブを開く
この時に「パスワード設定するか?」を聞かれますが、一旦いいえにしておいてOK。
あとから変更可。
④サーバーアドレスにPandoraサーバのアドレスを入力
※当然のことながら、プライベートアドレスは入力しないこと。
端末の物理的な場所によって、監視できなくなる可能性があるため。
⑤サーバーポートを入力
※変えてなければそのままでOK
⑥間隔を入力
サーバへデータを送信する間隔(監視タイミング)。秒単位になっている。
あまり多すぎると、送信データ量がかさむので、りくちゃの場合は3600(1時間)に設定。
デフォルトは300(5分)。
⑦エージェント名を入力
これがそのままエージェント一覧で出力されるエージェント名になる。
わかりやすい(監視対象が複数台の場合に一位に認識できる)名前をつけておいた方がよい。
⑧サーバのURLを入力
<PandoraサーバURL>/pandora_console/mobile と入力。
⑨Pandoraサーバへ報告する項目を選択する
⑩「設定更新」をタップ。その後、念のため 「エージェント再起動」をタップ。
簡易的に記載したが、上記の作業後にコンソールを確認すると、新しいエージェントが追加されている。
尚、コンソールは、Android端末からでも確認可能。