Oracle Cloud Observability and Management Platformを使ってみた。(DBCS編)
1章 概要
こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。
Oracle Cloud Observability and Management Platform(以下O&M)の紹介となります。O&MはOracle Cloud Infrastructure(以下OCI)上のリソースに対して用意されている様々な監視機能の総称になります。今回はOracle Database Cloud Service(以下DBCS)に対し、稼働状況を監視する死活監視、CPUやメモリなどの使用状況を監視する性能監視、イベントビューアなどログを監視するログ監視、プロセスを監視するプロセス監視について設定手順をまとめさせていただきました。
前回のWindows/Linuxインスタンスに対しての設定手順については以下の記事をご参照ください。
<Oracle Cloud Observability and Management Platformを使ってみた。(Windows編)>
<Oracle Cloud Observability and Management Platformを使ってみた。(Linux編)>
2章 前提条件
・OCIコンソールへ接続可能であること
・OCI VCNが作成済みであること
・OCIコンパートメントが作成済みであること
・接続可能なDBCSが作成済みであること。
・対象インスタンスの所属するサブネットからOracle Service Networkへ接続可能なこと。
※各章で設定している値は監視の要件に沿って適宜指定してください。
3章 死活監視
DBCSの死活監視を行う場合、Compute等で使用できる「ヘルスチェック」は使用できず、Database Managementを有効化してメトリックから監視します。まずはDatabase Managementの有効化手順を記載しますが、後続の手順でも必要になるものですので、適宜ご参照ください。
①Oracle Database>ベア・メタル、VMおよびExadataに遷移後、対象DBをクリック、画面左のリソース項目からノードを選択し、対象DBCSのIPを取得します。
②対象DBCSに任意のツールで接続します。
③下記コマンドを実行します。
sudo su – oracle
sqlplus / as sysdba
SQL> alter user DBSNMP identified by <パスワード(*1)> account unlock;
SQL> select USERNAME,ACCOUNT_STATUS from dba_users where USERNAME=’DBSNMP’;
SQL> grant create procedure to DBSNMP;
SQL> grant select any dictionary, select_catalog_role to DBSNMP;
SQL> grant alter system to DBSNMP;
SQL> grant advisor to DBSNMP;
SQL> grant execute on dbms_workload_repository to DBSNMP;
(*1)パスワードの長さは14文字から127文字であり、少なくとも1つの小文字、1つの大文字、1つの数字、および1つの特殊文字を含める必要があります。パスワード部分は””で括る必要があります。
④OCIコンソールからアイデンティティとセキュリティ > ボールトと画面遷移後、ボールトの作成をクリックし、下記の値を入力、作成をクリックします。
・コンパートメントに作成:任意
・名前:任意
⑤作成したVaultの詳細画面から「キーの作成」をクリック、暗号化キーを作成します。
⑥Vaultの詳細画面の左側の「シークレット」をクリック、設定値を入力し「シークレットの作成」をクリックしてシークレットを作成します。
※「シークレット・コンテンツ」にDBSNMPユーザのパスワードを入力後、「Base64変換の表示」を”ON”にすると、入力したパスワードが変換して表示されます。
⑦監視および管理 > 管理(データベース管理)をクリック、データベース管理画面の左側の「プライベート・エンドポイント」を選択し、「プライベート・エンドポイントの作成」をクリックします。
⑧設定値を入力、「プライベート・エンドポイントの作成」をクリックし、プライベート・エンドポイントを作成します。
⑨データベース管理画面左側の「管理対象データベース」をクリックし、「データベース管理の有効化」を選択、設定値を入力し「データベース管理の有効化」をクリックします。
⑩Oracle Database > ベア・メタル、VMおよびExadataをクリック、管理対象のデータベースの詳細画面を開き、対象DBCSの各ステータスが表示されることを確認します。
⑪監視および管理>モニタリング>アラーム定義と画面遷移後、アラームの作成をクリックし、下記を入力、作成をクリックします。
※CPU監視をする場合は以下の項目を参照してください
⑫開発者サービス>アプリケーション統合>通知に遷移後、トピックの作成をクリックし、下記項目を入力、作成をクリックします。
・名前:任意
・説明オプション:任意
⑬作成されたトピックの詳細を表示し、サブスクリプションの作成をクリック、下記項目を入力、作成をクリックします。
・プロトコル:電子メール
・電子メール:任意のアドレス
⑭監視および管理>モニタリング>アラーム定義と画面遷移後、アラームの作成をクリックし、下記を入力、作成をクリックします。
・アラーム名:任意
・アラームの重要度:任意
・アラーム本体:任意
・コンパートメント:監視対象インスタンスのあるコンパートメント
・メトリック・ネームスペース:oracle_oci_database
・メトリック名:MoniteringStatus
・間隔:任意
・統計:Mean
→メトリック・ディメンション
→ディメンション名:resourceDisplayName
→ディメンション値:作成した定義名
→集計メトリック・ストリーム:チェックをつけない
・トリガー・ルール:次と等しい
→演算子:次と等しい
・値:0
・トリガー遅延分数:1
→宛先サービス:Notifications Service
→トピック:④項番で作成したトピックを選択します。
→フォーマットされたメッセージの送信
→通知の繰り返し?(アラームが起動し続ける場合):チェックをつけない
→通知の抑制:チェックをつけない
⑮対象サーバをコンソールから停止させ、登録したアドレス宛にメールが送付されることを確認します。
4章 性能監視
DBCSのCPU使用率等のメトリックを取得する場合、Database Managementを有効化する必要があります。Database Managementには有償版と無償版が存在し、CPU、ディスク使用率のメトリックに関しては無償版で取得できますが、メモリ使用率のメトリックは有償版でしか取得できません。
①3章ヘルスチェックの③④項番を参照し、アラートを知らせる通知を作成してください。
また、3章①~⑩項番を参照し、Database Managementを有効化してください。
②監視および管理>モニタリング>アラーム定義と画面遷移後、アラームの作成をクリックし、下記を入力、作成をクリックします。
※CPU監視をする場合は以下の項目を参照してください
・アラーム名:任意
・アラームの重要度:任意
・アラーム本体:任意
・コンパートメント:監視対象インスタンスのあるコンパートメント
・メトリック・ネームスペース:oracle_oci_database
・メトリック名:CpuUtilization
・間隔:任意
・統計:Max
→メトリック・ディメンション
→ディメンション名:resourceDisplayName
→ディメンション値:対象サーバ名
・トリガー・ルール
→演算子:次より大きい
→値:50 (メモリを監視する場合、当項目を適切な数値に変更してください。)
→トリガー遅延分数:1
→宛先サービス:Notifications Service
→トピック:項番①で作成したトピックを選択します。
→フォーマットされたメッセージの送信
→通知の繰り返し?(アラームが起動し続ける場合):チェックをつけない
→通知の抑制:チェックをつけない
③任意の負荷でCPU(メモリ)の負荷を上げて通知が飛ぶことを確認します。
④再度、監視および管理>モニタリング>アラーム定義と画面遷移後、アラームの作成をクリックし、下記を入力、作成をクリックします。
・アラーム名:任意
・アラームの重要度:任意
・アラーム本体:任意
・コンパートメント:監視対象インスタンスのあるコンパートメント
・メトリック・ネームスペース:oracle_oci_database
・メトリック名:diskUsageUsed
・間隔:任意
・統計:Max
→メトリック・ディメンション
→ディメンション名:resourceDisplayName
→ディメンション値:対象サーバ名
・トリガー・ルール
→演算子:次より大きい
→値:20
→トリガー遅延分数:1
→宛先サービス:Notifications Service
→トピック:項番①で作成したトピックを選択します。
→フォーマットされたメッセージの送信
→通知の繰り返し?(アラームが起動し続ける場合):チェックをつけない
→通知の抑制:チェックをつけない
⑤アラームの作成をクリックします。
⑥任意の負荷でDisk使用率の負荷を上げて、登録したアドレスにメールが送付されることを確認します。
5章 ログ監視
ログ監視はOCI ロギングの機能を用いて行います。
通常のComputeサービスでWindowsやLinuxのサーバを構築した場合、対象インスタンスのログをOCI側で収集するために必要なエージェントは構築時に自動でインストールされます。しかし、DBCSの場合は手動でインストールする必要がありますので、そちらの手順からご紹介します。また、OCI ロギングの機能だけでは管理者へ発報させることができないため、サービスコネクタハブを用いてOCI 通知サービスと連携します。
①3章ヘルスチェックの③④項番を参照し、アラートを知らせる通知を作成してください。
②監視及び管理>ロググループに遷移後、ログ・グループの作成をクリックし、以下項目を入力します。
・名前:任意
③作成をクリックします。
④Oracle Database>ベア・メタル、VMおよびExadataに遷移後、対象DBをクリックし、画面左のリソース項目からノードをクリックします。
⑤任意のソフトで対象DBにログインし、下記コマンドでOS情報を取得後、
以下サイトから対象OSに対応したエージェントをダウンロードします。
<https://docs.oracle.com/ja-jp/iaas/Content/Logging/Concepts/agent_management.htm>
cat os-release
⑥ ⑤項番でダウンロードしたエージェントをDBCSの以下ディレクトリにコピーし、以下コマンドを実行します。
・ディレクトリ:/tmp/
・コマンド:sudo rpm -ivh /tmp/[エージェントRPMパッケージ名]
⑦OCIコンソールからアイデンティティとセキュリティ>ユーザー>ユーザー名>APIキーへ遷移します。
※APIキーを発行するため、ユーザーがいない場合、IAMユーザーを作成してください。
⑧「APIキーの追加」をクリック、「APIキー・ペアの生成」にチェックが入った状態で「秘密キーのダウンロード」で任意のフォルダにファイルをダウンロードします。
⑨「追加」をクリック、構成ファイルのプレビューが表示されるので、「コピー」をクリックしテキストデータをコピーします。
⑩新しくテキストファイルを作成し、⑨項番でコピーしたデータを張り付けてファイル名を「config」として保存、保存した「config」を開き以下の部分を修正します。
修正前:key_file= # TODO
修正後:key_file=/home/opc/.oci/[⑧項番で保存した秘密キーファイルの名前]
例:key_file=/home/opc/.oci/-03-31-02-19.pem
⑪プロファイル名を編集します。
修正前:
[DEFAULT]
修正後:
[DEFAULT]
[UNIFIED_MONITORING_AGENT]
user=ocid1.user.oc1.(~略)
“※今回用意したAPIキー情報は[UNIFIED_MONITORING_AGENT]プロファイルにて設定する。
もともと存在する[DEFAULT]プロファイルはなくてもよいが、併用する可能性もあるため残しておく。”
⑫アイデンティティとセキュリティ>グループに遷移後、グループの作成をクリック、以下の値を入力します。
・名前:任意
⑬作成をクリックします。
⑭アイデンティティとセキュリティ>⑧⑨項番でAPIキーを作成したユーザーに遷移後、ユーザーをグループに追加をクリックし、⑫.⑬で作成したグループに所属させます。
⑮アイデンティティ>ポリシーと画面遷移後、作成をクリック、以下の値を入力します。
・名前:任意
・説明:任意
・コンパートメント:任意
・ポリシー・ビルダー:Allow group [⑫.⑬で作成したグループ名] to manage all-resources in compartment [ログ監視対象が属するコンパートメント名]
※手動エディタの表示を有効にして上記を入力すること
⑯作成をクリックします。
⑰監視および管理>ロギング>ログに遷移後、カスタム・ログの作成をクリックします。
⑱以下項目を入力し、作成します。
・カスタム・ログ名:任意
・コンパートメント:項番⑮の動的グループ作成時に指定したコンパートメントを指定します。
・ログ・グループ:項番②③で作成したロググループを指定します。
⑲カスタム・ログの作成をクリックします。
⑳エージェント構成の作成で以下項目を入力し、作成します。
・エージェント構成の作成:「新規構成の作成」を選択します。
・構成名:任意
・説明:任意
・ホストグループ
→グループ・タイプ:「動的グループ」を選択します。
→グループ:項番②③で作成した動的グループを指定します。
・ログ入力の構成
→入力タイプ:「ログ・パス」を選択します。
→名前の入力:任意の名前を入力します。
→イベント・チャネル:ファイル・パス項目を入力します。例 /var/log/httpd/error_log
→ログの保存先の選択:項番④⑤で作成されたロググループが指定されていることを確認します。
㉑カスタム・ログの作成をクリックします。
㉒サービス検索バーでサービス・コネクタ・ハブを検索、管理コンソールに遷移後、サービス・コネクタの作成をクリックし、以下項目を入力します。
・コネクタ名:任意
・説明:任意
・リソース・コンパートメント:項番②③の動的グループ作成時に指定したコンパートメントを指定します。
・サービス・コネクタの構成
・ソース:「ロギング」を選択します。
・ターゲット:「通知」を選択します。
㉓ソース接続の構成で「拡張モードに切り替え」をクリックし、以下の通り入力します。
search “[コンパートメントのOCID]/[ロググループのOCID]/[ログのOCID]“
ログ・フィルタ・タスク:”メール通知をする条件をしたい場合は、問い合わせコード・エディタ内に条件式を記載します。”
例:
search “[コンパートメントのOCID]/[ロググループのOCID]/[ログのOCID] “ | level = ‘ERROR’
・ファンクション・タスクの構成:指定なし。
・ターゲット接続の構成:項番①で作成した通知を選択します。
㉔作成をクリックします。
㉕指定したログを出力し、登録したアドレスにメールが送付されることを確認します。
6章プロセス監視
プロセス監視はOCI モニタリングサービスに対してOS上からCLIやAPIを用いて独自のカスタムメトリックを公開することで行います。
本手順ではOS上にPythonスクリプトを作成し、取得したOSのプロセス情報をOCIへアップロードしています。
①3章ヘルスチェックの③④項番を参照し、アラートを知らせる通知を作成してください。
②OCIコンソールのアイデンティティとセキュリティ>ユーザー>APIキーへ遷移後、「APIキーの追加」をクリック、「APIキー・ペアの生成」にチェックが入った状態で「秘密キーのダウンロード」で任意のフォルダにファイルをダウンロードします。
③「追加」をクリック、構成ファイルのプレビューが表示されるので、「コピー」をクリックしテキストデータをコピーします。
※APIキーを発行するため、ユーザーがいない場合、IAMユーザーを作成してください。
④新しくテキストファイルを作成し、項番③でコピーしたデータを張り付けてファイル名を「config」として保存します。
⑤「config」を開き以下の部分を修正します。
前:key_file= # TODO
後:key_file=/home/opc/.oci/[④で保存した秘密キーファイルの名前]
例:key_file=/home/opc/.oci/-03-31-02-19.pem
⑥「config」ファイルの中身のプロファイル名を編集します。
前:[DEFAULT]
後:[UNIFIED_MONITORING_AGENT]
※もともと存在する[DEFAULT]プロファイルはなくてもいいですが、画像では残しています。
⑦新しくテキストファイルを作成し、ファイル名を「CustomMetric_osprocess_httpd.py」にし、対象インスタンスのリージョンに合わせて、OCIリージョンのエンドポイントを確認します。
※確認サイト:https://docs.oracle.com/en-us/iaas/api/#/en/monitoring/20180401/
※東京リージョンの場合は「https://telemetry-ingestion.ap-tokyo-1.oraclecloud.com」
⑧アイデンティティとセキュリティ>コンパートメントに遷移後、対象コンパートメントをクリックし、対象サーバの所属する対象コンパートメントIDを取得します。
⑨ ⑦項番で作成した「CustomMetric_osprocess_httpd.py」に以下のサンプルコードの[エンドポイント]と[コンパートメントID]を⑦⑧項番で取得した値と置き換えます。([]不要)
import oci,psutil,datetime
from pytz import timezone
from oci.config import from_file
config = from_file()
monitoring_client = oci.monitoring.MonitoringClient(config,service_endpoint=”[エンドポイント]“)
existvalue = 0
for proc in psutil.process_iter():
try:
if “httpd” in proc.exe():
existvalue = 1
except psutil.AccessDenied:
pass
dt_now = datetime.datetime.now(timezone(‘UTC’))
post_metric_data_response = monitoring_client.post_metric_data(
post_metric_data_details=oci.monitoring.models.PostMetricDataDetails(
metric_data=[
oci.monitoring.models.MetricDataDetails(
namespace=”osprocessdbcs”,
compartment_id=”[コンパートメントID]“,
name=”processdbcs”,
dimensions={
‘serverid’: ‘testsrvdbcs’},
datapoints=[
oci.monitoring.models.Datapoint(
timestamp=datetime.datetime.strftime(
dt_now,”%Y-%m-%dT%H:%M:%S.%fZ”),
value=existvalue)]
)]
)
)
print(existvalue)
⑩対象DBCSにログイン、下記コマンドを実施します。
sudo su
wget https://bootstrap.pypa.io/get-pip.py
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
pip install –upgrade pip setuptools
exit
pip install -U oci
pip install -U psutil
⑪下記コマンドを実行します。
sudo mkdir /home/opc/.oci
⑫ ②④⑨項番で作成した3つのファイルを下記フォルダに配置します。(秘密キーファイル、構成ファイル、Pythonファイル)
/home/opc/.oci
⑬下記コマンドを実行します。指定した対象プロセスが起動していれば「1」、起動していなければ「0」が表示されることを確認してください。
⑮OCIコンソールから監視および管理>モニタリング>アラーム定義と画面遷移後、アラームの作成をクリック、以下項目を入力し、「作成」をクリックします。
・アラーム名:任意
・アラームの重要度:任意
・アラーム本体:任意
・コンパートメント:監視対象インスタンスのあるコンパートメント
・メトリック・ネームスペース:osprocessdbcs
・メトリック名:processdbcs
・間隔:任意
・統計:Mean
→メトリック・ディメンション
→ディメンション名:serverid
→ディメンション値:testsrvdbcs
・トリガー・ルール
→演算子:次と等しい
→値:0
→トリガー遅延分数:1
→宛先サービス:Notifications Service
→トピック:項番①で作成したトピックを選択します。
→フォーマットされたメッセージの送信
→通知の繰り返し?(アラームが起動し続ける場合):チェックをつけない
→通知の抑制:チェックをつけない
⑯作成をクリックします。
⑰監視及び管理>モニタリング>メトリック・エクスプローラと画面遷移後、「問合せ1」で以下の通り設定し、「チャートの更新」をクリックします。
・メトリック・ネームスペース:osprocessdbcs
・メトリック名:processdbcs
・ディメンション名:serverid
・ディメンション値:testsrvdbcs
⑱OCIコンソール上で対象プロセスが監視できることを確認してください。
⑲指定したプロセスを停止させ、登録したアドレスにメールが送付されることを確認します。
7章最後に
いかがだったでしょうか。今回はO&Mの機能を使ってDBCSのCPUなどの基本的な部分から、プロセスという深い部分まで監視し、通知できるようにしてみました。DBCSに任意のソフトをインストールし、ソフトが起動しているかOCIコンソールで監視できるのでぜひ活用していただけたら嬉しいです。
<免責事項>
情報の掲載には注意を払っておりますが、掲載された情報の内容の正確性については一切保証しません。また、当サイトに掲載された情報を利用・使用(閲覧、投稿、外部での再利用など全てを含む)するなどの行為に関連して生じたあらゆる損害等につきましても、理由の如何に関わらず自己責任で行う必要があります。