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



