ZabbixでCPUやメモリなどのリソーストリガーが発生した時にpsやtopの状態を記録するスクリプト

Zabbixで監視をしている時、リソーストリガーで障害メールを出すようにしていることが多いけれど、
実際午前3時に何のプロセスが動いているのかという事は、
ログを確認したり、実際に起きていないとわからないことのほうが多かった。

そこで、自動的にpsやtopの出力をファイルに書き出すようなスクリプトを作って、
リソーストリガーでメールと、このスクリプトを起動するようなアクションを組んでみた。という備忘録。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
 
TIME=`date +%Y%m%d-%H%M%S`
TXT_DIR='/tmp/zabbix_check_pstop'
UNAME_=`which uname`
OS_=`${UNAME_} -a`
 
# txt directory create
if [ ! -d ${TXT_DIR} ];then
  mkdir ${TXT_DIR}
fi
 
# ps output
/bin/ps auxww >> ${TXT_DIR}/ps_${TIME}.txt
 
# top output and erase
case ${OS_} in
  *FreeBSD*)
    #echo 'FreeBSD'
    /usr/bin/top -b -d 1 60 >> ${TXT_DIR}/top_${TIME}.txt
    # erase old files
    /usr/bin/find ${TXT_DIR} -mtime +30 -type f -exec rm -f {} \;
    ;;
  *)
    #echo 'default'
    /usr/bin/top -b -n 1 >> ${TXT_DIR}/top_${TIME}.txt
    # erase old files
    /usr/sbin/tmpwatch 720 ${TXT_DIR}
    ;;
esac



僕の関わっているシステムはRedhat系LinuxとFreeBSD混在環境が多いため、こんな感じで1つのスクリプトにまとめている。

Apacheベーシック認証Satisfyとプロクシー

今まで、ベーシック認証の制御というとSatisfy Any を利用して、特定のIPアドレスからはベーシック認証なし、それ以外はベーシック認証という形で運用することが多かった。
特に、開発サイトや公開前のチェックや構築中で自分とお客さんのIPだけを許可していたり。

        Order allow,deny
        Satisfy Any
        #Allow from all
        # system
        Allow from 127.0.0.1 10.0.0.1 10.0.0.2
        # client
        Allow from 61.111.111.111
        # develop
        Allow from 61.100.100.100 61.100.100.101
 
        authtype basic
        .......



こんな形だったのだが、途中にロードバランサーがシングルネットワークで入ったり、融通の利かないプロクシーサーバが入ったりして接続元のIPアドレスが失われ、1つのネットワーク機器やローカルのIPアドレスでしか接続されないという事象になったので、この設定を変更することに。
Read the rest of this entry »

Zabbixでsnmptrapdを使い、VMwareのホストから受信(zabbixスクリプト編 その2)

Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その1)これと
Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その2)これと
Zabbixでsnmptrapdを使い、VMwareのホストから受信(zabbixスクリプト編 その1)これの続き。

前回はVMwareのホストから出てくるsnmptrapdの出力が日本語HEXだったという発見ができたというところまで。

■日本語HEXの逆変換


では、日本語HEX逆変換をするには?という事で探したら、xxd というものが見つかった。
Linuxの16進ダンプツール(od,xxd)

さらに調べると、このxxdは単体のパッケージが見つからなかったので、vim を入れるとついてくるらしいという
情報を信じて、下記のようにインストール。(OSはCentOS5.4)

# yum install vim-common.x86_64



Read the rest of this entry »

Zabbixでsnmptrapdを使い、VMwareのホストから受信(zabbixスクリプト編 その1)

Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その1)これと
Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その2)これの続き。

