※本ページは、”Exadata Real-Time Insight“の翻訳です。

Exadata System Software 22.1では、Exadataマシン全体で詳細な統計を抽出するための新しい包括的な監視ソリューションを提供します。 Exadata Real-Time Insightを使用すると、マシン管理者は、1秒間隔でExadataデータベースおよびストレージ・サーバーから200を超える固有のメトリックを直接ストリーミングできます。

メトリックおよび統計は現在、管理サーバー(MS)を介してExadataに収集され、エンドユーザーはCLIコマンド list metrichistory または list metriccurrent を介して利用できます。その他のOSレベルのメトリックは、ExaWatcherによって収集され、ファイルシステムに保存されます。どちらの統計タイプも、個々のサーバーで自動的に収集および維持され、時間とスペースの利用可能度に基づいてプログラムされてリサイクルされます。

Exadata Real-Time Insightの目標は、Exadata Database Server および Storage Server からのすべてのメトリックおよび統計の収集メカニズムを一元化し、各サーバーからデータを収集する必要をなくすことです。次に、この一元化されたストリームを使用して、多くの標準的で一般的な監視アプリケーションを使用して監視ダッシュボードを構築し、Exadataメトリックを経時的に監視する単一のポータルを提供できます。したがって、これらのダッシュボードを使用してさらに分析することで、アクティビティのインシデントまたは異常をすばやく特定できます。メトリックは、将来のレポートと分析のために外部システムにオフロード可能です。

すべてのタイプのExadata Serverは、以下を含むメトリックをストリーミングできます。

  • Storage Server(セル)
  • Database Server(ベアメタルおよびKVM Host)
  • KVM Guest

きめ細かいメトリックの有効化

関連するドキュメントセクション(cellclidbmcli)で説明されているように、関連するCLIツール(dbmcli、cellcli)で新しいコマンド alter metricdefinition <..> finegrained=enabled コマンドを使用して、細粒度の収集に対してメトリックを有効にできます。 list metricdefinition detailコマンドを実行すると、メトリックの完全なリストとそれぞれの説明を取得できます。前述のように、固有のメトリックは200以上存在するので、ここでは説明しません。簡単な例として、Storage Server の場合の現在の例です。

CellCLI> list metricdefinition detail
name:                   CD_BY_FC_DIRTY
description:            "Number of unflushed megabytes cached in FLASHCACHE on a cell disk"
fineGrained:            Disabled
metricType:             Instantaneous
objectType:             CELLDISK
unit:                   MB
name:                   CD_IO_BY_R_LG
description:            "Number of megabytes read in large blocks from a cell disk"
fineGrained:            Disabled
metricType:             Cumulative
objectType:             CELLDISK
unit:                   MB
name:                   CD_IO_BY_R_LG_SEC
description:            "Number of megabytes read in large blocks per second from a cell disk"
fineGrained:            Disabled
metricType:             Rate
objectType:             CELLDISK
unit:                   MB/sec

など、さらに数ページ…

上記で現在無効(disabled)になっているきめ細かいコレクションがあることに気付くでしょう。また、後でダッシュボードを作成するときに役立つので、metricTypeに注意してください。metricType は次のようになります。累積(cumulative)、事前定義された期間(rate)、または瞬間(instantaneous)。

次のようなコマンドを使用して、きめ細かい監視のためにすべてのメトリックを有効(enable)にすることができます。

CellCLI> alter metricdefinition finegrained=enabled where finegrained=disable

または、いくつかのメトリックから作業を行い、時間をかけてさらに追加します。Exadata System Software 22.1 では、開始点として一連の推奨メトリックを有効にしました。これらは無効にすることができ、その他はユーザーの好みに基づいて有効にすることができ、これらの有効化・無効化の設定はソフトウェアの更新を通じて維持されます。

このデモでは、きめ細かいコレクションをすべてオフにしました。フローを確認できるように、Database Server とStorage Server から1つずつメトリックを追加します。Storage Server の「プラガブルデータベースのフラッシュキャッシュに割り当てられたメガバイト数”number of megabytes allocated in flash cache for a pluggable database”」(PDB_FC_BY_ALLOCATED)メトリックをキャプチャします。

CellCLI> alter metricdefinition PDB_FC_BY_ALLOCATED finegrained=enabled
MetricDefinition PDB_FC_BY_ALLOCATED successfully altered.

DBサーバーの場合、「現在使用されているこのサーバー上の合計物理メモリの割合”Percentage of total physical memory on this server that is currently used”」(DS_MEMUT)メトリックをキャプチャします:

DBMCLI> alter metricdefinition DS_MEMUT finegrained=enabled
MetricDefinition DS_MEMUT successfully altered.

現在細粒度で有効になっているすべてのメトリックを表示するには、次のように、where句をlistコマンドに追加できます。

DBMCLI> list metricdefinition where finegrained=enabled detail
name:                   DS_MEMUT
description:            "Percentage of total physical memory on this server that is currently used"
fineGrained:            Enabled
metricType:             Instantaneous
objectType:             DBSERVER
unit:                   %

