OCIで提供されるリソース管理及び監視機能を簡単にご紹介 -- Oracle Cloud Observability and Management Platform（O&M）

# はじめに
OCIがマネージドサービスとして提供しているOracle Cloud Observability and Management（O&M）について各サービスの概要をユースケースに沿ってご紹介していきたいと思います。

OCLSのフィジビリティスタディなどを通してお客様のToBe構成を考える際、
リソース監視S/Wは現行踏襲を選択されるお客様が多い中、、
それ、OCIでも機能提供してます。こんな機能あります。PaaSなので管理サーバ/メンテナスいりません。便利です。

という思いを込めて記事にします。

※OCLS：Oracle Cloud Lift Services

個人的にはO&MはOCIで提供されるComputeやNWを始めDBやAPサーバまでの監視をカバーしておりOCIのサービスと親和性が高く、
割とすぐにシステム管理が実装できてしまうこのサービス、OCIの中でも好きなサービスです。


* Speaker Deckの資料はこちら
[【OracleCodeNight#13】OCI運用監視入門](https://speakerdeck.com/oracle4engineer/oraclecodenight-number-13-ociyun-yong-jian-shi-ru-men)

上記の公開情報をベースにしておりますので、
Speaker Deckの内容と重複箇所多数ですm(__)m

※本記事はOracle Cloud Infrastructure Advent Calendar 2022の14日目の記事です。
https://qiita.com/advent-calendar/2022/oci

<!-- 各チャプター -->

<a id="#Chapter1"></a>
#  Observability and Management Platform Over View

O&Mは全部で12個のサービスにより構成されています。
本記事ではO&MサービスとPlatformサービスの一部をご紹介させていただきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/69e89850-5f10-9eb6-9aa6-486bfc21121e.png)

<a id="#Chapter3"></a>
# 目次

Observability and Management サービス

| サービス名 | 機能の概要 
|:-:|:-:|
| Logging  | 監査ログやネットワーク、ストレージ・ログなどのOCIサービスに関するログ管理  |   
|  Logging Analytics | 様々な種類のログを集約し、機械学習を用いた高度な分析とビジュアライズ |   
|  Service Connector Hub | OCI上のログを別のサービスに転送するサービス連携基盤  |   
| Application Performance Monitoring  | Javaアプリケーションやマイクロサービスののパフォーマンス分析  |   |
| Database Management  |  オンプレミス、クラウドのOracle DBのリソース監視、パフォーマンス分析 |   
|  Operations Insights | OSやDBのキャパシティプランニングやリソースの需要予測  |   


Platform　サービス

| サービス名 | 機能の概要 | 
|:-:|:-:|
| Monitoring  | コンピュート、ネットワークなど各OCIリソースの状態を監視するメトリックを管理  |  
| Notifications  | メール、SMS、Slack等のアラートメッセージを発信  |   
| Events  | クラウド上のリソースの変化を捉え、検知した内容に応じたアクションの実行  |   
| Functions  | インフラストラクチャを必要としないサーバーレスなアプリケーション実行環境  |   


<a id="#Chapter2"></a>
# 前提
O&MはOCIコンソール上で機能が完結するものもありますが、より効率的に拡張して利用するためにはクラウドエージェント、もしくは管理エージェントの利用が必要になります。
尚、OCI Computeのプラットフォームイメージを利用する場合はエージェントがプリインストールされていますので事前作業無しですぐO&Mをフル利用することができます。

※エージェントの導入が必要な場合は以下のドキュメントをご参照ください。
https://docs.oracle.com/ja-jp/iaas/management-agents/doc/install-management-agent-chapter.html



<a id="#Chapter3"></a>
# O&Mサービス  その①-Logging

このサービスは監査ログやネットワーク、ストレージ・ログなどのOCIサービスに関するログ管理機能を提供します。

OCI内のログ出力を管理し、ログの簡易的な分析と連携管理を提供しています。
基本機能として3種類のログに対応しています。

