More Related Content More from Masahito Zembutsu (20) MuninとZABBIXで効率的トラブルシューティング2. 1. Munin とは何か?
2. Munin を使い始めた理由
3. もう一つの鍵、ZABBIX
4. かさなり合う瞬間
5. 障害防止への道のりは遠い
My Very Best Friend, Munin
I'm Not Afraid of Anything Anymore
Another Key, ZABBIX
Munin and ZABBIX are Real
More Vivid Than Today
お題は「監視ツールバトル」で
すが「みんな仲良く」な私の仕
事模様を紹介する機会を頂きま
した。前半はこれまでの復習、
後半が今の取り組みです。
p.18
p.39
p.50
p.60
p.70
17. This Photo is under creative commons license by torkildr
http://www.flickr.com/photos/torkildr/3462606643/sizes/l/in/photostream/
※こんな職場の
イメージです
元々は、サービス企画・開発的な事をし
ていました。が、気がついたら二次対応
どころか、お客さまとの直接対応&デー
タセンタで一次対応も行っています。
…どうしてこうなった /(^o^) \
20. Munin セットアップ
• EPEL ( RHEL/CentOS )
# yum -y install munin munin-node
# service munin-node start
# chkconfig munin-node on
# htpasswd -bc /etc/munin/munin-htpasswd muninadmin ******
# service httpd restart
10分待つ
ブラウザで http://<HOST>/munin/ にアクセス
(゚д゚)ウマー
動かすためのコマンドは、たったこれだけ。
インスタント・ラーメンを作っている間に、
セットアップが完了するほどの手軽さです。
RDBMS の設定が不要なのも楽な所。
21. グラフ値の意味
• 数値は 4 種類 ( rrdtool の RRD と同じ)
– COUNTER 変化率 = ( 現在値 – 前回値 ) ÷ 300
– DERIVE マイナス値もある変化率
– ABSOLUTE 変化率だが、直前値 0 で固定
– GAUGE そのままの値
Munin がグラフで描画しているのは、
殆どが “DERIVE”(変化率)または
“GAUGE”(実測値)です。
22. カテゴリ プラグイン名 役割 フィールド名 値の型 参照しているデータ
apache
apache_accesses Apache へのアクセス数 port 80 DERIVE /server-status?auto の 「Total Accesses: n」
apache_processes Apache のプロセス状況
busy server 80 GAUGE 「BusyServer: n」
idle server 80 GAUGE 「IdleServers: n」
free slots 80 GAUGE 「Scoreboard: xxx」の「.」の件数
apache_volume Apache 通信量 port 80 DERIVE 「Total kBytes: n」
disk
diskstats_iops
秒間I/O IO/sec GAUGE /proc/diskstats のデータを整形
平均リクエストサイズ Req Size (KB) GAUGE /proc/diskstats のデータを整形
df ディスク使用率 / , /home等 GAUGE df の結果を整形
network if_ トラフィック bps DERIVE /sys/class/net/<ethX>/statistics/rx_bytes or tx_bytes
processes vmstat vmstat の結果
running GAUGE 「vmstat 1 2」の結果の、1つめのフィールド
I/O sleep GAUGE 2つめのフィールド
system
cpu CPU使用率
system DERIVE /proc/stats のデータを整形
user DERIVE /proc/stats のデータを整形
nice … DERIVE /proc/stats のデータを整形
load 平均負荷 load GAUGE /proc/loadavg のデータを整形(5分間平均)
39. I’m Not Afraid of Anything Anymore
Muninを使い始めた理由
2
■ ■ ■ ■ ■
つか はじ わけ
44. 時系列リソース監視
• Munin http://munin-monitoring.org/ http://munin.jp/
• Zabbix http://www.zabbix.com/jp/
• Nagios http://www.nagios.org/
• Ganglia http://ganglia.sourceforge.net/
• Cacti http://www.cacti.net/
• MRTG http://oss.oetiker.ch/mrtg/
私、樹になります!
このほかにも、色々あります。
45. Muninが変えた、障害対応の流れ
• ツールにたよらない場合
– 各種ログの調査、コマンド実行(sysstat等)
– 人の手が掛かり、時間もかかる←致命的
• Munin があれば…
– サーバにログインしなくとも、状況把握
– 視覚的に比較できるので、異常値検出が用意
– 迅速な対応が可能
• 障害対応の Plan-Do-Check-Action (PDCA)
• グラフを見た瞬間「この障害対応のエンディングが見えたッ!」
トラブルシュートの
鍵は、適格な状況判
断。手順書に無い例
外時でも、まずは原
因の切り分けが求め
られます。
また、オープンソー
スなので、自分でプ
ラグインの拡張や、
挙動を理解するのも
容易でした。
47. Vertical axis is a server, cross axle is metrics. The grouping function is characteristic.
Munin は、様々なリ
ソースを一覧で見やす
いのも特長の1つだと
思います。
48. リソース監視の必要性
• スマートフォンの普及
– ますます生活に密着するインターネット
– 僅かな障害も、大きな機会損失になり得る時代
• 時系列「変化」を簡単に把握するために
– 過去の経緯を記録・参照
– グラフを通した人間の認識能力
• 「なんとなく重い」「もしかして障害?」を視覚化
– 客観的データの確保
• 属人性の排除
トラブルシュートを加速するた
め、リソースを参照する場面は
Munin が適任でした。
しかし、そこにスマートフォン普及による
新たな影が這い寄るのです。
53. 新たな課題 1/3
• 5分間隔では遅い
– Munin の監視間隔で
追いつかないケース
「見えていない所で、問題が起こっ
ているのでは…?」
Munin のデータ取得間隔は、標準の
5 分間で運用。そのため、データに
よっては、その5分間の間に何が起
こったか分からない事もありました。
54. $ sar -q -s 08:50:00 -e 10:00:00
Linux 2.6.18-194.17.1.el5 (sv.example.co.jp) 2013年07月11日
08時50分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
09時00分01秒 5 187 0.99 0.82 0.75
09時10分01秒 6 189 1.10 8.64 6.47
09時20分01秒 3 186 0.13 2.31 4.46
09時30分01秒 3 191 1.92 1.51 3.00
09時40分01秒 3 198 0.26 0.94 2.04
09時50分01秒 1 196 0.10 0.81 1.53
平均値: 4 191 0.75 2.50 3.04
例えば sysstat のデータは 10 分間隔。
1 分間の load average を見るとたい
したことは無さそうですが…
57. 新たな課題 2/3
• 機器のデータを SNMP で知りたい
– 責任分界点を超える箇所まで把握
– 目的は、迅速な状況把握のため
• 通報があった時には終息しているケースも多い
• お客さまに迅速な状況説明ができない
– 自分たちで直接監視を開始
• 上位装置の SNMP 情報を開示してもらう
• せめて、状況が直ちに分かるように
リアルタイムに情報が参照で
きれば、有る程度自分たちで
も状況が分かるように。
問い合わせを行い、回答を貰
うまでも時間のロスでした。
59. 新たな課題 3/3
• 一次対応開始
– インシデント管理
– アラート管理
従来は Nagios ベースの監視ツールと、
そのエスカレーション対応がメイン。
しかし、それでは求められている監視
間隔や対応ペースに追いつきません。
結論として、自分たちで一次対応を行
う事がベストと考え、そこに適した
ツールが、Zabbix でした。
イベントやトリガの一覧表示を
通して、今何が起こっているか、
機器・サーバを一括して参照で
きるように。
61. 更に新たな課題
• サービス安定性向上
• ハードウェア障害の予防ないし、事前傾向監視
– 割とベンダ任せだったが。。
• 調べたいこと
– 1. RAIDカードや ioDrive の SNMP 値
– 2. IPMI のログ
– 3. S.M.A.R.T のデータ
ここからは、これまで話した事が
ない、今まさに取り組んでいる課
題。機器のハードウェア故障への
対策です。
物理環境なので、いつかは壊れます。かといって、
壊れるのを座して待つ訳にもいきません。
突発故障は免れないとしても、徐々に故障が積み重なる問題は
検出できると考えています。
62. Munin sensor Plugins
Munin の sensor_ プラグインで、
IPMIのデータを可視化します。
内部温度
消費電力
ファン回転数
【メモ】MuninのOpenIPMIプラグインでFAN速度・HDD/センサ温度・
電力をグラフ化 | Pocketstudio.jp log3
http://pocketstudio.jp/log3/2013/07/01/munin-openipmi-plugins/
63. muninwalk で連携
• ノード側の手順
– 1. munin-node のサーバに zabbix-agent を入れる
– 2. zabbix_agentd.conf に UserParameter 追加
• UserParameter=munin-node[*],/usr/local/bin/muninwalk $1 $2 –z
Munin のデータを Zabbix が取り込み、
閾値監視や、トリガ超過時の通知を担う。
※ muninwalk … munin-node の CLI
https://github.com/zembutsu/muninwalk
Munn プラグインのデータは直接
Zabbix で参照できません。そのため、
仲介ツールを自作しました。Munin が
参照するものは、全て Zabbix からも読
み込めます。
65. munin × zabbix
• Munin のプラグイン smart_
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 239 238 021 Pre-fail Always - 1041
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 26
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 100 253 000 Old_age Always - 0
9 Power_On_Hours 0x0032 074 074 000 Old_age Always - 19275
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 25
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 19
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 6
194 Temperature_Celsius 0x0022 113 111 000 Old_age Always - 34
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 100 253 000 Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
連携の順番としては、まず Munin が
データを取り込みます。これは HDD の
S.M.A.R.T 値を参照(smartctl)します。
66. munin × zabbix
• Munin のプラグイン smart_
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0027 239 238 021 Pre-fail Always - 1041
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 26
5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0
7 Seek_Error_Rate 0x002e 100 253 000 Old_age Always - 0
9 Power_On_Hours 0x0032 074 074 000 Old_age Always - 19275
10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0
11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 25
192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 19
193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 6
194 Temperature_Celsius 0x0022 113 111 000 Old_age Always - 34
196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
198 Offline_Uncorrectable 0x0030 100 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x0008 100 253 000 Old_age Offline - 0
SMART Error Log Version: 1
No Errors Logged
Munin のグラフがこちらです。
頻繁に Seek_Error_Rate が変動
している事が分かります。
プラグインを書き換え、RAW 値
も参考値として取得します。
71. 今は Munin と Zabbix だけど…
• 必ずしも拘っている訳ではありません。
• たまたま、目の前に使えるツールがあり、
使わざるを得ない状況だったからなのです。
ツールありきで運用や監視を考えるのではなく、目
的に応じて、様々なツールを使い分ける事が大切な
のではないでしょうか。
また、私の場合は、オープンソースだから自由に扱
えた(何かあっても自分で対処できる)のも大きな
理由の一つでした。
72. This Photo is under creative commons license by superchango
http://www.flickr.com/photos/superchango/4376866953/
一色 健次郎 博士
Isshiki Kenjiro, Ph.D.
「他と関わりを持たぬ孤独のものは、自ずとその限界が定まってしまう。
じゃが、他者と惹かれ合い影響し合うとき、その限界が限界では無くなる。
また1から研究のやりなおしじゃ」
出典:「ビビッドレッド・オペレーション」第12話
とある博士も、このような名言を仰って
います!!
74. 1. Munin とは何か?
2. Munin を使い始めた理由
3. もう一つの鍵、ZABBIX
4. かさなり合う瞬間
5. 障害防止への道のりは遠い
My Very Best Friend, Munin
I'm Not Afraid of Anything Anymore
Another Key, ZABBIX
Munin and ZABBIX are Real
More Vivid Than Today
75. 今 ま で な か っ た ド キ ド キ を 。
http://munin.jp
77. Questions?
• もう少しkwsk訊きたい所はありますか?
/ ̄\
| |
\_/
|
/  ̄  ̄ \
/ \ / \
/ ⌒ ⌒ \ よくぞ訊いてくれた
| (__人__) | 褒美としてオプーナを買う権利をやる
\ ` ⌒´ / ☆
/ヽ、--ー、__,-‐´ \─/
/ > ヽ▼●▼<\ ||ー、
/ ヽ、 \ i |。| |/ ヽ (ニ、`ヽ
.l ヽ l |。| | r-、y `ニ ノ \
l | |ー─ |  ̄ l `~ヽ_ノ____
/ ̄ ̄ ̄ ̄ヽ-'ヽ--' / オプーナ /|
.| ̄ ̄ ̄ ̄ ̄ ̄|/| | ̄ ̄ ̄ ̄ ̄ ̄|/| ______
/ ̄オプーナ/|  ̄|__」/_オプーナ /| ̄|__,」___ /|
| ̄ ̄ ̄ ̄ ̄|/オプーナ ̄/ ̄ ̄ ̄ ̄|/ オプーナ /| / .|
| ̄ ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/l ̄ ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄|/ | /
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
79. References
• Munin
– http://munin-monitoring.jp/
• Munin User Group Japan
– http://munin.jp/
– http://munin.jp/wiki/
#muninja … ドキュメント翻訳 ← New!
• Slideshare
– http://slideshare.net/zembutsu/
• Magazine
– Software Design 2012年11月号
– 第二特集 Muninが手放せない理由
– p.77-110