CLIコマンドでメトリックを無効にする場合は、同じように設定できます

すべて無効化する場合:

DBMCLI> alter metricdefinition finegrained=disabled where finegrained=enabled

特定のメトリックを無効化する場合:

DBMCLI> alter metricdefinition DS_MEMUT finegrained=disabled

収集に必要なメトリックがあります、ところで、どのように私たちはそれらを私たちが望む場所に到達させるのか、そしてそれはどれくらいの頻度でメトリックを送信するのでしょうか?MSサーバーの設定を見てみましょう。

DBMCLI> list dbserver attributes metricFGCollIntvlInSec, metricStreamIntvlInSec, metricStreamEndPoint detail
metricFGCollIntvlInSec: 5
metricStreamIntvlInSec: 60
metricStreamEndPoint:

属性の簡単な分析:

  • metricFGCollIntvlInSec(秒単位のメトリックファイングレイン収集間隔)fineGrained=enabled属性によって識別されるメトリックを収集する間隔
  • metricStreamEndPoint(メトリックストリーミングサーバーエンドポイント)-メトリックのストリームの宛先。ドキュメントには、metricStreamEndPointの構築方法が記載されているため、ここで再公開するのではなく、後で作業できるようにリンクを残しておきます。
  • metricStreamIntvlInSec(メトリックストリーム間隔(秒単位))-メトリックがストリーミングエンドポイントに送信される頻度。

属性名を分解すると、かなり自明です…

1つの推奨事項は、コレクション(metricFGCollIntvlInSec)とストリーミング(metricStreamIntvlInSec)の比率を1:5以上、1:30以下に保つことです。したがって、たとえば、metricFGCollIntvlInSec=5の場合、metricStreamIntvlInSec=25〜150である必要があります。

表示されない属性がもう1つあります。これは、Exadataの「フリート」のサイズによっては重要になる可能性があります。

  • metricStreamTags(メトリック・ストリーム・タグ)-これは、さまざまなExadataマシンからのオブザベーションを編成およびグループ化するのに役立ちます。ドキュメントに記載されているように、ここには好きなものを置くことができます。たとえば、「Fleet」、「Pod」、および「Cluster」タグを使用して、Exadataシステムのインストールのタイプ、場所、および詳細を区別したり、独自の既存のCMDB(構成管理データベース)タグを使用したりできます。

ストリーミングされたメトリックの消費

次に、フローのもう一方の端である、これらのストリーミングされたメトリックの消費に注意を向けましょう。 Grafana、Splunk、Kibana、およびその他のプッシュ/プルツールなどの多くの可観測性ツールは、Exadata Real-Time Insightメトリックを使用できます。

以前のプロジェクトから実行しているELKスタックがあり、今日の簡単なデモのために転用します。 ELKに慣れていない場合は、ElasticSearchLogstashKibanaの略です。リアルタイム監視への最初の進出である場合にはじめるのに役立つ多くの例、デモ、およびチュートリアルが存在します。 Duckduckgoはここでのあなたの友達です。詳細については説明しません。

これが私が今日やろうとしていることの簡単な図です:

基本的に、Storage Server で PDB_FC_BY_ALLOCATED メトリックを取得し、Database Server から DS_MEMUT(きめ細かい機能を有効にした)を取得して、elk_demo_systemに転送、保存、検索、表示します。

このために、logstashは簡単にセットアップ出来ます。

# cat /etc/logstash/conf.d/Exadata-RTI.conf
input {  http { id => "real_time_insight" } }
output {  elasticsearch { hosts => ["localhost:9200"] }}

これにより、HTTPエンドポイントが提供され、デフォルト(:8080ポート)でリッスンし、同じマシンで実行されている ElasticSearchに出力されます(:9200ポートでリッスン)。データが確実に流れるようにする場合は、出力を変更または追加してstdout {codec => ruby​​debug}にし、コマンドラインからlogstashを実行すると、以下の出力が確認できます。)

OK、タップをオンにしましょう。 CellCLIとDBMCLIで下記の設定を行います

CellCLI> alter cell metricFGCollIntvlInSec=5
CellCLI> alter cell metricStreamIntvlInSec=60
CellCLI> alter cell metricStreamTags='{"fleet":"ExaPM","pod":"xd01","cluster":"c01"}'
CellCLI> alter cell metricStreamEndPoint=((host="http://elk_demo_system.localdomain:8080",type="json"))

(エンドポイント定義のセキュリティが上記のコマンド例には完全に欠如していることに注意してください。前述したように、これはデモです。本番環境でのhttpsとトークンの使用を期待しています。)

CellCLI> list cell attributes metricFGCollIntvlInSec, metricStreamIntvlInSec, metricStreamEndPoint detail
  metricFGCollIntvlInSec: 5
  metricStreamIntvlInSec: 60
  metricStreamEndPoint:   ((host="http://elk_demo_system.localdomain:8080",port=,token="",type="json",ID="..."))
  metricStreamTags:       {"fleet":"ExaPM","pod":"xd01","cluster":"c01"}

ストリーミング先のセカンダリエンドポイントがある場合は、「+=」で追加できます。例えば:

CellCLI> alter cell metricStreamEndPoint+=((host="http://second_elk_demo_system.localdomain:8080",type="json"))

コマンドラインでlogstashをリッスンしていて、ストリーミングを有効にしたので、データが到着し始めるのを確認する必要があります(ストリーム間隔の設定によっては、ウォームアップに1〜2分かかる場合があります)。

{
       "headers" => {
         "content_length" => "32508",
           "http_version" => "HTTP/1.1",
         "request_method" => "POST",
        "http_user_agent" => "Java/1.8.0_331",
            "http_accept" => "application/json",
             "connection" => "keep-alive",
           "request_path" => "/",
              "http_host" => "elk_demo_system.localdomain:8080",
           "content_type" => "application/json"
    },
         "gauge" => [
        [  0] {
             "timestamp" => 1653069352000,
                "metric" => "PDB_FC_BY_ALLOCATED",
                 "value" => "13846.625",
            "dimensions" => {
                   "cluster" => "c01",
                       "pod" => "xd01",
                  "nodeType" => "STORAGE",
                "objectName" => "D19CDB1.HCC_TESTING",    <-- this must be one of Seth's HCC demo databases..
                    "server" => "xd01celadm01.us.oracle.com",
                     "fleet" => "ExaPM"
            },
                  "unit" => "MB"
        },
        [  1] {
             "timestamp" => 1653069357000,
                "metric" => "PDB_FC_BY_ALLOCATED",
                 "value" => "13846.625",
            "dimensions" => {
                   "cluster" => "c01",
                       "pod" => "xd01",
                  "nodeType" => "STORAGE",
                "objectName" => "D19CDB1.HCC_TESTING",
                    "server" => "xd01celadm01.us.oracle.com",
                     "fleet" => "ExaPM"
            },
                  "unit" => "MB"
        },
--8<--- snip ---
      }
    ],
          "host" => "xd01celadm01.us.oracle.com",
      "@version" => "1",
    "@timestamp" => 2022-05-20T18:22:41.622Z
}

Logstash がデータを ElasticSearch に渡し、Kibana がフロントエンドからフックされているため、Kibanaの[Discovery]タブにデータが表示されます。

これで、Exadataデータベースおよびストレージサーバーから可観測性プラットフォームへのリアルタイムメトリックのストリーミングが正常に開始されました。万歳!

ダッシュボード

さて、ダッシュボードに移りましょう、あなたはまだ私と一緒ですか?

メトリックのダッシュボードは絶対的な芸術形式であり、今日私が経験することではありません。 Exadataマシンの社内フリートでは、開発チームの非常に才能のある人々が、より人気のある可観測性ソリューションの1つであるGrafanaとPrometheusを使用して、いくつかのリンクされたダッシュボードを構築するために時間をかけました。

これが(わずかに編集された)スクリーンショットのセットです:

Real-TimeInsightデモダッシュボード

そして、動作中のメインダッシュボード:

メトリックを示すダッシュボード

利用してみたいお客様へ!

お客様がGrafanaを使用していて、Exadata Real-Time Insightメトリックを監視に追加したい場合は、幸運な日です。上記のダッシュボードのコードを公開しているので、できるだけ早く起動して実行できます。

これまでに見たことがない場合は、GitHub.comOracle Sample Projectsリポジトリに、多くのOracleテクノロジの多くのデモとサンプルコードが含まれています。 Oracle Database Examplesフォルダの下に新しいExadataフォルダを作成しました。

https://github.com/oracle-samples/oracle-db-examples/tree/main/exadata

その下に、インサイトフォルダとgrafana-prometheusダッシュボードコードがあります。

  • インサイト
    • Dashboard_grafana_prometheus
      • README.md ダッシュボード、要件に関する情報
      • <ダッシュボードJSONファイル> ダッシュボードを作成するために可観測性ツールにインポートするファイル
      • METRICS.md ダッシュボードの実行に必要なメトリックのリスト

ヒント:oracle-db-examples GitHubリポジトリにウォッチを設定して、このダッシュボード(および公開される可能性のあるその他のダッシュボード)の最新の更新を受信します。また、デモコードと例を作成してこのリポジトリに追加する予定ですので、定期的に確認してください。

詳細情報

Exadata Real-Time Insight機能は、Exadataの監視および管理性の側面を強化するためのエキサイティングな新機能です。これは、先日発表されたExadata System Software Release 22.1の一部であり、Exadata System Software 22.1 の情報はこちらに記載しいます。

このリリースの詳細については、 『Oracle Exadata System Overview』の「Oracle Exadata System Software Release 22.xの新機能」セクションを参照してください。

Exadata Real-TimeInsight機能の詳細:

このブログ投稿に協力してくれたCecilia、Ryan、Yanに感謝します(このプラットフォームをそれが何であるかを作るために働いている私たちの素晴らしい開発チームの一部です)。

私たちは常にあなたのフィードバックに興味を持っています。 Twitter @ExadataPM@GavinAtHQ、 @alex_blyth 、@Seth_M_Millerを介して私たちと交流することを歓迎します