[root@mngsv ~]# cat /tmp/zabbix_snmptrap.log
/usr/local/bin/zabbix_snmptrap.sh: line 41: read: `disman-event-mib': not a valid identifier
/usr/local/bin/zabbix_snmptrap.sh: line 51: unexpected EOF while looking for matching ``'
/usr/local/bin/zabbix_snmptrap.sh: line 57: syntax error: unexpected end of file
エラー


前回はこんなエラーが出ていたというところで終わっていた。既存スクリプトが間違っているかと思ったところ。

■zabbix_snmptrap.shの解析

ログをチェックするとエラーが出ていた。

zabbixに登録された値を見ると

SNMPv2-SMI::enterprises.6876.4.3.301 = STRING: "host"
SNMPv2-SMI::enterprises.6876.4.3.302 = STRING: "192.168.11.111"



この2つだけ取得できているといえる・・・
つまり、read文で標準入力から取得したうちの一部ということ。
Read the rest of this entry »

Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その2)

これの続きです。Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その1)

■ホストを無効状態にしてのテスト出力


zabbix_sender [28695]: DEBUG: answer [{
        "response":"success",
        "info":"Processed 0 Failed 1 Total 1 Seconds spent 0.000037"}]
Info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000037"
sent: 1; skipped: 0; total: 1


■成功例


zabbix_sender [28770]: DEBUG: answer [{
        "response":"success",
        "info":"Processed 1 Failed 0 Total 1 Seconds spent 0.000162"}]
Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.000162"
sent: 1; skipped: 0; total: 1



Read the rest of this entry »

Zabbixでsnmptrapdを使い、VMwareのホストから受信(snmptrapd編 その1)

VMwareでの仮想サーバでサイトを運営しているプロジェクトに入っているけど、最近メモリが圧迫されてきたとかで
パフォーマンス低下によるエラーが上がることから、VMwareが何をしているのか。スワップやバルーニング(メモリの貸し出しとかでHDDに読書)が発生していないかをzabbixで監視できないかという要望だった。

snmptrapdの部分も相当面倒くさいと思ったけれど、日本語HEXで文書が出てくるところとかも肝だった。
下記、備忘録。ネットにはそれほど出回っていないのと、同じ環境ではそれほど物理サーバ増えないし、
増えたところで、この文書を使用する機会なんて数度あるぐらいだから、風化しちゃうよりも他で使ってもらえたら嬉しいとか思ったり。

ZABBIX SNMPTrap設定

こちらを参考にさせていただきました。

Read the rest of this entry »

Trac0.12にblockdiagをインストール(Centos5系)

#odstudyに参加してからずっと気になっていたblockdiagをインストールしました。
やっぱり、ドキュメントを蓄積するシステムと組み合わせたほうが真価が発揮されると思ったので、Tracです。
mediawikiもあるんですが、今は比較的スタティックな構築情報をwikiにして、作業途中のメモなどはTracという位置づけです。
Rapidな図はやはり、Rapidな情報記録を主目的に設置したシステムへと思いまして。

Tracとの連携

参考にしたのはこのサイト。

Tracのwikiに図面を入れる(BlockDiag編)

インストールが簡単に紹介されていて、サンプルもあるのでさくっと試せます。
Tracのpluginは下記のようにして入れました。

■ダウンロード、解凍

# cd /usr/local/src
# wget -O tracblockdiagplugin.zip '<a href="http://trac-hacks.org/changeset/latest/tracblockdiagplugin?old_path=/&amp;filename=tracblockdiagplugin&amp;format=zip"> http://trac-hacks.org/changeset/latest/tracblockdiagplugin?old_path=/&amp;filename=tracblockdiagplugin&amp;format=zip</a>'
# unzip tracblockdiagplugin.zip


■移動

# cd /usr/local/src/tracblockdiagplugin/tracblockdiagplugin/0.12
# python ./setup.py install


0.11と0.12とcurrentとかでディレクトリが分かれているので、現在使用しているTracのバージョンである0.12のディレクトリに移動して、インストール。

■Apache再起動

# /etc/init.d/httpd restart


■管理画面で有効に。
Trac management plugin

追記(2011/12/28)

blockdiag作者の@tk0miyaさんがインストール方法書いてるじゃないすか。

(18日目) blockdiag を Trac wiki で使ってみようAdd Star

Trac は Debian パッケージになっていますが、最新版の 0.12 が強くおすすめとのことなので、
easy_install でインストールすることにします。
TracBlockDiagPlugin も URL を指定することで easy_install 経由でインストールできます。

$ sudo easy_install trac
$ sudo easy_install http://trac-hacks.org/svn/tracblockdiagplugin/0.12

Pluginはこっちのほうがインストールがスマートですね!勉強になるなぁ

日本語の問題

でも、日本語のLabelを張れないかな?と試したら、途端に画像が生成されなくなったので、他のサイトを探しました。

Read the rest of this entry »

odstudyの感想2

https://sites.google.com/site/odstudy/home/note/201111huidi2huinozhenrifanri

2011.11回(第2回)の振り返り

というまとめがアップされてたので内容はそちらのほうが詳しいのですがー
blockdiag、LT3本の感想をまとめとこうかなと思います。
※すでに5日経過して、思い出の中で書いているので文書鮮度は低いです。これの続き ()は僕独自のつぶやきです。

 

■blockdiag の最新状況

class,plugin,attributesという点が基本機能に追加されたとのこと。attributes(属性)は
sphinxとの連携で表にすることができるらしいので、後で使ってみたいと思う。 
特に、rackdiag でラック図がテキストにて書けるようになったなら、電力消費はattributesで
計算をさせたらいいんじゃないかって思うし。
あと、シェイプの追加やアイコンを乗っけられるのってExcelより便利じゃないかと思うんだが
とにかく使用例や導入例なんかを増やして、利用者が増えるようになるといいんじゃないかと
思ったり。まずはインストール頑張ろうかな。
もちろん、解決していない問題点もあるらしく、図が大きくなりすぎることらしい。
確かに、一つにまとめたらいくらでも広大なネットワーク図ができるかもしれない。
処理能力の限り。
グループでネストできればという話も出てたけど、 拡大、縮小はExcelの特殊能力になるのかな。
(妄想:
うーん。どんな形がいいんだろう。スワイプしたら改行マークまでずれて表示する形とかかなー。
http://blog.rettuce.com/animation/animation-jpg/ 
というページを見つけたので、 表示範囲を適切にしたjavascriptなのかなぁ。
ブラウザ限定ってのもどうかと思うし。画像だけで拡大、縮小はないだろうしね。。。
ラベルを付けて階層化して、表示を第一階層まで(大まかに)第二階層(詳細)とか
出力時に選ぶとか?)
(とにかく、入れよう!使おうという事で、パートナーのK君にTracプラグイン入れておいて
と頼んで2営業日経過。自分でもやろう。うん。)

■画面写真つき手順書について@penguin-jrさん

Excelに画面写真を貼り付けてエビデンス。(いつからあったのかという問いには、2001の新入社員時代から
僕は先輩に作り方を教わったりしてましたので、かなり昔からと思いました。)
利点は多いけれど、 使い方を間違っているとイマイチらしいです。画像のため、サイズが大きくなりがちだし、
バージョン管理しにくいファイル名 「詳細機能_yyyymmdd.xls」みたいなものはどれが最新だか難しいとか。

羽生 結弦くんのロシア杯はみました。ジョニーウィアー系だと思っていたのですが
衣装が似ているなと思いつつ…彼は飛翔感が素晴らしいなと感じましたね。
特にジャンプ以外の部分で翔んでいる時の滞空時間とかふわりとした自然さとかは。
(※スライドで一番大事なことだった関係です)

■logstudy@qryuuさん

何をLogに出すのか。どうやってLogに出すのかを考えるという勉強会。
後で読み取る人のことを考えて作るべき。ログが途中でフラッシュされてしまうような作りだと、Zabbixで監視できないとか。
(Logについて。これすごく大事。JavaのCatalina.out  を目grepしてると疲れちゃうから。
ApacheやPHPのログも役に立つけど、予期せぬエラーはあとの調査をやりやすくするために
考える必要があるだろうし。)

■家族マイレージの話@やまぐちぱぱさん(うろおぼえ)

勉強会、懇親会と参加していると、休日がつぶれたりするんで家族に借りを作ってしまう(=マイレージ?逆かな?)
で、子供連れて参加できると奥さんを解放できたりで嬉しい。子供もいろんな人に会えて嬉しい。
(きっと、フューチャーアーキテクトの会社に入れる だけでも楽しいと思います。僕も連れて行きたくなりました。)

疲れたので、今日はここまで。

 

 

 

 

 

 

 

 

odstudy第二回に参加してきて、次の日にOPENスクエアのフリーセミナー

2011/11/23参加

https://sites.google.com/site/odstudy/

2011/11/24参加

OPENスクエアのフリーセミナー

と。なぜか連続した日に勉強会、セミナー(講習会だから同じか)に参加してきたので記録。

同じ部分もあったり真逆の部分もあったのでこの際だから比較してみようかなと思ったり。

比較項目 odstudy opensquare
テーマ 運用とドキュメント オープンソースDBMS
参加人数(スタッフ含む) 50人ほど 20人ほど
会場

託児所付休憩ルーム?和室広々、

ソファ広々、とにかく広い

会議室2部屋ぶち抜き
スーツ率 なし(休日だったからかも) 100%
年齢層 僕は上から数えたほうが早い。 僕は下から数えたほうが早い。
使用スライド 画像多い。ネタ豊富。 画像1割。文字数は多いがまとまってる。販売促進材料がベースだから?
スライド内会社名 伏せる。可能な限り。おいしいネタならなおさら。 可能な限りロゴも出力。
発表を聞く態度 ネタに合わせて拍手か笑う。そして隙あればツイートする。メモを取ったりエディタでまとめたり。 メモを取る。静かに聞く。何かをYahooで検索をしている。「ご清聴ありがとうございました」と締めくくられる。
エクセル

エクセルのここが嫌だをネタにする。

置き換えられる方法やうまく付き合う方法を模索する姿勢。

デフォルト。PDFに並ぶ出力方法。鉄板。
使用PC Mac40%(他の勉強会に比べて少ないほうかも) ノートはWindows。タブレットはipad
懇親会

19:30~23:00

有料制。イタリアン食べ放題。お店へのストレステスト実施。

19:00~20:00

ビアバッシュ。ピザじゃなくて乾き物。

二次会あり。

お金のにおい 無いところから始まるのが前提。予算つかないのが当たり前。 使えるお金はあるんだけれど、可能な限りお得に使いたいが基本姿勢。
名刺 個人名刺もあり。しなくてもいいんじゃないという雰囲気も。 全員と交換する必要あり。
ソース読んでる? 読んでる人もいる。(趣味で) 読んでる人もいる。(仕事で)

 

こうしてみると、こんなに差があるコミュニティに両方参加するのが不思議かも。

そして、どちらか片方の陣営に取り込まれた時、もう片方から集中砲火をくらうかもしれない。

というか、コウモリのようにすべてを敵に回すなこりゃ。。。。360度戦闘は慣れてるからいいけどね(涙

■odstudyのグループセッション(チームものぐさの視点)

で。話は急ですがodstudyのグループセッションについてまとめようと思いまして。

広々とした会場を7~8人で1グループ作って、1時間ブレスト、30分まとめ、5分発表x6グループ

っていうのをやりました。初めてのグループセッションだったので緊張しましたけど、

ガイドラインを主催側が用意してくれていたので何とか発表までこぎつけられたというか。

題目は「属人化」でして、それぞれのチームで独自に解釈して発表していました。

たぶん、後でスライドはいろんなところに乗ると思いますが、早く見たい!って人は

http://togetter.com/li/218088  ←

odstudy 第2回 本編まとめ #odstudy

これを見るのがよろしいかと。

僕らのチームは「チームものぐさ」発表は1番でしたが、資料作成は一番遅く、ロスタイムを使っていたような。

チーム名決めと役割分担まではスムーズでしたけれど、話の広がり方とテーマの間を埋めるのが

大変だったというか、時間かかりましたねーって反省です。@usaturnさんがモデレーター、@sheeploghさんが

書記で頑張ってくれたおかげでまとまっていました。

議論を煮詰める段では、@asama_mさん、@ken_merryさんが大まかなシナリオを出してくれていたのが印象的。

間に合わなさそうな状況を見るに見かねての事だったんじゃないかな。@ixixiさんの意見は別分類とされる

事が多かったけれど、1つのゴールの形として運用、インフラ以外の視点として貴重だったんじゃないかって

思いました。


■遅れた理由

個人的な反省として、「しゃべらない人が多かったから大変だっただろう」って終わった直後は思っていましたが

それは僕の見当違いだったんだなと痛感しています。後半はみんな2,3人で固まって意見出していました。

全てを記録するわけにはいかなかったぐらい出てました。


じゃあなぜ、資料作成遅かったんだろうって考えたんですが、目的をテーブルの真ん中に書かずして

話し始めたことと、この勉強会に来た動機も含めて、そこから普遍的なものを抽出して

まとめようと思ったことでしょうか。(これはこれで面白かったんで後で追記しようかと。)

■真ん中にいても吹き溜まり?いや、小惑星帯かも

後の理由は、個人的な妄想に近くなるんですが…

僕らの座っていた関は会場の真ん中でした。チーム分けした後も、ちょうど真ん中でした。

メンバーは奇妙な共通点があったんじゃないかって思うのです。

コウモリの話じゃないですが、中間に位置する人々のパターンなのかと。どちらの特徴もあるため

どちらにも属していない状態が多い人々が真ん中に集まっていたのかなって思ったんです。

中庸をとるのがうまい人々で、聞き手に回ることが多い人がいたのかなって今にして思えばですが。

そして、一人でいることが苦にならない人々だったかなって思いました。

それぞれが背負ってきた動機は個性的で、全員共通って最後まで出てないんじゃない…?

ってぐらい、広範囲だったような。

そして、最初に座っていた形式はそれぞれ個人用テーブルだったこととかが象徴的だなと。

■属人化から脱している人々、戻りたくない人々

でもなんか違うなぁと思ったのは、みんな、属人化を避けるための仕組みやツールを使っていた人ばかりで

仕組みやツールに問題があるから、属人化状態まで戻ってしまうことを恐れるという背景を背負って

話している感じでした。チームの中で浮いているというか、引っ張っていく立場の人とか。

「属人化は避けられているので、まとめない!!維持するのはいろいろあって大変」

っていう結論でも「運用フェイズ」っぽくて面白かったかなと思ったりです。

さて、深夜になったんで文書も変だし、1つの記事にするにはまとまりないし。

各発表についてもまとめたいので一度クローズします。

JenkinsでPHPUnitのテストファイルを複数指定する。

この続きです。
だいぶ間が空いてしまいました。

phpunit --log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml \
./test/test_lib_*.php



僕のコマンドラインでのテストファイル指定は致命的なものがあるんだけれど、別の投稿にします。

って書いたまま放置して申し訳ないです。

どうもワイルドカードで指定したつもりだったんですが、結果を見ると最初のテストファイルの結果しか出てきません。
Read the rest of this entry »