[NNMi]監視対象のホスト名を変更する

NNMiにおいて、監視対象のホスト名を変更する方法。
これが厄介!NNMiに表示されるホスト名はノード検出時(検出シードに登録した直後)に決まってしまうので、ホスト名を変更したときは、
ノードの削除→検出シードの削除→検出シードに登録→(ノード作成)→ノードグループ登録
をしてあげないといけない・・・

[NNMi]特定ノードの監視間隔を短くしたい

NNMiにおいて、特定のノード(機器)だけ監視間隔を短くする方法。ICMP(Ping)監視だけにしたい、リンクアップ/ダウンイベントもインシデントに表示させたい、というときもこの方法に同じ。
1.監視間隔を短くしたいノードを登録するノードグループを作成する。
2.作成したノードグループに対して監視設定をする
[設定]>[監視の設定]画面内(バージョンによっては[モニタリングの設定]になってるかも)の[ノード]タブにおいて、[新規作成]ボタンから作成したノードグループを登録する。この[ノードの設定]画面内で[ノードグループ]に作成したノードグループを登録し、[障害のポーリング間隔]で独自の監視間隔を設定する。
リンクアップ/ダウンイベントもインシデントに表示させたいときは、[未接続インターフェースのポーリング]にチェック。
この監視設定は順序が一番若い(小さい)もののみ適用されるので、いろんな条件があるときはちょっと考えないといけないかも。
3.ノードグループへの登録
[設定]>[ノードグループ]画面で、作成したノードグループを開き、[追加ノード]タブで監視間隔を短くしたいノードを個別に登録する。
IPアドレスなどで自動的にノードグループに登録させたい場合は[追加のフィルタ]タブで条件指定をすると楽。
4.確認
どの監視用ノードグループが適用されているかの確認は、[インベントリ]>[ノード]で,設定したノードを開き、上部メニューの[アクション]>[監視の設定]から[監視のノードグループ]で確認できる。

[NNMi]監視ホストを追加する

NNMiに監視させる機器を追加する方法。
NNMiコンソールを起動し管理者ユーザでログインして
[設定]>[検出の設定]>[検出シードの設定]画面にて、IPアドレスもしくはホスト名と登録する。
検出が終了すると監視対象がノードとして作成されるので、直ぐに監視対象の情報を取得させたい場合は、[インベントリ]>[ノード]より、作成されたノードを選択して、上部メニューの[アクション]>[設定のポーリング]→[アクション]>[ステータスのポーリング]の順にポーリングを実施する。※このとき、機器によってはリンクダウンなどのインシデントが発生してしまうので要注意(といってもインシデントが発生することを恐れてノードを非監視対象にしてしまうと設定ポーリングができない)
また必要に応じて、[設定]>[ノードグループ]からノードグループに登録する。
※ホスト名で登録、またはノードグループマップに監視対象をホスト名で表示させたい場合は、自身のOSが持つhostsファイルもしくは名前解決できるDNSに、IPアドレスとホスト名の組み合わせを登録する必要がある。
 

[NNMi]サーバで受信したSNMPトラップを表示する

NNMiサーバでSNMPトラップを受信しても、全てのSNMPトラップが[すべてのインシデント]画面に表示されるわけではない。SNMPトラップがインシデントとして登録されていると[すべてのインシデント]画面に表示することが可能であるが、何が飛んでくるかわからないSNMPトラップがインシデント登録されてるかなんて調べることは困難であるので、正体がわからないSNMPトラップがNNMiサーバで受信できているかは[すべてのインシデント]画面で確認することができない。Linuxであればtcpdumpコマンドで受信しているSNMPトラップをパケットキャプチャで確認することは可能であるが、WindowsサーバであるとWireSharkでもインストールされていない限りパケットキャプチャで確認することは不可能である。
でも、NNMiでも受信したSNMPトラップを全て表示させるコマンドが用意されている。(インシデント登録されているか否かに関係なく)
以下のコマンドを実行すると、受信したSNMPトラップをリアルタイムに表示させることが可能。SNMPトラップポートでSNMPトラップv1 v2c以外のデータを受信すると例外エラーを吐くので、標準エラーはファイルにリダイレクトしておくと見やすい。

