blackbird AWS Service Limits pluginです。このプラグインではAWSの各種Service Limitsを取得し、zabbixに登録します。defaultでは(Macroで上書きします。)サービス上限の8割(たとえばEIP使いすぎとか、もうすぐEC2が上限にあたるとか)に達したらアラート通知を行います。
現在の使用量を取得できる一覧
下記のサービスの上限と現在の使用量を監視しています。
- AutoScale Launch Configurations
- AutoScale Groups
- EC2 Elastic IPs
- EC2 Running Instances
- Number of ELBs
- RDS Instances
- RDS Total Storages
- Number of RDS Read Replicas per Master
- DynamoDB Read Capacity Units for Individual Table
- DynamoDB Write Capacity Units for Individual Table
- DynamoDB Read Capacity Units per Account
- DynamoDB Write Capacity Units per Account
補足DynamoDBのRead/Write Capacity Unitsについて
DynamoDBのCapacity UnitsのService Limitsには2種類があって、
- 各テーブルごとの上限
- アカウント全体での上限
ってのがあります。っで、各テーブルごとの上限は、アカウント内で最も高いCapacity Unitが適用され、アカウント全体での上限ってのは(日本語がややこしくてスイマセン)すべてのテーブルのCapacity Unitの合計が適用されます。っで、Kinesis使ってる人はKinesis ClientがどこまでGetRecordsしたかとかをDynamoDBに書き込みます。なのでKinesis Streamにたくさん書いたり読んだりしてる人は要注意ですね。
APIがあるもの一覧
実は現在の上限設定を取得できるAPIはあったりなかったりします(ってかほとんどないですねw)
- AutoScale Launch Configurations
- AutoScale Groups
- EC2 Elastic IPs
- EC2 Running Instances
こいつらをマトリックスにしたのがこちらです。
Zabbix Template
Items
値としては_現在の使用量を取得できる一覧_に記載したとおりで、おんなじアイテムが取得できます。
Macros
現在の上限取得APIがないものは残念ながらMacroで指定です...(ただしMacroには初期値を埋め込んでありますので、そちらを参照していただければわかりやすいかと)
上限緩和申請を行ったらMacroを更新ってことで!
about {$TRG_AWS_SVC_THR_XXXXXX_AVG}
通常、上限の80%にあたったらアラート通知をAverageのSeverityで行うんですが、いやいやEC2 Running Interfacesだけは60%で通知が欲しいとか、逆にPublic IP使うからEIPの通知は90%でいいですみたいなときはこのMacroを上書きしてください。たとえば、{$TRG_AWS_SVC_THR_EC2_INS_AVG}=60
や{$TRG_AWS_SVC_THR_EC2_EIP_AVG}=90
みたいな感じで上書きしちゃってください。ちなみに僕が所属しているチームではDynamoDB(Kinesisを使ってる関係で)のRead/Write Capacity Unitの通知だけ60%で受け取ってます。
Graphs
各上限値をグラフのY軸の頂点として、実際の値を表示します。ぼくは普段これをScreenにして監視してたりします。
Notes
AutoScalingしてるのにScaleしないんだが!とかはだいたい上限にあたったりしてる気がします。あとEIPは意識せずに急に上限にあたったりしちゃいますよねー。。。
ELBがあたったときとかはもう目も当てられないでしょう...