前回に引き続き、Mackerelの設定についてみていきます。
目次
・エージェント導入
エージェントレスの状態では、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' "
#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ファイルが再作成されます。 これで再登録ができているはずです。
今回はここまで。 次回は閾値、通知の設定からみていきます。