12月
13
2009
0

Zabbixのトリガーを修正

ZabbixのテンプレートTemplate_Linuxには,ApacheやSyslogのデーモンが生きているか監視して,問題があれば障害を報告するトリガーがあります

監視方法には,

  • Zabbixサーバがポートにアクセスしてデーモンの生存を調べる方法
  • Zabbixエージェントがデーモンのプロセスを監視する方法

の2種類があります

今回の対象は,後者のプロセスの監視です

Template_Linuxのトリガーは,Apacheのデーモン名はhttpd,Syslogのデーモン名はsyslogdであることを前提にしています

ですが,ディストリビューションによっては,Apacheのデーモンの名前がapacheやapache2だったりと多少異なりますし,Syslogもsidのようにrsyslogの採用が増えてきました

ということでちょっと変更して修正してやりましょう

ホストにテンプレートをリンクしたままの人も多いと思いますが,自分は最初リンクさせてアイテムやトリガーなどを継承した後,アンリンクして個々のホストに応じてカスタマイズしています

今回の変更もホストにテンプレートをリンクしたまま行う場合は,テンプレート自体を変更する必要があります

変更自体はいたって簡単です

Apacheの場合は次の通り

  1. Itemsから”Number of running processes apache”を選択
  2. Keyを”proc.num[httpd]“→”proc.num[apache2]“などに変更

Syslogの場合も同様です

これでApacheやSyslogが落ちてる時は,「Apache is not running on ・・・」や「Syslogd is not running on ・・・」のような障害が報告されるようになります

プロセス数の監視はデーモンが生きているかはもちろん,負荷などの状態を把握するのにも便利なので,ポートの監視よりオススメです

最近Zabbixネタばっかりですね
しかも内容がどんどん薄くなってるような・・・

Written by p0n in: ネットワーク | タグ: ,
12月
12
2009
3

Zabbix 1.8のグラフの文字化けに対応

前回インストールした Zabbix 1.8なんですが,日本語表示にしたときにグラフの凡例が化けていました
zabbix18-7

自分は別にかまわないのですが,教育用に立てたzabbixなので日本語の方がとっつきやすいかなぁと思って,直してみました

化け方から見て,フォントが日本語の文字のグリフに対応するデータを持ってないのが原因だと思われるので,
とりあえずIPAフォントに変更してみます

環境は前回と同じで,Debian sid x64です

まずはaptでフォントをインストール

$ sudo aptitude install otf-ipafont

次に,zabbixのフロントエンドの中にfontsディレクトリがあるので,そこにIPAフォントのリンクを張ります
拡張子をotfではなくttfにしてリンクを張ってますが,これはzabbixがotfだとフォントを読み込んでくれないためです
IPAフォントはOpenTypeですが,中身はTrueTypeなので問題ないでしょう

$ cd /var/www/zabbix/fonts/
$ sudo ln -s /usr/share/fonts/opentype/ipafont/ipag.otf ipag.ttf

つづいて,zabbixがグラフに使用するフォントを変更

$ sudo vim /var/www/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
→define('ZBX_GRAPH_FONT_NAME', 'ipag');

これで一応日本語表示できます
ただ,どう考えても見難いですよね
英語表示にした時も見づらい・・・
zabbix18-9 zabbix18-10

ということでIPAはやめて,お気に入りのmeiryoKeConsoleにしました
zabbix18-11 zabbix18-12

大分見やすくなったんではないでしょうか?
みなさんも好きなフォントで試してみてください

本当は表示言語毎にフォントを変えるようにした方がいいのかも知れませんが,実運用はやっぱり英語の方がよさそうだし,面倒なのでこれで妥協します

Written by p0n in: ネットワーク | タグ: ,
12月
09
2009
2

早速Zabbix 1.8を入れてみた

今日(といっても昨日ですが),予想より早くZabbix 1.8が出たので早速入れてみました

以下,簡単な手順メモ

環境はDebian sid x64です
apacheとphp5は入ってるものとします

