search
LoginSignup
14

More than 5 years have passed since last update.

posted at

updated at

[blackbird-rds] Monitoring AWS RDS

blackbird RDS plugin

ソースコードはこちら

このプラグインはCloudWatchからRDSのMetricをいい感じに取得します。正直MySQL プラグインとかぶってる感は否めないんですが、それをSummaryしたような内容が取得できます。

You Can Get Following Metrics

では早速このプラグインで取得できるものから。

CloudWatch Metric Statistics Detail
BinLog Disk Usage Average binlogが使用しているディスク容量(bytes)
CPU Utilization Average CPU使用率(%)
Database Connections Average 現在のDBへのConnection数
Disk Queue Depth Average Queueにたまっている(未処理の)I/O処理の数
FreeStorageSpace Average ディスクの空き容量(bytes)
Feeable Memory Average 使用可能なメモリ容量(bytes) //InnodbBufferPoolで結構使うので、少ないからといって問題でもない
NetworkReceiveThroughput Average RDSなserverのInboundなnetwork traffic
NetworkTransmitThroughput Average RDSなserverのOutgoingなnetwork traffic
ReplicaLag Average Slaveのレプリ遅延、いわゆるseconds behind master(seconds)
SwapUsage Average メモリからあふれちゃってSwapしている量(bytes)
ReadIOPS Average ReadのIOPS(Provisionedしてるとぴったりその数値で止まります)
WriteIOPS Average WriteのIOPS(Provisionedしてるとぴったりその数値で止まります)
ReadLatency Average ReadのLatency(単位はms)
WriteLatency Average WriteのLatency(単位はms)
ReadThroughput Average ReadのThroughput、秒間何byte読み込んだか
WriteThroughput Average WriteのThroughput、秒間何bytes書き込んだか

書いてて思いましたが本当にSHOW GLOBAL STATUSとかSHOW ENGINE INNODB STATUSとかをSummaryした感じですね。ただQueryPerSecondとかInnodb Cache Hit Rate的なのが取得できないのが残念です(そこはMySQLプラグインですね)。

Zabbix Template

Items

上記のMetricだけでは監視に厳しいものがあったので、計算アイテムとplugin側で頑張って以下の値も取れるようにしました。

Item Name Outline Detail
Total Memory Size インスタンスタイプとMemoryのマッピングからTotal Memory Sizeを算出
Used Memory Size Total Memory Size - Freeable Memoryによって算出
Percent of Memory Available メモリの空き容量%
Total Disk Size インスタンスタイプとDisk容量のマッピングから算出
Used Disk Size Total Disk Size - Free Storage Spaceによって算出
Percent of Disk Available ディスクの空き容量%

//正直、Amazonさん、インスタンスタイプとCPU、Memory、Diskのマッピングを取得できるAPIを用意して欲しかったです...

Triggers

  • CPU Utilizationが一定数を超えていないか
  • Diskの使用率が一定数を超えていないか
  • DiskがSwapInしているかどうか

今のところ、このみっつだけなんですが、正直Memoryの残量はInnodbBufferPoolのこと考えるとあんましアラートにする意味ないし、Slaveの遅延くらいですかね?ぜひみなさん、他にこんなTriggerが欲しいみたいなのあったら教えて欲しいです!

Graphs

Disk Usage

スクリーンショット_2014-12-05_23_26_25.png

Memory Usage

スクリーンショット_2014-12-05_23_26_46.png

Database Connections

普通の棒グラフのため省略

NetworkTraffic

スクリーンショット_2014-12-05_23_26_57.png

CPU Utilization

普通の棒グラフのためry

Disk I/O Latency

スクリーンショット_2014-12-05_23_27_13.png

Disk I/O Queue Depth

普通の棒グラフのためry

Disk I/O Throughput

Disk I/O Queue Depthのグラフと酷似しているためry

IOPS

Disk I/O Queue Depthのグラフと酷似しているためry

Replica Lag (Seconds Behind Master)

普通の棒グラフのためry

ZabbixのTemplateとしてはこんな感じです。これをScreenにずらーっとならべるとどのRDSが忙しいか一目瞭然でござる(ちなみに僕はその方式で監視してます。)。

How to Install

Case of pip

pip install blackbird-rds

以上です。

Case of yum

blackbirdのRPM repositoryについてはこちら参考にしてください。

yum install blackbird-rds --enablerepo=blackbird

Configuration Your blackbird

# セクション名は内部的にはThread名に使わているので、なんでもおkですがかぶらないほうが無難です
[ANYTHING_OK]
# 取得間隔、最小値は60秒で、1秒に設定しても60秒になります。
interval = 60

# AWSのregion
region_name = ap-northeast-1

# AWSのcredentialです
aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
aws_secret_access_key = YOUR_AWS_SECRET_ACESS_KEY

# RDSのインスタンス作成時につけたDB名です
db_instance_identifier = YOUR_RDS_INSTANCE_NAME

# zabbix server上のHost名です。先に作るのをお忘れなく。
hostname = prod-dbidm01
module = rds

# この値はdefaultでは空です。ただ、CloudWatchのAPI Call回数を減らしてお金を節約したい的な用途があれば、以下のようにカンマ区切りで書いてください。そうすると指定したMetricに関しては取得しなくなります。
ignore_metrics = ReplicaLag,BinLogDiskUsage

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
14