share facebook facebook facebook twitter twitter menu hatena pocket slack

2021.08.31 TUE

DatadogでLocal DB を監視する

Shimpei Chiba

WRITTEN BY Shimpei Chiba

これは何

DatadogでEC2(CentOS7)内のLocal DB(MySQL5.7) を監視してみた、のメモです。

はじめに

Datadog Agent は MySQL データベースから、次のような多数のメトリクスを収集できます (一例)。

クエリスループット
クエリパフォーマンス (平均クエリ実行時間、低速なクエリなど)
接続数 (現在開かれている接続、中断された接続、エラーなど)
InnoDB (バッファプールメトリクスなど)

カスタム SQL クエリを使用して、独自のメトリクスを作成することもできます。

MySQLでセットアップ

MySQL サーバーで、Datadog Agent 用のデータベースユーザーを作成します。

$ mysql> CREATE USER 'datadog'@'localhost' IDENTIFIED BY '<一意のパスワード>';

Agent がメトリクスを収集するには、いくつかの権限が必要です。次のように、限られた権限のみをユーザーに付与してください。

mysql> GRANT REPLICATION CLIENT ON *.* TO 'datadog'@'localhost' WITH MAX_USER_CONNECTIONS 5;
mysql> GRANT PROCESS ON *.* TO 'datadog'@'localhost';

有効になると、追加の権限を付与することで、performance_schema データベースからメトリクスを収集できます。

mysql> show databases like 'performance_schema';
+-------------------------------+
| Database (performance_schema) |
+-------------------------------+
| performance_schema            |
+-------------------------------+
1 row in set (0.00 sec)

mysql> GRANT SELECT ON performance_schema.* TO 'datadog'@'localhost';

Datadog設定ファイル編集

MySQL のメトリクスとログの収集を開始するには、/etc/datadog-agent/conf.d/mysql.d/conf.yaml ファイルを編集します。

datadog-agentをインストールすると、サンプルとして、mysql.d/conf.yaml.sampleがあると思います。
使用可能なすべてのコンフィギュレーションオプションについては、サンプルを参照してください。

MySQL メトリクスを収集するには、mysql.d/conf.yaml に次の構成ブロックを追加します。

init_config:

instances:
  - server: 127.0.0.1
    user: datadog
    pass: "<YOUR_CHOSEN_PASSWORD>" # from the CREATE USER step earlier
    port: "<YOUR_MYSQL_PORT>" # e.g. 3306
    options:
      replication: false
      galera_cluster: true
      extra_status_metrics: true
      extra_innodb_metrics: true
      extra_performance_metrics: true
      schema_size_metrics: false
      disable_innodb_metrics: false

Agent を再起動すると、Datadog への MySQL メトリクスの送信が開始されます。

$ sudo systemctl restart datadog-agent

あとはGUIでdatadog-monitorを作成するか、Terraformなどでコードで立ち上げれば、監視できると思います。

TCPで疎通確認する

3306ポートで接続できるか、監視したいので、その設定を入れていきます。

$ vi /etc/datadog-agent/conf.d/tcp_check.d/conf.yaml
init_config:
instances:
  - name: TCP-3306_check(例)
    host: 127.0.0.1
    port: 3306
    collect_response_time: true
$ sudo systemctl restart datadog-agent

Syntaxエラーがないかチェックします。

$ sudo datadog-agent configcheck

「tcp_check」 として、設定した内容が出ます。

$ sudo datadog-agent status
tcp_check (3.1.1)
    -----------------
      Instance ID: tcp_check:TCP-3306_check:XXXXXXXXXX [OK]
      Configuration Source: file:/etc/datadog-agent/conf.d/tcp_check.d/conf.yaml
      Total Runs: 12
      Metric Samples: Last Run: 2, Total: 24
      Events: Last Run: 0, Total: 0
      Service Checks: Last Run: 1, Total: 12
      Average Execution Time : 0s
      Last Execution Date : XXXXXXXXXX
      Last Successful Execution Date : XXXXXXXXXX

参考

https://docs.datadoghq.com/ja/integrations/mysql/?tab=host

元記事はこちら

https://qiita.com/namely_/items/66104164e4a0a1c0e448

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。