New Relic APMはアプリケーションから発行されたSQLクエリの実行回数やパフォーマンス、SQL文などを確認できます。この記事ではSnowflakeに発行されたSQLクエリを可視化してみます。
APMの概要について理解されたい方は以下の記事をご確認ください。
はじめてみよう
今回は「Integrating Snowflake with Spring Boot」で公開されている、アプリケーションをAmazon Linux 2023上で構築しNew Relic APMを導入してみます。
New Relicのアカウントをお持ちでない方は 無料アカウント を作成の上、お試しください! 全機能使い放題のユーザー1名と100GBのデータ転送が無料 で使えます。
1. アプリケーションのインストール
- Amazon Linux 2023にJavaとgitをインストールします。
sudo yum install java git
- アプリケーションをCloneします。
git clone https://github.com/kavyababu7/springboot-snowflake-connect
- プロジェクトディレクトリに移動します
cd springboot-snowflake-connect
2. アプリケーションの設定
-
pom.xmlに記述されているSnowflake JDBCの依存関係のバージョンを変更します。
pom.xml<dependency> <groupId>net.snowflake</groupId> <artifactId>snowflake-jdbc</artifactId> <version>3.13.29</version> </dependency>
-
Snowflakeの接続プロパティを設定します。
src/main/resources/application.propertiesspring.datasource.username=<USERNAME> spring.datasource.password=<PASSWORD> spring.datasource.driverClassName=net.snowflake.client.jdbc.SnowflakeDriver snowflake.account=<SNOWFLAKE ACCOUNT> snowflake.schema=<SCHEMA> snowflake.database.name=<DATABASE NAME> snowflake.warehouse=<WAREHOUSE NAME> # Snowflake connection properties spring.datasource.url=jdbc:snowflake://${snowflake.account}.snowflakecomputing.com/?db=${snowflake.database.name}&schema=${snowflake.schema}&warehouse=${snowflake.warehouse}&JDBC_QUERY_RESULT_FORMAT=JSON spring.jpa.properties.hibernate.dialect=EmptyDialect
クエリ結果をJSON形式で取得するため spring.datasource.url に &JDBC_QUERY_RESULT_FORMAT=JSON を追加してください
-
hibernate dialectを処理するための空のdialectを作成します。
src/main/java/EmptyDialect.javaimport org.hibernate.dialect.Dialect; public class EmptyDialect extends Dialect {}
3. サンプルデータの投入
-
Snowflakeにテーブルを作成しデータを追加します。
create or replace TABLE NEWR.PUBLIC.T_CAR ( CAR_ID NUMBER(4,0), CAR_NAME VARCHAR(10), CAR_MODEL VARCHAR(10), CAR_MAKE_YEAR NUMBER(4,0), NUMBER_PLATE VARCHAR(4) ); INSERT INTO NEWR."PUBLIC".T_CAR (CAR_ID, CAR_NAME, CAR_MODEL, CAR_MAKE_YEAR, NUMBER_PLATE) VALUES(1, 'CAR1', 'MODEL1', 2024, '1'); INSERT INTO NEWR."PUBLIC".T_CAR (CAR_ID, CAR_NAME, CAR_MODEL, CAR_MAKE_YEAR, NUMBER_PLATE) VALUES(2, 'CAR2', 'MODEL2', 2024, '2');
4. アプリケーションの動作確認
-
アプリケーションを起動します。
./mvnw clean package java -jar target/*.jar
-
ブラウザでアクセスできることを確認します。本アプリケーションはデフォルトでTCP:8080でListenします。
http://<URL>:8080/api/cars?numberPlate=1
- 起動確認できたらアプリケーションを Ctrl + C で停止します。
5. New Relic APMの導入
Spring BootにAPM Agentを導入しますが、弊社エンジニアが別の記事で手順を公開していますので、そちらを参考に導入してください。
[APM Agentを導入] -> [Amazon Linux 2023にインストール]
New Relic上に表示されるアプリケーション名は元の記事の画像にある「petclinic」ではなく、本アプリケーションを識別しやすい名称を入力してください
6. SQLクエリの確認
-
New Relicの [APM & Services] から今回追加したアプリケーションを選択します。
-
[Summary] の [Transactions] セクションから「api/cars (GET)」の 「Slowest trace」に表示される値をを選択します。
-
[Transaction trace] セクションから **** を選択すると、[Attribute]にSQLクエリが表示されます。
New Relic APMの簡単なセットアップで、JavaアプリケーションからSnowflakeに発行されるSQLクエリがNew Relic APMで確認できるようになりました。
皆さんのアプリケーションの品質維持や改善にぜひご活用ください!
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!