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
Memory Usage
Database Connections
普通の棒グラフのため省略
NetworkTraffic
CPU Utilization
普通の棒グラフのためry
Disk I/O Latency
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