基本的な流れはインストールマニュアルに従ってます

  1. zabbix用のユーザの作成
    一般ユーザとUID, GIDを区別できるようにしたいので,適当な値を調べて指定します
    ログインとかはしないのでその辺はセオリー通り

    $ sudo groupadd -g 107 zabbix
    $ sudo useradd -u 105 -g zabbix -d /dev/null -s /bin/false zabbix
    
  2. ソースのDLと展開
    $ wget http://prdownloads.sourceforge.net/zabbix/zabbix-1.8.tar.gz
    $ tar zxvf zabbix-1.8.tar.gz
    
  3. DBの設定
    まず,zabbix用のDBとユーザを作成します

    mysql> create database zabbix character set utf8;
    mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'パスワード';
    mysql> flush privileges;
    mysql> quit;
    

    続いて,作成したDBにSQLファイルを読み込みます

    $ cat zabbix-1.8/create/schema/mysql.sql| mysql -u zabbix -p zabbix
    $ cat zabbix-1.8/create/data/data.sql | mysql -u zabbix -p zabbix
    $ cat zabbix-1.8/create/data/images_mysql.sql | mysql -u zabbix -p zabbix
    
  4. ビルド
    proxyは使わないので,serverとagentをビルドします
    DBMSはMySQL,NET-SNMPとIPMIも使うのでオプションを次のようになります
    Jabberもおもしろそうなので使ってみます

    build-essentialしか入っていない場合は,libmysqlclient-dev, libcurl-dev (=libcurl4-openssl-dev), libsnmp-dev, libiksemel-dev, libopenipmi-devあたりが必要になるでしょう

    ただ,(うちだけ?)configureスクリプトが不安定なので注意が必要です
    libiksemel-devを入れても

    checking for IKSEMEL... configure: error: Jabber library not found
    

    といわれるので,–with-jabber=/usr/lib とするとなぜか通るようになります(configureはいったいどこ探してるんでしょうかね?)
    さらに不思議なのは,その後–with-jabberに戻しても通るようになってることです
    あと–with-openipmiを指定してもIPMIがnoになるのですが,同じオプションで30回くらい繰り返すとOpenIPMIになりました
    意味不明です・・・

    PCがおかしい?
    いやいや,VMだしOSインストール直後なんですけど・・・

    そういえば,1.6の頃も–enable-agentが効いてないことがあったなぁ

    ともあれ,configureオプションは次の通り
    なんかバギーなので実行後,最後に表示される設定一覧で指定した通りになってるか確認しましょう

    $ cd zabbix-1.8
    ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-openipmi --with-jabber
    ・・・
    Configuration:
    
      Detected OS:           linux-gnu
      Install path:          /usr/local
      Compilation arch:      linux
    
      Compiler:              gcc
      Compiler flags:        -g -O2   -I/usr/include/mysql  -DBIG_JOINS=1    -DUNIV_LINUX -DUNIV_LINUX     -I/usr/local/include -I/usr/lib/perl/5.10/CORE -I. -I/usr/include     -I/usr/include
    
      Enable server:         yes
      With database:         MySQL
      WEB Monitoring via:    cURL
      Native Jabber:         yes
      SNMP:                  net-snmp
      IPMI:                  openipmi
      Linker flags:             -L/usr/lib -lOpenIPMI -lOpenIPMIposix     -L/usr/lib/mysql  -liksemel    -lcurl  -L/usr/lib -lnetsnmp -lcrypto  -L/usr/lib -lnetsnmp -lcrypto
      Libraries:             -lm -lresolv      -lmysqlclient   -liksemel -lcurl  -lnetsnmp 
    
      Enable proxy:          no
    
      Enable agent:          yes
      Linker flags:             -L/usr/lib -lOpenIPMI -lOpenIPMIposix
      Libraries:             -lm -lresolv 
    
      LDAP support:          no
      IPv6 support:          no
    ・・・
    $ sudo make install
    
  5. ポート名の登録
    管理対象のマシンの/etc/servicesにエントリを追加

    zabbix_agent    10050/tcp
    zabbix_trap     10051/tcp
    
  6. サーバの設定
    サンプルをコピーして編集します
    1.8では項目の説明が分かりやすくなってます

    $ sudo mkdir /etc/zabbix
    $ sudo cp misc/conf/zabbix_server.conf /etc/zabbix/
    $ sudo vim /etc/zabbix/zabbix_server.conf
    

    変更箇所のみ

    LogFile=/var/log/zabbix/zabbix_server.log
    PidFile=/var/run/zabbix/zabbix_server.pid
    DBUser=zabbix
    DBPassword=パスワード
    FpingLocation=/usr/bin/fping
    
  7. エージェントの設定
    サンプルをコピーして編集します

    $ sudo cp misc/conf/zabbix_agentd.conf /etc/zabbix/
    $ sudo vim /etc/zabbix/zabbix_agentd.conf
    

    変更箇所のみ

    PidFile=/var/run/zabbix/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    Hostname=ホスト名(アクティブチェックを利用する際はサーバの設定と要統一)
    
  8. PIDファイルとログファイル用のディレクトリを作成
    $ sudo mkdir /var/run/zabbix
    $ sudo mkdir /var/log/zabbix
    $ sudo chown zabbix:zabbix /var/run/zabbix
    $ sudo chown zabbix:zabbix /var/log/zabbix
    
  9. 起動スクリプトを作成
    まず,サーバ

    $ sudo cp misc/init.d/debian/zabbix-server /etc/init.d/
    $ sudo vim /etc/init.d/zabbix-server
    

    変更箇所のみ

    DAEMON=/usr/local/sbin/${NAME}
    PID=/var/run/zabbix/$NAME.pid
    

    続いて,エージェント

    $ sudo cp misc/init.d/debian/zabbix-agent /etc/init.d/
    $ sudo vim /etc/init.d/zabbix-agent
    

    変更箇所のみ

    DAEMON=/usr/local/sbin/${NAME}
    PID=/var/run/zabbix/$NAME.pid
    

    起動時に自動で起動するように設定します

    $ sudo update-rc.d zabbix-server defaults
    update-rc.d: using dependency based boot sequencing
    insserv: warning: script 'zabbix-server' missing LSB tags and overrides
    insserv: warning: script 'zabbix-agent' missing LSB tags and overrides
    
    $ sudo update-rc.d zabbix-agent defaults
    update-rc.d: using dependency based boot sequencing
    insserv: warning: script 'K01zabbix-server' missing LSB tags and overrides
    insserv: warning: script 'zabbix-agent' missing LSB tags and overrides
    insserv: warning: script 'zabbix-server' missing LSB tags and overrides
    

    LSB(Linux Standard Base)タグがないと警告がでます
    起動順序に依存関係がある場合うまくいかないこともあるので,適当にLSBタグを書いておきましょう

    一度リンクを消します

    $ sudo update-rc.d -f zabbix-server remove
    $ sudo update-rc.d -f zabbix-agent remove
    

    起動・終了スクリプトにタグを追加します
    serverがagentより先に起動し,後で終了するように指定します

    $ sudo vim /etc/init.d/zabbix-server
    ### BEGIN INIT INFO
    # Provides: zabbix-server
    # Required-Start: $network mysql
    # Required-Stop:
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Zabbix Server start/stop script
    # Description: Start and stop Zabbix Server daemon
    ### END INIT INFO
    
    $ sudo vim /etc/init.d/zabbix-agent
    ### BEGIN INIT INFO
    # Provides: zabbix-agent
    # Required-Start: $network mysql zabbix-server
    # Required-Stop: zabbix-server
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Zabbix Agent start/stop script
    # Description: Start and stop Zabbix Agent daemon
    ### END INIT INFO
    

    もう一度update-rc.dを実行

    $ sudo update-rc.d zabbix-server defaults
    $ sudo update-rc.d zabbix-agent defaults
    
  10. Webフロントエンドのコピー
    $ sudo mkdir /var/www/zabbix
    $ sudo cp -a frontends/php/* /var/www/zabbix/
    $ sudo chown -R root:root /var/www/zabbix
    
  11. デーモンの起動
    $ sudo /etc/init.d/zabbix-agent start
    $ sudo /etc/init.d/zabbix-server start
    
  12. フロントエンドの設定
    ブラウザでフロントエンドにアクセスすると,タイムゾーンが設定されていないといわれたので設定

    $ sudo vim /etc/php5/apache2/php.ini
    date.timezone = Asia/Tokyo
    $ sudo /etc/init.d/apache2 restart
    

    zabbix18-1

    いろいろチェック項目にエラーがあるので設定を変更します

    $ sudo vim /etc/php5/apache2/php.ini
    post_max_size = 16M
    max_execution_time = 300
    mbstring.func_overload = 2
    $ sudo aptitude install php5-mysql php5-gd
    $ sudo /etc/init.d/apache2 restart
    

    zabbix18-2

    続いて,DBの設定です
    zabbix18-3 zabbix18-4

    あとは,今設定した内容の設定ファイルをDLして設置するだけ
    zabbix18-5

    ログイン画面です
    デフォルトのIDはadmin, パスワードはzabbixです
    すぐログインして変更しましょう
    zabbix18-6

    ちらっと使ってみた感じですが,細かいところがいろいろ修正されていて使い勝手が向上しています
    Zabbixエージェントに加えてSNMPやIPMIを利用しているので,各ホストが何で監視されているのか把握しやすくなったのがうれしいです

    ためしに表示言語を日本語にするとグラフが化けますね〜
    化けるのはグラフだけなので,設定の問題ではなさそうな気がします
    どうせ英語で使うので大した問題ではないです
    zabbix18-7 zabbix18-8

Written by p0n in: ネットワーク | タグ: ,
12月
05
2009
0

CactiでRTX1200をモニタリング

RTX1200はSNMP対応なのでCactiで状態を監視してみます

トラフィックはMIB-2標準で特に書くことがないので,プライベートMIBで取得できるCPUやメモリ使用率,筐体内温度を取得してみます

プライベートMIBを取得するには,OIDを調べる必要があります
RTXシリーズやSRTシリーズの場合はYAMAHA private MIBに記述があります

自分が使ってる機器のMIBが分からない場合も,snmpwalkやsnmpgetコマンドで探したり,WindowsならGetifという便利なツールを使って調べたりすることができますよ

ハードウェアのMIB一覧を見ると,CPU使用率はyrhCpuUtil5sec,yrhCpuUtil1min,yrhCpuUtil5minとそれぞれ5秒,1分,5分間隔の情報が採れるみたいです
メモリ使用率はyrhMemoryUtil,筐体内温度はyrhInboxTemperatureですね
これらのOIDは以下の通りです

  • yrhCpuUtil5sec = .1.3.6.1.4.1.1182.2.1.5.0
  • yrhCpuUtil1min = .1.3.6.1.4.1.1182.2.1.6.0
  • yrhCpuUtil5min = .1.3.6.1.4.1.1182.2.1.7.0
  • yrhMemoryUtil = .1.3.6.1.4.1.1182.2.1.4.0
  • yrhInboxTemperature = .1.3.6.1.4.1.1182.2.1.15.0

手順としてはデータテンプレートを作成し,グラフテンプレートを作成,その後デバイスを選択してグラフを生成するという流れになります

  1. データテンプレートの作成
  2. Consoleを開いて左のメニューの中からData Templatesを選択し,右上のAddを選択してData Templateを作成します
    まずは,yrhCpuUtil5secから作成していきます

    次のように入力して右下のcreateボタンを押すと,SNMPの詳細を入力するCustom Data欄が現れます

    Data Template
     Name YAMAHA Router – 5 Minute CPU Utilization
    Data Source
     Name |host_description| – 5 Minute CPU Utilization
     Data Input Method Get SNMP Data
    Data Source Item []
     Internal Data Source Name 5min_cpu

    SNMPの詳細では,それぞれのOIDとSNMP Versionを1に設定し,saveボタンを押して保存します

    テンプレートの名前なんですが,デフォルトのテンプレートをみると複数形でもsを付けないのが流儀なんでしょうかね?
    あと,たまにData SourceのNameの”-”がエンコードされるのでその時は戻しておきます

    これを繰り返して,各MIBのデータテンプレートを作成します
    rtx_cacti01 rtx_cacti02

  3. グラフテンプレートの作成
  4. Consoleを開いて左のメニューの中からGraph Templatesを選択し,右上のAddを選択してGraph Templateを作成します
    CPU使用率,メモリ使用率,筐体内温度の3種類のテンプレートを作成します
    まずは,CPU使用率から作成していきます

    次のように入力して右下のcreateボタンを押すと,Graph Template ItemsとGraph Item Inputs欄が現れます

    Template
     Name YAMAHA Router – CPU Utilization
    Graph Template
     Title |host_description| – CPU Utilization
     Rigid Boundaries Mode オン
     Vertical Label percent

    rtx_cacti03 rtx_cacti04

    Graph Template ItemsのAddを選択して,データソースを追加していきます
    CPU使用率のグラフには,yrhCpuUtil5sec,yrhCpuUtil1min,yrhCpuUtil5minの3つのデータを表示させます
    それぞれのデータテンプレート毎に次のように設定します(値は順に5sec, 1min, 5minの順です)

    Data Sorce
     さっき作成したデータテンプレート名
    Color
     EACC00, EA8F00, FF0000(デフォルトのロードアベレージを参考にしました)
    Graph Item Type
     AREA, STACK, STACK
    Text Format
     5 Second Average, 1 Minute Average, 5 Minute Average

    凡例に,現在値,平均値,最大値も表示させましょう
    各データテンプレート毎に現在値,平均値,最大値なので計9個のデータソースを追加します
    データソースの設定は次の通り

    Data Sorce
     さっき作成したデータテンプレート名
    Color
     None
    Graph Item Type
     GPRINT
    Consolidation Function
     LAST, AVERAGE, MAX
    Text Format
     Current:, Average:, Max:
    Insert Hard Return
     最大値の時だけオン

    CPU使用率の場合だけですが,次のような設定でTotalも追加しておきましょう

    Data Sorce
     None
    Color
     000000
    Graph Item Type
     LINE1
    CDEF Function
     Total All Data Sources
    Text Format
     Total

    全データソースの追加が終わったら図のように並べ替えて,saveボタンを押して保存しましょう

    rtx_cacti05 rtx_cacti06 rtx_cacti07

  5. グラフを生成
  6. いよいよグラフの生成です

    Consoleを開いて左のメニューの中からDevicesを選択し,RTX1200を選んでAssociated Graph Templatesに作成したグラフテンプレートを追加します
    rtx_cacti08

    続いて,Consoleを開いて左のメニューの中からNew Graphsを選択します
    HostにRTX1200を選んで,追加したグラフテンプレートを選択しcreateボタンを押します
    rtx_cacti09

作成した全てのグラフテンプレートからグラフを作成しましょう

しばらく待つと,グラフが表示されます
運用前のルータなのであまり変化がなくて分かりにくいですね
rtx_cacti10

最後に設定が面倒な人のために,作成したテンプレートをまとめたYAMAHAルータ用のホストテンプレートを置いておきます

Written by p0n in: ネットワーク | タグ:
12月
04
2009
0

ルータのsyslogをログサーバに転送する

ルータなどのネットワーク機器は大量のログを保管できないが,その代わり大抵のルータはsyslogサーバにログを転送することができる

今回ログサーバに採用したのはDebian lenny
インストール直後はほとんど何も入ってなくて軽いのが決め手

他にもUnix系のOSなら大抵syslogサーバを使っている
Windowsにはsyslogサーバは入ってないけど,ちょっとしたテストなんかにはGST Syslog Serverが便利

lennyはsyslogではなくrsyslogを採用している

直接 /etc/rsyslog.conf を編集してもいいけど,お作法に従って /etc/rsyslog.d 以下にファイルを置いて読み込ませる

ファシリティはlocal0とします

設定ファイルの名前は *.conf であれば何でもOK
今回はYAMAHA RTX1200のログなので /etc/rsyslog.d/rtx1200.conf にしました
ログファイルの名前もお好きに

$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/rtx1200.log

ファイアウォールがある場合は UDP 514番ポートを開けておきましょう

rsyslogを再起動します

$ sudo /etc/init.d/rsyslog restart

ついでにローテーションの設定もしておきます
/etc/logrotate.d/rsyslog に 先ほど指定したログファイルを追加するだけでOK
logrotateはデーモンではないので,cronからlogrotateが実行される際に変更したファイルも読み込まれます

大量にログが転送されてくるとか,シビアなコンディションの場合はlogrotateを使わずにrsyslogのログローテーション機能を使った方が確実でしょう

あとは,ルータの設定です

ログレベルはnoticeとします
YAMAHAならこんな感じ

# syslog host 鯖のアドレス
# syslog facility 16
# syslog notice on

Ciscoならこんな感じかな

# logging 鯖のアドレス
# logging facility local0
# logging trap 5

当たり前ですが,ntpとかでルータと鯖の時間併せておきましょう

Written by p0n in: ネットワーク | タグ: , ,
12月
02
2009
1

WindowsでVLANのトランクをキャプチャする時は注意

先日802.1QのタグVLANのトランクポートをIntelのNICを積んだWindowsPC(Let’s Note) でキャプチャしようとした時のこと
トランクポートなのに一切タグがついてない・・・

Windowsユーザには当たり前なのか?
なんとIntel(他にも数社)のドライバはタグを勝手に引っぺがす,まさか仕様だそうです
普段MacとLinuxしか使わない自分には理解不能

対策はIntelのページにあって,なにやらレジストリを修正しないとダメらしい
しかもご丁寧に警告付き・・・

Warning: This modification should be made very carefully and only by skilled technicians since changes to the registry may disable your machine. This change should only be made for promiscuous mode/sniffing use.

レジストリ弄るのが危険だって言うなら,こんなおせっかい機能デフォルトでオフにするか,ドライバの設定メニューから変更できるようにしてください

具体的な変更手順は,

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\00xx(xxは設定したいNICのアダプタ番号)

の直下に,

MonitorModeEnabled=1 (PCI or PCI-Xの場合)
MonitorMode=1 (PCI-Expressの場合)

というdword値を作成してやればOK

各値の意味は以下の通り

PCI or PCI-X Network Adapter the registry dword is: MonitorModeEnabled
Set the dword value to either:
0 – disabled (Do not store bad packets, Do not store CRCs, Strip 802.1Q vlan tags)
1 – enabled (Store bad packets. Store CRCs. Do not strip 802.1Q vlan tags)

PCI-Express Network Adapter the registry dword is: MonitorMode
Set the dword value to either:
0 – disabled (Do not store bad packets, Do not store CRCs, Strip 802.1Q vlan tags)
1 – enabled (Store bad packets. Store CRCs. Do not strip 802.1Q vlan btag)
2 – enabled strip vlan (Store bad packets. Store CRCs. Strip 802.1Q vlan tag as normal)

どうやらPROシリーズの高機能NICもWindows用ドライバはこの意味分からん仕様らしい・・・

Written by p0n in: ネットワーク | タグ:
12月
01
2009
0

Dynamips (Cisco 7200 Simulator) on Snow Leopard

言わずと知れたCiscoルータのエミュレータです

Dynamipsを使う場合,フロントエンドのDynagenを使うと思います
Leopard用のパッケージをDLしてくると中にDynamipsの0.2.8-RC1が入っていて,Snow Leopardでも問題なく動きます
最新版にこだわらなければビルドする必要はありません
コピーするだけで動きます

自分は最新版じゃないとイヤなのでビルドしました

Mac Portsに”dynamips-devel”として最新版の0.2.8-RC2がありますが,10.6ではうまくビルドできません
すでにチケットが発行されているので,そのうちパッチがでるでしょう

ただ,公式サイトからソースを持ってきて,Makefileをちょっと修正してやるとSnow Leopardでもビルドできました

具体的な変更箇所は以下の通り

  • DYNAMIPS_ARCHをnojitに変更
  • Darwin用のCFLAGSとLIBSを/opt/localに変更(MacPortsでlibpcapとかを入れている場合)

ビルドが終わったら,Dynagenに入ってたdynamipsと置き換えるだけでOK
一緒に出来たnvram_exportもよく分からないのでコピーしておきました

Written by p0n in: ネットワーク | タグ: ,

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co