MackerelをAWS環境で試してみた~その②~

前回に引き続き、Mackerelの設定についてみていきます。

目次

  • サインアップ
  • IAMロール作成
  • ロールARN登録
  • タグ設定
  • エージェント導入 ⇐ いまここ
  • 公式プラグインの使用
  • 閾値、通知設定
  • カスタムプラグインの使用

・エージェント導入

エージェントレスの状態では、CloudWatchで取得できるメトリックですが
エージェントを導入すればより詳細な情報が取得できます。
導入はコマンドからサクッと行えます。
その前にAPIキーをMackerel管理画面のトップ-"APIキー"を選択し確認しておきます。
確認後、AWS Linuxへ接続し以下を実行していきます。

リポジトリにMackerelを追加。

curl -fsSL https://mackerel.io/file/script/amznlinux/setup-yum.sh | sh

続いてインストール

sudo yum install -y mackerel-agent 

 

APIキーの登録 

sudo mackerel-agent init -apikey="APIキー"

最後にエージェントを起動します

sudo /sbin/service mackerel-agent start

 

詳細データが取得できるようになりました。

 

 

・公式プラグインの使用

RDSなどエージェントを導入できないリソースの場合、EC2経由で取得します。
先ずはプラグインをインストール。エージェントレスの状態では、CloudWatchで取得できるメトリックですが
エージェントを導入すればより詳細な情報が取得できます。
導入はコマンドからサクッと行えます。

yum install mackerel-agent-plugins

続いてエージェント設定ファイル(/etc/mackerel-agent/mackerel-agent.conf)を編集します。

①RDS用プラグイン

#Plugin for Amazon RDS
[plugin.metrics.aws-rds]
command = "/usr/local/bin/mackerel-plugin-aws-rds -identifier='DBインスタンス' -engine='mysql' "

 

MySQLプラグイン

#Plugin for MySQL
[plugin.metrics.mysql]
command = "/usr/local/bin/mackerel-plugin-mysql -host='RDSエンドポイント' -port=3306 -username='ユーザ名' -password='パスワード'"

 

最後にエージェントを再起動します。

sudo /sbin/service mackerel-agent restart

この段階ではまだデータ取得できていないはずです。
EC2経由でデータ取得する為、インスタンスにIAMロールを割り当てる必要があります。
"CloudWatchReadOnlyAccess"ポリシーを割り当てたロールを作成し、

EC2へ適用します。

取得できたでしょうか?

そうです、このままだと経由するEC2のデータと同じ階層にグラフが表示されてしまいます。
別のホストとして表示させたい場合、
エージェント設定ファイルに"custom_identifier"の定義を追加します。
その前に、新たにホストの登録を行います。
EC2から以下のPythonスクリプトを実行。(GUIからは空のホストを作成できないようです)
APIキーはエージェント導入時と同一のもの、hostinfoの値は任意で指定します。  

import requests #POSTリクエストを送信する
import json #POST入力をJSON形式で行う

url = 'https://mackerel.io/api/v0/hosts'
api = 'APIキー'

headers = {'X-API-KEY' : api}
headers['Content-Type'] = "application/json"

hostinfo = {
  "name": "ip-172-31-2-244",
  "meta": {
    "agent-name": "",
    "agent-revision": "",
    "agent-version": "",
    "block_device": "",
    "cloud": "",
    "cpu": "",
    "filesystem": "",
    "kernel": "",
    "memory": ""
},
  "customIdentifier": "Custom"
}

r = requests.post(url, data=json.dumps(hostinfo), headers=headers)

print(r)
print(r.text)

レスポンスコード200と、ホストIDが表示されればOKです。
その後、
エージェント設定ファイル(/etc/mackerel-agent/mackerel-agent.conf)を修正します。

 

①RDS用プラグイン(ホスト登録時に指定したcustom_identifierを追加)

#Plugin for Amazon RDS
[plugin.metrics.aws-rds]
command = "/usr/local/bin/mackerel-plugin-aws-rds -identifier='DBインスタンス' -engine='mysql' "
custom_identifier = "Custom" #この行を追加

 

MySQLプラグイン(ホスト登録時に指定したcustom_identifierを追加)

#Plugin for MySQL
[plugin.metrics.mysql]
command = "/usr/local/bin/mackerel-plugin-mysql -host='RDSエンドポイント' -port=3306 -username='ユーザ名' -password='パスワード'"
custom_identifier = "Custom" #この行を追加

 

mackerel-agentのサービスを再起動し、管理画面を確認します。
新たに登録したホストのデータとして、グラフが表示されたでしょうか?

 

新たに表示はされるが、EC2のホストデータの方に
RDSのデータが表示されたままになっているかと思います。

そんな時は、対象のホストを退役させ、再度登録します。

先ず、対象のホスト横の歯車ボタンをクリック。

 

 

ホストの設定ページ右下の「このホストを退役させる」をクリックします。

 

 

ホスト退役後、サービスを再起動するだけでは、再登録されません。
ホストIDをリセットする必要があるようです。
EC2に接続し、下記のコマンドを実行していきます。

 

mackerel-agentサービスの停止

sudo service mackerel-agent stop

 

ID情報を/tmpへ退避

cd /var/lib/mackerel-agent
mv ./id /tmp

mackerel-agentサービスを起動

sudo service mackerel-agent start

 

暫くすると、移動元のディレクトリにidファイルが再作成されます。 これで再登録ができているはずです。

 

今回はここまで。
次回は閾値、通知の設定からみていきます。

 

 

 

アプリケーション開発バナー