AWS
Mackerel
ElasticsearchService

mackerelでAmazonElasticsearchServiceのメトリクス収集

More than 1 year has passed since last update.


概要

mackerelはAWSインテグレーションでAWSのいくつかのサービスのメトリクスを自動で収集してくれるのですがAmazonElasticsearchServiceは対応していないので自分でメトリクスを収集する必要があります。

プラグイン自体は既に存在しているのでそれを使えば簡単にメトリクスは収集出来るのですが、単純に何らかのインスタンスのmackerel-agentの設定に入れてしまうとそのホスト自身のメトリクスとして収集されてしまいます。

それを防ぐためmackerelのcustom_identifierの機能を使ってElasticsearchServiceをインスタンスとしてメトリクスを収集する方法をまとめました。


空のインスタンス設定作成

まず、mackerel側に空のインスタンスを作成します。

mkrを使うのが一番簡単です。mkrについてはこちら

mkr create --customIdentifier 'xxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com' 'xxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com'

APIを直接叩く方法も残しておきます。

API_KEY='XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

curl https://mackerel.io/api/v0/hosts -H "X-Api-Key: ${API_KEY}" -H "Content-Type: application/json" -X POST -d '
{
"name": "xxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com",
"meta": {
"network": {}
},
"status": "standby",
"roleFullnames": [
"<サービス>:<ロール>"
],
"customIdentifier": "xxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com"
}'


<サービス>:<ロール>は事前に作成しておく必要があります

customIdentifierとnameはElasticsearchServiceのエンドポイントのドメインを指定していますが、分かりやすいものを指定しても問題ありません。



mackerel-agentの設定

次にmackerel-agentを設定します。

プラグインはmackerel-plugin-aws-elasticsearchを使用します。


mackerel-agent.conf

[plugin.metrics.aws-elasticsearch]

command = '/usr/local/bin/mackerel-plugin-aws-elasticsearch -domain=<ElasticsearchService作成時に指定したdomain> -client-id=12345678901 -region=ap-northeast-1 -access-key-id=XXXXXXXXXXXXXXXXXXXX -secret-access-key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
custom_identifier = "xxxxxxxxxxxxx.ap-northeast-1.es.amazonaws.com"


指定するIAMに最低限必要な権限はcloudwatch:GetMetricStatisticsです。

custom_identifierには先程のcustomIdentifierと同じものを指定して下さい。


mackerel-agentを再起動してしばらくするとmackerelでメトリクスが参照出来るようになります。


参考

http://qiita.com/Hanyu/items/474dbdc4f4da87f25e1b