株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

パブリッククラウドでのデータベース監視・モニタリング その2

峯岸です。先月投稿した記事に続きAWSの監視について投稿します。今回はOracle Databaseの表領域監視についてです。

カスタムメトリクスについて

AWSのCloudWatchメトリクスにない項目についてもカスタムメトリクスという形でCloudWatchメトリクスとして登録することが可能です。カスタムメトリクスの主な登録方法としてはPutMetricData APIを使用した登録方法があります。

PutMetricData APIはAWS CLIというコマンドラインユーティリティやAWS SDKから呼び出すことが可能ですが、今回はシェルスクリプトからも呼び出せるAWS CLIを使用して登録する方法をご紹介いたします。

監視全体の流れ

まずは、Oracle Database表領域監視の全体像を説明します。情報取得から通知までの流れを記載します(踏み台サーバにOracle ClientのインストールとAWS CLIマンドの設定が完了しているものとします)。

  1. 踏み台サーバ(EC2)からSQL*Plusを使い、対象の表領域の使用率を取得します。
  2. AWS CLIからPutMetricData APIを呼び出し、表領域の使用率情報をカスタムメトリクスとしてCloudWatchにデータを登録します。
  3. 前回お伝えした手順でCloudWatch Alarmを設定し、しきい値超過時にはAmazon SNS経由でEメール通知を行うようにします。

各項目について説明します。

①SQL*Plusでの情報取得

まず、情報取得用のSQLを作成します。踏み台サーバー上にファイルとして作成します(tablespace_usage.sqlとして作成)。

WHENEVER SQLERROR EXIT SQL.SQLCODE
WHENEVER OSERROR EXIT 1
SET PAGESIZE 0
SET LINESIZE 32767
SET ECHO OFF
SET HEADING OFF
SET TAB OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET TRIMSPOOL ON
SET NUMWIDTH 50

DEFINE ORACLE_TABLESPACE_NAME  = '&1' NOPRINT;

SELECT
    USED_PERCENT
FROM
    DBA_TABLESPACE_USAGE_METRICS
WHERE
    TABLESPACE_NAME = '&ORACLE_TABLESPACE_NAME'
;
EXIT
/

このSQLファイルを用いて以下のように実行すれば対象の表領域の使用率が取得できます。

sqlplus -s admin/<パスワード>@<データベースエンドポイント>/<データベース名> @tablespace_usage USERS

②CloudWatchへのカスタムメトリクスデータ登録

表領域の使用率が取得できたので、AWS CLIのコマンドでCloudWatchにデータ登録を行います。踏み台サーバー上から以下のように実行することで登録できます(メトリクス名にTablespaceUsageUSERS、名前空間にOracleMetricとして登録します。既存のものと重複しなければこれらの名称はユーザー側で決められるようです)。

aws cloudwatch put-metric-data \
    --metric-name TablespaceUsageUSERS \
    --namespace OracleMetric \
    --unit Percent \
    --value <①で取得した表領域使用率>

①から②の一連の処理を定期的に実行したいので、シェルスクリプトを作成し、crontabで10分おきに実行するようにします(tablespace_usage.shとして作成)。

#!/bin/bash
# Set Environment
ORACLE_USER=admin
ORACLE_PASS=*****
RDS_HOST=cosol-1.*******.ap-northeast-1.rds.amazonaws.com
DB_NAME=COSOL
SCRIPT_NAME=tablespace_usage
SCRIPT_HOME=/home/ec2-user
TBS_NAME=$1

# Set connect strings
CONNECT_STRING="${ORACLE_USER}/${ORACLE_PASS}@${RDS_HOST}/${DB_NAME} @${SCRIPT_HOME}/${SCRIPT_NAME} ${TBS_NAME}"

# Get Tablespace Usage
TBS_USAGE=$(sqlplus -s ${CONNECT_STRING})

# Put Metric Data
aws cloudwatch put-metric-data \
    --metric-name TablespaceUsage${TBS_NAME} \
    --namespace OracleMetric \
    --unit Percent \
    --value ${TBS_USAGE}

exit

crontabには以下のように登録します。

*/10 * * * * /home/ec2-user/tablespace_usage.sh USERS

これで自動でカスタムメトリクスを登録されるようになりました。弊社環境のCloudWatchでは以下のように登録されていました。

③アラームの登録とメール通知設定

アラームの登録と通知に関しては前回の投稿をご参照下さい。しきい値を超過した際に以下のようなメールを受信することが可能です。

次回は引き続きパブリッククラウドでの監視としてOracle Databaseのアラートログ監視について記載する予定です。

パブリッククラウドのデータベース構築はコーソルにお任せを!

コーソルではパブリッククラウドでも監視可能なデータベースの監視製品やモニタリングする製品を取り揃えています。運用まで見据えてデータベース全体を設計しますのでパブリッククラウド上でのデータベース構築については是非コーソルにお問い合わせください。

クラウド設計・導入サービス

クラウドベンダーの選定からクラウド上での環境構築までお客様を支援いたします。データベースに強みを持った当社が運用まで見据えた設計を行います。

クラウド設計・構築サービス

Database Performance Analyzer (DPA)

Database Performance Analyzer (DPA)は、オンプレミスとクラウド上の多くのデータベース製品に対応したデータベース性能管理製品です。低価格であるため、非常に導入しやすいです。

Database Performance Analyzer DPA

自動SQLチューニング機能を持つToad

Database Performance Analyzer (DPA)で検出された問題SQLをチューニングする際に、Toad for Oracle / Toad for SQL Serverの SQL Optimizer機能を使用できます。

リモートDBAサービス

リモートDBAサービスはDB・運用の専門家がお客様のデータベースに対して必要な時に必要な対応を行うリモート接続型運用保守サービスです。

リモートDBAサービス

時間制コンサルティングサービス

時間制コンサルティングサービスは”必要な時に” ”必要な時間だけ”契約できる時間契約型のコンサルティングサービスです。

時間制コンサルティングサービス

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