運用の現場での監視運用ツールの活用
Upcoming SlideShare
Loading in...5
×
 

運用の現場での監視運用ツールの活用

on

  • 2,000 views

DevOpsの時代、運用の現場でも安定とスピードとの両方が求められるようになっています。

DevOpsの時代、運用の現場でも安定とスピードとの両方が求められるようになっています。
オープンソースの統合監視ツール「Zabbix」を実例に、運用監視ツールに求められるポイントと活用法をご紹介します。

Statistics

Views

Total Views
2,000
Views on SlideShare
1,990
Embed Views
10

Actions

Likes
4
Downloads
33
Comments
0

4 Embeds 10

https://twitter.com 7
http://s.deeeki.com 1
http://rssc.dokoda.jp 1
http://geechscamp.lovepop.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

運用の現場での監視運用ツールの活用 Presentation Transcript

  • 1. 運用の現場での 監視運用ツールの活用 株式会社サイタスマネジメント 米田真治 2013/12/13 OSC2013 .Enterprise 1
  • 2. トピックス —  運用業務のよくある状況 —  運用監視ツールのポイント —  Zabbixの活用ケース ◦  自動登録 ◦  カスタム監視 2013/12/13 OSC2013 .Enterprise 2
  • 3. 自己紹介 —  米田 真治 (こめだ しんじ) ◦  株式会社サイタスマネジメント CTO —  経歴 ◦  学生時代にUNIXに出会う ◦  Internetにつながる環境がきた ◦  いろんなプログラムをビルドしているうちに、 開発・構築の楽しさに目覚める ◦  学科のシステム管理を経験 ◦  システム運用のおもしろさを覚える ◦  就職してISPのサーバ構築・運用に携わる ◦  2000年6月 サイタスマネジメント創業 2013/12/13 OSC2013 .Enterprise 3
  • 4. 会社紹介 http://www.situs.co.jp/ サイタスマネジメントでは24時間365日のシステム監 視・運用管理サービスを中心に、お客様の悩みや課 題に応じたソリューションをご提供いたします。 —  システム監視・運用管理マネジメントサービス ◦  監視通知サービス:トラブルの未然防止・早期発見により システムの安定稼動を支援 ◦  障害対応サービス: 経験豊富なエンジニアによる迅速な ネットワーク復旧支援 ◦  運用管理代行サービス:高品質で幅広いサポートメニューで システム運用の負担を軽減 ◦  レポーティング: システムの運用状況や課題を把握し、改 善提案を実施 —  サーバ・ネットワーク構築 2013/12/13 OSC2013 .Enterprise 4
  • 5. 2013/12/13 OSC2013 .Enterprise 5
  • 6. 運用業務のよくある状況 高い負荷、負担 リリース先行により運用設計が不明確なままサービスイン 監視 連絡体制 運用オペレーションマニュアル 「運用でカバーする」という悪魔の声 属人的 人に依存する問題 キーパーソンに聞かないとわからない 人のスキル、属人化 運用の現場では、幅広い知識と深い経験が求められます コスト 費用対効果 ハードウェア・ソフトウェア 保守費用 人件費 2013/12/13 OSC2013 .Enterprise 6
  • 7. 仮想化の恩恵 —  —  仮想化技術 ◦  仮想化のソフトウェアレイヤーが、個々の ハードウェア障害に対する保護を提供する ◦  OSやアプリケーションはハードウェアの フォールトトレランスを確保する。 オンプレミスの仮想化基盤 ◦  可用性の確保が重大 —  クラウドの利用 ◦  スピード —  仮想環境やクラウドの活用で サーバの追加があっという間にできる –  動的に運用管理の対象が増減する 2013/12/13 OSC2013 .Enterprise 7
  • 8. 運用サイドで起こる問題 たとえば、 —  キャンペーンによるトラフィック過多 —  ◦  スポットCMなどのキャンペーン広告 ◦  ニュース番組で紹介される ◦  SNSでの口コミ ◦  スケールアウト実施 —  新サービスの開始 ◦  サーバが一挙に増える —  たくさんのVM ◦  設定変更、情報の更新が追いつかない 2013/12/13 OSC2013 .Enterprise 8
  • 9. ITシステムのライフサイクル ウィキペディア故障率曲線より 2013/12/13 OSC2013 .Enterprise 9
  • 10. 運用現場の感覚 サービスイン イ ン シ デ ン ト 件 数 2次リリース サービス追加 バージョンアップ 予期せぬ トラブル ワークアラウンド 問題解消 ハードウェアの経年劣化 予期せぬ トラブル ワークアラウンド 問題解消 2013/12/13 OSC2013 .Enterprise 10
  • 11. DevOps スピードが求められる時代 Biz 提供サービス主管 Dev 開発エンジニア リリースエンジニア 2013/12/13 Ops インフラエンジニア 運用エンジニア OSC2013 .Enterprise 11
  • 12. Dev, Ops は技術やサービスの提供者 Bizから 「スピードが求められる開発部門」 ◦  何を求められているのか  ◦  何を期待されているのか  Dev リリースプロセス Biz プロセス自動化 • ユニットテスト • PuppetやChefなどの構成管理 ツール 状況の共有 自動化できる運用ツール Ops • 対応時間の短縮 • 作業の削減と品質の確保 「安定運用が求められる運用部門」 2013/12/13 OSC2013 .Enterprise 12
  • 13. 運用の現場は人のネットワーク —  頻繁なリリースには、 DevとOpsとの効果的な連係が必要 —  運用への影響(変化)を共有する プロセスの自動化 ノード追加 •  意図したものなのか •  意図しないノード追加(=異常)なのか 必要な監視は設定されているか •  対応がわかっているアラーム •  未知のアラーム 開発メンバーは運用チームの仕事を 知っている必要がある 運用メンバーは開発チームの仕事を 知っている必要がある 2013/12/13 OSC2013 .Enterprise 13
  • 14. 監視とメータリング 利用者によって、見たい情報が違う レポートする内容が違う Dev アプリケーションの 異常 性能・レスポンス ユーザの振るまい ログ Ops 機器の状態 サービスの状態 性能・レスポンス キャパシティ 障害・故障の履歴 2013/12/13 Biz サービスに対する ユーザの反応 インシデントと ビジネスインパクト キャパシティ コスト OSC2013 .Enterprise 14
  • 15. 運用監視ツールのポイント —  監視機能 —  ◦  柔軟性と拡張性 —  ◦  状況の共有 ◦  メータリング ◦  柔軟なレポート 自動化と省力化 ◦  自動構成 –  ディスカバリー機能 —  ◦  定型化 –  自動アクション –  作業属人化の排除 –  作業品質を均一化 履歴が残る ◦  履歴の追跡や監査 –  モデルやテンプレート ◦  コマンドの活用 見える化 —  拡張性 ◦  API 2013/12/13 OSC2013 .Enterprise 15
  • 16. OSS 運用監視ツール かなり私見 ディスカバリー テンプレート API 分散監視 監視 Icinga HA Shinken 仮想化 Zenoss Xymon クラウド Zabbix メータリング Ganglia CMDB Nagios Cacti Collectd munin Hinemos Pandora FMS Observium weathermap RRDtool ntop nfsen エージェント Graphite 2013/12/13 OSC2013 .Enterprise 16
  • 17. Zabbixが備える有用な機能 —  —  拡張性のある監視機能 Zabbix Agent ◦  エージェント自動登録 ◦  ログ監視 ◦  Windowsサポート –  perf_counter、イベントログ、サービス —  —  —  ディスカバリー 複合条件でのトリガー アクション機能 ◦  ホストに対するスクリプト実行 ◦  リモートコマンド実行 –  トリガー条件でのコマンド実行 —  —  レポート API 2.2でVMware vSphere APIとWindows WMIに対応しました 2013/12/13 OSC2013 .Enterprise 17
  • 18. Zabbixの困ったところ 監視設定の点 —  Ø  —  Ø  Ø  —  Ø  Ø  SNMPでの監視設定はものすごく融通が利かない ダイナミックインデックスが使えるようになりました(1.5以降) ダイナミックインデックスのパフォーマンスが悪い キャッシュされるようになりました(1.6.3以降) SNMPリクエスト シングルコネクションになりました(1.7以降) 構成が微妙に違うとテンプレートを分けないと吸収できない ローレベルディスカバリが使えるようになりました(2.0から) ようやく一人前になったかも 2013/12/13 OSC2013 .Enterprise 18
  • 19. Zabbix 動的な監視対象の追加 対象ノードの 自動検出 オート ディスカバリ エージェント 自動登録 ディスカバリ アクション 自動登録 アクション テンプレート の適用 アイテム ホストOS ローレベル ディスカバリ サービス 監視 ローレベル ディスカバリ 2013/12/13 トリガー グラフ アイテム トリガー グラフ OSC2013 .Enterprise 19
  • 20. Zabbix 動的な監視項目の追加 —  アイテムの自動検出 ◦  ローレベルディスカバリ(Zabbix2.0から) テンプレート ディスカバリ ルール アイテムの プロトタイプ トリガーの プロトタイプ グラフの プロトタイプ ディスカバリルール •  タイプ Zabbix エージェント vfs.fs.discovery ファイルシステム net.if.discovery ネットワーク カスタムLLDルール JSON形式でリストを返します •  タイプ SNMP agent = SNMP OIDディスカバリ 2013/12/13 OSC2013 .Enterprise 20
  • 21. SNMP OIDディスカバリ ディスカバリルール mysqldプロセスが起動していればディスカバリーしたいとき 2013/12/13 OSC2013 .Enterprise 21
  • 22. SNMP OIDディスカバリ アイテムのプロトタイプ Zabbix エージェントの アイテム SNMP エージェントの アイテム hwSWRun*ではPidが変わるとインデックスが変わるので {#SNMPINDEX}ではなくダイナミックインデックス 2013/12/13 OSC2013 .Enterprise 22
  • 23. スクリプト実行による カスタム監視 —  Zabbix Agent 経由 (UserParameter) —  外部チェック —  返せる値は一つだけ —  複数の値があるならzabbix_senderで ◦  アイテムのタイプ Zabbixトラッパー —  ポーリングのスケジュールリングは Zabbixに任せる 2013/12/13 OSC2013 .Enterprise 23
  • 24. Zabbix Agent 経由 —  UserParameter ◦  リクエストのたびにコマンドが起動されます —  例: Collectdで収集した値を取り出す UserParameter=collectd[*],echo "GETVAL $1" | nc -U /var/ run/collectd/unixsock | egrep '^(value|$2)=' | awk '{printf "%fn", $$1}' —  zabbix_get で確認 $ zabbix_get -s localhost -k 'collectd[localhost/ entropy/entropy]' 3589.000000 $ zabbix_get -s localhost -k 'collectd[localhost/ load/load,shortterm]' 0.000000 2013/12/13 OSC2013 .Enterprise 24
  • 25. 外部チェック Nagios plugin プログラムの活用 #!/bin/sh ZABBIX_SENDER=/usr/bin/zabbix_sender ZABBIX_SERVER=localhost PLUGIN=check_xxx CHECK_PLUGIN=/path/to/$PLUGIN ARGS="-H $1 …" output=$($CHECK_PLUGIN $ARGS" 2>/dev/null) status=$? for perf in ${output##*|}; do key=${perf%%'='*} val=${perf##$key'=’} val=${val%%';'*} val=${val%%[A-Za-z]*} echo "$1” $PLUGIN."$key" $val done | $ZABBIX_SENDER -z $ZABBIX_SERVER -i - >/dev/null 2>&1 #echo "$status” echo $output 2013/12/13 OSC2013 .Enterprise 25
  • 26. スクリプト監視の注意点 —  タイムアウト ◦  Option: Timeout Range: 1-30 ◦  越えても強制終了はされませんが —  キューの状態 ◦  実行に時間がかかると、チェック全体で更新待ちが増える ことになります —  トラッパーの数 ◦  送信元 –  エージェントのアクティブチェック –  zabbix_sender ◦  ソケットの数をみて調整 –  トラッパーポート10051 —  値を返すとき ◦  指数形式の数値が扱えません —  スクリプト起動のオーバーヘッド 2013/12/13 OSC2013 .Enterprise 26
  • 27. Web監視 —  Zabbix Agent 経由 web.page.get ウェブページの内容の取得 ◦  web.page.perf ウェブページ全体のロードにかかる時間の取得 ◦  web.page.regexp ウェブページで最初に正規表現に一致した文字列の取得 —  ◦  単一リクエスト・1機能 —  ウェブ監視 ◦  固定シナリオ –  ステップごとの、スピード、レスポンスタイム ◦  テンプレート化できない 2.2で改善 2013/12/13 OSC2013 .Enterprise 27
  • 28. 動的シナリオのWeb監視 外部チェックスクリプトで実現 —  WebInject (Web/HTTP Test Tool) ◦  http://webinject.org/ ◦  Webサービスを自動的にテストするためのツー ルです webinject.pl -c config.xml config.xml <testcasefile>testcases.xml</testcasefile> <globalhttplog>onfail</globalhttplog> <reporttype>nagios</reporttype> 正常時 WebInject OK - All tests passed successfully in 0.195 seconds | time=0.195;;;0 エラーの時 WebInject CRITICAL - Test case number 3 failed |time=2.937;;;0 2013/12/13 OSC2013 .Enterprise 28
  • 29. WebInject シナリオ <testcases repeat="1"> <case id="1” method="get” url="{BASEURL}” verifypositive="Zabbix 2.0.8 Copyright 2001-2013 by Zabbix SIA" /> <case id="2” method="post” url="{BASEURL}/index.php” postbody='request=&name=admin&password=zabbix&autologin=1&enter=S ign+in’ verifyresponsecode='302’ parseresponse='Location: |n' /> <case id="3” method="get” url="{BASEURL}/{PARSEDRESULT}” parseresponse='<a class=”[^”]*" href=”|">概要</a>' /> <case id="4” method="get” url="{BASEURL}/{PARSEDRESULT}” /> </testcases> 2013/12/13 OSC2013 .Enterprise 29
  • 30. WebInject ラッパースクリプト #!/bin/sh WEBINJECT=/apth/to/webinject.pl cd /path/of/scenario output=$($WEBINJECT -c "$1.xml" 2>/dev/null) status=$? for perf in ${output##*|}; do key=${perf%%'='*} val=${perf##$key'='} val=${val%%';'*} echo "$1" webinject."$key" $val done | $ZABBIX_SENDER -z $ZABBIX_SERVER -i - >/dev/null 2>&1 case "$status" in 0) echo ${output%%' in '*};; [123]) echo ${output%%'|'*};; esac 2013/12/13 OSC2013 .Enterprise 30
  • 31. 状況によって動作を変える必要 がある場合 —  LL と Mechanize ライブラリをつかっ てスクリプトを作成します ◦  PerlのWWW::Mechanize ◦  RubyのMechanize ◦  Pythonのmechanize 2013/12/13 OSC2013 .Enterprise 31
  • 32. カスタム通知 メディアとしてスクリプトを使う —  TTYtterを使った通知の例 #!/usr/bin/python import sys user = sys.argv[1] subj = sys.argv[2].decode('utf-8') body = sys.argv[3].decode('utf-8') msg = '/dm @%s %s %s' % (user, subj, body) msg = msg[0:140] cmd = ['/usr/local/bin/ttytter', '-script']; p = Popen(cmd, stdout=PIPE, stdin=PIPE, stderr=STDOUT) p.stdin.write("%sn" % msg.encode('utf-8')) p.stdin.close() 2013/12/13 OSC2013 .Enterprise 32
  • 33. ディスカバリの通知を活用 通知メッセージの定義 Discovery rule: {DISCOVERY.RULE.NAME} Device IP: {DISCOVERY.DEVICE.IPADDRESS} Device DNS: {DISCOVERY.DEVICE.DNS} Device status: {DISCOVERY.DEVICE.STATUS} Device uptime: {DISCOVERY.DEVICE.UPTIME} Device service name: {DISCOVERY.SERVICE.NAME} Device service port: {DISCOVERY.SERVICE.PORT} Device service status: {DISCOVERY.SERVICE.STATUS} Device service uptime: {DISCOVERY.SERVICE.UPTIME} 2013/12/13 OSC2013 .Enterprise 33
  • 34. ディスカバリの通知を活用 Pythonでのパターンマッチ例 pattern = r'''(Discovery rule: (?P<rule_name>.*)) (Device IP: (?P<device_ip>.*)) (Device DNS: (?P<device_dns>.*)) (Device status: (?P<device_status>.*)) (Device uptime: (?P<device_uptime>.*)) (Device service name: (?P<service_name>.*)) (Device service port: (?P<service_port>.*)) (Device service status: (?P<service_status>.*)) (Device service uptime: (?P<service_uptime>.*))''' result = re.match(pattern, body) if result: print result.groupdict() 2013/12/13 OSC2013 .Enterprise 34
  • 35. AWS —  HyClops for Zabbix (第1回 OSS運用管理勉強会) ◦  http://tech-sketch.github.io/hyclops/jp/ —  Mikoomi Amzon EC2 Plugin ◦  http://code.google.com/p/mikoomi/wiki/04 —  Cloudwatch monitoring for Zabbix ◦  https://github.com/lorieri/zabbix/tree/master/ templates/cloudwatch 2013/12/13 OSC2013 .Enterprise 35
  • 36. SLAとビジネスインパクト —  ITサービス 2013/12/13 OSC2013 .Enterprise 36
  • 37. SLA —  レポート ◦  稼働レポート ◦  障害発生数上位100項目 2013/12/13 OSC2013 .Enterprise 37
  • 38. メータリング 思ってたんとちがう —  —  —  —  —  —  —  —  システムがどこで問題を引き起こすことになるかを 知ることはできない。 問題は驚くべき箇所で起こる。 なにか変だと感じたときは、かならず問題を抱えている。 発生する可能性がある問題は、いつかかならず発生する。 悪魔は細部に宿る 木を見て森も見る 計測すべし 見える化 2013/12/13 OSC2013 .Enterprise 38
  • 39. Zabbixの困ったところ グラフ —  Ø  —  Ø  Ø  測定した値を関数で処理してプロットしたい すでにデータベースに入っている値しかプロットできません トレンドとかが出せるとうれしいけど ◦  最小二乗法やHolt-Wintersによる傾向 ◦  σバンド 必要な関数が実装されていないのでむりです ほかのツールを使いましょう —  それでも移動平均くらいなら ◦  avg(3600) ◦  avg(3600,86400) —  タイムシフトによる過去一週間の平均 ◦  (avg(60,86400)+avg(60,172800)+avg(60,259200)+…+avg(60,604800))/7 2013/12/13 OSC2013 .Enterprise 39
  • 40. Zabbixでできること カスタムグラフの作成 —  過去の傾向 ◦  タイムシフトを利用した計算 –  last(86400) –  avg(300,86400) —  Percentile ◦  Zabbix 2.0 からサポート ◦  ノーマルグラフのみ —  アグリゲート ◦  ホストグループを対象に計算 ◦  grpavg Average value ◦  grpmax Maximum value ◦  grpmin Minimum value ◦  grpsum Sum of values 2013/12/13 OSC2013 .Enterprise 40
  • 41. タイムシフトによる過去一週間の平均 2013/12/13 OSC2013 .Enterprise 41
  • 42. RRDtoolから Zabbixのデータを参照 itemid を調べてデータベースから直接とりだす RRDtool は libdbi を有効にしてビルドされているものを使います DEF:v=sql//mysql/host=localhost/dbname=zabbix/ username=user/password=rdonly//history/clock/ value/itemid=23397:avg:LAST 2013/12/13 OSC2013 .Enterprise 42
  • 43. サンプル 上がZabbix、下がRRDtool 2013/12/13 OSC2013 .Enterprise 43
  • 44. サンプルグラフのRRDコマンド rrdtool graph chart.png --imgformat=PNG --start=-1day --step 300 --width=1000 --height=250 "DEF:time=sql//mysql/host=127.0.0.1/dbname=zabbix/ username=zabbix/password=zabbix//history/clock/value/ itemid=23397:avg:LAST" "LINE1:time#099000:time" "GPRINT:time:LAST:最新値:%5.2lf%s” "GPRINT:time:MIN:最小:%5.2lf%s” "GPRINT:time:AVERAGE:平均値:%5.2lf%s” "GPRINT:time:MAX:最大:%5.2lf%sj" 2013/12/13 OSC2013 .Enterprise 44
  • 45. 運用の現場はたのしい 運用の現場では、 —  幅広い知識がつき、 —  いろんな経験ができます 使ってたのしいツールを、使いましょう カスタマイズで、もっとたのしく —  機能が足りなければ作ることも 見えるとたのしい 楽になるとたのしい 作り込んだ物がうごくと、 もっとたのしい 2013/12/13 OSC2013 .Enterprise 45
  • 46. ご清聴ありがとうございました 2013/12/13 OSC2013 .Enterprise 46