読者です 読者をやめる 読者になる 読者になる

weblog of key_amb

主にIT関連の技術メモ

Sensu Deep Talks #1に行ってきました #Sensu #sensudeep

f:id:key_amb:20150326215334p:plain

Sensu Deep Talks #1 に行ってきました。

Sensu Deep Talks #1 - connpass

Sensu を使ったことはないのですが、エージェント型で Immutable Infrastructure に適した監視ということで、以前から気になっていました。
今回は現場で Sensu を使っている人の深い話が聴けてよかったです。

以下、発表内容です。

※資料がアップされたので追加しました。

Sensu with Golang

@hico_horiuchi

大学院修士1年生の方。

  • ohgi - Go 製の Sensu CLI
  • sensu-cli ... Sensu 本家の CLI
    • Ruby
    • 情報量が多く見づらい、重い
  • Go について
  • ohgi の Demo
  • Sensu Plugin を Go で書く
    • hico-horiuchi/sensu-plugins-go · GitHub
    • check - os.Exit() で終了ステータス変更
    • metrics: Scheme + Value + Unix
    • sensu/handler ライブラリ
      • 渡された event を構造体に格納
      • simple-json で設定読み込み
    • before/after 比較
      • 10倍ぐらい高速になった
      • community-plugins より高速
  • 今後
    • ohgi ... 複数 Sensu 対応

Graphite の話

Y! 北田駿也さん

はじめに

  • プライベートクラウドの監視に Sensu を使っている
    • 5000台規模
  • メトリクス収集にも使っている
    • サーバリソースなど
  • Sensu から Graphite にデータを入れている
  • クラウドコンパネで可視化

Graphite

  • Graphite とは
    • carbon-relay
    • carbon-cache
      • whisper ... rrd みたいなもの
    • graphite web ... web インタフェース
  • 初期構成
    • Sensu > LB > (web, carbon-relay)
    • carbon-relay > carbon-cache > whisper
    • carbon-relay
      • cpu よく詰まる
    • carbon-cache
      • io
      • tmpfs 使う
      • たまに rsync => x 終わらない
      • 最終的に storage 使うようになった
      • => CPU 100%超
        • => multi-process 化
  • スケールアウト後の構成
    • carbon-relay の前段に haproxy
  • スケールアウト時の context-hash の問題
    • carbon-cache 追加
      • web から見れなくなる
    • consistent hashing のこと?
    • context-hash => relay-rule を使うようにした
    • ceres を試したが、問題があった
      • メトリクスが多くなると延々と回り続ける
      • carbon-cache がダウンする
    • => 結局 whisper に戻した
  • チューニング
  • Q&A
    • なぜ Graphite ?
      • 当時 Sensu を使うにあたって他に選択肢が上がらなかった

参考資料

この辺の話のようです:

MERYにおけるSensuの活用事例とハマりどころ

ペロリ山中さん

  • 自己紹介
    • 日本電子専門学校OSS
    • HDE
  • ペロリとMERY
    • 2012 Aug 設立
    • 2億PV/month
  • Sensu 以前
    • NewRelic のみ
    • Nagios
      • 大規模になるとしんどい
    • Zabbix
      • 機能が多すぎ?
    • DataDog / Mackerel
      • お金掛かる
    • Sensu
  • 構成
    • Appサーバに Sensu Client
    • Sensu Server
      • Docker コンテナにまとめている
      • Sensu にコンポーネントがいろいろある
        • RabbitMQ, Redis, etc.
        • uchiwa
  • Sensu 導入後
    • 実際にプロセス障害を検知
    • 狼少年アラートを撲滅
    • 運用が楽
    • APIを使ったパトランプ運用
  • Sensu 導入におけるトラブル/問題点
    • アーキテクチャが複雑
      • Server > check > RabbitMQ
      • Client > result > RabbitMQ > Server > Redis
    • 設定ファイル構造が複雑
      • Client
        • subscriptions の概念を理解してないと監視を設定できなかったりする
    • プラグイン実行がエラーになる
    • 監視が実行されない!
      • RabbitMQ回りが怪しい
        • RabbitMQのエラーに出る
    • インスタンス作成時に固有情報がかぶる
    • terminate 時にアラートが来る
      • ec2_node プラグインインスタンスの状態をチェック
        • ホスト異常が検知出来ない
          • warn と critical で handler を使い分ける
          • sensu に issue がある
    • Sensu 自身の監視
      • CloudWatch で
  • まとめ
    • 地雷はある
    • 最初に2週間だけ苦労するのか、サービスが成長する度に苦労し続けるのか
  • Q&A
    • 機能的に不足があることもある
      • 一括で通知オフとか
      • APIがあるので、自力でなんとかできなくもない

Kaizen Platform, Inc. の監視の話

@glidenote
Akira Maeda

Blog: Glide Note - グライドノート

  • KAIZEN PLATFORM
    • SF 本社, 東京支社
    • Webサイトの A/B テスト
    • naoya さんがいる
  • Sensu
  • クラウド環境に適した監視
    • Nagios での問題
      • ノード追加時に設定撒かないと行けない
      • 設定ミスでアラート地獄
  • プロビジョニングツールと相性がいい
    • sensu-chef
    • sensu-puppet
  • 通知は PagerDuty に集約
    • Pingdom などとも連携可能
    • Slack に通知
  • 監視
    • 疎通、死活監視
    • 負荷監視
    • プロセス監視
    • エラーログ監視
    • パフォーマンス監視
  • リリースプロセス
    • QAデプロイ
      • QA環境の監視を厳し目にしている
    • 本番デプロイ
      • この前に異常を検知出来る
  • Pingdom
    • 外から E2E 監視
  • メトリクス
    • Sensu ではやらない。地雷臭がする
    • Mackerel, DataDog など
  • お知らせツール
    • StatusPage.io
  • Sensu 運用
    • Chef でサーバ構築して終わり
    • 監視項目を追加
      • pull-req
      • ChatOps でデプロイ
  • まとめ
    • サービス開発に注力できるようになった
    • KAIZEN エンジニア行動指針
      • 監視を自動化しよう
  • Q&A
    • メトリクスの地雷臭について
      • I/O が上がる
      • 監視とメトリクスを同居させると明らかに負荷が上がる
      • 当時 Serf と Munin でメトリクスを実現していた