- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
Supported OS
Oracle Database サーバーからメトリクスをリアルタイムに取得して、可用性とパフォーマンスを視覚化および監視できます。
Oracle インテグレーションを使用するには、ネイティブクライアント Oracle Instant Client を使用するか (追加のインストール手順は必要ありません)、Oracle JDBC ドライバーをダウンロードします (Linux のみ)。JDBC による Oracle インテグレーションを使用するには、Oracle JDBC ドライバーをダウンロードしてください。JDBC 方式を使用しない場合、最小のサポートされるバージョンは Oracle 12c です。 ライセンスの制限により、JDBC ライブラリは Datadog Agent に含まれていませんが、Oracle から直接ダウンロードすることができます。
注: v7.42.x から、Oracle インテグレーションは Python 3 のみをサポートします。
以下を確認してください。
Instant Client Basic パッケージと SDK パッケージの両方がインストールされます。Oracle のダウンロードページにあります。
Instant Client ライブラリのインストール後に、ランタイムリンカがライブラリを見つけることができることを確認します。たとえば、ldconfig
を使用します。
# Put the library location in an ld configuration file.
sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > \
/etc/ld.so.conf.d/oracle-instantclient.conf"
# Update the bindings.
sudo ldconfig
両方のパッケージは、特定のマシン上のすべてのユーザーが使用できる単一のディレクトリ (たとえば、/opt/oracle
) に解凍されます。
mkdir -p /opt/oracle/ && cd /opt/oracle/
unzip /opt/oracle/instantclient-basic-linux.x64-12.1.0.2.0.zip
unzip /opt/oracle/instantclient-sdk-linux.x64-12.1.0.2.0.zip
Oracle Windows インストールガイドに従って、Oracle Instant Client を構成します。
以下を確認してください。
Microsoft Visual Studio 2017 再頒布可能パッケージまたは適切なバージョンが Oracle Instant Client にインストールされます。
Oracle のダウンロードページの Instant Client Basic パッケージと SDK パッケージの両方がインストールされます。
両方のパッケージは、特定のマシン上のすべてのユーザーが使用できる単一のディレクトリ (たとえば、C:\oracle
) に抽出されます。
注: この方法は Linux でのみ機能します。
Java 8 以降は、JDBC Driver を使用するときに Agent が使用するライブラリの 1 つである JPype のシステムに必要です。
インストールしたら、次の手順を実行します。
$CLASSPATH
に追加するか、チェック構成ファイルの jdbc_driver_path
の下に追加します (サンプル oracle.yaml を参照)。Oracle Database サーバーへの適切なアクセス権を持つ、読み取り専用の datadog
ユーザーを作成します。SYSDBA
や SYSOPER
などの管理者ユーザーで Oracle Database に接続し、以下を実行します。
-- Oracle Script を有効にします。
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
-- Datadog ユーザーを作成します。パスワードのプレースホルダーは、安全なパスワードに置き換えてください。
CREATE USER datadog IDENTIFIED BY <パスワード>;
-- Datadog ユーザーにアクセス権を付与します。
GRANT CONNECT TO datadog;
GRANT SELECT ON GV_$PROCESS TO datadog;
GRANT SELECT ON gv_$sysmetric TO datadog;
GRANT SELECT ON sys.dba_data_files TO datadog;
GRANT SELECT ON sys.dba_tablespaces TO datadog;
GRANT SELECT ON sys.dba_tablespace_usage_metrics TO datadog;
注: Oracle 11g を使用している場合、次の行を実行する必要はありません。
ALTER SESSION SET "_ORACLE_SCRIPT"=true;
管理者としてルートデータベースにログインして、datadog
ユーザーを作成し、アクセス許可を付与します。
alter session set container = cdb$root;
CREATE USER c##datadog IDENTIFIED BY password CONTAINER=ALL;
GRANT CREATE SESSION TO c##datadog CONTAINER=ALL;
Grant select any dictionary to c##datadog container=all;
GRANT SELECT ON GV_$PROCESS TO c##datadog CONTAINER=ALL;
GRANT SELECT ON gv_$sysmetric TO c##datadog CONTAINER=ALL;
ホストで実行中の Agent に対してこのチェックを構成するには:
Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの oracle.d/conf.yaml
ファイルを編集します。server
と port
を更新し、監視するマスターを設定します。使用可能なすべてのコンフィギュレーションオプションの詳細については、サンプル oracle.d/conf.yaml を参照してください。
init_config:
instances:
## @param server - string - required
## The IP address or hostname of the Oracle Database Server.
#
- server: localhost:1521
## @param service_name - string - required
## The Oracle Database service name. To view the services available on your server,
## run the following query: `SELECT value FROM v$parameter WHERE name='service_names'`
#
service_name: <SERVICE_NAME>
## @param username - string - required
## The username for the Datadog user account.
#
username: <USERNAME>
## @param password - string - required
## The password for the Datadog user account.
#
password: <PASSWORD>
インスタンスのデフォルトのメトリクスチェックをスキップし、既存のメトリクス収集ユーザーでのみカスタムクエリを実行するには、値が true
のタグ only_custom_queries
を挿入します。これにより、Oracle インテグレーションの構成済みインスタンスがシステム、プロセス、およびテーブルスペースメトリクスの実行をスキップし、Datadog ユーザー作成セクションで説明されているアクセス許可なしでカスタムクエリを実行できます。この構成エントリが省略された場合、指定したユーザーには、カスタムクエリを実行するためのテーブルアクセス許可が必要です。
init_config:
instances:
## @param server - string - required
## The IP address or hostname of the Oracle Database Server.
#
- server: localhost:1521
## @param service_name - string - required
## The Oracle Database service name. To view the services available on your server,
## run the following query:
## `SELECT value FROM v$parameter WHERE name='service_names'`
#
service_name: "<SERVICE_NAME>"
## @param user - string - required
## The username for the user account.
#
user: <USER>
## @param password - string - required
## The password for the user account.
#
password: "<PASSWORD>"
## @param only_custom_queries - string - optional
## Set this parameter to any value if you want to only run custom
## queries for this instance.
#
only_custom_queries: true
TCPS (TCP with SSL) を使って Oracle に接続するには、protocol
構成オプションのコメントを解除して、TCPS
を選択します。server
オプションを更新して、監視する TCPS サーバーを設定します。
init_config:
instances:
## @param server - string - required
## The IP address or hostname of the Oracle Database Server.
#
- server: localhost:1522
## @param service_name - string - required
## The Oracle Database service name. To view the services available on your server,
## run the following query:
## `SELECT value FROM v$parameter WHERE name='service_names'`
#
service_name: "<SERVICE_NAME>"
## @param user - string - required
## The username for the user account.
#
user: <USER>
## @param password - string - required
## The password for the user account.
#
password: "<PASSWORD>"
## @param protocol - string - optional - default: TCP
## The protocol to connect to the Oracle Database Server. Valid protocols include TCP and TCPS.
##
## When connecting to Oracle Database via JDBC, `jdbc_truststore` and `jdbc_truststore_type` are required.
## More information can be found from Oracle Database's whitepaper:
##
## https://www.oracle.com/technetwork/topics/wp-oracle-jdbc-thin-ssl-130128.pdf
#
protocol: TCPS
Oracle Database で TCPS 接続を許可するために、sqlnet.ora
、listener.ora
、tnsnames.ora
を更新します。
JDBC を使用していない場合、Datadog Agent がデータベースに接続できることを確認します。構成オプションに入力された情報を使って、sqlplus
コマンドラインツールを使用します。
sqlplus <USER>/<PASSWORD>@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST=<HOST>)(PORT=<PORT>))(SERVICE_NAME=<SERVICE_NAME>)))
Oracle Instant Client による接続を使用する際は、アプリケーションによって使用されるクライアントライブラリの network/admin
ディレクトリに 3 つのファイルを移動します。
tnsnames.ora
: アプリケーションの接続文字列で使用されるネットサービス名をデータベースサービスにマッピングします。sqlnet.ora
: Oracle Network の設定を構成します。cwallet.sso
: SSL または TLS 接続を有効にします。このファイルの安全性を確保するようにしてください。JDBC を使用して Oracle Database に接続している場合は、jdbc_truststore_path
、jdbc_truststore_type
、および Truststore にパスワードがある場合は jdbc_truststore_password
(オプション) も指定する必要があります。
注: SSO のトラストストアはパスワードを必要としません。
# `instances:` セクションで
...
## @param jdbc_truststore_path - 文字列 - オプション
## JDBC トラストストアのファイルパス。
#
jdbc_truststore_path: /path/to/truststore
## @param jdbc_truststore_type - 文字列 - オプション
## JDBC トラストストアのファイルタイプ。サポートされているトラストストアのタイプには、JKS、SSO、および PKCS12 があります。
#
jdbc_truststore_type: SSO
## @param jdbc_truststore_password - 文字列 - オプション
## JDBC で接続する際のトラストストアのパスワード。
#
# jdbc_truststore_password: <JDBC_TRUSTSTORE_PASSWORD>
TCPS on JDBC による Oracle Database への接続の詳細については、公式の Oracle ホワイトペーパーを参照してください。
コンテナ環境の場合は、オートディスカバリーのインテグレーションテンプレートのガイドを参照して、次のパラメーターを適用してください。
パラメーター | 値 |
---|---|
<インテグレーション名> | oracle |
<初期コンフィギュレーション> | 空白または {} |
<インスタンスコンフィギュレーション> | {"server": "%%host%%:1521", "service_name":"<SERVICE_NAME>", "username":"datadog", "password":"<PASSWORD>"} |
Agent の status サブコマンドを実行し、Checks セクションで oracle
を探します。
カスタムクエリの指定もサポートされています。各クエリには、次の 2 つのパラメーターを含める必要があります。
パラメーター | 説明 |
---|---|
query | 実行する SQL です。簡単なステートメントにすることも、複数行のスクリプトにすることもできます。結果のすべての行が評価されます。 |
columns | 列を表すリストです。左から右の順に並べられます。次の 2 つの必須データがあります。 a. type - 送信方法 (gauge 、count など)。b. name - メトリクス名のサフィックス。これは、完全なメトリクス名を形成するために使用されるサフィックスです。 type が tag の場合、この列は、このクエリによって収集されるすべてのメトリクスに適用されるタグと見なされます。 |
オプションで、tags
パラメーターを使用して、収集される各メトリクスにタグのリストを適用できます。
以下のメトリクスは
self.gauge('oracle.custom_query.metric1', value, tags=['tester:oracle', 'tag1:value'])
self.count('oracle.custom_query.metric2', value, tags=['tester:oracle', 'tag1:value'])
以下の構成例から作成されます。
- query: | # 複数行のスクリプトが必要な場合は、パイプを使用します。
SELECT columns
FROM tester.test_table
WHERE conditions
columns:
# スキップする列にはこれを入れます。
- {}
- name: metric1
type: gauge
- name: tag1
type: tag
- name: metric2
type: count
tags:
- tester:oracle
使用可能なすべてのコンフィギュレーションオプションの詳細については、oracle.d/conf.yaml のサンプルを参照してください。
データベースロックの識別に役立つクエリコンフィギュレーションを作成します。
conf.d\oracle.d\conf.yaml
を変更します。custom_queries
ブロックのコメントを解除し、必要なクエリと列を追加して、Agent を再起動します。 init_config:
instances:
- server: localhost:1521
service_name: orcl11g.us.oracle.com
user: datadog
password: xxxxxxx
jdbc_driver_path: /u01/app/oracle/product/11.2/dbhome_1/jdbc/lib/ojdbc6.jar
tags:
- db:oracle
custom_queries:
- query: |
select blocking_session, username, osuser, sid, serial# as serial, wait_class, seconds_in_wait
from v_$session
where blocking_session is not NULL order by blocking_session
columns:
- name: blocking_session
type: gauge
- name: username
type: tag
- name: osuser
type: tag
- name: sid
type: tag
- name: serial
type: tag
- name: wait_class
type: tag
- name: seconds_in_wait
type: tag
v_$session
にアクセスするには、DATADOG
にアクセス許可を付与し、アクセス許可をテストします。SQL> grant select on sys.v_$session to datadog;
##アクセスを検証するために DD ユーザーと接続します。
SQL> show user
USER is "DATADOG"
##ビューを表示するための同義語の作成
SQL> create synonym datadog.v_$session for sys.v_$session;
Synonym created.
SQL> select blocking_session,username,osuser, sid, serial#, wait_class, seconds_in_wait from v_$session
where blocking_session is not NULL order by blocking_session;
oracle.custom_query.locks
メトリクスに基づいてモニターを作成できます。oracle.buffer_cachehit_ratio (gauge) | Ratio of buffer cache hits Shown as percent |
oracle.cursor_cachehit_ratio (gauge) | Ratio of cursor cache hits Shown as percent |
oracle.library_cachehit_ratio (gauge) | Ratio of library cache hits Shown as percent |
oracle.shared_pool_free (gauge) | shared pool free memory % Shown as percent |
oracle.physical_reads (gauge) | physical reads per sec Shown as read |
oracle.physical_writes (gauge) | physical writes per sec Shown as write |
oracle.enqueue_timeouts (gauge) | enqueue timeouts per sec Shown as timeout |
oracle.gc_cr_block_received (gauge) | GC CR block received Shown as block |
oracle.cache_blocks_corrupt (gauge) | corrupt cache blocks Shown as block |
oracle.cache_blocks_lost (gauge) | lost cache blocks Shown as block |
oracle.logons (gauge) | number of logon attempts |
oracle.active_sessions (gauge) | number of active sessions |
oracle.long_table_scans (gauge) | number of long table scans per sec Shown as scan |
oracle.service_response_time (gauge) | service response time Shown as second |
oracle.user_rollbacks (gauge) | number of user rollbacks Shown as operation |
oracle.sorts_per_user_call (gauge) | sorts per user call |
oracle.rows_per_sort (gauge) | rows per sort Shown as row |
oracle.disk_sorts (gauge) | disk sorts per second Shown as operation |
oracle.memory_sorts_ratio (gauge) | memory sorts ratio Shown as percent |
oracle.database_wait_time_ratio (gauge) | memory sorts per second Shown as percent |
oracle.session_limit_usage (gauge) | session limit usage Shown as percent |
oracle.session_count (gauge) | session count |
oracle.process.pga_used_memory (gauge) | PGA memory used by process Shown as byte |
oracle.process.pga_allocated_memory (gauge) | PGA memory allocated by process Shown as byte |
oracle.process.pga_freeable_memory (gauge) | PGA memory freeable by process Shown as byte |
oracle.process.pga_maximum_memory (gauge) | PGA maximum memory ever allocated by process Shown as byte |
oracle.temp_space_used (gauge) | temp space used Shown as byte |
oracle.tablespace.used (gauge) | tablespace used Shown as byte |
oracle.tablespace.size (gauge) | tablespace size Shown as byte |
oracle.tablespace.in_use (gauge) | tablespace in-use Shown as percent |
oracle.tablespace.offline (gauge) | tablespace offline |
Oracle Database チェックには、イベントは含まれません。
oracle.can_connect
Returns OK if the integration can connect to the oracle database, CRITICAL otherwise
Statuses: ok, critical
oracle.can_query
Returns OK if the integration can run all the queries, CRITICAL otherwise
Statuses: ok, critical
DPY-6000: cannot connect to database
のエラーが発生した場合Failed to connect to Oracle DB, error: DPY-6000: cannot connect to database. Listener refused connection. (Similar to ORA-12660)
use_instant_client: true
を設定して Instant Client 方式を使用する必要があります。Oracle Instant Client のセットアップについて、詳しくは Oracle インテグレーションに関するドキュメントを参照してください。
|___ BASIC_LITE_LICENSE
|___ BASIC_LITE_README
|___ adrci
|___ genezi
|___ libclntsh.so -> libclntsh.so.19.1
|___ libclntsh.so.10.1 -> libclntsh.so.19.1
|___ libclntsh.so.11.1 -> libclntsh.so.19.1
|___ libclntsh.so.12.1 -> libclntsh.so.19.1
|___ libclntsh.so.18.1 -> libclntsh.so.19.1
|___ libclntsh.so.19.1
|___ libclntshcore.so.19.1
|___ libipc1.so
|___ libmql1.so
|___ libnnz19.so
|___ libocci.so -> libocci.so.19.1
|___ libocci.so.10.1 -> libocci.so.19.1
|___ libocci.so.11.1 -> libocci.so.19.1
|___ libocci.so.12.1 -> libocci.so.19.1
|___ libocci.so.18.1 -> libocci.so.19.1
|___ libocci.so.19.1
|___ libociicus.so
|___ libocijdbc19.so
|___ liboramysql19.so
|___ listener.ora
|___ network
| `___ admin
| |___ README
| |___ cwallet.sso
| |___ sqlnet.ora
| `___ tnsnames.ora
|___ ojdbc8.jar
|___ ucp.jar
|___ uidrvci
`___ xstreams.jar
JVMNotFoundException
が発生した場合:
JVMNotFoundException("No JVM shared library file ({jpype._jvmfinder.JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.})"
JAVA_HOME
環境変数が設定され、正しいディレクトリを指していることを確認してください。/etc/environment
に追加します:JAVA_HOME=/path/to/java
このエラー Unsupported major.minor version 52.0
が発生した場合は、古いバージョンの Java が実行されています。
お使いの Java システムをアップデートするか、新しいバージョンをインストールし、上記の手順に従って JAVA_HOME
変数を
新しいインストールに割り当てるかのにいずれかを行う必要があります。
Agent から次のコマンドを実行して、環境変数が正しく設定されていることを確認します。 表示された出力が正しい値と一致することを確認してください。
sudo -u dd-agent -- /opt/datadog-agent/embedded/bin/python -c "import os; print(\"JAVA_HOME:{}\".format(os.environ.get(\"JAVA_HOME\")))"
ご不明な点は、Datadog のサポートチームまでお問合せください。