Fluentd + Zabbix + Grafana でグラフィカルなログ監視 分析システムを構築してみよう! 2016 年 7 月 29 日 SRA OSS, Inc. 日本支社 マーケティング部 OSS 技術グループ 1
アジェンダ Fluentdについて Zabbixについて Grafanaとは Fluentd + Zabbix + Grafana 構成の利点 デモ 2
Fluentd について Fluentd ログを取得して転送してくれるミドルウェア ログの加工や構造化ができる いろんなデータベースにデータを保存できる URL http://fluentd.org/ 開発 米国 Treasure Data 社の開発者 コミュニティベース 言語 :Ruby + C 言語 ライセンス Apache License Version 2.0 3
イメージ データ入力 :Input データ出力 :Output アプリケーションのログ Web サーバのログデータベースのログ Syslog http 入力 Unix ドメインソケット入力コマンド実行結果 フィルタ バッファ ルーティング DB ファイル コマンド 4
データ入力 物理構成イメージ syslog データ転送 データ集約 (aggregator) データ出力 Elasticsearch MongoDB Hadoop AWS MySQL PostgreSQL Zabbix 5
データ入力 syslog 物理構成イメージ データ転送 データ集約 (aggregator) 同じプログラム設定が異なるだけ データ出力 Elasticsearch MongoDB Hadoop AWS MySQL PostgreSQL Zabbix 6
Zabbix について Zabbix システムの異常を検知し通知を行う統合監視システム ネットワーク機器 OS プロセス 性能 ログ監視ができる 監視結果の確認は専用の WEB 画面から エージェント SNMP サーバ 7
Zabbix のアーキテクチャ Zabbix CLI (API) Zabbix Server Zabbix Web Interface (Apache + PHP) クライアント DB (MySQL, PostgreSQL, Oracle, etc.) 監視サーバ 監視対象 WebインタフェースはDBに直接アクセス WebサービスAPIはWebサーバ経由でアクセス インタフェースと監視サーバで処理を分散するアーキテクチャ 8
Zabbix 分散監視 Zabbix Web Interface Zabbix Server 設定同期 収集データ転送 Zabbix Proxy 1 つの Zabbix Server が複数の Zabbix Proxy を管理 監視対象ホストごとにどの Server または Proxy で監視するかを設定 Server-Proxy 間で設定および収集データは定期的に同期される Zabbix Server がボトルネックになるケースもあり Server を複数台使うケースもある 監視対象 9
Fluentd と Zabbix を一緒に Flunetd で収集したデータから問題があれば Zabbix へ通知 Zabbix 機能で実現が難しいデータ収集を Flunetd で収集 複数行ログ 加工が必要なログ 外部システムとの連携 (AWS CloudWatch など ) データ収集時刻を合わせて複数の監視メトリックスを Zabbix に届けたい 10
ツールを使い分ける? ここで 11
Grafana とは 複数のいろんな DB からデータを取得してデータの可視化ができる OSS ダッシュボード ライセンス Apache License V2 12
基本的な特徴データソース グラフ描画に必要なデータは 複数の外部データベースからデータを取得することができる データソースと呼ばれる 対応データソース Graphite InfluxDB Elasticsearch OpenTSDB Amazon Cloud Watch Zabbix Bosun Prometheos Heroic KariosDB など ユーザ / 設定 DB とデータ DB を分離させ 一つの Grafana から複数のデータソースに接続できるためデータを分散化させやすい Grafana はユーザ管理 設定データ保存などのデータを保存するための RDB が必要 SQLite( デフォルト ), PostgreSQL MySQL 13
基本的な特徴構成 JavaScript のフロントエンド ( ブラウザ ) と Go 言語で書かれたバックエンド構成 ブラウザから直接データソースにアクセスする Direct モードとバックエンド経由でデータソースにアクセスする proxy モードの選択ができる proxy モード Grafana サーバ経由でデータ取得オンプレ環境へアクセス データソース Direct モードブラウザから直接データソースへアクセス クラウドなどへアクセス 14
基本的な特徴描画機能 線グラフ 棒グラフ 積み上げグラフ y 左, y 右軸サポート negative-y 軸 単位 ( センサー系も豊富 ) World map Table( 表 ) Singlestat + ゲージ表示 +SparkLine 表示 text html markdown Pieチャート 15
基本的な特徴 Annotation 機能 データストアに入っているイベントを元にダッシュボード内のグラフに注釈として表示する機能 16
特徴その他機能 テンプレート機能 例 ) ホスト名だけを変更してダッシュボードの再利用 Repeat Panel テンプレート変数を使って変数を変えたパネル ( グラフ ) を繰り返し設定 mix データソース 複数のデータソースから取得したデータを 1 枚のグラフへ描画 表示時間のスライドがキーボード ( ) で可能 時間をスライドさせつつグラフの確認が容易 シェア機能とスナップショット機能 チーム内で 同じ画面のシェア (URLで連絡) 問題があったときのスナップショットの保管 組み込み機能 Grafana で作成したグラフを HTML から呼び出してグラフの再利用 マルチテナント対応 組織別ユーザ管理が可能 17
注目度と人気度? エンジニアの注目度 Githubから2016/7/26の情報 Watch 数 648 Star 数 10969 Fork 数 1642 ( 参考 ) kibana Watch 数 485 Star 数 5694 Fork 数 2095 Google トレンドによる人気度 18
Grafana 3.0 リリース 最新版のメジャーバージョン 3.0 が 2016/5/11 リリース 3.0 からプラグイン仕様の整備と Grafana.net で誰でもプラグインを開発 公開できるようになった 今後プラグイン開発が盛んになりそう 3.0 で入らなかった大きな機能 通知機能 (4.0 で入る予定 10 月末ごろ? ) 19
Fluentd+Zabbix+Grafana 構成の利点 ケース1 Fluentdを使ってログ収集 問題があるログはZabbixに届けてZabbixから通知 生ログはデータベースに格納して解析 xn 利用者は管理画面を切り替えて運用 管理者は管理画面ごとにユーザ設定 20
管理画面の統合ユーザ情報を管理チーム内で問題発生時の情報を共有しやすく オンプレ クラウド 21
ケース2 長期間運用すると FluentdもZabbixもデータの取集が得意 DBの肥大化が問題 データは捨てたいけど 重要なイベントのデータは 残したい は古いデータを DB から 削除しても大切なデータ を残すことができる 22
スナップショット機能 重要なイベントのダッシュボードをスナップショットとして Grafanaの内部 DBに保存できる 保存したスナップショットをダッシュボードへリンク 23
スナップショットから過去イベントを確認 スナップショット スナップショットからデータの CSV エクスポートも可能! 24
ケース 3 専用のツール ( 例えばkibanaやZabbix) で深掘りしたいとき Drilldown/detail link 機能で指定したURLへジャンプ detail link Drilldown 25
ケース4 Zabbixが障害を検知したときにFluentdで取得したデータと関連づけさせたい GrafanaのAnnotaion 機能を使って問題の事象確認が迅速に! Annotaion Zabbix 通知内容マウスのカーソルを合わせると表示 26
おまけ Zabbix の利用例 Template 機能グループの取得 表示ホストの取得 表示 Anotation 機能 Zabbix の通知をグラフに表示 Zabbix データソース機能 Item 名の部分一致でまとめてデータの取得 表示 27
データソースと DB について 現在 Grafana と Fluentd 共通で対応している DB( データソース ) Graphite InfluxDB Elasticsearch Zabbix Prometheus RDBMS は? アプリケーションや社内システムで利用している DB は RDBMS なんだけど解析に Grafana は使えないの? MySQL や PostgreSQL なら知っているけど 新しい DB の導入 運用の敷居は高い Grafana コミュニティでも RDBMS 対応の要望が多い ということで 28
SRA OSSのGrafanaの取り組み MySQLとPostgreSQL 対応プラグインを作ってみました 状況 githubにpullリクエストを出したところ (2016/5/25 ~ ) https://github.com/grafana/grafana/pull/5364 https://github.com/sraoss/grafana-sqldb-datasource 29
Sunburst パネルプラグインを作りました https://github.com/sraoss/grafana-sunburst-panel 階層が表示可能な円グラフ 30
デモ VMware Player VMware CentOS Player 7 CPU 1 個 Memory 1GByte Zabbix エージェント Grafana のデータソース Flunetd Apache アクセスログ dstat 性能メトリックス PostgerSQL を利用 Zabbix 4 台の監視ホストを登録 Linux テンプレートを適用 31