はてぶ発の監視サービスを中の人が語る!【Mackerel Meetup #1 Tokyo】に参加してきた
元々は、はてなが中で使っていた監視ツールをサービス化したMackerelというサービスを中の人が熱く語るMackerel Meetup #1 Tokyoに参加してきました。
拙い内容ですが以下に発表されていたメモしておきます。
Introduction to Mackerel
- 講演者:大坪様
- @motemen
agenda
- Mackerel オーバービュー
- 機能紹介
- 具体的なユースケース
Mackerel
- 日本語で鯖
- サーバ管理ツール as a Service
- 前身:はてなの社内ツール
構成
- Scala * Play Framwwork
- PostgereSQL
- Graphite
- AngularJS
- Go (mackerel-agent)
特徴
- ロールによるホスト群の管理
- エージェントによるリソース管理
- リソースの可視化
- APIによる管理
Orgとユーザ
- Organization = 会社,組織
- org一つが課金単位になる予定
- ユーザは複数のOrgに所属
サービストロール
- サービス
- 様々なホストが協調
- Hatena-Bookmark, Hatena-blog,,,という単位
- ホスト群を役割でまとめる = ロール
- app, db,,,
- ホストの名前を気にせずロールベースで管理していく
org – サービス – ロール
- 以下の様な構成
- Hatena Org
- Hatena-blog
- app
- host01, host02
- db
- db-host01, db-host02
- app
- Hatena-blog
ホストのライフサイクル
- ステータスで状態を管理
- standby / working / maintenance
- 役目を終えたホストは「退役」(retired)
- サービス管理ツールからはほとんどみない
- maintenanceの時はアラートを出さないなど
メトリック
- ホストのリソースの時刻ごとの数値
- loadavg5, cpu.user…
- エージェントが自動的に収集
ロールごとのグラフで可視化
Mackerel Functionaities
Web
- ホストの一覧
- サービス/ロールの管理
- グラフの確認
- ホスト情報の編集
Demo
- 新規にサービスを作成したりしてました
- サービス名はURLになるのでアルファベットで入力
- Hostsで新しいロールを作りながら割当てなどしてました
- ホストの情報からステータスを変えました
- 監視機能がリリースされました
監視(experimental) new!
- agentから一定期間疎通がなければアラート
- Coming nextメール通知
- 回復したらメール通知など
- experimental
- アラートの発生した付近のグラフ出る
- そのうちメトリックを監視して、メトリックのグラフを出せるように考えています
mackerel-agent
- Goで書かれた公式エージェント
- Linuxサポート(CentOS 5/6, Debian 6/7)
- はてなでサポートしてる
- 実はビルドすればWindowsでもうごきます
- ホストスペックとメトリックを収集
- mackerelio/mackerel-agentでチェックアウトできます
agent:インストール方法
- yum/aptリポジトリ公開してます
- 細かくアップデートしてます
- taballでバイナリを展開
- go get
- 常に最新版をGETしたいときはこれを使う
- brew installも個人的に作ってるがまだ開発中
- @motemenさんの環境ではちゃんと動いてます
agent: 収集スペック
- 今は起動時に1回だが、次のバージョンで1時間に1回収集予定
- カーネル
- CPU
- ネットワークインターフェース
- メモリ
- ブロックデバイス
- ファイルシステム
agent:収集メトリック
- 1分間に1回収集
- loadavg5
- cpu.*
- memory.*
- interface.{name}.*
- disk.{name}.*
agent:カスタムメトリック
- mackerel-agent.conf
12<code>[plugin.metriccs.hogehoge]command = "/path/to/hogehoge.sh"</code> - plugin.metrics.*.commandを記述
- スクリプトの出力方式はタブ区切り
12<code>hogehoge.tabs.cout 9 14444hogehoge.tabs.works 7 12000</code> - custom metricの設定で線グラフを重ねるなど表示方法を変更できます
agent:ロール設定
- mackerel-agent.conf
1<code>roles = [ "Mackerel:db", ...]</code> - 設定からサービス/ロールを指定することができる
- 存在しなかったら作成する
- cookbook-mackerel-agentでも利用
API(v0)
- ホスト情報の一覧
- サービス/ロール/名前で絞込
- ホストのステータス更新
- いらなくなったホストの退役
- APIの仕様
mackerel-client gem
- rubygems.org/gems/mackerel-client
123<code>hosts = client.get_hosts (:service => 'Hatena-Blog',:roles => 'proxy ')</code>
mkr: CLI Mackerel Client
- APIをコマンドラインから叩けます
1<code>$ mkr host info --service HatenaBlog</code>
その他のツール
某サービス
- 34 service 17 hosts
- どこかの某ブログの監視状況でした
某サービス2
- fluent-plugin-mackerelを改良
- HTTPステータスコードの割合
- レスポンスタイムの分布
- ステータスごとにパーセンテージを出したりなど
- これからカスタムメトリックは修正していく予定
RoadMap
- 講演者:タナカ様
- ここから今後のリリース予定機能などの紹介
RoadMap
- 6月監視/通知
- 6月アプリケーションメトリクス
- 7月グラフ拡充(カスタム・外部貼り付け)
- 8月のおわりか9月頃に正式化
監視・通知
- 基本的な監視・通知
- ホストの停止チェック
- メールでの通知
- 応用的な監視・通知(7月)
- メトリックへの監視
- 様々な通知手段
アプリケーションメトリック
- サーバに紐付かないメトリック
- レスポンスタイム・エラーレート
- fluentd out_mackerel pluginを使う予定
- メトリックのカスタマイズ(7月)
- ラベル・形状
- カスタムメトリックスに対しての監視通知
- 閾値を超えたらエラーなど
- アクティブユーザや投稿数で監視などもおもしろいかも
グラフ機能拡張
- グラフの外部貼り付け(iframe) (7-8月)
- ダッシュボードのエディターの作りこみを頑張ります
- 画像でスナップショットを取れるようにしたい
- 高速化は随時
- 軽いグラフを提供したい
デプロイ支援
- グラフ上へのプロット(7月)
- 負荷が増えた時のデプロイの関係性がわかりやすくなると思われる
- イベントとリソースの変化を結び付けられるようにしようとしてます
- ロールのバージョニングとgitのhashとの対応付け(7-8月)
正式化
- 8-9月リリース
正式リリース後の候補
- ユーザー権限管理強化
- クラウドとの連携強化
- LB,インスタンス操作
- Docker支援
- イメージリポジトリ・API操作
- DockerリモートAPI操作など
メトリック関連ツール
- カスタムメトリックプラグイン集
- MySQL, nginxなど作成中
- アプリケーションメトリックツール
クライアントツール
- mackerel-client-ryb
agent
- Darwin版agent
- Windows版agent
- 基本的にgoが動けばどこでも動ける
チャット連携
- hubot-mackerel
- hubotを介してmackerel APIをたたいたりなど
- ドッグフーディング中
Mackerelのおすすめポイント
おすすめポイント
- 簡単セットアップ
- システムの構成要素を一元管理
- サービスの時系列データを可視化
- 複雑すぎず簡素すぎず、Immutable Infrastructure時代の定番サーバー管理ツールを目指してます
質問など
- どれくらいの台数まで耐えられますか?
- ドックフーディングで2000台
- ままだ余裕はあるので10000台まではいける
- 1000代単位で問題ない
- AutoScale環境でもっと使いやすく!
- 現在開発中
- ドッグフーディングしており、改善していきます
- サービストップのデフォルト表示でLAを変更できると嬉しい
- cpuなどに変えれるがリロードすると戻ってしまう・・・ -> 検討します
- メトリックをCloudWatchに流したい
- REST API経由でできるようにする予定
- OSSプロジェクトへの無償提供ありますか
- 前向きに検討したい
- 事例がないので個別相談させてください
- OSSプロジェクトへの無償で使えるアカウントを予定しております。
- 鯖の味噌煮が食べたいです
- 懇親会で鯖サンド用意してます(おいしかった)
- 次回以降のmeetupで検討します
- 価格体系気になる。できれば月額固定ができると
- 基本は従量ですが、応相談
- この数字はまだ検討中
- 固定要望がある場合は要相談
- 通知でwebhookの実装予定は?
- hubotはwebhookベースで動くのでできるだけ早い段階で対応します
- オンプレで使うのは考えていないか?
- 将来的にはgithub enterpriseのようなものも考えている
- サーバはハイスペックなものを要求するかもしれない
- mackerel agentで収集してるので個別のライブラリに分けるというのは検討してるか?
- chefのohaiのように、別ライブラリに出したいとは考えている
- 切り出すためのPRお待ちしております
- 1分おきの収集をもっとリアルタイムに近づけるということはしないか?
- ブーストモードなものを用意するのか、などは検討中
まとめ
MackerelはZabbixに比べると機能はまだまだ足りてないかもしれないが、ガンガン開発しているので今後にすごい期待してます。
また、Zabbixより全然UIがイケてる!!
きっとどんどん使いやすくなると思います。
正式リリースしても無料分はあるかもという噂もあるのでもし無料だったら自分のサーバにいれて使い続けようかなとは思っています。