<dl>
  <dt>監査ログ</dt>
  <dd>OCIコンソールやAPIの操作ログ（デフォルトで有効）</dd>
  <dt>サービス・ログ</dt>
  <dd>VCN Flow Logs, Load Balancers, Object Storage, FunctionsなどのOCIサービスを利用時に発生するログ</dd>
  <dt>カスタム・ログ</dt>
  <dd>OSやミドルウェア、データベースなどのOSシステム内で管理されるログ </dd>
  <dd>→OCIのAgentがログを収集し転送することでカスタムログとして管理できます。 </dd>
</dl>

その他特徴として

- Loggingサービスに取り込んだ監査ログは最大で365日分となります。
- サービス/カスタムログは最大で6カ月分保持できます。
- 保持期間以上保管したい場合は、Logging AnalyticsやObject StorageにService Connector Hubでログを転送してしまえばOKです！
- 細かいログの分析やレポーティングを行いたい場合は、分析が得意なLogging Analyticsに集約すると効率的に分析できます！

ユースケース例）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/0623922b-2c18-1421-700c-9c1eea80c56f.png">

また、Loggingの便利な特徴としてjsonファイルで出力されるログを見やすくビジュアライズしてくれており、かつ簡単にフィルタリング/検索できるようデフォルト機能が提供されいます。

OCI監査ログイメージ）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/ec390844-a5be-16a0-58f9-7a8d1d73900f.png)

これを、すっきりビジュアライズ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/fd0b0cc7-b62d-eedf-dee7-15d0923af218.png)


以上、Loggingでした。
公式ドキュメントは以下です。細かい情報の確認はドキュメントからお願いいたします。


<a id="#Chapter4"></a>
# O&Mサービス その②-Logging Analytics
機械学習のテクノロジーも活用できるOCIマネージドな高度なログ分析・サービス基盤です。

管理エージェントやService Connector Hubを通して様々なログの取り込みが可能です。
もちろんSplunkに代表されるハイブリット/マルチクラウドのログ管理構成も実装可能です。

イメージ）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2e354d9a-eb09-c933-c240-64caec57e670.png">

Logging Analyticsの特徴は以下の通りです。
 - 200種類以上のログに対応した事前定義済みパーサーが用意されています。
 - OCIやオンプレミスにある様々なOSやミドルウェアのログに対応しログの取り込みからビジュアライズまでをサポートしています。
 - ユーザー独自のアプリケーションや未サポートのログに対応するためのカスタム・パーサを簡単に手動作成できます。

便利な機能を2つご紹介します。

クラスタ分析

異常値の検出、クラスタ分析、トレンド分析など、誰でも簡単にログを見やすくビジュアライズし、高度な分析を実現してくれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4568a699-34b4-84ea-f960-20a600765890.png)

ダッシュボード

様々な観点からログ分析結果を集約したダッシュボード作成機能がデフォルトで提供されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/95670f96-53c5-3cb0-7e0d-7b992299341e.png)

他にも
ログデータに応じたアラート通知が実装できたり。
Service Connector Hub経由でLoggingのログを受信しOCIの各サービスやセキュリティ・ネットワーク関連のログを集約できたり。
監視対象ホストにインストールされた管理エージェントは、OSやミドルウェア等のシステムログを自動的にアップロードできたり。

などなど機能は盛りだくさんです。

また、Logging Analyticsはログ保管に特化した安価なStorage（Archive Storage）も用意されているので
分析用のActive Storageと保管用のArchive Storageを使い分けて利用することでコストの最適化が可能です。
用途に合わせてご利用ください！



<a id="#Chapter5"></a>
# O&Mサービス その③-Service Connector Hub
OCIのログを別のサービスに転送するサービス連携基盤です。

イメージ）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/022f5261-b74a-0db6-76f9-893330ef545a.png">


例えばLoggingのログ、Streamingのメッセージ、Monitoringのメトリック値をサービス間で連携させるサービス・バス・プラットフォームの機能を提供します。

平たく言うと、OCIコンソールの画面ポチポチでOCIのサービスで出力されるログを長期保管用のObjectStorageに自動的に移動させる設定を行ったり、Logging Analyticsに転送してログ監視/分析したり。。のような操作が簡単に実装できます。

特徴は以下の3点です。
- GUIベースで簡単にSource/Target間のデータ移動を定義可能
- フィルタによる転送データの制御
- 典型的なデータ連携の例

