Open4
NewRelic MySQL Integration
integration構成ファイルのdry run
# /usr/bin/newrelic-infra -dry_run -integration_config_path /etc/newrelic-infra/integrations.d/mysql-config.yml
time="2024-10-05T15:21:23Z" level=error msg="Failed to load integration definition" component=integrations.runner.Runner error="can't instantiate integration: can't find an executable given the name: nri-mysql" integration_name=nri-mysql
time="2024-10-05T15:21:23Z" level=warning msg="can't instantiate integrations from file" component=integrations.Manager error="can't instantiate integration: can't find an executable given the name: nri-mysql" file=/etc/newrelic-infra/integrations.d/mysql-config.yml
infra-agentにnri-mysqlを入れる
infra-agentはalpine
Integrationのインストール手順の対象OSにalpineがない。apk
でのインストール方法も記載ない
Assetsからarm.tar.gzを取得してインストールする
/tmp # curl -L https://github.com/newrelic/nri-mysql/releases/download/v1.10.11/nri-mysql_linux_1.10.11_arm.tar.gz -o /tmp/nri-mysq
l.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 1991k 100 1991k 0 0 3747k 0 --:--:-- --:--:-- --:--:-- 3747k
/tmp # tar -xzf /tmp/nri-mysql.tar.gz
/tmp # ls
etc nr-integrations nri-mysql.tar.gz var
/tmp # ls -lR
.:
total 2004
drwxr-xr-x 3 root root 4096 Oct 5 16:09 etc
drwxr-xr-x 2 root root 4096 Oct 5 16:09 nr-integrations
-rw-r--r-- 1 root root 2038877 Oct 5 16:09 nri-mysql.tar.gz
drwxr-xr-x 3 root root 4096 Oct 5 16:09 var
./etc:
total 4
drwxr-xr-x 3 root root 4096 Oct 5 16:09 newrelic-infra
./etc/newrelic-infra:
total 4
drwxr-xr-x 2 root root 4096 Oct 5 16:09 integrations.d
./etc/newrelic-infra/integrations.d:
total 4
-rw-r--r-- 1 1001 127 1387 Sep 16 05:36 mysql-config.yml.sample
./nr-integrations:
total 12
-rw-r--r-- 1 root root 5508 Oct 5 16:09 com.newrelic.docker-322be073a3fb0aca0b6122cbaa60d5ca.json
-rw-r--r-- 1 root root 436 Oct 5 16:09 container_cpus.json
./var:
total 4
drwxr-xr-x 3 root root 4096 Oct 5 16:09 db
./var/db:
total 4
drwxr-xr-x 3 root root 4096 Oct 5 16:09 newrelic-infra
./var/db/newrelic-infra:
total 4
drwxr-xr-x 3 root root 4096 Oct 5 16:09 newrelic-integrations
./var/db/newrelic-infra/newrelic-integrations:
total 8
drwxr-xr-x 2 root root 4096 Oct 5 16:09 bin
-rw-r--r-- 1 1001 127 232 Sep 16 05:36 mysql-definition.yml
./var/db/newrelic-infra/newrelic-integrations/bin:
total 4868
-rwxr-xr-x 1 root root 4980888 Sep 16 05:37 nri-mysql
定義ファイルを含むバイナリをエージェント ディレクトリnewrelic-integrations内またはcustom-integrationsに配置します。
# Step 1: Use New Relic Infrastructure Agent as the base image
FROM newrelic/infrastructure:latest
# Step 2: Install necessary tools for downloading nri-mysql
RUN apk add --no-cache curl ca-certificates
# Step 3: Download and extract the ARM version of nri-mysql binary from GitHub releases
RUN curl -L https://github.com/newrelic/nri-mysql/releases/download/v1.10.11/nri-mysql_linux_1.10.11_arm.tar.gz -o /tmp/nri-mysql.tar.gz && \
tar -xzf /tmp/nri-mysql.tar.gz -C / && \
rm /tmp/nri-mysql.tar.gz
# Step 4: Ensure the nri-mysql binary is executable
RUN chmod +x /var/db/newrelic-infra/newrelic-integrations/bin/nri-mysql
# Step 5: Copy the MySQL integration configuration file
COPY mysql-config.yml /etc/newrelic-infra/integrations.d/mysql-config.yml
# Step 6: Define the entry point for New Relic Infrastructure Agent
CMD ["newrelic-infra"]
nri-mysqlのデフォルトのMetrisc
イベント属性名 | 次元メトリクス名 | 説明 |
---|---|---|
cluster.slaveRunning | mysql.node.cluster.slaveRunning | ブール値。レプリケーションスレーブがマスターに接続されており、I/OおよびSQLスレッドが稼働していれば1、そうでなければ0。レプリケーションスレーブのメトリクスも参照。 |
db.handlerRollbackPerSecond | mysql.node.handler.rollbackPerSecond | ストレージエンジンに対するロールバック操作のリクエストの1秒あたりのレート。 |
db.innodb.bufferPoolPagesData | mysql.node.innodb.bufferPool.pagesData | InnoDBバッファプールにデータが含まれるページの数。 |
db.innodb.bufferPoolPagesFree | mysql.node.innodb.bufferPool.pagesFree | InnoDBバッファプール内の空きページの数。 |
db.innodb.bufferPoolPagesTotal | mysql.node.innodb.bufferPool.pagesTotal | InnoDBバッファプールの総ページ数。 |
db.innodb.dataReadBytesPerSecond | mysql.node.innodb.dataReadBytesPerSecond | InnoDBテーブルから読み取られたデータの1秒あたりのバイト数。 |
db.innodb.dataWrittenBytesPerSecond | mysql.node.innodb.dataWrittenBytesPerSecond | InnoDBテーブルに書き込まれたデータの1秒あたりのバイト数。 |
db.innodb.logWaitsPerSecond | mysql.node.innodb.logWaitsPerSecond | ログバッファが小さすぎてフラッシュ待機が必要だった回数(1秒あたり)。 |
db.innodb.rowLockCurrentWaits | mysql.node.innodb.rowLockCurrentWaits | InnoDBテーブルにおける現在待機中の行ロックの数。 |
db.innodb.rowLockTimeAvg | mysql.node.innodb.rowLockTimeAvg | InnoDBテーブルに対する行ロック取得の平均時間(ミリ秒)。 |
db.innodb.rowLockWaitsPerSecond | mysql.node.innodb.rowLockWaitsPerSecond | InnoDBテーブルでの行ロック待機が発生した回数(1秒あたり)。 |
db.openedTablesPerSecond | mysql.node.openedTablesPerSecond | 1秒あたりにmy_open()で開かれたファイルの数。サーバーが他の方法で開いたファイルはカウントされない。 |
db.openFiles | mysql.node.openFiles | 現在開いているファイルの数。通常ファイルのみをカウントし、ソケットやパイプなどは含まない。 |
db.openTables | mysql.node.openTables | 現在開いているテーブルの数。 |
db.qCacheFreeMemoryBytes | mysql.node.qCache.freeMemoryBytes | クエリキャッシュの空きメモリのバイト数。 |
db.qCacheHitRatio | mysql.node.qCache.hitRatio | クエリキャッシュから取得されたクエリの割合。 |
db.qCacheNotCachedPerSecond | mysql.node.qCache.notCachedPerSecond | クエリキャッシュにキャッシュされなかったクエリの数(1秒あたり)。 |
db.qCacheUtilization | mysql.node.qCache.utilization | クエリキャッシュメモリの使用率(%)。 |
db.tablesLocksWaitedPerSecond | mysql.node.tablesLocksWaitedPerSecond | テーブルロックのリクエストがすぐに許可されず、待機が必要だった回数(1秒あたり)。 |
net.abortedClientsPerSecond | mysql.node.net.abortedClientsPerSecond | クライアントが接続を正常に閉じることなく死んだために中断された接続の数(1秒あたり)。 |
net.abortedConnectsPerSecond | mysql.node.net.abortedConnectsPerSecond | MySQLサーバーへの接続試行が失敗した回数(1秒あたり)。 |
net.bytesReceivedPerSecond | mysql.node.net.bytesReceivedPerSecond | クライアントから受信したバイト数(1秒あたり)。 |
net.bytesSentPerSecond | mysql.node.net.bytesSentPerSecond | クライアントに送信されたバイト数(1秒あたり)。 |
net.connectionErrorsMaxConnectionsPerSecond | mysql.node.net.connectionErrorsMaxConnectionsPerSecond | サーバーがmax_connectionsに達したために拒否された接続の数(1秒あたり)。 |
net.connectionsPerSecond | mysql.node.net.connectionsPerSecond | 1秒あたりの接続試行数。 |
net.maxUsedConnections | mysql.node.net.maxUsedConnections | サーバー起動以来、同時に使用されていた最大の接続数。 |
net.threadsConnected | mysql.node.net.threadsConnected | 現在開いている接続数。 |
net.threadsRunning | mysql.node.net.threadsRunning | スリープ状態でないスレッドの数。 |
query.comCommitPerSecond | mysql.node.query.commitPerSecond | 1秒あたりに実行されたCOMMITステートメントの数。 |
query.comDeletePerSecond | mysql.node.query.deletePerSecond | 1秒あたりに実行されたDELETEステートメントの数。 |
query.comDeleteMultiPerSecond | mysql.node.query.deleteMultiPerSecond | 複数テーブルを使用するDELETEステートメントが実行された数(1秒あたり)。 |
query.comInsertPerSecond | mysql.node.query.insertPerSecond | 1秒あたりに実行されたINSERTステートメントの数。 |
query.comInsertSelectPerSecond | mysql.node.query.insertSelectPerSecond | 1秒あたりに実行されたINSERT SELECTステートメントの数。 |
query.comReplaceSelectPerSecond | mysql.node.query.replaceSelectPerSecond | 1秒あたりに実行されたREPLACE SELECTステートメントの数。 |
query.comRollbackPerSecond | mysql.node.query.rollbackPerSecond | 1秒あたりに実行されたROLLBACKステートメントの数。 |
query.comSelectPerSecond | mysql.node.query.selectPerSecond | 1秒あたりに実行されたSELECTステートメントの数。 |
query.comUpdateMultiPerSecond | mysql.node.query.updateMultiPerSecond | 複数テーブルを使用するUPDATEステートメントが実行された数(1秒あたり)。 |
query.comUpdatePerSecond | mysql.node.query.updatePerSecond | 1秒あたりに実行されたUPDATEステートメントの数。 |
query.preparedStmtCountPerSecond | mysql.node.query.preparedStmtCountPerSecond | 現在の準備されたステートメント数(1秒あたり)。最大値はmax_prepared_stmt_countシステム変数で指定される。 |
query.queriesPerSecond | mysql.node.query.queriesPerSecond | サーバーが実行した全ステートメントの数(1秒あたり)。ストアドプログラム内で実行されたステートメントも含む。 |
query.questionsPerSecond | mysql.node.query.questionsPerSecond | クライアントから送信されたステートメントの数(1秒あたり)。 |
query.slowQueriesPerSecond | mysql.node.query.slowQueriesPerSecond | long_query_time秒以上かかったクエリの数(1秒あたり)。スロークエリログが有効かどうかにかかわらずカウントされる。 |
NewRelic Flexでカスタムのクエリ結果のメトリクス作成
name
に指定した値がEvent type名として保存されるので、NRQLで取得する
NRQL
SELECT Variable_name,Value FROM MySQLShowVars