LoginSignup
6
9

More than 5 years have passed since last update.

Amazon RDS の拡張モニタリング情報を Munin で可視化する

Posted at

はじめに

先日 Amazon RDS で OS の詳細情報を取得できるようになったので、Munin に表示してみました。

概要

Amazon RDS に追加された拡張モニタリング機能により、RDS インスタンスの OS リソース情報が CloudWatch Logs に出力されるようになりました。
今回は CloudWatch Logs のメトリックフィルタを使用して、ロードアベレージを CloudWatch メトリックに変換、Munin でグラフ化してみます。

やってみた

Amazon RDS インスタンスの拡張モニタリングを有効化

拡張モニタリングの有効化は、クラスメソッドさんのブログ記事 [新機能]Amazon RDSでOSの詳細情報を取得できるようになりました! に手順と設定例があります。

CloudWatch Logs の画面でメトリックフィルタを作成

1-1.png

Create Metric Filter ボタンをクリック。

Define Logs Metric Filter 画面で Filter Pattern を指定

1-2.png

今回は Filter Pattern にインスタンス ID と LoadAverage 5分間の平均値をチェックするように設定します。

Filter Pattern
{ $.instanceID = "インスタンスID" && $.loadAverageMinute.five >= 0.00 }

Test Pattern ボタンで Filter をテストしたら、Assign Metric ボタンをクリック。

Create Metric Filter and Assign a Metric 画面で Filter Name と Metric の詳細を設定

1-3.png

Metric の詳細を次のように設定、Create Filter ボタンをクリック。

  • Metric Namespace: RDSOSMetrics
  • Metric Name: インスタンスID_LoadAverage
  • Metric Value: $.loadAverageMinute.five

Metric Filter が作成されました。
1-4.png

Metrics の Custom Metrics から「RDSOSMetrics」を選択すると、作成した Metric が表示されます。
1-5.png

Munin のプラグインを作成

CloudWatch Metrics から情報を取得するプラグインを作成します。

CloudWatch Metrics からの Munin プラグイン作成は、AWSCLI を使って ELB のトラフィックを munin でグラフ化 を参考にさせていただきました。

Metric Filter を RDS インスタンス数分作成して、RDS_NAMES に記述すると1つのグラフにまとめることができます。

/usr/share/munin/plugins/rds_load
#!/bin/bash

AWS="/usr/bin/aws --region ap-northeast-1"
NAMESPACE="RDSOSMetrics"
METRIC="LoadAverage"
RDS_NAMES=("test-db1" "test-db2")

if [ "$1" = "autoconf" ]; then
    echo yes
    exit 0
fi

if [ "$1" = "config" ]; then
    echo "graph_title Amazon RDS ${METRIC} "
    echo "graph_args --base 1000 -l 0"
    echo "graph_vlabel amazon rds ${METRIC}"
    echo "graph_scale no"
    echo "graph_category aws-rds"
    echo "graph_info amazon rds ${METRIC}"

    for RDS_NAME in "${RDS_NAMES[@]}"
    do
        echo "${RDS_NAME}_${METRIC}.label ${RDS_NAME}_${METRIC}"
        echo "${RDS_NAME}_${METRIC}.info ${RDS_NAME}_${METRIC}"
        echo "${RDS_NAME}_${METRIC}.type GAUGE"
        echo "${RDS_NAME}_${METRIC}.draw LINE"
    done
    exit 0
fi

for RDS_NAME in "${RDS_NAMES[@]}"
do
    retval=`${AWS} cloudwatch get-metric-statistics \
        --namespace ${NAMESPACE} \
        --metric-name "${RDS_NAME}_${METRIC}" \
        --period 60 \
        --start-time $(date --iso-8601=seconds --date '24 hour ago') \
        --end-time   $(date --iso-8601=seconds) \
        --statistics "Average" | /usr/local/bin/jq -r '.Datapoints | sort_by(.Timestamp) | reverse | .[0]'`

    count=`echo "${retval}" | /usr/local/bin/jq -r '.Average'`
    echo "${RDS_NAME}_${METRIC}.value ${count}"
done

exit 0

プラグインを作成したら plugins ディレクトリにシンボリックリンクを作成、munin-node を再起動します。

# cd /etc/munin/plugins
# ln -s /usr/share/munin/plugins/rds_load rds_load
# /etc/init.d/munin-node restart

Munin で表示確認

1-6.png

無事 Munin でグラフ化できました!

まとめ

RDS インスタンスのロードアベレージを Munin で監視できるようになりました。
他のメトリクスも Munin でどんどんグラフ化しましょう!

参考資料

[新機能] Amazon RDS で OS の詳細情報を取得できるようになりました!
ログファイルのモニタリング
AWS-CLI を使って ELB のトラフィックを munin でグラフ化

6
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
9