はじめに
クラウド上にあるマネージドサービスでは運用の手間が少なく様々なサービスを活用できる一方で、ご自身で構築した環境と異なり必要な情報の取り方が変わってくるケースもあります。
本記事ではGoogle CloudのCloud SQL for MySQLを例に、Cloud SQLの情報を取得し、New Relicに送る方法を解説します。
On-host integrationを利用した情報の取得
New Relicでは、インフラストラクチャエージェントと連携して動作するインテグレーションをon-host integrations と呼んでいます。
これらのインテグレーションは、サポートされているサービスからデータを収集し、インフラストラクチャエージェントを使用してそのデータをNew Relicに送信します。
今回はMySQL monitoring itegrationを利用し、VPC内に設置されたVMからCloud SQLインスタンスに接続し、MySQLの詳細な情報を取得するまでをステップバイステップで解説します。
MySQL monitoring integration
https://docs.newrelic.com/jp/install/mysql/
MySQL monitoring integrationの設定
MySQL monitoring integrationの設定を開始するには、「Integration & Agents」メニューより、MySQLを検索し、決定します。
設定方法が複数レコメンドされますが、今回はVMに直接インストールするため 「On a host」を選択します。
続いてインストールする対象のOSを選択します。
本記事ではLinuxを対象に、インストールを行います。
監視用ユーザーの作成
続いてVMからCloudSQLに接続し、監視するユーザーを作成します。
usernameとpasswordのボックスにそれぞれ入力することで、コマンド例にusernameとpasswordが埋め込まれます。
(例では簡単なユーザー名とパスワードを設定していますが、実際に運用される環境では適切なパスワード設定を行なってください)
UI上からレコメンドされるコマンドではユーザー権限の対象が'newrelic'@'localhost'になっている点に注意が必要です。同一ホスト上でMySQLサーバが実行されている環境であれば問題ありませんが、CloudSQLでは実行するユーザーが別ホストにいます。ご自身の環境に合ったホスト名(例:'10.128.0.%')へ書き換えましょう。
# Create 'newrelic' user
CREATE USER 'newrelic'@'10.128.0.%' IDENTIFIED BY 'example';
# Grant replication client privileges
GRANT REPLICATION CLIENT ON *.* TO 'newrelic'@'10.128.0.%';
# Grant select privileges
GRANT SELECT ON *.* TO 'newrelic'@'10.128.0.%';
管理ユーザなどでCloudSQLインスタンスに接続したらユーザー作成クエリを実行し、監視用ユーザーを作成します。
On-host integrationの設定
づづいて監視元となるVMで監視設定を行います。
プルダウンメニューからご自身のOSを選択し、Integrationパッケージのインストールコマンドを実行します。
(プルダウンメニューの内容により、パッケージマネージャーのコマンドが変化します)
パッケージのインストールが完了しましたら、画面の指示に従いディレクトリを移動します。
続いて設定ファイルを作成します。
UI上で設定ファイル mysql-config.yml
の内容が表示されますので、ダウンロードないしコピー&ペーストでインテグレーションの設定ディレクトリ配下(例: /etc/newrelic-infra/integrations.d )にファイルを設置します。
integrations:
- name: nri-mysql
env:
HOSTNAME: 10.6.16.5
PORT: 3306
# ENABLE_TLS: false
# INSECURE_SKIP_VERIFY: false
# Specify extra connection parameters as attr1=val1&attr2=val2.
# EXTRA_CONNECTION_URL_ARGS: ""
# If not empty `socket` parameter will discard `port` parameter
# SOCKET: <PATH_TO_LOCAL_SOCKET_FILE_NAME>
USERNAME: newrelic
PASSWORD: example
# Extended metrics
EXTENDED_METRICS: true
EXTENDED_INNODB_METRICS: true
EXTENDED_MYISAM_METRICS: true
REMOTE_MONITORING: true
# Time between consecutive executions of the integration. It must be a number followed by a time unit (s, m or h), without spaces.
# The default is 30s, and the minimum accepted value is 15s. Any value lower than 15s is automatically set to 15s.
interval: 30s
# The agent uses those labels to decorate the metrics, events, and inventory that it receives from a given integration instance.
labels:
env: production
role: write-replica
# Advanced: Allows overriding the category and term of the inventory source.
inventory_source: config/mysql
レコメンドされているファイルではHOSTNAMEに対しlocalhostが設定されていますので、対象のCloud SQLインスタンスに置き換えます。
本記事ではPRIVATE_ADDRESSに対し接続します。
gcloud sql instances list
NAME DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS
okawa-cloudsql-5a295ada MYSQL_8_0 us-central1-c db-f1-micro - 10.6.16.5 RUNNABLE
以上で設定は完了です。
続いて、データが正常に入ってきているかどうかを確認します。
データの流入を確認する
データが正常にNew Relicに入っているかは、Metrics & Eventsから確認できます。
検索窓にmysqlと入力し、期待されたデータが取得できるか確認しましょう。
おわりに
本記事ではリモートからマネージドサービス(CloudSQL)内の情報を取得する方法を解説しました。
皆様の監視ライフの一助になりますと幸いです。
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!