ユースケース）
 - ログ・データをオブジェクトストレージにアーカイブする
 - ログ・データをMonitoringと連携し、しきい値によるアラーム発報
 - ログ・データをFunctionsと連携し、データベースに格納
 - ログ・データをLogging Analyticsと連携し、高度な分析とビジュアライズ
 - ストリーミング・メッセージを起点にしたイベント駆動型アプリケーション他社サービス連携例
　 - OCI Logging Addonを利用したSplunk連携 
　　Logging --> Service Connector Hub --> Streaming  <-- Splunk
 　- Functionsを利用したDATADOG連携
　　Logging --> Service Connector Hub --> Functions --> DATADOG


画面イメージです。
Logging　→　Logging Analyticsへログを転送する例になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f128fde2-4005-a801-f97f-99e1c1309182.png)

転送時のメトリック監視も提供されていますので、
ターゲットの情報の鮮度がすぐわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3c57f4b7-3586-457c-2b16-15e9fa34b42c.png)


<a id="#Chapter4"></a>
# O&Mサービス その④-Application Performance Monitoring
Javaアプリケーションやマイクロサービスのパフォーマンス分析の機能を提供するサービスです。

イメージ）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/9559d0ff-bf1c-253b-50ef-ac8fab61e0e2.png">

アプリケーションのパフォーマンスを可視化し、根本的な問題や原因を分析して解決をサポートしてくれます。
サーバー視点、ユーザー視点からの分析が可能です。

機能①　分散トレーシング
・トレースデータに基づいてアプリケーションのどの箇所が、または、サービス間連携でどのサービスがボトルネックなのかを可視化
・ OpenTracing, OpenTelemetry互換

機能②　Javaアプリケーション実行環境の監視
・サポートされるのはWebLogic, Tomcat, TomEE, Spring Bootの4つ
・ブラウザ・エージェントにより、実際のユーザーのブラウザ操作を記録しページ・ロードやパフォーマンスを監視
・アプリケーションやAPIのエンドポイントに対して定常的にリクエストを実行し、死活監視及びパフォーマンス監視を実行
・デフォルトで定義済みのダッシュボードよる迅速かつ、効率的なモニタリング


アプリケーションのトランザクションをSPANの単位で可視化するトレース・エクスプローラーのイメージです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/0a96450f-8c25-c8b8-20e8-be23228fd8cd.png)

以下が画面イメージで
アプリケーション・サーバーのヒープおよびCPUメトリックに関する情報などが収集できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/36e0da88-34ff-e52b-c107-86e0d7c628db.png)


<a id="#Chapter4"></a>
# O&M サービス その⑤-Database Management
オンプレミス、クラウドのOracle DBのリソース監視、パフォーマンス分析を提供するサービスです。
オンプレミスやクラウド上にあるOracle Databaseの稼働状況を一元的に管理する統合ビューを提供します。

別サービスのEnterprise Managerと同等の機能がありますので
ケースに応じてサービスをご選択ください！

※EMはOCIのマーケットプレイスで提供されます。

イメージ）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/953cedb7-5666-e823-d928-70f4dc734e7d.png">

Database Managementは2つのエディションがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/1408dc35-33ce-6e5c-9833-74e429fdc127.png)



Basic Management
- CPU、メモリ、I/O、表領域などのリソース使用率
- ASH分析
- リアルタイムSQLモニタリング

監視可能データベース：
 - BaseDB, ExaDB-D


Full Management
- フリートサマリ
- AWRエクスプローラーによるパフォーマンスデータの視覚化
- チューニング・アドバイザによるSQLパフォーマンス改善
- SQLジョブのスケジュール実行管理
- 多角的なパフォーマンス分析
- ASH分析、実行計画、ブロッキングセッション検出
- ユーザーやデータベース・パラメータの監視

監視可能データベース：
 - BaseDB, ExaDB-D, Autonomous DB, Oracle DB on IaaS
 - On-premise Oracle DB, Exadata　 

対象のDBバージョン：
- Oracle Database 11.2.0.4以上 (SEの場合は一部機能制限があります)

フリート・サマリー

