53
Mackerelを支えるデータストア - PostgreSQL, Redis, Graphite 20154188中国地方DB勉強会 id:daiksy

中国地方Db勉強会

Embed Size (px)

Citation preview

Mackerelを支えるデータストア

- PostgreSQL, Redis, Graphite

2015年4月18日 第8回 中国地方DB勉強会

id:daiksy

粕谷 大輔 id:daiksy (@daiksy) 株式会社 はてな

トイレに閉じ込められる 検 索

Mackerelの機能紹介

ホストやロールによる メトリック管理

ロール

サーバのスケーリングに 対応

サーバーインスタンスごとの

グラフの各色の重ねあわせで 全体の傾向を把握

メトリック監視とアラート

多様な通知先

通知時にグラフ画像が添付

※Slackのみ。順次拡張予定

スマフォ対応

サービスメトリック

オフィスの温度・湿度を計測

新機能順次開発中! ローンチ以来毎週リリース継続中!

Mackerelのデータストア

Mackerelのデータストア redis

Graphite PostgreSQL

{"name": "hogeHost", "meta": {}, “interfaces”:[{“address":"192.168.1.1","defaultGateway":"192.168.1.1","encap":"Ethernet","ipAddress":"192.168.1.1"...}]}

メトリックの保存先と用途

- Redis: モニター監視 - Graphite: 時系列データの永続化 - PostgreSQL: グラフ定義

redis

❝RedisはANSI Cで書かれていて、すべてのデータセットをメモリ内に読み込むため、危険なほどのス

﹅ ﹅ ﹅ ﹅ ﹅ ﹅ ﹅

ピードで動作します!❞﹅ ﹅ ﹅

http://redis.shibu.jp/features.html

_人人人人人人人人人人人人_ > 危険なほどのスピード <

‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y‾

リスト・セット・ハッシュなどのデータ構造をValueとして格納できるKVS

すべてのデータをメモリ上に格納するので高速

揮発性のデータストアだが、定期的にディスクに書き込んで永続化される

Mackerelでは監視対象データをRedisで扱っている

クライアントから送られた メトリックは、Redisと時系列DB(後述)に格納される

モニター監視は直近5分のデータのみあればよい -> Redisで高速に処理

※具体的には直近15個のデータを保持。それ以前は削除

Graphite

Graphiteの構成

- Carbon: メトリック収集 - Whisper: 時系列DB - graphite-web: グラフ描画

Mackerelのグラフ用時系列データを管理

※グラフ描画部分は独自実装

時系列データはクライアントから1分おきに収集

まともに全部保存したら データ量が膨大になる

グラフに必要な 時系列データの特徴

- 直近のデータは細かく見たい - 古いデータはアバウトでも良い

直近6時間のグラフ

直近1ヶ月のグラフ

描画に必要なデータポイントは 描画範囲が広がるほど粒度が荒くてよくなる

直近1日のデータ -> 1分ごとに保存

それ以前のデータ -> 5分ごとに平均化

のように古くなるほどデータを 間引きできる

具体的には

直近25時間 -> 60秒ごと 直近21日間 -> 5分ごと 直近90日間 -> 1時間ごと

PostgreSQL

時系列データをのぞく Mackerelの全データを管理

PostgreSQLのうれしみポイント - Json型 - チェック制約

ホストのメタ情報 - EC2インスタンス情報 - ネットワーク・インターフェース

-> Json型

チェック制約

“AかBいずれかがNullの場合はCは0になる” のような制約

仕様としてのデータの制約をデータベースの制約として定義

適材適所にデータストアを 活用しよう。

ご清聴 ありがとうございました