概要
OCIリソースの監視(OCIモニタリング)はMonitoring Query Language (MQL)を利用することによって高度な監視条件を設定することが可能です。
ここではグルーピングを使用したメトリッククエリーのサンプルです。
監視方法の基本的な操作はこちらを参照ください。
モニタリング機能でOCIのリソースを監視する
監視条件を設定する問合せコード・エディタはアラームの作成時に画面右上の"拡張モードに切替え"リンクで表示することができます。
メトリッククエリー サンプル
VM死活監視
VMの死活監視はVMエージェントからのメトリック送信が止まったことをトリガーにアラーム起動が可能です。
不在アラームの作成のガイドに合わせてgroupBy(x)を使用してアラーム定義を作成します。
groupBy(x)を使う理由:
VMエージェントは変更があった場合、新しいメトリックストリームで通知されることがあります。
この場合、変更前の古いメトリックストリームからはメトリック送信が止まり、新しいメトリックストリームでメトリック送信が始まるため
OCI側は古いメトリックストリームからのメトリック停止をトリガーにアラーム起動を行う場合があります。
不在アラームは2時間で停止しますが、groupBy(x)によって古いメトリックストリームと新しいメトリックストリームをグループ化するとグループに対して不在アラームを評価するため不要なアラーム起動を防ぐことができます。
メトリック・ネームスペースoci_computeagentを選択して監視要件に合わせて問合せコード・エディタに以下を設定します。
-
特定VMに対して5分ごとに死活監視
CpuUtilization[5m]{resourceId = "【VM OCID ocid1.instance.oc1.****.*****】"}.groupBy(resourceId).absent() -
コンパートメント内の複数VMに対して5分ごとに死活監視
CpuUtilization[5m].groupBy(resourceId).absent() -
VM名がprodから始まる複数VMに対して5分ごとに死活監視
CpuUtilization[5m]{resourceDisplayName =~ "prod*"}.groupBy(resourceId).absent()
IPSecVPN監視
IPSecVPNはCPEに対し2本のIPSecトンネルを張ります。
片方がDownしても通信は可能なので、例えば業務影響に合わせて通知先を変えたい場合が想定されます。
- 片方IPSecトンネルDown, 業務影響なし:警告アラートを開発チームのみ通知
- 両方IPSecトンネルDown, 業務影響あり:クリティカルアラートを一次窓口と開発チームに通知
この場合、grouping()を使用することによって、2本のIPSecステータスを正常(2), 片方Down(1), 両方Down(0)と表現することが可能です。
メトリック・ネームスペースoci_vpnを選択して監視要件に合わせて問合せコード・エディタに以下を設定します。
-
片方IPSecトンネルDownを1分ごとに監視
TunnelState[1m]{parentResourceId = "【IPSec VPN OCID ocid1.ipsecconnection.oc1.****.*****】"}.grouping().sum() == 1 -
両方IPSecトンネルDownを1分ごとに監視
TunnelState[1m]{parentResourceId = "【IPSec VPN OCID ocid1.ipsecconnection.oc1.****.*****】"}.grouping().sum() == 0
Healthchecksを使用したURL監視
OCI上のサーバーは外部のAWS,AzureやGCP(以後バンテージポイント)からURL監視が可能です。
定期的にバンテージポイントからURLアクセスした結果はメトリック・ネームスペースoci_healthchecksのメトリックとして保存されます。そしてこのメトリックを使用して監視設定が可能です。
ヘルス・チェック操作は以下を参照して下さい。
ヘルス・チェックの管理
バンテージポイントは複数設定できますがすべて疎通できなくなったときのみアラートを設定することがgroup()を使用することによって可能です。
grouping()を使用することによって、例えば2か所のバンテージポイントから監視する場合、2か所とも正常(2), 片方のみ正常(1), 両方異常(0)と表現することができます。
メトリック・ネームスペースoci_healthchecksを選択して監視要件に合わせて問合せコード・エディタに以下を設定します。
- 複数バンテージポイントからのURL監視結果を5分ごとに監視
HTTP.isHealthy[5m]{resourceId = 【OCIヘルスチェックOCID ocid1.httpmonitor.oc1..*****】}.grouping().sum() == 0