nnmtrapdump.ovpl -t 2> error.log

 
このコマンドは送信元やoidを限定したり、過去のものも表示させることが可能。忘れたので

nnmtrapdump.ovpl  -help

でオプションを調べてください。
 
 

[linux]rsyslogで特定の文字列を含むメッセージを別のファイルに出力させる

rsyslogで特定の文字列を含むメッセージを別のファイルに出力させる方法。
iptablesのログなどを/var/log/messages以外に出力させたいときなどに使用可能。
「iptables」という文字列を含むメッセージを/var/log/iptablesに出力させるにはこんな感じ。「~」で除外して/var/log/messagesに出力させなくするのがポイント。

# vi /etc/rsyslog.conf
:msg,contains,“iptables” /var/log/iptables;LocalFormat
:msg,contains,”iptables” ~
:(省略)
*.info;mail.none;authpriv.none;cron.none                /var/log/messages;LocalFormat

[linux]rsyslog(messagesなど)にログレベル(severity,重大度)を表示する

rsyslogで出力するシステムログにログレベル(シビリティ・重大度)を表示させる方法。
syslogでは起動オプションを付ける方法であったが、rsyslogでは設定ファイルに定義する。
設定ファイル(/etc/rsyslog.conf)には、ログレベルを追加したログフォーマットを「$template」で始まる行で定義し、出力する定義のアクションにログフォーマットを指定する。

# vi /etc/rsyslog.conf
:(省略)
$template LocalFormat,”%timereported% %hostname% %syslogfacility-text%.%syslogseverity-text%: %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n”
:(省略)
*.info;mail.none;authpriv.none;cron.none /var/log/messages;LocalFormat

出力されるログはこんな感じ

Oct 20 03:21:26 hogehoge kern.warning: kernel: [iptables SYN FLOOD] IN=eth0 OUT= MAC=02:16:3e:4f:39:

「%syslogtag%」やら「%syslogfacility-text%」の意味は

# man rsyslog.conf

の「Available Properties」の項に書いてあるので、そっちを見て。

[linux]rshのタイムアウト

残念ながらRHEL(RedHat)のrshコマンドにはタイムアウトのオプションが実装されていない。
rsh実行中にOSPFなどの動的ルーティングで経路が変わったりネットワークの状態に変化があった場合、
rshコマンドのパケットが戻ってこれずに、いつまで経ってもrshコマンドが終了しないという困った状態になる。
rshコマンドのタイムアウトが実装されていない場合の回避方法。
スクリプト使います。
ポイントは

  • rshをバックグラウンド実行
  • bashの特殊変数SECONDSを使用して、スクリプト開始からの経過時間を取得し、それを利用する

です。

#!/bin/bash
# タイムアウト秒数指定
timeoutsec=120
rsh "リモートコマンド" &
# バックグラウンド実行(rsh)のpidを取得
bpid=$!
startsec=${SECONDS}
while [[ 1 == 1 ]]
do
    # rshコマンド終了チェック
    stdout=$( ps auwwwwx | egrep "^.+[[:space:]]${bpid}[[:space:]]")
    if [[ -z "${stdout}" ]];then
        # 終了している
    	break
    fi
    # 経過分数を取得
    nowsec=${SECONDS}
    # rsh開始からの経過分数取得
    (( divsec=${nowsec}-${startsec} ))
    if (( ${divsec} > ${timeoutsec} ));then
    	# タイムアウト
    	kill -9 ${bpid}
    fi
    sleep 10
done

 

[linux]RPMパッケージの依存性を調べる方法

rpmパッケージのパッケージ依存を調べる方法

インストール済みパッケージの場合