管理下にある全てのDBのステータスを一目で確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/8a6c1360-a599-1fd3-8f31-1167cc7b5648.png)

フリート・サマリーは、 オンプレミス、クラウド上で管理しているデータベース全体の稼働状況や、アラート等の問題を表示してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4693368a-cd6e-26b5-87ec-124cbc504c35.png)

さらに個々のデータベースのCPU,メモリ,I/O等のリソース、表領域使用率など状態を表示可能です。

リアルタイムSQLモニタリング

データベースで実行されている全てのSQLの詳細、パフォーマンスを可視化してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/aa431a8f-ddd5-26e1-447b-33123e1f39ef.png)
大量のリソースを消費する長時間実行SQLやパラレルSQLに起因する実行時のパフォーマンス問題などを効果的に特定することで
SQLに対して最適なチューニング戦略の策定を支援してくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/57de9430-e3a3-a665-e220-66cab9cfdb08.png)

統計情報は、経過時間、CPU時間、読取りと書込みの回数、I/O待機時間、その他の各種待機時間などの主要なパフォーマンス指標ごとに、実行計画の各ステップで追跡できます。

SQLチューニング・アドバイザ

パフォーマンスが遅いSQLを特定し改善方法をアドバイスしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/8d876c35-413c-0805-b78f-adc863fb20f6.png)

チューニングアドバイザはASH（Active Session History）からチューニング対象のSQLを選択し実行されます。
データベースの自動メンテナンス・タスクを有効化すれば夜間のメンテナンス・ウィンドウ期間にSQLチューニングアドバイザが自動実行されます。
※対象のデータベースはEE 12.2以上が必要です。

AWRエクスプローラ
SQL文を直接実行せずに、画面UI上からAWRレポート情報を取得、及び表に可視化してくれる機能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/ca09bde9-2251-a5dd-9563-080922354342.png)


<a id="#Chapter4"></a>
# O&M  サービス その⑥-Operations Insights
OSやDBのキャパシティプランニングやリソースの需要予測を支援してくれます。
OCIでの運用プランの手助けサービスです。
将来的なリソース不足や逆に過剰なリソースがある場合の判断基準を提供します。


イメージ）
<img width="300" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/a98753ea-39f0-1923-98c3-a4ec8e0340da.png">

最大25カ月間のホスト及びデータベースのCPUやメモリといったリソースの使用率を長期記録し、保存データに基づいた利用状況のトレンド分析から今後必要となるリソースを予測するキャパシティ・プランニング！

また、SQLウェアハウスによるパフォーマンス分析も可能で
 - レスポンスが低下しているSQL、変動率が高いSQL
 - CPUやI/O使用率が高いSQL
 - 非効率な待機時間を要しているSQL
などもレポートします。

さらに、俯瞰的に全体リソースを把握し、ITコストのプラニングに活用可能です。
対象となるターゲット
 - Autonomous Database
 - Database Cloud Service(19c以上)
 - Exadata Cloud at Customer (EM13cR5で監視されている)
 - オンプレミスのOracleデータベース(11.2.04以上)
 -  管理エージェントがデプロイされている Linuxホストまたは、EM13cR5でモニターされているホスト

全ホストのリソースの使用状況をトータルで分析し、今後の使用率を予測するフォーキャスティング！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/66bfc9c6-3c22-2846-ec09-36249e9fb31d.png)

SQLウェアハウスによるSQLクエリの変動率を基にしたパフォーマンス分析

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/ac751fac-654b-4e94-2484-08d4a488f9eb.png)

<a id="#Chapter4"></a>
# Platformサービス  その①-Monitoring
Zabbixなどに代表されるリソースのメトリック監視機能です。
デフォルトで提供されるCPU、メモリなどの基本的な監視に加えて
カスタムメトリックを利用すると利用者任意のメトリックの監視を追加することができます。

イメージ）
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/8be3e9b0-a9cb-92c9-6ed6-286469300038.png">

基本的な機能の紹介です。
OCIの各サービスの性能や状態を表すメトリックを収集・監視
 - コンピュート・インスタンスのCPU, メモリ, ネットワーク送受信
 - ロードバランサーのインバウンドリクエスト, 帯域幅
 - ブロック・ボリュームのI/Oスループットなど
 - ユーザー自身によるカスタム・メトリックの作成
 - Prometheus形式でのメトリックデータ収集

