- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
データベースモニタリングは、InnoDB ストレージエンジンのクエリメトリクス、クエリサンプル、説明プラン、接続データ、システムメトリクス、テレメトリを公開することにより、MySQL データベースの詳細な可視性を提供します。
Agent は、読み取り専用のユーザーとしてログインすることでデータベースから直接テレメトリーを収集します。MySQL データベースでデータベースモニタリングを有効にするには、以下の手順を行ってください。
サーバーパラメーターで以下を構成し、サーバーを再起動することで設定が有効になります。
パラメーター | 値 | 説明 |
---|---|---|
performance_schema | ON | 必須。パフォーマンススキーマを有効にします。 |
Agent は、現在実行中のクエリを収集するために performance_schema.events_statements_*
コンシューマが ON
に設定されていることも要求します。デフォルトでは、Azure MySQL Database はパフォーマンススキーマコンシューマを有効にするため、追加の構成は必要ありません。
Datadog Agent が統計やクエリを収集するためには、データベースへの読み取り専用のアクセスが必要となります。
datadog
ユーザーを作成し、基本的なアクセス許可を付与します。
CREATE USER datadog@'%' IDENTIFIED WITH mysql_native_password by '<UNIQUEPASSWORD>';
ALTER USER datadog@'%' WITH MAX_USER_CONNECTIONS 5;
GRANT REPLICATION CLIENT ON *.* TO datadog@'%';
GRANT PROCESS ON *.* TO datadog@'%';
GRANT SELECT ON performance_schema.* TO datadog@'%';
datadog
ユーザーを作成し、基本的なアクセス許可を付与します。
CREATE USER datadog@'%' IDENTIFIED BY '<UNIQUEPASSWORD>';
GRANT REPLICATION CLIENT ON *.* TO datadog@'%' WITH MAX_USER_CONNECTIONS 5;
GRANT PROCESS ON *.* TO datadog@'%';
GRANT SELECT ON performance_schema.* TO datadog@'%';
次のスキーマを作成します。
CREATE SCHEMA IF NOT EXISTS datadog;
GRANT EXECUTE ON datadog.* to datadog@'%';
GRANT CREATE TEMPORARY TABLES ON datadog.* TO datadog@'%';
Agent が説明プランを収集できるようにするには、explain_statement
プロシージャを作成します。
DELIMITER $$
CREATE PROCEDURE datadog.explain_statement(IN query TEXT)
SQL SECURITY DEFINER
BEGIN
SET @explain := CONCAT('EXPLAIN FORMAT=json ', query);
PREPARE stmt FROM @explain;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
さらに、説明プランを収集するすべてのスキーマでこのプロシージャを作成します。<YOUR_SCHEMA>
をデータベーススキーマに置き換えます。
DELIMITER $$
CREATE PROCEDURE <YOUR_SCHEMA>.explain_statement(IN query TEXT)
SQL SECURITY DEFINER
BEGIN
SET @explain := CONCAT('EXPLAIN FORMAT=json ', query);
PREPARE stmt FROM @explain;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END $$
DELIMITER ;
GRANT EXECUTE ON PROCEDURE <YOUR_SCHEMA>.explain_statement TO datadog@'%';
Azure ホストを監視するには、インフラストラクチャーに Datadog Agent をインストールし、各インスタンスのエンドポイントにリモートで接続するよう構成します。Agent はデータベース上で動作する必要はなく、データベースに接続するだけで問題ありません。ここに記載されていないその他の Agent のインストール方法については、Agent のインストール手順を参照してください。
ホスト上で実行されている Agent のこのチェックを構成するには、次の手順に従ってください。(Agent でデータベースからメトリクスを収集するために小規模な仮想マシンをプロビジョニングする場合など)
Agent のコンフィギュレーションディレクトリのルートにある conf.d/
フォルダーの mysql.d/conf.yaml
ファイルを編集して、MySQL メトリクスの収集を開始します。カスタムメトリクスに対するものを含む、使用可能な全コンフィギュレーションオプションの詳細については、サンプル mysql.d/conf.yaml を参照してください。
MySQL メトリクスを収集するには、mysql.d/conf.yaml
に次のコンフィギュレーションブロックを追加します。
init_config:
instances:
- dbm: true
host: '<AZURE_INSTANCE_ENDPOINT>'
port: 3306
username: datadog
password: '<YOUR_CHOSEN_PASSWORD>' # 先ほどの CREATE USER のステップから
# プロジェクトとインスタンスを追加した後、CPU、メモリなどの追加のクラウドデータをプルするために Datadog Azure インテグレーションを構成します。
azure:
deployment_type: '<DEPLOYMENT_TYPE>'
name: '<YOUR_INSTANCE_NAME>'
deployment_type
と name
フィールドの設定に関する追加情報は、MySQL インテグレーション仕様を参照してください。
注: パスワードに特殊文字が含まれる場合は、単一引用符で囲んでください。
Agent を再起動すると、Datadog への MySQL メトリクスの送信が開始されます。
Docker コンテナで動作するデータベースモニタリング Agent を設定するには、Agent コンテナの Docker ラベルとしてオートディスカバリーのインテグレーションテンプレートを設定します。
注: ラベルのオートディスカバリーを機能させるためには、Agent にDocker ソケットに対する読み取り権限が与えられている必要があります。
次のコマンドを実行して、コマンドラインから Agent を実行します。お使いのアカウントや環境に合わせて値を変更してください。
export DD_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DD_AGENT_VERSION=7.36.1
docker run -e "DD_API_KEY=${DD_API_KEY}" \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-l com.datadoghq.ad.check_names='["mysql"]' \
-l com.datadoghq.ad.init_configs='[{}]' \
-l com.datadoghq.ad.instances='[{
"dbm": true,
"host": "<AZURE_INSTANCE_ENDPOINT>",
"port": 3306,
"username": "datadog",
"password": "<UNIQUEPASSWORD>",
"azure": {
"deployment_type": "<DEPLOYMENT_TYPE>",
"name": "<YOUR_INSTANCE_NAME>"
}
}]' \
datadog/agent:${DD_AGENT_VERSION}
Dockerfile
ではラベルの指定も可能であるため、インフラストラクチャーのコンフィギュレーションを変更することなく、カスタム Agent を構築・デプロイすることができます。
FROM datadog/agent:7.36.1
LABEL "com.datadoghq.ad.check_names"='["mysql"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"dbm": true, "host": "<AZURE_INSTANCE_ENDPOINT>", "port": 3306,"username": "datadog","password": "<UNIQUEPASSWORD>", "azure": {"deployment_type": "<DEPLOYMENT_TYPE>", "name": "<YOUR_INSTANCE_NAME>"}}]'
deployment_type
と name
フィールドの設定に関する追加情報は、MySQL インテグレーション仕様を参照してください。
datadog
ユーザーのパスワードをプレーンテキストで公開しないようにするには、Agent のシークレット管理パッケージを使用し、ENC[]
構文を使ってパスワードを宣言するか、オートディスカバリーテンプレート変数に関するドキュメントでパスワードを環境変数として渡す方法をご確認ください。
Kubernetes クラスターをお使いの場合は、データベースモニタリング用の Datadog Cluster Agent をご利用ください。
Kubernetes クラスターでまだチェックが有効になっていない場合は、手順に従ってクラスターチェックを有効にしてください。MySQL のコンフィギュレーションは、Cluster Agent コンテナにマウントされた静的ファイル、またはサービスアノテーションを使用して宣言できます。
以下の Helm コマンドを実行して、Kubernetes クラスターに Datadog Cluster Agent をインストールします。お使いのアカウントや環境に合わせて値を変更してください。
helm repo add datadog https://helm.datadoghq.com
helm repo update
helm install <RELEASE_NAME> \
--set 'datadog.apiKey=<DATADOG_API_KEY>' \
--set 'clusterAgent.enabled=true' \
--set "clusterAgent.confd.mysql\.yaml=cluster_check: true
init_config:
instances:
- dbm: true
host: <INSTANCE_ADDRESS>
port: 3306
username: datadog
password: "<UNIQUEPASSWORD>"
azure:
deployment_type: "<DEPLOYMENT_TYPE>"
name: "<YOUR_INSTANCE_NAME>" \
datadog/datadog
マウントされたコンフィギュレーションファイルを使ってクラスターチェックを構成するには、コンフィギュレーションファイルを Cluster Agent コンテナのパス /conf.d/mysql.yaml
にマウントします。
cluster_check: true # このフラグを必ず入れてください
init_config:
instances:
- dbm: true
host: '<AZURE_INSTANCE_ENDPOINT>'
port: 3306
username: datadog
password: '<UNIQUEPASSWORD>'
# プロジェクトとインスタンスを追加した後、CPU、メモリなどの追加のクラウドデータをプルするために Datadog Azure インテグレーションを構成します。
azure:
deployment_type: '<DEPLOYMENT_TYPE>'
name: '<YOUR_INSTANCE_NAME>'
ファイルをマウントせずに、インスタンスのコンフィギュレーションを Kubernetes サービスとして宣言することができます。Kubernetes 上で動作する Agent にこのチェックを設定するには、Datadog Cluster Agent と同じネームスペースにサービスを作成します。
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
tags.datadoghq.com/env: '<ENV>'
tags.datadoghq.com/service: '<SERVICE>'
annotations:
ad.datadoghq.com/service.check_names: '["mysql"]'
ad.datadoghq.com/service.init_configs: '[{}]'
ad.datadoghq.com/service.instances: |
[
{
"dbm": true,
"host": "<AZURE_INSTANCE_ENDPOINT>",
"port": 3306,
"username": "datadog",
"password": "<UNIQUEPASSWORD>",
"azure": {
"deployment_type": "<DEPLOYMENT_TYPE>",
"name": "<YOUR_INSTANCE_NAME>"
}
}
]
spec:
ports:
- port: 3306
protocol: TCP
targetPort: 3306
name: mysql
deployment_type
と name
フィールドの設定に関する追加情報は、MySQL インテグレーション仕様を参照してください。
Cluster Agent は自動的にこのコンフィギュレーションを登録し、MySQL チェックを開始します。
datadog
ユーザーのパスワードをプレーンテキストで公開しないよう、Agent のシークレット管理パッケージを使用し、ENC[]
構文を使ってパスワードを宣言します。
Agent の status サブコマンドを実行し、Checks セクションで mysql
を探します。または、データベースのページを参照してください。
Azure からより包括的なデータベースメトリクスを収集するには、MySQL インテグレーションをインストールします (オプション)。
インテグレーションと Agent を手順通りにインストール・設定しても期待通りに動作しない場合は、トラブルシューティングを参照してください。
お役に立つドキュメント、リンクや記事: