Oracle Database データソースに接続する - Amazon Managed Grafana

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Oracle Database データソースに接続する

注記

このデータソースは Grafana Enterprise 専用です。詳細については、「Enterprise プラグインへのアクセスを管理する」を参照してください。

さらに、バージョン 9 以降をサポートするワークスペースでは、このデータソースで適切なプラグインのインストールが必要になる場合があります。詳細については、「プラグインを使用してワークスペースを拡張する」を参照してください。

データソースの追加

Grafana の左側のパネルにあるデータソースを選択します。

データソースの追加を選択します。

oracle を入力してデータソースを検索します。

Oracle サーバーの詳細を入力します。

ホスト名 (または IP アドレス) とポート番号、接続するユーザー名とパスワードを入力します。

tnsnames オプショントグルを使用すると、tnsnames.ora 設定ファイルにある有効なエントリを基本認証とともに使用できます。

前の例と似ていますが、認証に Kerberos を使用しています。kerberos を使用するように OS または docker コンテナを設定する方法の詳細については、kerberos 固有のセットアップガイドを参照してください。

オプションで、Oracle サーバーへの接続に使用するタイムゾーンを変更し、タイムゾーン対応マクロで使用します。デフォルト設定は UTC です。

データソースを保存してテストすると、「データベース接続 OK」という緑色のメッセージが表示されます。

使用方法

マクロ

構文を簡素化し、日付範囲フィルターなどの動的部分を可能にするために、クエリにマクロを含めることができます。列名は二重引用符 () 内に含める必要があります"

マクロの例 説明
*$__time(dateColumn )* | 列の名前を「time」に変更する式に置き換えられます。例えば、`dateColumn as time` *$__timeEpoch (dateColumn )* 列の名前を に変更timeし、値を UNIX タイムスタンプ (ミリ秒単位) に変換する式に置き換えられます。
*$__timeFilter (dateColumn )* | 指定された列名を使用して時間範囲フィルターに置き換えられます。例えば、`dateColumn BETWEEN TO_DATE('19700101','yyyymmdd') + (1/24/60/60/1000) * 1500376552001 AND TO_DATE('19700101','yyyymmdd') + (1/24/60/60/1000) * 1500376552002` *$__timeFrom ()* データDATE型に変換された現在アクティブな時間選択の開始に置き換えられます。例えば TO_DATE('19700101','yyyymmdd') + (1/24/60/60/1000) * 1500376552001 です。
*$__timeTo ()* | 現在アクティブな時間選択が 「DATE」データ型に変換された末尾に置き換えられます。*$__timeGroup (dateColumn ,"5m")* GROUP BY 句で使用できる式に置き換えられます。
*$__timeGroup (dateColumn ,"5m"[, fillvalue])* GROUP BY 句で使用できる式に置き換えられます。fillValue を NULL または浮動値に指定すると、その値で時間範囲内の空のシリーズが自動的に埋められます。例えば、ti m e G r o u p c r e a t e d A t t , ′1m ′, 0.*__timeGroup (dateColumn ,"5m", 0)* です。
*ti m e G r o u p (d a t e C o l u m n , '5m ',N U L L ) * |S a m e a s a b v e b u t N U L w i l l b e u s d a s v a l u e f o r m i s s i g o i n t s .*__timeGroup (dateColumn ,"5m", previous)* 上記と同じですが、まだ NULL が表示されていない場合は、そのシリーズの以前の値がフィル値として使用されます。
*$__unixEpochFilter(dateColumn )* | 指定された列名を使用して、時刻を Unix タイムスタンプ (ミリ秒単位) で表した時間範囲フィルターに置き換えられます。例えば、`dateColumn >= 1500376552001 AND dateColumn <= 1500376552002` *$__unixEpochFrom()* 現在アクティブな時間選択の開始を Unix タイムスタンプに置き換えます。例えば 1500376552001 です。
*$__unixEpochTo()* 現在アクティブな時間選択の最後に Unix タイムスタンプに置き換えられます。例えば 1500376552002 です。

プラグインは、中括弧 を使用した表記もサポートしています{}。パラメータ内でクエリが必要な場合は、この表記を使用します。

注記

クエリごとに 1 つの表記タイプを使用します。クエリに中括弧が必要な場合は、クエリ内のすべてのマクロで中括弧を使用する必要があります。

$__timeGroup{"dateColumn",'5m'} $__timeGroup{SYS_DATE_UTC("SDATE"),'5m'} $__timeGroup{FROM_TZ(CAST("SDATE" as timestamp), 'UTC'), '1h'}

クエリエディタには、パネル編集モードでクエリを実行した後に表示される生成 SQL リンクがあります。リンクを選択すると、リンクが展開され、実行された未加工の補間された SQL 文字列が表示されます。

テーブルクエリ

クエリとしてフォーマットオプションがテーブルに設定されている場合、基本的に任意のタイプの SQL クエリを実行できます。テーブルパネルには、クエリが返す列と行の結果が自動的に表示されます。テーブルパネル列の名前は、通常の as SQL 列選択構文を使用して制御できます。

時系列クエリ

例えば、グラフパネルで使用するために Format を時系列 に設定した場合、クエリは SQL 日時または Unix エポックを表す任意の数値データ型を秒単位で返timeす という名前の列を返す必要があります。Grafana は、明示的なタイムゾーンのない DATE 列と TIMESTAMP 列を UTC として解釈します。time と を除くすべての列metricは、値列として扱われます。値列のメトリクス名として使用される metric という名前の列を返すことができます。

次のコード例は、 metric列を示しています。

SELECT $__timeGroup("time_date_time", '5m') AS time, MIN("value_double"), 'MIN' as metric FROM test_data WHERE $__timeFilter("time_date_time") GROUP BY $__timeGroup("time_date_time", '5m') ORDER BY time

その他のクエリ – の使用 oracle-fake-data-gen

SELECT $__timeGroup("createdAt", '5m') AS time, MIN("value"), 'MIN' as metric FROM "grafana_metric" WHERE $__timeFilter("createdAt") GROUP BY $__timeGroup("createdAt", '5m') ORDER BY time

次のコード例は、フェイクデータの時系列を示しています。

SELECT "createdAt", "value" FROM "grafana_metric" WHERE $__timeFilter("createdAt") ORDER BY "createdAt" ASC
SELECT "createdAt" as time, "value" as value FROM "grafana_metric" WHERE $__timeFilter("createdAt") ORDER BY time ASC

次の例は、便利なテーブル結果を示しています。

select tc.table_name Table_name ,tc.column_id Column_id ,lower(tc.column_name) Column_name ,lower(tc.data_type) Data_type ,nvl(tc.data_precision,tc.data_length) Length ,lower(tc.data_scale) Data_scale ,tc.nullable nullable FROM all_tab_columns tc ,all_tables t WHERE tc.table_name = t.table_name

テンプレート

メトリクスクエリでサーバー、アプリケーション、センサー名などのモノをハードコーディングする代わりに、代わりに変数を使用できます。変数は、ダッシュボードの上部にドロップダウン選択ボックスとして表示されます。これらのドロップダウンボックスを使用すると、ダッシュボードに表示されるデータを簡単に変更できます。

クエリ変数

タイプ のテンプレート変数を追加するとQuery、測定名、キー名、ドロップダウン選択ボックスとして表示されるキー値などのものを返す Oracle クエリを作成できます。

例えば、テンプレート変数 Query 設定でこのようなクエリを指定した場合、テーブル内のhostname列のすべての値を含む変数を使用できます。

SELECT "hostname" FROM host

クエリは複数の列を返すことができ、Grafana は自動的にそれらからリストを作成します。例えば、次のクエリは、 hostnameおよび の値を含むリストを返しますhostname2

SELECT "host.hostname", "other_host.hostname2" FROM host JOIN other_host ON host.city = other_host.city

クエリ$__timeFilter("time_column")で などの時間範囲に依存するマクロを使用するには、テンプレート変数の更新モードを時間範囲変更時 に設定する必要があります。

SELECT "event_name" FROM event_log WHERE $__timeFilter("time_column")

もう 1 つのオプションは、キー/値変数を作成できるクエリです。クエリは、 __textおよび という名前の 2 つの列を返す必要があります__value__text 列の値は一意である必要があります (一意でない場合、最初の値が使用されます)。ドロップダウンリストのオプションには、わかりやすい名前をテキストとして、ID を値として指定できるテキストと値があります。次のコード例は、 をテキストhostname、 を値idとするクエリを示しています。

SELECT "hostname" AS __text, "id" AS __value FROM host

ネストされた変数を作成することもできます。例えば、 という名前の別の変数がある場合ですregion。次に、hosts 変数に、このようなクエリを使用して、現在選択されているリージョンのホストのみを表示させることができます ( が複数値変数である場合regionは、複数の値と照合=するのではなくIN、比較演算子を使用します)。

SELECT "hostname" FROM host WHERE region IN('$region')

クエリでの変数の使用

テンプレート変数の値は、テンプレート変数が の場合にのみ引用符で囲まれますmulti-value

変数が複数値変数の場合は、複数の値と照合=するのではなく、IN比較演算子を使用します。

次の 2 つの構文があります。

$<varname> という名前のテンプレート変数の例hostname

SELECT "atimestamp" as time, "aint" as value FROM table WHERE $__timeFilter("atimestamp") AND "hostname" IN('$hostname') ORDER BY "atimestamp" ASC

[[varname]] という名前のテンプレート変数の例hostname

SELECT "atimestamp" as time, "aint" as value FROM table WHERE $__timeFilter("atimestamp") AND "hostname" IN('[[hostname]]') ORDER BY atimestamp ASC