rpm -qR [パッケージ名]

で調べられる。

# rpm -qR kernel
rpmlib(VersionedDependencies) <= 3.0.3-1
fileutils
module-init-tools
initscripts >= 8.11.1-1
kernel-firmware >= 2.6.32-220.4.1.el6
grubby >= 7.0.4-1
dracut-kernel >= 002-18.git413bcf78
/sbin/new-kernel-pkg
/sbin/new-kernel-pkg
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1
rpmlib(VersionedDependencies) <= 3.0.3-1
fileutils
module-init-tools
initscripts >= 8.11.1-1
kernel-firmware >= 2.6.32-220.4.2.el6
grubby >= 7.0.4-1
dracut-kernel >= 002-18.git413bcf78
/sbin/new-kernel-pkg
/sbin/new-kernel-pkg
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1
rpmlib(VersionedDependencies) <= 3.0.3-1
fileutils
module-init-tools
initscripts >= 8.11.1-1
kernel-firmware >= 2.6.32-220.7.1.el6
grubby >= 7.0.4-1
dracut-kernel >= 002-18.git413bcf78
/sbin/new-kernel-pkg
/sbin/new-kernel-pkg
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

 

rpmパッケージファイルから調べる場合

rpm -qpR [パッケージファイルパス]

で調べられる。

# rpm -qpR zabbix-1.8.5-2.el6.JP.x86_64.rpm
警告: zabbix-1.8.5-2.el6.JP.x86_64.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID f32904ff: NOKEY
/bin/sh
/usr/sbin/useradd
logrotate
rpmlib(CompressedFileNames) rpmlib(FileDigests) rpmlib(PayloadFilesHavePrefix) rpmlib(PayloadIsXz)

[Oracle DB]VNCで表示したローカルデスクトップを使用してインストールする方法

VNCで画面転送したローカルデスクトップ(GUI)上でOracle Databaseをインストールする方法
Oracle社謹製のインストールガイドを元にインストールを進めると、VNCの場合インストーラを起動できない。

$ export DISPLAY=localhost:0.0
$ xhost +localhost
$ ./runInstaller
Oracle Universal Installerを起動中です…
インストーラ要件の確認中…
:(省略)
コマンド/usr/openwin/bin/xdpyinfoを使用して表示色の自動チェックを実行できませんでした。DISPLAY変数が設定されていることを確認してください。 失敗しました

解決するには、rootユーザで先にxhostコマンドでlocalhostからの接続を許可すること。

# xhost +localhost
# su – oracle
$ export DISPLAY=”localhost:1″
$ ./runInstaller

 

[solaris]ネットワーク設定まとめ

忘れそうなので・・・
他のOS同様、一時的なon memoryな設定であればifconfigコマンドとrouteコマンドで設定。
ではOS起動時から有効に設定するには・・・

NICに割り振るIPアドレスの設定

# vi /etc/hostname.<ネットワークインターフェース名>
<ホスト名>

実は、このファイルに記述する内容は、ifconfigコマンドの引数全てそのもの。
ちなみにサーバで保有するネットワークインターフェース名全てを表示するには

# dladm show-dev
e1000g0    リンク: up   速度: 1000 Mbps    デュプレックス: full
e1000g1    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown
e1000g2    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown
e1000g3    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown

ネットマスクの設定

# vi /etc/inet/netmask
192.168.1.0 255.255.255.0
<ネットワークアドレス> <ネットマスク>

デフォルトゲートウェイの設定

# vi /etc/defaultrouter
<デフォルトゲートウェイのIPアドレス>

hostsファイル

# vi /etc/hosts
192.168.1.1? hogeserver
<IPアドレス>? <ホスト名>

ネットワーク関連のファイルはできるだけ<ホスト名>で記述して、IPアドレスはhostsファイルのみに書くというのがsolarisのお作法みたい。IPアドレスが変わったらhostsファイルだけを書き換えたらよいだけだから、確かに楽だね。