SonarQube 統合は、SonarQube アプリケーションのパフォーマンスを監視し、コードの診断と最適化を支援します。SonarQube 統合では、インフラストラクチャ エージェント、PosgreSQL エージェント、NRI-Prometheus、および NRI-JMX を利用し、最も重要な SonarQube メトリクスを含む事前構築されたダッシュボードを提供します。
SonarQube 統合をセットアップすると、SonarQube メトリクスのダッシュボードが提供されます。
インフラストラクチャエージェントをインストールします
インフラストラクチャ エージェントは、次の 2 つの方法でインストールできます。
- ガイド付きインストールは、システムを検査し、システムに最適なアプリケーション監視エージェントとともにインフラストラクチャ エージェントをインストールする CLI ツールです。ガイド付きインストールの仕組みの詳細については、ガイド付きインストールの概要をご覧ください。
- インフラストラクチャ エージェントを手動でインストールする場合は、 Linux、 Windows、または macOSの手動インストールのチュートリアルに従うことができます。
PostgreSQLをインストールする
- エージェントをインストールする前に、 ドキュメント で PostgreSQL エージェントの要件を確認してください。
- PostgreSQL クイックスタート ページ PostgreSQL クイックスタート インストールを開きます。
- Install now [今すぐインストール] をクリックして、PostgreSQL クイックスタート インストールを開始します。
SonarQube と New Relic を統合する
以下は、SonarQube を New Relic と統合するために従う必要がある 2 つの方法です。
- nri-プロメテウスの構成
- nri-jmx 構成
- 次のパスを使用して、
nri-prometheus-config.yml
という名前のファイルを作成します。 /etc/newrelic-infra/integrations.d/nri-prometheus-config.yml
- 以下のテンプレートを使用して、作成された
nri-prometheus-config.yml
という名前のファイルを更新します。
callout.note
sonarqube パスワードには @ 記号を使用しないでください。
これらのフィールドを更新します。
クラスター名: YOUR_DESIRED_CLUSTER_NAME
例えば: sonarqube_metrics_exporter
URL: [“http://user_name:password@YOUR_HOST_IP:9000/api/monitoring/metrics”]
Insecure_skip_verify: true
nri-prometheus-config.yml
ファイルは次のようになります。
cluster_name: "YOUR_DESIRED_CLUSTER_NAME"
- description: Sonarqube metrics list
urls: ["http://user_name:password@YOUR_HOST_IP:9000/api/monitoring/metrics"]
insecure_skip_verify: true
NRI-JMX の構成
SonarQube ダッシュボードは、JMX 統合から収集されたデータを取得し、ダッシュボードに変換します。すべてのデータを New Relic に保存することで、システムの健全性の完全な概要をワンストップで把握できるようになります。
まだインストールしていない場合は、 JMX 監視 統合をインストールする必要があります。インストールしたら、いくつかの追加構成を行う必要があります。
例: sudo apt-get install nri-jmx
- 以下のパスにある sonar.properties ファイルに移動します。
- 以下のスニペットを
sonar.properties
ファイルに追加して、 jmx sonarqube web
を構成します。
sonar.web.javaOpts=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9010 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false
- 以下のスニペットを
sonar.properties
ファイルに追加して、 jmx sonarqube compute engine
を構成します。
sonar.ce.javaOpts=-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9011 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false
- コマンドを使用して jconsole を開きます
jconsole
- リモート接続をクリックし、以下の接続 URL を使用して SonarQube ドメインに接続します。
例:
service:jmx:rmi://[YOUR_HOST]:9010/jndi/rmi://[YOUR_HOST]:9010/jmxrmi
service:jmx:rmi://[YOUR_HOST]:9011/jndi/rmi://[YOUR_HOST]:9011/jmxrmi
- jconsole ツールの [MBeans] タブに移動すると、SonarQube JVM メトリクスを確認できます。
このステップでは、メトリクスを New Relic に配置すると人間が判読できるように整理します。jconsole がキャプチャする必要があるメトリクスを使用して、 jvm-sonarqube-web-metrics.yml
ファイルと jvm-sonarqube-compute-engine-metrics.yml
ファイルを更新します。以下の手順には、jvm-metrics.yml ファイルのスニペットが含まれています。
始める前に、スニペットの使用について知っておくべきことがいくつかあります。
- 以下のコード スニペットでは、必要なメトリクスで更新します。
YOUR_BROKER_NAME
、 YOUR_TOPIC_NAME
、および YOUR_QUEUE_NAME
を実際の値で更新します。jconsole ツールを使用してこれらの値を取得できます。- キャプチャされたすべてのメトリクスは、event_type フィールドによって決定されるイベントに保存されます。
jvm-metrics
ファイルを更新するには:
- 以下のファイルパスに移動します。
$cd /etc/newrelic-infra/integrations.d/
jvm-sonarqube-web-metrics.yml
ファイルと jvm-sonarqube-compute-engine-metrics.yml
ファイルを作成します。- 以下のスニペットを
jvm-sonarqube-web-metrics.yml
ファイルに追加します。
event_type: JVMSampleSonarQubeWebMetrics
- query: name=AsyncExecution
- PoolMaxActiveConnections
- PoolRemoveAbandonedTimeoutSeconds
- 以下のスニペットを
jvm-sonarqube-compute-engine-metrics.yml
ファイルに追加します。
event_type: JVMSampleSonarQubeComputeEngineMetrics
- query: name=ComputeEngineDatabaseConnection
- PoolMaxActiveConnections
- PoolRemoveAbandonedTimeoutSeconds
- query: name=ComputeEngineTasks
以下の YAML スニペットは、SonarQube メトリクスを CONNECTION_URL
経由で、それらのメトリクスを読み取り可能にする Java ツールである jconsole に接続します。JMX 統合のインストールを進めている場合、このステップは構成ステップに対応します。
更新するには:
- 以下のファイル パスに移動します。
$cd /etc/newrelic-infra/integrations.d/
jmx-sonarqube-web-config.yml
ファイルと jmx-sonarqube-compute-engine-config.yml
ファイルを作成します。- SonarQube Web サーバーの
jmx-sonarqube-web-config.yml
ファイルに次のスニペットを追加します。
COLLECTION_FILES: /etc/newrelic-infra/integrations.d/jmx-sonarqube-web-config.yml
CONNECTION_URL: service:jmx:rmi://<YOUR_IP>:9010/jndi/rmi://<YOUR_IP>:9010/jmxrmi
REMOTE_MONITORING: "true"
- SonarQube Compute Engine の
jmx-sonarqube-compute-engine-config.yml
ファイルに次のスニペットを追加します。
COLLECTION_FILES: /etc/newrelic-infra/integrations.d/jmx-sonarqube-compute-engine-config.yml
CONNECTION_URL: service:jmx:rmi://<YOUR_IP>:9011/jndi/rmi://<YOUR_IP>:9011/jmxrmi
REMOTE_MONITORING: "true"
SonarQube ログを New Relic に転送する
ログ転送を 使用して、SonarQube ログを New Relic に転送できます。
Linux マシンでは、 logging.yml
という名前のログ ファイルが次のパスに存在する必要があります。
$cd /etc/newrelic-infra/logging.d/
ログ ファイルを作成した後、次のスクリプトを logging.yml
ファイルに追加します。
file: /opt/sonarqube/logs/sonar.log
file: /opt/sonarqube/logs/ce.log
file: /opt/sonarqube/logs/es.log
file: /opt/sonarqube/logs/web.log
New Relic インフラストラクチャ エージェントを再起動します
インフラストラクチャ エージェントを再起動します。
$sudo systemctl restart newrelic-infra.service
数分以内に、アプリケーションはメトリクスを one.newrelic.comに送信します。
データを検索する
SonarQube
という名前の事前に構築されたダッシュボード テンプレートを選択して、SonarQube アプリケーションのメトリクスを監視できます。事前に構築されたダッシュボード テンプレートを使用するには、次の手順に従います。
- one.newrelic.comから、 + Add data [+ データの追加] ページに移動します。
- [ダッシュボード]をクリックします。
- 検索バーに
sonarqube
と入力します。 - SonarQube ダッシュボードが表示されます。それをクリックしてインストールします。
SonarQube ダッシュボードはカスタム ダッシュボードとみなされ、 Dashboards ダッシュボード UI に表示されます。ダッシュボードの使用と編集に関するドキュメントについては、 ダッシュボードのドキュメントを参照してください。
SonarQube Web ステータスを確認するための NRQL クエリは次のとおりです。
SELECT latest(sonarqube_web_uptime_minutes)
AS 'SonarQube Web Uptime (minutes)'
EVENT_NAME
を使用して次の NRQL クエリを実行して、JVM メトリクスを表示します。
SELECT latest(PoolIdleConnections) FROM JVMSampleSonarQubeWebMetrics
次は何ですか?
NRQL クエリの作成とダッシュボードの生成の詳細については、次のドキュメントをご覧ください。