技術ブログ
目次
峯岸です。先月投稿した記事に続きAWSの監視について投稿します。今回はOracle Databaseの表領域監視についてです。
AWSのCloudWatchメトリクスにない項目についてもカスタムメトリクスという形でCloudWatchメトリクスとして登録することが可能です。カスタムメトリクスの主な登録方法としてはPutMetricData APIを使用した登録方法があります。
PutMetricData APIはAWS CLIというコマンドラインユーティリティやAWS SDKから呼び出すことが可能ですが、今回はシェルスクリプトからも呼び出せるAWS CLIを使用して登録する方法をご紹介いたします。
まずは、Oracle Database表領域監視の全体像を説明します。情報取得から通知までの流れを記載します(踏み台サーバにOracle ClientのインストールとAWS CLIマンドの設定が完了しているものとします)。
各項目について説明します。
まず、情報取得用の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
表領域の使用率が取得できたので、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)で検出された問題SQLをチューニングする際に、Toad for Oracle / Toad for SQL Serverの SQL Optimizer機能を使用できます。
リモートDBAサービスはDB・運用の専門家がお客様のデータベースに対して必要な時に必要な対応を行うリモート接続型運用保守サービスです。
時間制コンサルティングサービスは”必要な時に” ”必要な時間だけ”契約できる時間契約型のコンサルティングサービスです。