などなど。デフォルト機能にとらわれず柔軟にカスタムが可能です。

事前定義済のダッシュボードが提供され特別な設定は必要ありません。

メトリックの保持期間は90日間です。

もちろんメトリックに対してアラームを作成可能で、Notificationsサービスと連携して、メール, Slack等による通知やFunctionsサービスを起動した特定のアクションを実行させるなどの対応の自動化も可能になります。


コンピュート・インスタンスにデフォルト定義されているメトリック群
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e13e4bce-ca4b-92df-a3a1-ee1813f0533c.png)

様々なサービスに定義されているメトリックを自由に検索できるメトリック・エクスプローラ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/55472b1c-45e9-9839-f526-a1a243ab5c01.png)

リソースのメトリック値をモニタリングし、設定したルールに応じて検知されたアラームを、通知サービスで指定された宛先へ通知する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/fa0d25b1-8b14-3c97-aa05-c10c398217db.png)

GoldenGateのプロセス監視やラグ（レプリケーションの遅延）の監視も賄うことができます。
Notificationsと合わせてラグ監視＆通知も可能ですね。

![image (28).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e08c7802-51a9-2792-434c-bb95707b3007.png)

設定は以下のイメージでコンパートメントやディメンションを指定するだけで確認ができます。

![image (29).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/fe4af271-7672-9deb-f658-e20d6a7a98f0.png)


チュートリアルも用意されています。
https://oracle-japan.github.io/ocitutorials/intermediates/monitoring-resources/

<a id="#Chapter4"></a>
# Platformサービス  その②-Nofitications
NofiticationsはEventsサービスなどと連携して利用することが多いです。
メール、SMS、Slack等のアラートメッセージを発信するためのサブスクリプションを作成し管理します。

トピックの例
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2ef7045f-71a8-15d5-a84a-6a622f260b24.png)

様々なサービスに対して通知可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/8e06eb73-5926-ef1d-58af-f46cbce977a3.png)

<a id="#Chapter4"></a>
# Platformサービス  その③-Events
クラウド上のリソースの変化を捉え、検知した内容に応じたアクションの実行
O&MサービスのMonitoringやLogging Analyticsのイベント（アラート等）を検知しアクションを実行するためのサービスです。
O&Mサービス以外にもセキュリティサービスのCloud Guardなどとも連携してアクションすることができます。

上記でご紹介した各種監視サービスとすぐに連携できるのでとても便利。

このイベントはCloud Guardのディテクタルールを検知してNofiticationsにアクションするためのルールです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3b9ad490-7fec-9d10-272b-4b73e7f3f75b.png)

イベントルールを設定して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/8fe278e3-2554-3ff3-ee2f-d82b6c02a6ab.png)

その先のアクションを指定する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/02461a3e-fd49-b6d4-7710-cece2ff85fce.png)

この設定を行うことでCloud Guardのアラートが発生した場合にNofiticationsに登録されているアクションが実行できます。


<a id="#Chapter4"></a>
# Platformサービス  その④-Functions
インフラストラクチャを必要としないサーバーレスなアプリケーション実行環境です。
最近流行りのサーバレスでアプリケーションを実行できるサービスです。
OCIでも提供されており様々な用途で活躍します。

イメージ）
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/be274d90-41d6-9638-77b0-af640c8de9b4.png">


本記事ではリソース監視に絞った利用例をご紹介します！


■ ユースケース
- ビジネスロジック実装の効率化
- イベント・ドリブン型開発の効率化

■ 特徴
- 複数のプログラミング言語をFDK*としてサポート
- 最大5分間の実行時間をサポートします。
- シンプルな開発フローとテストハーネスを提供しています。

例えば、NofiticationsのアクションをFunctionにしてみます。
するとこのメール通知が
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/757325eb-8bc8-d732-18da-e731fae3067f.png)

こんな形でスッキリ可読性が良い形になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/cb24798b-283c-a967-52c1-6c3b732e50b0.png)


Functionについては奥が深いので是非体験してみてください。