Your SlideShare is downloading. ×
  • Like
Zabbix study
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Zabbix study

  • 6,800 views
Published

第4回 Zabbix勉強会の発表資料 …

第4回 Zabbix勉強会の発表資料
http://atnd.org/events/20070

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,800
On SlideShare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
61
Comments
0
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. エージェントと SNMP だけじゃない Zabbix @mikeda
  • 2. 自己紹介
    • 池田朋大 / @mikeda
    • 3. CROOZ って会社でインフラ屋やってます
    • 4. qpstudy でよくネタ LT をやってる人
    • 5. Zabbix のこと
      • 200 ノード くらい試験導入中
      • 6. API 好き。サンプル集作りたい
      • 7. 作ったツール: zabtop 、 ZabbixAPI.pm
  • 8. Zabbixの監視といえば Zabbix エージェント OR SNMP 監視対象(ホスト)には
      • ZabbixかSNMPのエージェントが必要
      • 9. 物理機器にヒモづく-> IP アドレスが必要
    必須じゃない
  • 10. 物理機器に縛られずに もっと自由な発想で いろいろ監視してみよう
  • 11. やりかたはいろいろある 多くの監視アイテムはけっこうなんでもアリ
  • 15. Zabbixっぽく使うポイント
    • テンプレートを作る->ホストを作る
     ->アイテム、トリガー、スクリーンなどが共有できる
    • Zabbix 内で完結するようにする
     ->外部設定ファイルや cron をできるだけ使わない
    • IP アドレス以外でホストを区別
     ->アイテムの引数で情報を渡す & マクロを使う ※ マクロ:テンプレート内で使える変数   
  • 16. 詳細はサンプルを見ながら いくつかはここで見れます http://mikeda.jp/zabbix/ admin / XXXXXX 今回使ったZabbixは1.8系
  • 17. サンプル 1 Twitter 監視
  • 18. Twitter監視
    • qpstudy6 でやったネタ
    • TwitterAPI を使って人間を監視する
      • ツイート数による死活監視
      • 19. リプライ状況によるネットワーク監視
      • 20. タイムラインによるログ監視
      • 21. 各種情報のグラフ化
  • 22. サンプルScreen1(全体図) 障害状況 ネットワーク図
  • 23. サンプルScreen2(各ホスト) ツイート内容 ツイート数 フォロワー数 リスト数
  • 24. 今回話すところ
    • ユーザステータス監視
      • ツイート数
      • 25. フォロワー数
      • 26. リスト数
    • タイムライン監視
      • タイムラインのテキスト
    どっちも TwitterAPI で取得(詳細は割愛) -> TwitterID がわかればとれる
  • 27. ユーザステータス監視
  • 28. テンプレート
    • 外部チェックが 1 つ:スクリプトの起動
    twitter.userinfo.get[ {HOSTNAME1} ]
    • トラッパーが複数:実際の監視値を格納
    twitter.userinfo.statuses_count ...
  • 29. ホスト
    • ホスト名をTwitterIDにする
    • 30. -> {HOSTNAME1} として外部チェックに引数が渡る
    • 31. テンプレートをリンクする
  • 32. 外部チェック
    • 自作スクリプトを使って監視する仕組み
    • スクリプトを置く
      • 値を print する
      • 33. 最初の引数: IP アドレス OR DNS 名
      • 34. 2 つ目以降の引数:任意に渡せる
    • スクリプト名をキーに外部チェックアイテムを作成
      • script_name
      • 35. script_name[ARG1 ...]
  • 36. トラッパー & zabbix_sender
    • 外部から監視値を Push する仕組み
    使い方
    • トラッパーアイテムを作成
    • どこかで zabbix_sender を実行する
    zabbix_sender -z <Zabbix サーバ > -s < ホスト名 > -k < アイテム名 > -o < 値 >
  • 37. 外部チェックと トラッパーの組み合わせ
    • 外部チェックで TwitteID を引数にスクリプトを起動
    • 38. スクリプト内で TwitterAPI 叩いて値を取得。
    • 39. 返却値でエラーハンドリング
    • 40. スクリプト内で複数のトラッパーアイテムに zabbix_sender
      スクリプト
      ZabbixServer
    • 起動
      外部チェック
      トラッパー
      トラッパー
      トラッパー
      OK/NG
  • 41. 理由
    • 外部チェックのみ
      • 1 回で 1 つの値しか返せない
        • twitter.userinfo[{$HOSTNAME1}, statuses_count]
        • 42. twitter.userinfo[{$HOSTNAME1}, followers_count]
        • 43. ...
       -> API 呼び出し回数が増えてがロックされる
    • トラッパーアイテムのみ
      • どうやって起動するか。 Cron 起動はイヤだ
      • 44. 外部設定ファイルとかイヤだ
      • 45. エラーハンドリングがしづらい
    • 外部チェックで起動して、トラッパーを一気に返す
    • 46. エラーは外部チェックの返却値で
  • 47. タイムライン監視
  • 48. テンプレート
    • 外部チェックが 1 つ:スクリプトを起動
    twitter.timeline.get[ {HOSTNAME1} ]
    • トラッパーが 1 つ:ツイート内容を格納
    twitter.timeline
  • 49. 外部監視とトラッパーの組み合わせ
    • 外部チェックでスクリプト起動
    • 50. スクリプト内で新しいつぶやき件数ぶんzabbix_sender
      スクリプト
      ZabbixServer
      起動
      外部監視
      トラッパー
      OK/NG
  • 51. 補足:タイムスタンプ問題
    • 単純に zabbix_sender するとその実行時間が入る
      • オプションで解決: --input-file - --with-timestamp
      • 52. こういうテキストを作る。複数行 OK
    mikeda twitter.timeline 1302139204 &quot; 安西先生、おつまみがないです &quot; mikeda twitter.timeline 1302139191 @oranie &quot; 留年ヽ ( ゚∀゚ ) メ ( ゚∀゚ ) メ ( ゚∀゚ ) ノワッショイ &quot;
      • zabbix_sender にパイプで渡す
    zabbix_sender -c /etc/zabbix/zabbix_agentd.conf --input-file - --with-timestamps
    • バッチ処理にも使える
  • 53. サンプル 1 終了 きっと完全なネタだと思われてる ↓ そんなことはない! 実践的な応用
  • 54. サンプル 2 AWS の監視
  • 55. AWSの監視
    • いわずとしれた Amazon のクラウド
    • 56. EC2 は普通にエージェントいれればいいけど
    • 57. RDS 、 ELB 、 SQS 、 ...
     -> CloudWatch しかない
    • CloudWatch
      • 2 週間しか保存できない
      • 58. ...
    • Zabbix で監視したいですよね?
  • 59. 今回はRDS (MySQL)の監視
    • 基本的には Twitter 監視と同じ
      • TwitteAPI -> CloudWatch AP
    • ついでに MySQL のクエリ数監視もやってみる
    • CloudWatch 監視
      • ツール: CLI 、各種 SDK ( PHP,Java,... )
      • 60. スクリプトを作って外部チェックで起動
      • 61. 必要な情報はマクロで渡す
        • RDS 名、リージョン
    • MySQL のクエリ数は普通に DNS 名で MySQL アクセスしてとってくる
  • 62. サンプルScreen CPU 使用率 コネクション数 CPU 使用率 空きディスク容量 クエリ数
  • 63. テンプレート (CloudWatch部分)
    • 外部チェック 1 :スクリプトを起動
    amazon.rds.get[ {$RDS.NAME} {$RDS.REGION} ]
    • トラッパー:監視値を格納
    amazon.rds.cpu.util.avg ...
  • 64. テンプレート (MySQLアクセス部分)
    • 外部チェック
    amazon.rds.mysql_status[Com_select] ...
    • スクリプトの中身
    USER=mikeda;PASS=XXXXX HOST=$1 KEY=$2 /usr/bin/mysqladmin -u$USER -p$PASS -h $HOST extended-status | awk '{if($2 == &quot;' $KEY '&quot;) print $4}'
  • 65. ホスト作成
    • テンプレートをリンク
    • 66. CloudWatch 用にマクロを設定
    • 67. MySQL 監視用に DNS 名を設定、接続方法を「 DNS 名」に
  • 68. サンプル 2 終了 だれかひと通りテンプレ作って 公開してください!
  • 69. サンプル 3 サービスレイヤの監視
  • 70. サービスレイヤの監視
    • こういうのがあると便利
      • PV 、平均レスポンスタイム、メール受信数
      • 71. アプリケーションエラー件数
      • 72. 画像投稿数、分散ストレージの総容量
    -> サービス担当の人でも見れる
    • Zabbix アグリゲートを使う
      • WEB サーバ、メールサーバ等をサービスごとにホストグループでまとめる
      • 73. 各サーバで必要な値を取得
      • 74. グループ単位で集約
  • 75. サンプルScreen PV メール受信数 平均レスポンス メールキュー
  • 76. サンプルScreen続き アプリエラー( WEB ) アプリエラー( Mail )
  • 77. テンプレート
    • Zabbix アグリゲート
    grpavg[&quot; {$WEB_GROUP} &quot;, &quot;system.cup.load[,avg5]&quot;, &quot;last&quot;, &quot;0&quot;] grpsum[&quot; {$WEB_GROUP} &quot;, &quot;http.count[ {$WEB_DOMAIN} ]&quot;, &quot;last&quot;,&quot;0&quot;] grpsum{&quot; {$MAIL_GROUP} &quot;, &quot;mail.count[ {$MAIL_DOMAIN} ]&quot;, &quot;last&quot;, &quot;0&quot;]
    • ホストグループ名をユーザ定義マクロで渡す
  • 78. ホスト
    • テンプレートをリンク
    • 79. マクロを設定
      • サーバグループ名
      • 80. サービス用ドメイン( VirtualHost 等相乗り対策)
  • 81. サンプル 3 終了 なのですがちょっと課題が
  • 82. 課題
    • 1 ホスト上に複数のアプリインスタンスがある場合
      • バーチャルホストを使った WEB サーバ
      • 83. バーチャルドメインを使ったメールサーバ
      • 84. マルチインスタンス起動した MySQL サーバ
    • 1 つのホストに同じテンプレートを複数適用で きない
     -> 1 つのテンプレートに同じ内容を繰り返し記述
    • カオス化しない解決方法を模索中
    • 85. -> よい案があれば @mikeda まで
  • 86. 全サンプル終了
  • 87. まとめ
    • 細かいところすっ飛ばしまくりですみません
    • 物理機器に縛られずに監視を考えてみよう
    • 88. 使える武器はいろいろある
      • 外部監視、トラッパー、アグリゲート、...
    • ちゃんとテンプレートを作ると幸せになれる
      • 必要な情報は引数で渡す
      • 89. 引数にはマクロを使う
  • 90. ありがとうございました!