diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md new file mode 100644 index 0000000000..2325efc140 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/1-otel-collector.md @@ -0,0 +1,76 @@ +--- +title: OpenTelemetry Collector のインストール +linkTitle: 1. OpenTelemetry Collector +weight: 1 +--- + +Splunk OpenTelemetry Collector は、インフラストラクチャとアプリケーションの計装における中核コンポーネントです。その役割は以下のデータを収集して送信することです: + +* インフラストラクチャメトリクス(ディスク、CPU、メモリなど) +* Application Performance Monitoring (APM) トレース +* プロファイリングデータ +* ホストおよびアプリケーションのログ + +{{% notice title="既存の OpenTelemetry Collector の削除" style="warning" %}} +Splunk IM ワークショップを完了している場合は、続行する前に Kubernetes で実行中の Collector を削除してください。以下のコマンドを実行して削除できます: + +``` bash +helm delete splunk-otel-collector +``` + +EC2 インスタンスには、古いバージョンの Collector がすでにインストールされている場合があります。Collector をアンインストールするには、以下のコマンドを実行してください: + +``` bash +curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh +sudo sh /tmp/splunk-otel-collector.sh --uninstall +``` + +{{% /notice %}} + +インスタンスが正しく設定されていることを確認するために、このワークショップに必要な環境変数が正しく設定されているか確認する必要があります。ターミナルで以下のコマンドを実行してください: + +``` bash +. ~/workshop/petclinic/scripts/check_env.sh +``` + +出力で、以下のすべての環境変数が存在し、値が設定されていることを確認してください。不足している場合は、インストラクターに連絡してください: + +```text +ACCESS_TOKEN +REALM +RUM_TOKEN +HEC_TOKEN +HEC_URL +INSTANCE +``` + +これで Collector のインストールに進むことができます。インストールスクリプトには、いくつかの追加パラメータが渡されます: + +* `--with-instrumentation` - Splunk ディストリビューションの OpenTelemetry Java からエージェントをインストールします。これにより、PetClinic Java アプリケーションの起動時に自動的にロードされます。設定は不要です! +* `--deployment-environment` - リソース属性 `deployment.environment` を指定された値に設定します。これは UI でビューをフィルタリングするために使用されます。 +* `--enable-profiler` - Java アプリケーションのプロファイラを有効にします。これによりアプリケーションの CPU プロファイルが生成されます。 +* `--enable-profiler-memory` - Java アプリケーションのプロファイラを有効にします。これによりアプリケーションのメモリプロファイルが生成されます。 +* `--enable-metrics` - Micrometer メトリクスのエクスポートを有効にします +* `--hec-token` - Collector が使用する HEC トークンを設定します +* `--hec-url` - Collector が使用する HEC URL を設定します + +``` bash +curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \ +sudo sh /tmp/splunk-otel-collector.sh --realm $REALM -- $ACCESS_TOKEN --mode agent --without-fluentd --with-instrumentation --deployment-environment $INSTANCE-petclinic --enable-profiler --enable-profiler-memory --enable-metrics --hec-token $HEC_TOKEN --hec-url $HEC_URL +``` + +次に、Collector にパッチを適用して、AWS インスタンス ID ではなくインスタンスのホスト名を公開するようにします。これにより、UI でのデータのフィルタリングが容易になります: + +``` bash +sudo sed -i 's/gcp, ecs, ec2, azure, system/system, gcp, ecs, ec2, azure/g' /etc/otel/collector/agent_config.yaml +``` + +`agent_config.yaml` にパッチを適用したら、Collector を再起動する必要があります: + +``` bash +sudo systemctl restart splunk-otel-collector +``` + +インストールが完了したら、**Hosts with agent installed** ダッシュボードに移動して、ホストからのデータを確認できます。**Dashboards → Hosts with agent installed** の順に移動してください。 + +ダッシュボードフィルタを使用して `host.name` を選択し、ワークショップインスタンスのホスト名を入力または選択してください(これはターミナルセッションのコマンドプロンプトから取得できます)。ホストのデータが流れていることを確認したら、APM コンポーネントの作業を開始する準備が整いました。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md new file mode 100644 index 0000000000..67e896071e --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/2-building-petclinic.md @@ -0,0 +1,55 @@ +--- +title: Spring PetClinic アプリケーションのビルド +linkTitle: 2. PetClinic のビルド +weight: 2 +--- + +APM をセットアップするために最初に必要なのは...そう、アプリケーションです。この演習では、Spring PetClinic アプリケーションを使用します。これは、Spring フレームワーク(Springboot)で構築された非常に人気のあるサンプル Java アプリケーションです。 + +まず、PetClinic の GitHub リポジトリをクローンし、その後アプリケーションのコンパイル、ビルド、パッケージ化、テストを行います: + +```bash +git clone https://github.com/spring-projects/spring-petclinic +``` + +`spring-petclinic` ディレクトリに移動します: + + + +```bash +cd spring-petclinic +git checkout b26f235250627a235a2974a22f2317dbef27338d +``` + +Docker を使用して、PetClinic が使用する MySQL データベースを起動します: + +```bash +docker run -d -e MYSQL_USER=petclinic -e MYSQL_PASSWORD=petclinic -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=petclinic -p 3306:3306 docker.io/biarms/mysql:5.7 +``` + +次に、PetClinic アプリケーションにシンプルなトラフィックを生成する Locust を実行する別のコンテナを起動します。Locust は、Web アプリケーションにトラフィックを生成するために使用できるシンプルな負荷テストツールです。 + +```bash +docker run --network="host" -d -p 8090:8090 -v ~/workshop/petclinic:/mnt/locust docker.io/locustio/locust -f /mnt/locust/locustfile.py --headless -u 1 -r 1 -H http://127.0.0.1:8083 +``` + +次に、`maven` を使用して PetClinic をコンパイル、ビルド、パッケージ化します: + +```bash +./mvnw package -Dmaven.test.skip=true +``` + +> [!INFO] +> 初回実行時は数分かかり、アプリケーションをコンパイルする前に多くの依存関係をダウンロードします。以降のビルドはより高速になります。 + +ビルドが完了したら、実行しているインスタンスのパブリック IP アドレスを取得する必要があります。以下のコマンドを実行して取得できます: + +```bash +curl http://ifconfig.me +``` + +IP アドレスが返されます。アプリケーションが実行されていることを確認するために必要になるので、この IP アドレスをメモしておいてください。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md new file mode 100644 index 0000000000..728dc338d3 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/3-auto-discovery.md @@ -0,0 +1,64 @@ +--- +title: Java 向け自動ディスカバリーおよび設定 +linkTitle: 3. 自動ディスカバリー +weight: 3 +--- + +以下のコマンドでアプリケーションを起動できます。`mysql` プロファイルをアプリケーションに渡していることに注目してください。これにより、先ほど起動した MySQL データベースを使用するようアプリケーションに指示します。また、`otel.service.name` と `otel.resource.attributes` をインスタンス名を使用した論理名に設定しています。これらは UI でのフィルタリングにも使用されます: + +```bash +java \ +-Dserver.port=8083 \ +-Dotel.service.name=$INSTANCE-petclinic-service \ +-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env \ +-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql +``` + +`http://:8083`(`` を先ほど取得した IP アドレスに置き換えてください)にアクセスして、アプリケーションが実行されていることを確認できます。 + +Collector をインストールした際、**AlwaysOn Profiling** と **Metrics** を有効にするように設定しました。これにより、Collector はアプリケーションの CPU およびメモリプロファイルを自動的に生成し、Splunk Observability Cloud に送信します。 + +PetClinic アプリケーションを起動すると、Collector がアプリケーションを自動的に検出し、トレースとプロファイリングのために計装するのが確認できます。 + +{{% tab title="出力例" %}} + +``` text {wrap="false"} +Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/lib/splunk-instrumentation/splunk-otel-javaagent.jar +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2024-08-20 11:35:58:970 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: splunk-2.6.0-otel-2.6.0 +[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - ----------------------- +[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - Profiler configuration: +[otel.javaagent 2024-08-20 11:35:59:730 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.enabled : true +[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.directory : /tmp +[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.recording.duration : 20s +[otel.javaagent 2024-08-20 11:35:59:731 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.keep-files : false +[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.logs-endpoint : null +[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - otel.exporter.otlp.endpoint : null +[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.enabled : true +[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.event.rate : 150/s +[otel.javaagent 2024-08-20 11:35:59:732 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.call.stack.interval : PT10S +[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.include.internal.stacks : false +[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tracing.stacks.only : false +[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - ----------------------- +[otel.javaagent 2024-08-20 11:35:59:733 +0000] [main] INFO com.splunk.opentelemetry.profiler.JfrActivator - Profiler is active. +``` + +{{% /tab %}} + +Splunk APM UI にアクセスして、アプリケーションコンポーネント、トレース、プロファイリング、DB Query パフォーマンス、メトリクスを確認できます。左側のメニューから **APM** をクリックし、**Environment** ドロップダウンをクリックして、ご自身の環境(例:`-petclinic`、`` は先ほどメモした値に置き換えてください)を選択します。 + +検証が完了したら、`Ctrl-c` を押してアプリケーションを停止できます。 + +リソース属性は、報告されるすべてのスパンに追加できます。例えば `version=0.314` のように指定します。カンマ区切りのリソース属性リストも定義できます(例:`key1=val1,key2=val2`)。 + +新しいリソース属性を使用して PetClinic を再度起動しましょう。実行コマンドにリソース属性を追加すると、Collector のインストール時に定義された内容が上書きされることに注意してください。新しいリソース属性 `version=0.314` を追加しましょう: + +```bash +java \ +-Dserver.port=8083 \ +-Dotel.service.name=$INSTANCE-petclinic-service \ +-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env,version=0.314 \ +-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql +``` + +Splunk APM UI に戻り、最近のトレースをドリルダウンすると、スパン内に新しい `version` 属性が表示されます。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/4-rum.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/4-rum.md new file mode 100644 index 0000000000..8d0276dc49 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/4-rum.md @@ -0,0 +1,78 @@ +--- +title: 3. Real User Monitoring +weight: 3 +--- + +Real User Monitoring (RUM) の計装では、ページに OpenTelemetry Javascript スニペット [**https://github.com/signalfx/splunk-otel-js-web**](https://github.com/signalfx/splunk-otel-js-web) を追加します。ウィザードを使用して **Data Management → Add Integration → RUM Instrumentation → Browser Instrumentation** の順に進みます。 + +インストラクターがドロップダウンから使用するトークンを指示します。**Next** をクリックしてください。以下の形式で **App name** と **Environment** を入力します: + +- `-petclinic-service` - `` を先ほどメモした値に置き換えてください。 +- `-petclinic-env` - `` を先ほどメモした値に置き換えてください。 + +ウィザードは、ページの `` セクションの先頭に配置する必要がある HTML コードスニペットを表示します。以下は例です(このスニペットは使用せず、ウィザードが生成したものを使用してください): + +``` html +/* + +IMPORTANT: Replace the placeholder in the src URL with a +version from https://github.com/signalfx/splunk-otel-js-web/releases + +*/ + + +``` + +Spring PetClinic アプリケーションは、アプリケーションのすべてのページで再利用される単一の HTML ページを「レイアウト」ページとして使用しています。Splunk RUM 計装ライブラリを挿入するには、すべてのページで自動的に読み込まれるため、この場所が最適です。 + +それでは、レイアウトページを編集しましょう: + +```bash +vi src/main/resources/templates/fragments/layout.html +``` + +次に、上記で生成したスニペットをページの `` セクションに挿入します。コメントは含めず、ソース URL の `` を `latest` に置き換えてください: + +```html + + + + + + +... +``` + +コード変更が完了したら、アプリケーションを再ビルドして再度実行する必要があります。`maven` コマンドを実行して PetClinic をコンパイル/ビルド/パッケージ化します: + +```bash +./mvnw package -Dmaven.test.skip=true +``` + +```bash +java \ +-Dserver.port=8083 \ +-Dotel.service.name=$INSTANCE-petclinic-service \ +-Dotel.resource.attributes=deployment.environment=$INSTANCE-petclinic-env,version=0.314 \ +-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql +``` + +次に、ブラウザを使用してアプリケーション `http://:8083` にアクセスし、実際のユーザートラフィックを生成します。 + +RUM で、上記の RUM スニペットで定義された環境にフィルタリングし、ダッシュボードをクリックして開きます。 + +RUM トレースをドリルダウンすると、スパン内に APM へのリンクが表示されます。トレース ID をクリックすると、現在の RUM トレースに対応する APM トレースに移動します。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md new file mode 100644 index 0000000000..668b0540da --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/5-log-observer.md @@ -0,0 +1,24 @@ +--- +title: 4. Log Observer +weight: 4 +--- + +Splunk Log Observer コンポーネントでは、Splunk OpenTelemetry Collector が Spring PetClinic アプリケーションからログを自動的に収集し、OTLP エクスポーターを使用して Splunk Observability Cloud に送信します。その際、ログイベントに `trace_id`、`span_id`、トレースフラグを付与します。 + +Log Observer は、アプリケーションとインフラストラクチャからのログをリアルタイムで表示します。ログの検索、フィルタリング、分析を行って、問題のトラブルシューティングや環境の監視が可能です。 + +PetClinic Web アプリケーションに戻り、**Error** リンクを数回クリックしてください。これにより、PetClinic アプリケーションログにいくつかのログメッセージが生成されます。 + +![PetClinic Error](../images/petclinic-error.png) + +左側のメニューから **Log Observer** をクリックし、**Index** が **splunk4rookies-workshop** に設定されていることを確認してください。 + +次に、**Add Filter** をクリックし、フィールド `service.name` を検索して、値 `-petclinic-service` を選択し、`=`(include)をクリックします。これで、PetClinic アプリケーションからのログメッセージのみが表示されるはずです。 + +PetClinic アプリケーションの **Error** リンクをクリックして生成されたログエントリの1つを選択してください。ログメッセージと、ログメッセージに自動的にインジェクションされたトレースメタデータが表示されます。また、APM と Infrastructure の Related Content が利用可能であることにも注目してください。 + +![Log Observer](../images/log-observer.png) + +これでワークショップは終了です。多くの内容をカバーしました。この時点で、メトリクス、トレース(APM と RUM)、ログ、データベースクエリパフォーマンス、コードプロファイリングが Splunk Observability Cloud に報告されているはずです。しかも、PetClinic アプリケーションのコードを変更することなく実現できました(RUM を除く)。 + +**おめでとうございます!** diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/_index.md new file mode 100644 index 0000000000..0d0994ce38 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/_index.md @@ -0,0 +1,36 @@ +--- +title: PetClinic モノリスワークショップ +weight: 1 +description: Spring PetClinic サンプルアプリケーションを使用して、Java アプリケーション向けの Splunk Observability Cloud の自動ディスカバリーおよび設定機能をデモンストレーションするハンズオンワークショップです。 +archetype: chapter +authors: ["Robert Castley"] +time: 30 minutes +--- + +このワークショップの目的は、**Splunk Observability Cloud** プラットフォームの以下のコンポーネントを設定するための基本的な手順を説明することです: + +* Splunk Infrastructure Monitoring (IM) +* Splunk Automatic Discovery for Java (APM) + * Database Query Performance + * AlwaysOn Profiling +* Splunk Real User Monitoring (RUM) +* RUM から APM への相関 (Correlation) +* Splunk Log Observer (LO) + +また、サンプル Java アプリケーション(Spring PetClinic)のクローン(ダウンロード)方法、およびアプリケーションのコンパイル、パッケージ化、実行方法についても説明します。 + +アプリケーションが起動して実行されると、**Splunk APM** 製品で使用される Java 2.x 向けの**自動ディスカバリーおよび設定**機能により、メトリクス、トレース、ログが即座に表示されるようになります。 + +その後、**Splunk OpenTelemetry Javascript Libraries (RUM)** を使用して PetClinic のエンドユーザーインターフェース(アプリケーションがレンダリングする HTML ページ)を計装します。これにより、エンドユーザーが実行するすべてのクリックやページ読み込みに対して RUM トレースが生成されます。 + +最後に、PetClinic アプリケーションログへのトレースメタデータの自動インジェクション (injection) によって生成されたログを確認します。 + +{{% notice title="前提条件" style="primary" icon="info" %}} + +* ポート `2222` へのアウトバウンド SSH アクセス +* ポート `8083` へのアウトバウンド HTTP アクセス +* `bash` シェルおよび `vi/vim` エディタの基本的な知識 + +{{% /notice %}} + +![PetClinic Exercise](images/petclinic-exercise.png) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/log-observer.png b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/log-observer.png new file mode 100644 index 0000000000..ef2b31f93c Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/log-observer.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-error.png b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-error.png new file mode 100644 index 0000000000..452b276189 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-error.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-exercise.png b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-exercise.png new file mode 100644 index 0000000000..caebe8c6c0 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/1-petclinic-monolith/images/petclinic-exercise.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md new file mode 100644 index 0000000000..45cb2ce446 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/1-architecture/_index.md @@ -0,0 +1,18 @@ +--- +title: アーキテクチャ +linkTitle: 1. アーキテクチャ +weight: 2 +time: 5 minutes +--- + +Spring PetClinic Java アプリケーションは、フロントエンドとバックエンドのサービスで構成されるシンプルなマイクロサービスアプリケーションです。フロントエンドサービスは、バックエンドサービスと対話するための Web インターフェースを提供する Spring Boot アプリケーションです。バックエンドサービスは、MySQL データベースと対話するための RESTful API を提供する Spring Boot アプリケーションです。 + +このワークショップを終えるころには、Kubernetes で実行される Java ベースのアプリケーション向けの**自動ディスカバリーおよび設定**を有効にする方法をより深く理解できるようになります。 + +以下の図は、Splunk OpenTelemetry Operator と自動ディスカバリーおよび設定を有効にした状態で Kubernetes 上で実行される Spring PetClinic Java アプリケーションのアーキテクチャを詳しく示しています。 + +![Splunk Otel Architecture](../images/auto-instrumentation-java-diagram.png) + +--- + +**Josh Voravong** が作成した[**サンプル**](https://github.com/signalfx/splunk-otel-collector-chart/blob/main/examples/enable-operator-and-auto-instrumentation/spring-petclinic-java.md)に基づいています。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md new file mode 100644 index 0000000000..9d5c5d80f4 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/1-otel.md @@ -0,0 +1,138 @@ +--- + +title: Splunk OpenTelemetry Collector のデプロイ +linkTitle: 1. OpenTelemetry Collector のデプロイ +weight: 1 +--- + +オブザーバビリティシグナル(**メトリクス、トレース**、**ログ**)を **Splunk Observability Cloud** に送信するには、Kubernetes クラスターに Splunk OpenTelemetry Collector をデプロイする必要があります。 + +このワークショップでは、Splunk OpenTelemetry Collector Helm Chart を使用します。まず、Helm chart リポジトリを Helm に追加し、`helm repo update` を実行して最新バージョンを確認します: + +{{< tabs >}} +{{% tab title="Install Helm Chart" %}} + +``` bash +helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart && helm repo update +``` + +{{% /tab %}} +{{% tab title="Output" %}} + +```text +Using ACCESS_TOKEN={REDACTED} +Using REALM=eu0 +"splunk-otel-collector-chart" has been added to your repositories +Using ACCESS_TOKEN={REDACTED} +Using REALM=eu0 +Hang tight while we grab the latest from your chart repositories... +...Successfully got an update from the "splunk-otel-collector-chart" chart repository +Update Complete. ⎈Happy Helming!⎈ +``` + +{{% /tab %}} +{{< /tabs >}} + +**Splunk Observability Cloud** では、Kubernetes 上での OpenTelemetry Collector のセットアップを案内する UI ウィザードが提供されていますが、時間の都合上、以下の Helm install コマンドを使用します。自動ディスカバリーおよび設定とコードプロファイリング用のオペレーターを有効にするための追加パラメータが設定されています。 + +* `--set="operator.enabled=true"` - 自動ディスカバリーおよび設定を処理するための OpenTelemetry オペレーターをインストールします。 +* `--set="splunkObservability.profilingEnabled=true"` - オペレーター経由でコードプロファイリングを有効にします。 + +Collector をインストールするには、以下のコマンドを実行してください。これを編集**しないでください**: + +{{< tabs >}} +{{% tab title="Helm Install" %}} + +```bash +helm install splunk-otel-collector --version {{< otel-version >}} \ +--set="operatorcrds.install=true", \ +--set="operator.enabled=true", \ +--set="splunkObservability.realm=$REALM" \ +--set="splunkObservability.accessToken=$ACCESS_TOKEN" \ +--set="clusterName=$INSTANCE-k3s-cluster" \ +--set="splunkObservability.profilingEnabled=true" \ +--set="agent.service.enabled=true" \ +--set="environment=$INSTANCE-workshop" \ +--set="splunkPlatform.endpoint=$HEC_URL" \ +--set="splunkPlatform.token=$HEC_TOKEN" \ +--set="splunkPlatform.index=splunk4rookies-workshop" \ +splunk-otel-collector-chart/splunk-otel-collector \ +-f ~/workshop/k3s/otel-collector.yaml + +{{% /tab %}} +{{% tab title="Output" %}} + +``` plaintext +LAST DEPLOYED: Fri Apr 19 09:39:54 2024 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +NOTES: +Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Platform endpoint "https://http-inputs-o11y-workshop-eu0.splunkcloud.com:443/services/collector/event". + +Splunk OpenTelemetry Collector is installed and configured to send data to Splunk Observability realm eu0. + +[INFO] You've enabled the operator's auto-instrumentation feature (operator.enabled=true)! The operator can automatically instrument Kubernetes hosted applications. + - Status: Instrumentation language maturity varies. See `operator.instrumentation.spec` and documentation for utilized instrumentation details. + - Splunk Support: We offer full support for Splunk distributions and best-effort support for native OpenTelemetry distributions of auto-instrumentation libraries. +``` + +{{% /tab %}} +{{< /tabs >}} + +続行する前に、Pod が **Running** として報告されていることを確認してください(通常約30秒かかります)。 + +{{< tabs >}} +{{% tab title="kubectl get pods" %}} + +``` bash +kubectl get pods | grep splunk-otel +``` + +{{% /tab %}} +{{% tab title="Output" %}} + +``` text +splunk-otel-collector-k8s-cluster-receiver-6bd5567d95-5f8cj 1/1 Running 0 10m +splunk-otel-collector-agent-tspd2 1/1 Running 0 10m +splunk-otel-collector-operator-69d476cb7-j7zwd 2/2 Running 0 10m +``` + +{{% /tab %}} +{{< /tabs >}} + +Splunk OpenTelemetry Collector からエラーが報告されていないことを確認してください(`ctrl + c` で終了)。または、インストール済みの**素晴らしい** `k9s` ターミナル UI を使用するとボーナスポイントです! + +{{< tabs >}} +{{% tab title="kubectl logs" %}} + +``` bash +kubectl logs -l app=splunk-otel-collector -f --container otel-collector +``` + +{{% /tab %}} +{{% tab title="Output" %}} + +```text +2021-03-21T16:11:10.900Z INFO service/service.go:364 Starting receivers... +2021-03-21T16:11:10.900Z INFO builder/receivers_builder.go:70 Receiver is starting... {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus"} +2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:75 Receiver started. {"component_kind": "receiver", "component_type": "prometheus", "component_name": "prometheus"} +2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:70 Receiver is starting... {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"} +2021-03-21T16:11:11.009Z INFO k8sclusterreceiver@v0.21.0/watcher.go:195 Configured Kubernetes MetadataExporter {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster", "exporter_name": "signalfx"} +2021-03-21T16:11:11.009Z INFO builder/receivers_builder.go:75 Receiver started. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"} +2021-03-21T16:11:11.009Z INFO healthcheck/handler.go:128 Health Check state change {"component_kind": "extension", "component_type": "health_check", "component_name": "health_check", "status": "ready"} +2021-03-21T16:11:11.009Z INFO service/service.go:267 Everything is ready. Begin running and processing data. +2021-03-21T16:11:11.009Z INFO k8sclusterreceiver@v0.21.0/receiver.go:59 Starting shared informers and wait for initial cache sync. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"} +2021-03-21T16:11:11.281Z INFO k8sclusterreceiver@v0.21.0/receiver.go:75 Completed syncing shared informer caches. {"component_kind": "receiver", "component_type": "k8s_cluster", "component_name": "k8s_cluster"} +``` + +{{% /tab %}} +{{< /tabs >}} + +>[!INFO] 失敗したインストールの削除 +>OpenTelemetry Collector のインストールでエラーが発生した場合は、 +>以下のコマンドでインストールを削除してやり直すことができます: +> +>``` bash +>helm delete splunk-otel-collector +>``` diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md new file mode 100644 index 0000000000..fbae57410d --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/2-petclinic.md @@ -0,0 +1,120 @@ +--- +title: PetClinic アプリケーションのデプロイ +linkTitle: 2. PetClinic アプリケーションのデプロイ +weight: 3 +--- + +アプリケーションの最初のデプロイメントでは、ビルド済みのコンテナを使用して、観測を開始したい Kubernetes で実行される通常の Java マイクロサービスベースのアプリケーションという基本シナリオを作成します。それでは、アプリケーションをデプロイしましょう: + +{{< tabs >}} +{{% tab title="kubectl apply" %}} + +``` bash +kubectl apply -f ~/workshop/petclinic/deployment.yaml +``` + +{{% /tab %}} +{{% tab title="Output" %}} + +``` text +deployment.apps/config-server created +service/config-server created +deployment.apps/discovery-server created +service/discovery-server created +deployment.apps/api-gateway created +service/api-gateway created +service/api-gateway-external created +deployment.apps/customers-service created +service/customers-service created +deployment.apps/vets-service created +service/vets-service created +deployment.apps/visits-service created +service/visits-service created +deployment.apps/admin-server created +service/admin-server created +service/petclinic-db created +deployment.apps/petclinic-db created +configmap/petclinic-db-initdb-config created +deployment.apps/petclinic-loadgen-deployment created +configmap/scriptfile created +``` + +{{% /tab %}} +{{< /tabs >}} + +この時点で、Pod が実行されていることを確認してデプロイメントを検証できます。コンテナのダウンロードと起動が必要なため、数分かかる場合があります。 + +{{< tabs >}} +{{% tab title="kubectl get pods" %}} + +``` bash +kubectl get pods +``` + +{{% /tab %}} +{{% tab title="Output" %}} + +```bash +NAME READY STATUS RESTARTS AGE +splunk-otel-collector-k8s-cluster-receiver-655dcd9b6b-dcvkb 1/1 Running 0 114s +splunk-otel-collector-agent-dg2vj 1/1 Running 0 114s +splunk-otel-collector-operator-57cbb8d7b4-dk5wf 2/2 Running 0 114s +petclinic-db-64d998bb66-2vzpn 1/1 Running 0 58s +api-gateway-d88bc765-jd5lg 1/1 Running 0 58s +visits-service-7f97b6c579-bh9zj 1/1 Running 0 58s +admin-server-76d8b956c5-mb2zv 1/1 Running 0 58s +customers-service-847db99f79-mzlg2 1/1 Running 0 58s +vets-service-7bdcd7dd6d-2tcfd 1/1 Running 0 58s +petclinic-loadgen-deployment-5d69d7f4dd-xxkn4 1/1 Running 0 58s +config-server-67f7876d48-qrsr5 1/1 Running 0 58s +discovery-server-554b45cfb-bqhgt 1/1 Running 0 58s +``` + +{{% /tab %}} +{{< /tabs >}} + +`kubectl get pods` の出力が、上記の Output タブに示されている出力と一致することを確認してください。すべてのサービスが **Running** と表示されていることを確認してください(または `k9s` を使用してステータスを継続的に監視できます)。 + +アプリケーションをテストするには、インスタンスのパブリック IP アドレスを取得する必要があります。以下のコマンドを実行して取得できます: + +``` bash +curl http://ifconfig.me + +``` + +**http://:81**(**** を上記で取得した IP アドレスに置き換えてください)にアクセスして、アプリケーションが実行されていることを確認してください。PetClinic アプリケーションが実行されているのが確認できるはずです。アプリケーションはポート **80** と **443** でも実行されているので、これらを使用するか、ポート **81** に到達できない場合はそちらを使用してください。 + +![Pet shop](../../images/petclinic.png) + +**All Owners** **(1)** タブと **Veterinarians** **(2)** タブにアクセスして、各ページに名前のリストが表示されることを確認し、アプリケーションが正しく動作していることを確認してください。 + +![Owners](../../images/petclinic-owners.png) + + diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md new file mode 100644 index 0000000000..0da2ac50ef --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/2-preparation/_index.md @@ -0,0 +1,61 @@ +--- +title: ワークショップインスタンスの準備 +linkTitle: 2. 準備 +weight: 3 +archetype: chapter +time: 15 minutes +--- + +インストラクターが、このワークショップで使用するインスタンスのログイン情報を提供します。 + +インスタンスに初めてログインすると、以下のような Splunk ロゴが表示されます。ワークショップインスタンスへの接続に問題がある場合は、インストラクターにお問い合わせください。 + +``` text +$ ssh -p 2222 splunk@ + +███████╗██████╗ ██╗ ██╗ ██╗███╗ ██╗██╗ ██╗ ██╗ +██╔════╝██╔══██╗██║ ██║ ██║████╗ ██║██║ ██╔╝ ╚██╗ +███████╗██████╔╝██║ ██║ ██║██╔██╗ ██║█████╔╝ ╚██╗ +╚════██║██╔═══╝ ██║ ██║ ██║██║╚██╗██║██╔═██╗ ██╔╝ +███████║██║ ███████╗╚██████╔╝██║ ╚████║██║ ██╗ ██╔╝ +╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝ +Last login: Mon Feb 5 11:04:54 2024 from [Redacted] +splunk@show-no-config-i-0d1b29d967cb2e6ff ~ $ +``` + +インスタンスが正しく設定されていることを確認するために、このワークショップに必要な環境変数が正しく設定されているか確認する必要があります。ターミナルで以下のスクリプトを実行し、環境変数が存在し、実際の有効な値が設定されていることを確認してください: + +{{< tabs >}} +{{% tab title="Script" %}} + +``` bash +. ~/workshop/petclinic/scripts/check_env.sh +``` + +{{% /tab %}} +{{% tab title="Example Output" %}} + +``` bash +ACCESS_TOKEN = +REALM = +RUM_TOKEN = +HEC_TOKEN = +HEC_URL = https://<...>/services/collector/event +INSTANCE = +``` + +{{% /tab %}} +{{< /tabs >}} + +`INSTANCE` 環境変数の値をメモしておいてください。後で **Splunk Observability Cloud** でデータをフィルタリングする際に使用します。 + +このワークショップでは、上記の環境変数が**すべて**必要です。値が不足しているものがある場合は、インストラクターに連絡してください。 + +> [!SPLUNK] 既存の OpenTelemetry Collector の削除 +>この EC2 インスタンスを使用して以前に Splunk Observability ワークショップを完了している場合は、 +>既存の Splunk OpenTelemetry Collector のインストールが削除されていることを確認する必要があります。 +>これは以下のコマンドを実行することで行えます: +> +>``` bash +>helm delete splunk-otel-collector +>``` diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md new file mode 100644 index 0000000000..19528c58b5 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/3-verify-setup/_index.md @@ -0,0 +1,28 @@ +--- +title: Kubernetes クラスターメトリクスの確認 +linkTitle: 3. クラスターメトリクスの確認 +weight: 4 +time: 10 minutes +--- + +インストールが完了したら、**Splunk Observability Cloud** にログインして、Kubernetes クラスターからメトリクスが流れてきていることを確認できます。 + +左側のメニューから **Infrastructure** をクリックし、**Kubernetes** を選択してから、**Kubernetes nodes** タイルを選択します。 + +![NavigatorList](../images/navigatorlist.png) + +**Kubernetes nodes** の概要画面に入ったら、**Time** フィルタを **-1h** から過去15分 **(-15m)** に変更して最新のデータに焦点を当て、次に **Table** を選択してメトリクスを報告しているすべてのノードをリスト表示します。 + +次に、**Refine by:** パネルで **Cluster name** を選択し、リストからご自身のクラスターを選択します。 + +{{% notice title="Tip" style="info" icon="lightbulb" %}} +特定のクラスターを識別するには、セットアップ中に実行したシェルスクリプト出力の `INSTANCE` 値を使用してください。この一意の識別子により、リスト内の他のノードの中からワークショップクラスターを見つけることができます。 +{{% /notice %}} + +これにより、ご自身のクラスターのノードのみを表示するようにリストがフィルタリングされます。 + +![K8s Nodes](../images/k8s-nodes.png) + +**K8s node logs** ビューに切り替えて、ノードからのログを確認します。 + +![Logs](../images/k8s-peek-at-logs.png) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md new file mode 100644 index 0000000000..5fd471735a --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/1-patching-deployment.md @@ -0,0 +1,79 @@ +--- +title: デプロイメントのパッチ適用 +linkTitle: 1. デプロイメントのパッチ適用 +weight: 1 +--- + +**自動検出と設定**を構成するには、デプロイメント (deployment) にインストゥルメンテーションアノテーションを追加するためのパッチを適用する必要があります。パッチが適用されると、OpenTelemetry Collectorが自動検出と設定ライブラリを注入し、Podが再起動されてトレース (trace) とプロファイリング (profiling) データの送信が開始されます。まず、以下を実行して`api-gateway`に`splunk-otel-java`イメージがないことを確認します: + +{{< tabs >}} +{{% tab title="Describe api-gateway" %}} + +``` bash +kubectl describe pods api-gateway | grep Image: +``` + +{{% /tab %}} +{{% tab title="Describe Output" %}} + +``` text +Image: quay.io/phagen/spring-petclinic-api-gateway:0.0.2 +``` + +{{% /tab %}} +{{< /tabs >}} + +次に、デプロイメントにアノテーションを追加して、すべてのサービスのJava自動検出と設定を有効にします。以下のコマンドは、すべてのデプロイメントにパッチを適用します。これにより、OpenTelemetry Operatorが`splunk-otel-java`イメージをPodに注入します: + +{{< tabs >}} +{{% tab title="Patch all PetClinic services" %}} + +``` bash +kubectl get deployments -l app.kubernetes.io/part-of=spring-petclinic -o name | xargs -I % kubectl patch % -p "{\"spec\": {\"template\":{\"metadata\":{\"annotations\":{\"instrumentation.opentelemetry.io/inject-java\":\"default/splunk-otel-collector\"}}}}}" +``` + +{{% /tab %}} +{{% tab title="Patch Output" %}} + +``` text +deployment.apps/config-server patched (no change) +deployment.apps/admin-server patched (no change) +deployment.apps/customers-service patched +deployment.apps/visits-service patched +deployment.apps/discovery-server patched (no change) +deployment.apps/vets-service patched +deployment.apps/api-gateway patched +``` + +{{% /tab %}} +{{< /tabs >}} + +**config-server**、**discovery-server**、**admin-server**については、すでにパッチが適用されているため変更はありません。 + +`api-gateway` Podのコンテナイメージを再度確認するには、以下のコマンドを実行します: + +{{< tabs >}} +{{% tab title="Describe api-gateway" %}} + +``` bash +kubectl describe pods api-gateway | grep Image: +``` + +{{% /tab %}} +{{% tab title="Describe Output" %}} + +```text +Image: ghcr.io/signalfx/splunk-otel-java/splunk-otel-java:v1.30.0 +Image: quay.io/phagen/spring-petclinic-api-gateway:0.0.2 +``` + +{{% /tab %}} +{{< /tabs >}} + +`api-gateway`に新しいイメージが追加され、`ghcr.io`から`splunk-otel-java`がプルされます(注:2つの`api-gateway`コンテナが表示される場合、元のコンテナがまだ終了処理中の可能性があるため、数秒待ってください)。 + +**Splunk Observability Cloud**のKubernetes Navigatorに戻ります。数分後、Podがオペレーターによって再起動され、自動検出と設定コンテナが追加されることが確認できます。以下のスクリーンショットのような表示になります: + +![restart](../../images/k8s-navigator-restarted-pods.png) + +Kubernetes NavigatorでPodが緑色になるまで待ってから、次のセクションに進んでください。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md new file mode 100644 index 0000000000..cb1b43f907 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/2-apm-data.md @@ -0,0 +1,16 @@ +--- +title: Splunk APMでのデータの表示 +linkTitle: 2. APMデータの表示 +weight: 2 +--- + +左側のメニューで**APM**をクリックして、新しくインストゥルメンテーション (instrumentation) されたサービスからのトレース (trace) によって生成されたデータを確認します。 + +ドロップダウンボックスで**Environment**フィルター **(1)** をワークショップインスタンスの名前に変更します。 + +> [!NOTE] +> これは**`-workshop`**になります。ここで**`INSTANCE`**は、先ほど実行したシェルスクリプトの値です。これのみが選択されていることを確認してください。 + +![apm](../../images/zero-config-first-services-overview.png) + +**Service Map** **(2)** ペインをクリックして、次のセクションの準備をします。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md new file mode 100644 index 0000000000..ede1a806f2 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/4-apm/_index.md @@ -0,0 +1,49 @@ +--- +title: APMの自動検出と設定のセットアップ +linkTitle: 4. 自動検出と設定 +weight: 5 +time: 10分 +--- + +このセクションでは、Kubernetes上で実行されているJavaサービスに対して**自動検出と設定**を有効化します。これにより、OpenTelemetry CollectorがPodアノテーションを検索し、JavaアプリケーションにSplunk OpenTelemetry Javaエージェントでインストゥルメンテーション (instrumentation) を行う必要があることを示します。これにより、クラスター上で実行されているJavaサービスからトレース (trace)、スパン (span)、およびプロファイリング (profiling) データを取得できるようになります。 + +{{% notice title="自動検出と設定" style="note" %}} + +自動検出と設定は、**コード変更や再コンパイルを必要とせず**にアプリケーションから**トレース、スパン、およびプロファイリング**データを取得するように設計されていることを理解することが重要です。 + +これはAPMを始めるための優れた方法ですが、手動インストゥルメンテーション (manual instrumentation) の**代替ではありません**。手動インストゥルメンテーションでは、カスタムスパン、タグ、ログをアプリケーションに追加でき、トレースにより多くのコンテキストと詳細を提供できます。 + +{{% /notice %}} + +Javaアプリケーションの場合、OpenTelemetry Collectorは`instrumentation.opentelemetry.io/inject-java`というアノテーションを検索します。 + +このアノテーションの値は`true`に設定するか、OpenTelemetry Collectorの`namespace/daemonset`(例:`default/splunk-otel-collector`)に設定できます。これにより、名前空間をまたいで動作することができ、このワークショップではこれを使用します。 + +{{% notice title="deployment.yamlの使用" style="info" %}} + +Podが自動的にトレースを送信するようにしたい場合は、以下に示すように`deployment.yaml`にアノテーションを追加できます。これにより、初期デプロイメント (deployment) 時にインストゥルメンテーションライブラリが追加されます。時間を節約するために、以下のPodに対してこれを実施済みです: + +- **admin-server** +- **config-server** +- **discovery-server** + +``` yaml +apiVersion: apps/v1 +kind: Deployment +metadata: + name: admin-server + labels: + app.kubernetes.io/part-of: spring-petclinic +spec: + selector: + matchLabels: + app: admin-server + template: + metadata: + labels: + app: admin-server + annotations: + instrumentation.opentelemetry.io/inject-java: "default/splunk-otel-collector" +``` + +{{% /notice %}} diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md new file mode 100644 index 0000000000..5556304fb5 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/1-service-map.md @@ -0,0 +1,19 @@ +--- +title: APM Service Map +linkTitle: 1. APM Service Map +weight: 1 +--- + +![apm map](../../images/zero-config-first-services-map.png) + +上記のマップは、すべてのサービス間のすべての相互作用を示しています。PetClinic Microserviceアプリケーションが起動して完全に同期するまで数分かかるため、マップはまだ中間状態にある可能性があります。時間フィルタを**-2m**と入力してカスタム時間の**2分**に減らすと役立ちます。画面右上の**Refresh**ボタン**(1)**をクリックできます。赤い円で示される初期起動関連のエラーは最終的に消えます。 + +次に、各サービスで利用可能なメトリクス (metric) を調べるために、リクエスト、エラー、期間(RED)メトリクスダッシュボード (dashboard) を見てみましょう。 + +この演習では、サービスオペレーション (operation) が高いレイテンシ (latency) やエラー (error) を示している場合に使用する一般的なシナリオを使用します。 + +依存関係マップで**customers-service**をクリックし、**Services**ドロップダウンボックス**(1)**で`customers-service`が選択されていることを確認します。次に、サービス名に隣接するOperationsドロップダウン**(2)**から`GET /owners`を選択します。 + +これにより、以下に示すように`GET /owners`でフィルタリングされたワークフロー (workflow) が表示されます: + +![select a trace](../../images/select-workflow.png) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md new file mode 100644 index 0000000000..205c5bfdb4 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/2-trace.md @@ -0,0 +1,23 @@ +--- +title: APM Trace +linkTitle: 2. APM Trace +weight: 2 +--- + +トレース (trace) を選択するには、`Service Requests & Errors`チャート**(1)**の線を選択します。関連するトレースの選択肢が表示されます。 + +関連するトレースのリストが表示されたら、青い**(2)** Trace ID Linkをクリックします。選択するトレースがServicesカラムに記載されている3つのサービスと同じものであることを確認してください。 + +![workflow-trace-pick](../../images/selecting-a-trace.png) + +これにより、ウォーターフォール (Waterfall) ビュー (view) で選択されたトレースが表示されます: + +ここにはいくつかのセクションがあります: + +* Waterfall Pane **(1)**:トレースとスパン (span) として表示されるすべてのインストルメント (instrument) された関数が、その期間表示と順序/関係とともに表示されます。 +* Trace Info Pane **(2)**:選択されたスパン情報が表示されます(Waterfall Pane内でスパンの周りにボックスでハイライトされています)。 +* Span Pane **(3)**:選択されたスパンで送信されたすべてのタグ (tag) を見つけることができます。下にスクロールしてすべてを確認できます。 +* Process Pane:スパンを作成したプロセス (process) に関連するタグが表示されます(スクリーンショットに含まれていないため、下にスクロールして確認してください)。 +* Trace Properties:ペインの右上にあり、デフォルトでは折りたたまれています。 + +![waterfall](../../images/waterfall-view.png) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md new file mode 100644 index 0000000000..a6fbec4b42 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/3-spans.md @@ -0,0 +1,46 @@ +--- +title: APM Span +linkTitle: 3. APM Spans +weight: 3 +--- + +スパン (span) を調べる際、トレーシング (tracing) の上で**自動検出と設定 (automatic discovery and configuration)** を使用すると、**コード変更なし**で得られるいくつかの標準機能を見てみましょう: + +まず、Waterfall Paneで、以下のスクリーンショットに示すように`customers-service:SELECT petclinic`または類似のスパンが選択されていることを確認してください: + +![DB-query](../../images/db-query.png) + +* 基本的なレイテンシ (latency) 情報は、インストルメント (instrument) された関数または呼び出しのバーとして表示されます。上記の例では、17.8ミリ秒かかりました。 +* いくつかの類似したスパン**(1)**は、スパンが複数回繰り返される場合にのみ表示されます。この場合、例では10回の繰り返しがあります。`10x`をクリックすると、すべてのスパンが順番に表示されるように表示/非表示を切り替えることができます。 +* **Inferred Services**:インストルメントされていない外部システムへの呼び出しは、グレーの「推測された (inferred)」スパンとして表示されます。この例のInferred Serviceまたはスパンは、上記に示すようにMysqlデータベース (Database) `mysql:petclinic SELECT petclinic` **(2)**への呼び出しです。 +* **Span Tags**:Tag Paneには、自動検出と設定によって生成された標準タグが表示されます。この場合、スパンはデータベースを呼び出しているため、`db.statement`タグ**(3)**が含まれています。このタグは、このスパン中に実行されたデータベース呼び出しで使用されるDBクエリ (query) ステートメント (statement) を保持します。これはDB-Query Performance機能で使用されます。DB-Query Performanceについては次のセクションで見ていきます。 +* **Always-on Profiling**:システムがスパンのライフサイクル (life cycle) 中にプロファイリング (Profiling) データをキャプチャ (capture) するように設定されている**場合**、スパンのタイムライン (timeline) でキャプチャされたコールスタック (Call Stack) の数が表示されます。上記の例では、`customer-service:GET /owners`スパンに対して18個のコールスタックがあることがわかります。**(4)** + +次のセクションでプロファイリングを見ていきます。 + + diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md new file mode 100644 index 0000000000..6843998990 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/4-red-metrics.md @@ -0,0 +1,13 @@ +--- +title: Service Centric View +linkTitle: 4. Service Centric View +weight: 4 +--- + +Splunk APMは、エンジニア (engineer) に1つの集中ビュー (view) でサービスパフォーマンス (performance) の深い理解を提供する**Service Centric Views**を提供します。すべてのサービスにわたって、エンジニアはサービスの基盤となるインフラストラクチャ (infrastructure) からのエラー (error) やボトルネック (bottleneck) を迅速に特定し、新しいデプロイ (deploy) によるパフォーマンス低下を特定し、すべてのサードパーティ依存関係の健全性を可視化できます。 + +`api-gateway`のこのダッシュボード (dashboard) を表示するには、左側のメニューから**APM**をクリックし、リストの`api-gateway`サービスをクリックします。これにより、Service Centric Viewダッシュボードが表示されます: + +![service_maps](../../images/service-view.png) + +インストルメント (instrument) された各サービスで利用可能なこのビューは、**Service metrics**、**Error breakdown**、**Runtime metrics (Java)**、**Infrastructure metrics**の概要を提供します。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md new file mode 100644 index 0000000000..7b5cf9628b --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/5-traces/_index.md @@ -0,0 +1,13 @@ +--- +title: APM Features +linkTitle: 5. APM Features +weight: 6 +archetype: chapter +time: 15 minutes +--- + +前のセクションで見てきたように、サービスで**自動検出と設定 (automatic discovery and configuration)** を有効にすると、トレース (trace) が**Splunk Observability Cloud**に送信されます。 + +これらのトレースにより、Splunkは自動的に**Service Maps**と**RED Metrics**を生成します。これらは、サービスの動作とサービス間の相互作用を理解するための最初のステップです。 + +次のセクションでは、トレース自体と、コードに触れることなくサービスの動作を理解するのに役立つ情報を詳しく見ていきます。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md new file mode 100644 index 0000000000..18f26b3f07 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/1-profiling.md @@ -0,0 +1,69 @@ +--- +title: Always-On Profiling & Metrics +linkTitle: 1. Always-On Profiling +weight: 1 +--- + +先ほどHelmチャート (chart) を使用してSplunk Distribution of the OpenTelemetry Collectorをインストール (install) した際、**AlwaysOn Profiling**と**Metrics**を有効にするように設定しました。これにより、OpenTelemetry Javaはアプリケーション (application) のCPUとメモリ (memory) のプロファイリング (profiling) を自動的に生成し、Splunk Observability Cloudに送信します。 + +PetClinicアプリケーションをデプロイ (deploy) してアノテーション (annotation) を設定すると、collectorは自動的にアプリケーションを検出し、トレース (trace) とプロファイリング (profiling) のためにインストルメント (instrument) します。これを確認するために、次のスクリプト (script) を実行して、インストルメント (instrument) しているJavaコンテナ (container) の1つの起動ログ (log) を調べることができます: + +ログ (log) には、Javaの自動検出と設定によって取得されたフラグ (flag) が表示されます: + +{{< tabs >}} +{{% tab title="Run the script" %}} + +``` logs +. ~/workshop/petclinic/scripts/get_logs.sh +``` + +{{% /tab %}} +{{% tab title="Example output" %}} + +``` text {wrap="false"} +2024/02/15 09:42:00 Problem with dial: dial tcp 10.43.104.25:8761: connect: connection refused. Sleeping 1s +2024/02/15 09:42:01 Problem with dial: dial tcp 10.43.104.25:8761: connect: connection refused. Sleeping 1s +2024/02/15 09:42:02 Connected to tcp://discovery-server:8761 +Picked up JAVA_TOOL_OPTIONS: -javaagent:/otel-auto-instrumentation-java/javaagent.jar +Picked up _JAVA_OPTIONS: -Dspring.profiles.active=docker,mysql -Dsplunk.profiler.call.stack.interval=150 +OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended +[otel.javaagent 2024-02-15 09:42:03:056 +0000] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: splunk-1.30.1-otel-1.32.1 +[otel.javaagent 2024-02-15 09:42:03:768 +0000] [main] INFO com.splunk.javaagent.shaded.io.micrometer.core.instrument.push.PushMeterRegistry - publishing metrics for SignalFxMeterRegistry every 30s +[otel.javaagent 2024-02-15 09:42:07:478 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - ----------------------- +[otel.javaagent 2024-02-15 09:42:07:478 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - Profiler configuration: +[otel.javaagent 2024-02-15 09:42:07:480 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.enabled : true +[otel.javaagent 2024-02-15 09:42:07:505 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.directory : /tmp +[otel.javaagent 2024-02-15 09:42:07:505 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.recording.duration : 20s +[otel.javaagent 2024-02-15 09:42:07:506 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.keep-files : false +[otel.javaagent 2024-02-15 09:42:07:510 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.logs-endpoint : http://10.13.2.38:4317 +[otel.javaagent 2024-02-15 09:42:07:513 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - otel.exporter.otlp.endpoint : http://10.13.2.38:4317 +[otel.javaagent 2024-02-15 09:42:07:513 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.enabled : true +[otel.javaagent 2024-02-15 09:42:07:515 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tlab.enabled : true +[otel.javaagent 2024-02-15 09:42:07:516 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.memory.event.rate : 150/s +[otel.javaagent 2024-02-15 09:42:07:516 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.call.stack.interval : PT0.15S +[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.include.internal.stacks : false +[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - splunk.profiler.tracing.stacks.only : false +[otel.javaagent 2024-02-15 09:42:07:517 +0000] [main] INFO com.splunk.opentelemetry.profiler.ConfigurationLogger - ----------------------- +[otel.javaagent 2024-02-15 09:42:07:518 +0000] [main] INFO com.splunk.opentelemetry.profiler.JfrActivator - Profiler is active. +``` + +{{% /tab %}} +{{< /tabs >}} +私たちが注目しているのは、`com.splunk.opentelemetry.profiler.ConfigurationLogger`によって書き込まれたセクション、つまり**Profiling Configuration**です。 + +`splunk.profiler.directory`など、制御できるさまざまな設定を確認できます。これは、エージェント (agent) がSplunkに送信する前にコールスタック (call stack) を書き込む場所です。(これは、コンテナ (container) の設定方法によって異なる場合があります。) + +変更したいもう1つのパラメータ (parameter) は`splunk.profiler.call.stack.interval`です。これは、システム (system) がCPU Stack traceをキャプチャ (capture) する頻度です。Pet Clinicアプリケーションのような短いスパン (span) がある場合は、このインターバル (interval) 設定を短くすることをお勧めします。デモ (demo) アプリケーションでは、デフォルト (default) のインターバル (interval) 値を変更しなかったため、スパン (span) に常にCPU Call Stackが関連付けられているとは限りません。 + +これらのパラメータ (parameter) を設定する方法は[こちら](https://help.splunk.com/en/splunk-observability-cloud/manage-data/available-data-sources/supported-integrations-in-splunk-observability-cloud/apm-instrumentation/instrument-a-java-application/configure-the-java-agent#profiling-configuration-java)で確認できます。以下の例では、`deployment.yaml`でコールスタック (call stack) のより高い収集レート (rate) を設定する方法を示しています。これは、JAVA_OPTIONS configセクション (section) でこの値を設定することで行います。 + +``` yaml +env: +- name: JAVA_OPTIONS + value: "-Xdebug -Dsplunk.profiler.call.stack.interval=150" +``` + + diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md new file mode 100644 index 0000000000..dff2cf9dd4 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/2-waterfall.md @@ -0,0 +1,32 @@ +--- +title: Trace Waterfall内のAlways-On Profiling +linkTitle: 2. Trace Waterfall +weight: 2 +--- + +APM Waterfall ビューでオリジナルの Trace & Span **(1)**(または類似のもの)を選択し、右側のペイン (pane) から**Memory Stack Traces (2)**を選択してください: + +![profiling from span](../../images/flamechart-in-waterfall.png) + +ペイン (pane) に Memory Stack Trace Flame Graph **(3)**が表示されます。スクロール (scroll) するか、ペイン (pane) の右側をドラッグ (drag) して拡大できます。 + +AlwaysOn Profiling は、アプリケーション (application) のコード (code) のスナップショット (snapshot)、つまりスタックトレース (stack trace) を常に取得しています。何千ものスタックトレース (stack trace) を読まなければならないことを想像してみてください!それは現実的ではありません。これを支援するために、AlwaysOn Profiling はプロファイリング (profiling) データ (data) を集約して要約し、**Flame Graph**と呼ばれるビュー (view) で Call Stacks を探索する便利な方法を提供します。これは、アプリケーション (application) からキャプチャ (capture) されたすべてのスタックトレース (stack trace) の要約を表します。Flame Graph を使用して、パフォーマンス (performance) の問題を引き起こしている可能性のあるコード (code) の行を発見し、コード (code) に加えた変更が意図した効果を持っているかどうかを確認できます。 + +Always-on Profiling をさらに詳しく調べるには、**Memory Stack Traces**の下の Profiling Pane で上の画像で参照されている Span **(3)**を選択してください。これにより、Always-on Profiling のメイン (main) 画面が開き、Memory ビュー (view) があらかじめ選択されています: + +![Profiling main](../../images/profiling-memory.png) + +- Time フィルタ (filter) は、選択したスパン (span) の時間枠に設定されます **(1)** +- Java Memory Metric Charts **(2)**では、`Heap Memoryのモニター (monitor)`、`Memory Allocation Rate`や`Garbage Collecting` Metrics などの`Application Activity`を確認できます。 +- スパン (span) **(3)**に関連するメトリクス (metrics) と Stack Traces のみにフォーカス/表示する機能。これにより、必要に応じて Java アプリケーション (application) で実行されているバックグラウンド (background) アクティビティ (activity) をフィルタ (filter) で除外できます。 +- 識別された Java Function calls **(4)**により、その関数から呼び出されたメソッド (method) にドリルダウン (drill down) できます。 +- プロファイル (profile) されたサービス (service) のスタックトレース (stack trace) に基づく階層の視覚化を持つ Flame Graph **(5)**。 +- サービス (service) が複数のバージョン (version) を起動する場合に備えて、Service instance **(6)**を選択する機能。 + +さらなる調査のために、UI ではスタックトレース (stack trace) をクリックして、呼び出された関数と、フレームチャート (flame chart) から関連する行を確認できます。これを使用して、コーディング (coding) プラットフォーム (platform) で実際のコード (code) の行を表示できます(もちろん、お好みのコーディング (coding) プラットフォーム (platform) によって異なります)。 + + diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md new file mode 100644 index 0000000000..b3e876f517 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/3-dbquery.md @@ -0,0 +1,54 @@ +--- +title: Database Query Performance +linkTitle: 3. Database Query Performance +weight: 3 +--- + +Database Query Performanceを使用すると、Splunk APMで直接、データベース (database) クエリ (query) がサービス (service) の可用性に与える影響をモニター (monitor) できます。これにより、データベース (database) をインストルメント (instrument) することなく、長時間実行されるクエリ (query)、最適化されていないクエリ (query)、または重いクエリ (query) を迅速に特定し、それらが引き起こしている可能性のある問題を軽減できます。 + +データベース (database) クエリ (query) のパフォーマンス (performance) を確認するには、ブラウザ (browser) で戻るか、メニュー (menu) バー (bar) のAPMセクション (section) に移動してAPMの**Service Map**ページ (page) に移動し、**Service Map**タイル (tile) をクリックします。 + +Dependency mapで推論されたデータベース (database) サービス (service) `mysql:petclinic` Inferred Database serverを選択し **(1)**、次に右側のペイン (pane) をスクロール (scroll) して**Database Query Performance** Pane **(2)**を見つけます。 + +![DB-query from map](../../images/db-query-map.png) + +マップ (map) で選択したサービス (service) が実際に(推論された)データベース (database) サーバー (server) である場合、このペイン (pane) には期間に基づく上位90%(P90)のデータベース (database) コール (call) が表示されます。db-queryパフォーマンス (performance) 機能をさらに詳しく調べるには、ペイン (pane) の上部にある**Database Query Performance**という単語のどこかをクリックします。 + +これにより、DB-query Performanceの概要画面が表示されます: + +![DB-query full](../../images/db-query-full.png) + +{{% notice title="Database Query Normalization" style="info" %}} +デフォルト (default) では、Splunk APMインストルメンテーション (instrumentation) はデータベース (database) クエリ (query) をサニタイズ (sanitize) して、`db.statements`からシークレット (secret) や個人を特定できる情報(PII)などの機密データ (data) を削除またはマスク (mask) します。データベース (database) クエリ (query) の正規化 (normalization) をオフにする方法は[こちら](https://help.splunk.com/en/splunk-observability-cloud/monitor-application-performance/monitor-database-query-performance/troubleshoot-database-query-performance#turn-off-database-query-normalization)で確認できます。 +{{% /notice %}} + +この画面には、Splunk Observability Cloudに送信されたTraces & Spansに基づいて、アプリケーション (application) からデータベース (database) に対して実行されたすべてのDatabase queries **(1)**が表示されます。時間ブロック (block) 間で比較したり、Total Time、P90 Latency & Requests **(2)**でソート (sort) したりできることに注意してください。 + +リスト (list) 内の各Database queryについて、時間ウィンドウ (window) 中の最高レイテンシ (latency)、コール (call) の総数、および1秒あたりのリクエスト (request) 数 **(3)**が表示されます。これにより、クエリ (query) を最適化できる場所を特定できます。 + +右側のペイン (pane) **(5)**の2つのチャート (chart) を使用して、Database Callsを含むトレース (trace) を選択できます。Tag Spotlightペイン (pane) **(6)**を使用して、エンドポイント (endpoint) やタグ (tag) に基づいて、データベース (database) コール (call) に関連するタグ (tag) を確認します。 + +クエリ (query) の詳細ビュー (view) を表示する必要がある場合: + +![details](../../images/query-details.png) + +特定のQuery **(1)**をクリックします。これにより、Query Details pane **(2)**が開き、より詳細な調査に使用できます。 + + diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md new file mode 100644 index 0000000000..79e016020a --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/6-profiling-db-query/_index.md @@ -0,0 +1,16 @@ +--- +title: Always-On Profiling & DB Query Performance +linkTitle: 6. Advanced Features +weight: 7 +archetype: chapter +time: 15 minutes +--- + +前の章で見てきたように、APMを使用して、コードに触れることなく、さまざまなサービス間のインタラクション (interaction) をトレース (trace) することができ、問題をより迅速に特定できます。 + +トレーシング (tracing) に加えて、**automatic discovery and configuration**は、問題をさらに迅速に発見するのに役立つ追加機能を最初から提供します。このセクションでは、そのうちの2つを見ていきます: + +- **Always-on Profiling and Java Metrics** +- **Database Query Performance** + +Always-on ProfilingまたはDB-Queryパフォーマンス (performance) についてさらに深く学びたい場合は、[**Debug Problems in Microservices**](/en/scenarios/debug_problems/)という別のNinja Workshopがありますので、そちらをご覧ください。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md new file mode 100644 index 0000000000..1c08b4323d --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/1-view-logs.md @@ -0,0 +1,21 @@ +--- +title: ログを確認する +linkTitle: 1. ログを確認する +weight: 2 +--- + +ログを表示するには、左側のメニューで ![Logo](../images/logo-icon.png?classes=inline&height=25px) **Log Observer** をクリックします。Log Observer に入ったら、フィルターバー (filter bar) の **Index** が **splunk4rookies-workshop** に設定されていることを確認してください。**(1)** + +次に、**Add Filter** をクリックし、_Fields_ **(2)** オプションを使用して `deployment.environment` フィールド **(3)** を検索します。ドロップダウンリストから、あなたのワークショップインスタンスを選択し **(4)**、`=` (含める) をクリックします。これで、PetClinic アプリケーションからのログメッセージのみが表示されます。 + +![Log Observer sort](../../images/log-observer-sort.png) + +次に、`service.name` フィールドを検索し、値 `customers-service` を選択して `=` (含める) をクリックします。これがフィルターバー **(1)** に表示されます。次に、**Run Search** ボタン **(2)** をクリックします。 + +![Log Observer run](../../images/log-observer-run.png) + +これによりログエントリがリフレッシュされ、`customers-service` からのエントリのみが表示されるように絞り込まれます。 + +![Log Observer](../../images/log-observer-trace-info.png) + +_"Saving pet"_ で始まるエントリ **(1)** をクリックします。サイドペーンが開き、関連するトレース ID (trace ID) やスパン ID (span ID) **(2)** を含む詳細情報を確認できます。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md new file mode 100644 index 0000000000..b874cf04dd --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/2-related-content.md @@ -0,0 +1,15 @@ +--- +title: Related Content +linkTitle: 2. Related Content +weight: 3 +--- + +下部のペインには、関連するコンテンツが表示されます。以下のスクリーンショットでは、APM がこのログ行に関連するトレースを見つけたことがわかります **(1)**: + +![RC](../../images/log-apm-rc.png) + +**Trace for 960432ac9f16b98be84618778905af50** **(2)** をクリックすると、このログ行が生成された特定のトレースの APM ウォーターフォール (waterfall) に移動します: + +![waterfall logs](../../images/waterfall-with-logs.png) + +ログに関する **Related Content** ペーンが表示されていることに注意してください **(1)**。これをクリックすると、Log Observer に戻り、このトレースの一部であるすべてのログ行が表示されます。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md new file mode 100644 index 0000000000..517c13310d --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/7-log-observer-connect/_index.md @@ -0,0 +1,17 @@ +--- +title: Log Observer +linkTitle: 7. Log Observer +weight: 8 +archetype: chapter +time: 10 minutes +--- + +この時点まで、**コード変更は一切なく**、トレース (tracing)、プロファイリング (profiling)、データベースクエリパフォーマンス (Database Query Performance) のデータが Splunk Observability Cloud に送信されています。 + +次に、**Splunk Log Observer** を使用して Spring PetClinic アプリケーションからログデータ (log data) を取得します。 + +**Splunk OpenTelemetry Collector** は、Spring PetClinic アプリケーションからログを自動的に収集し、OTLP エクスポーター (exporter) を使用して Splunk Observability Cloud に送信します。その際、ログイベントには `trace_id`、`span_id`、トレースフラグ (trace flags) が付与されます。 + +**Splunk Log Observer** を使用してログを表示し、ログ情報をサービス (services) やトレース (traces) と自動的に関連付けます。 + +この機能は [**Related Content**](https://help.splunk.com/en/splunk-observability-cloud/data-tools/related-content) と呼ばれています。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md new file mode 100644 index 0000000000..850a196769 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/1-rum-tour.md @@ -0,0 +1,23 @@ +--- +title: Select the RUM view for the Petclinic App +linkTitle: 1. Verify RUM Data +weight: 1 +--- + +左側のメニューで **RUM** をクリックして、RUM の簡単な概要ツアーを始めましょう。次に、**Environment** フィルター **(1)** をドロップダウンボックスから変更し、ワークショップインスタンスの名前 **`-workshop`** **(1)** を選択します (ここで **`INSTANCE`** は、以前に実行したシェルスクリプトの値です)。これのみが選択されていることを確認してください。 + +次に、**App** **(2)** ドロップダウンボックスをアプリの名前に変更します。これは **`-store`** になります。 + +![rum select](../../images/rum-env-select.png) + +**Environment** と **App** を選択すると、アプリケーションの RUM ステータスを示す概要ページが表示されます。(Summary Dashboard が単一行の数値だけの場合は、縮小表示になっています。アプリケーション名の前にある **> (1)** をクリックして展開できます)。JavaScript エラーが発生した場合は、以下のように表示されます: + +![rum overview](../../images/rum-overview.png) + +続けるには、青いリンク (ワークショップ名) をクリックして詳細ページに移動します。これにより、UX Metrics、Front-end Health、Back-end Health、Custom Events によるインタラクションの内訳が表示され、過去のメトリクス (metrics) (デフォルトでは 1 時間) と比較される新しいダッシュボードビューが表示されます。 + +![rum main](../../images/rum-main.png) +通常、最初のチャートには 1 つの線のみがあります。Petclinic ショップに関連するリンクをクリックしてください。 +この例では http://198.19.249.202:81 です: + +これにより、Tag Spotlight ページに移動します。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md new file mode 100644 index 0000000000..a7a6fbcfdf --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/2-rum-tour.md @@ -0,0 +1,14 @@ +--- +title: RUM trace Waterfall view & linking to APM +linkTitle: 2. Follow RUM Traces +weight: 2 +--- +TAG Spotlight ビューでは、RUM データに関連付けられたすべてのタグ (tags) が表示されます。タグは、データを識別するために使用されるキーバリューペア (key-value pairs) です。この場合、タグは OpenTelemetry インストルメンテーションによって自動的に生成されます。タグは、データをフィルタリングし、チャートやテーブルを作成するために使用されます。Tag Spotlight ビューでは、動作の傾向を検出し、ユーザーセッション (user session) にドリルダウンできます。 + +![RUM TAG](../../images/rum-tag-spotlight.png) + +User Sessions **(1)** をクリックすると、タイムウィンドウ (time window) 中に発生したユーザーセッションのリストが表示されます。 + +セッションの 1 つを見たいので、*Duration* **(2)** をクリックして期間でソートし、長いものの 1 つのリンク **(3)** をクリックしてください: + +![User sessions](../../images/rum-user-sessions.png) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md new file mode 100644 index 0000000000..5034ec2f85 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/3-rum-tour.md @@ -0,0 +1,19 @@ +--- +title: RUM trace Waterfall view & linking to APM +linkTitle: 3. RUM Waterfall +weight: 3 +--- + +RUM トレースウォーターフォール (waterfall) を見ています。これは、ユーザーが petclinic アプリケーションのページにアクセスしたときに、ユーザーデバイス上で何が起こったかを示します。 + +ウォーターフォールを下にスクロールして、右側の **#!/owners/details** セグメント **(1)** を見つけてクリックすると、Vets リクエストの処理中に発生したアクションのリストが表示されます。HTTP リクエストには、リターンコードの前に青い **APM** リンクがあることに注意してください。1 つを選択し、APM リンクをクリックします。これにより、Kubernetes でホストされているこのバックエンドサービスコールの APM 情報が表示されます。 + +![rum apm link](../../images/rum-trace.png) + +リクエストで何が起こったかを確認するためにドリルダウンしたい場合は、Trace ID の URL をクリックしてください。 + +これにより、RUM からのリクエストに関連するトレースが表示されます: + +![RUm-apm linked](../../images/rum-apm-waterfall.png) + +サービスへのエントリーポイントに **RUM (1)** 関連コンテンツリンクが追加されており、バックエンドサービスで何が起こったかを確認した後、RUM セッションに戻ることができるようになっていることがわかります。 diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md new file mode 100644 index 0000000000..dcbe4c6636 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/8-rum/_index.md @@ -0,0 +1,53 @@ +--- +title: Real User Monitoring +linkTitle: 8. Real User Monitoring +weight: 9 +time: 10 minutes +archetype: chapter +--- + +アプリケーションに Real User Monitoring (RUM) インストルメンテーション (instrumentation) を有効にするには、コードベースに Open Telemetry Javascript [**https://github.com/signalfx/splunk-otel-js-web**](https://github.com/signalfx/splunk-otel-js-web) スニペット (snippet) を追加する必要があります。 + +Spring PetClinic アプリケーションは、アプリケーションのすべてのビューで再利用される単一の [**index**](https://github.com/spring-petclinic/spring-petclinic-microservices/blob/main/spring-petclinic-api-gateway/src/main/resources/static/index.html) HTML ページを使用しています。これは、Splunk RUM インストルメンテーションライブラリを挿入するのに最適な場所です。すべてのページで自動的に読み込まれるためです。 + +`api-gateway` サービスはすでにインストルメンテーションを実行しており、RUM トレースを Splunk Observability Cloud に送信しています。次のセクションでデータを確認します。 + +スニペットを確認したい場合は、ブラウザでページを右クリックして **View Page Source** を選択することで、ページソースを表示できます。 + +``` html + + + + + +``` diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md new file mode 100644 index 0000000000..0f16cd929c --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/_index.md @@ -0,0 +1,22 @@ +--- +title: Workshop Wrap-up 🎁 +linkTitle: 9. Workshop Wrap-up +weight: 9 +archetype: chapter +description: おめでとうございます。OpenTelemetry の自動検出と設定を使用して既存の Kubernetes Java アプリケーションを最大限に活用するワークショップを完了しました。今日、既存の Kubernetes 上の Java アプリケーションにトレース、コードプロファイリング、データベースクエリパフォーマンスを追加することがいかに簡単かを学びました。これにより、アプリケーションとインフラストラクチャの可観測性を即座に向上させることができます。 +--- + +おめでとうございます。**Get the Most Out of Your Existing Kubernetes Java Applications Using Automatic Discovery and Configuration With OpenTelemetry** ワークショップを完了しました。 + +今日、既存の Kubernetes 上の Java アプリケーションにトレース (Tracing)、コードプロファイリング (Code Profiling)、データベースクエリパフォーマンス (Database Query Performance) を追加することがいかに簡単かを学びました。 + +**Automatic Discovery and Configuration** を使用して、コードや設定に一切触れることなく、アプリケーションとインフラストラクチャの可観測性を即座に向上させました。 + +また、シンプルな設定変更により、さらに多くの可観測性 (**logging** や **RUM**) をアプリケーションに追加して、エンドツーエンドの可観測性を提供できることも学びました。 + + +![Champagne](images/champagne.png?width=45vw) diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/images/champagne.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/images/champagne.png new file mode 100644 index 0000000000..98c0014827 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/9-wrap-up/images/champagne.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/_index.md new file mode 100644 index 0000000000..be8abb1c63 --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/_index.md @@ -0,0 +1,32 @@ +--- +title: Kubernetes 上の Spring PetClinic SpringBoot ベースのマイクロサービス +linkTitle: PetClinic Kubernetes ワークショップ +weight: 2 +archetype: chapter +authors: ["Pieter Hagen"] +description: Kubernetes で実行される Java ベースのアプリケーション向けの自動ディスカバリーおよび設定を有効にする方法を学びます。リアルタイムモニタリングを体験し、エンドツーエンドの可視性でアプリケーションの動作を最大限に活用しましょう。 +time: 90 minutes +--- + +このワークショップの目的は、Java 向けの Splunk **自動ディスカバリーおよび設定**機能を紹介することです。 + +ワークショップのシナリオは、Kubernetes にシンプルな(**計装されていない**)Java マイクロサービスアプリケーションをインストールすることで作成されます。 + +既存の Java ベースのデプロイメント向けに自動ディスカバリー機能付きの Splunk OpenTelemetry Collector をインストールする簡単な手順に従うことで、メトリクス、トレース、ログを **Splunk Observability Cloud** に送信することがいかに簡単かを確認できます。 + +> [!SPLUNK]前提条件 +> +> * ポート **2222** へのアウトバウンド SSH アクセス +> * ポート **81** へのアウトバウンド HTTP アクセス +> * Linux コマンドラインの基本的な知識 + +このワークショップでは、以下のコンポーネントをカバーします: + +* Splunk Infrastructure Monitoring (**IM**) +* Splunk automatic discovery and configuration for Java (**APM**) + * Database Query Performance + * AlwaysOn Profiling +* Splunk Log Observer (**LO**) +* Splunk Real User Monitoring (**RUM**) + +_Splunk Synthetics は少し寂しそうですが、他のワークショップでカバーしています_ {{% icon icon="heart" %}} diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/aa.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/aa.png new file mode 100644 index 0000000000..8d81d7c460 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/aa.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/auto-instrumentation-java-diagram.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/auto-instrumentation-java-diagram.png new file mode 100644 index 0000000000..2293c72c70 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/auto-instrumentation-java-diagram.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-full.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-full.png new file mode 100644 index 0000000000..22dd135b7b Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-full.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-map.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-map.png new file mode 100644 index 0000000000..b052e9c13a Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query-map.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query.png new file mode 100644 index 0000000000..45808155ee Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/db-query.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/flamechart-in-waterfall.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/flamechart-in-waterfall.png new file mode 100644 index 0000000000..06c582f458 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/flamechart-in-waterfall.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-navigator-restarted-pods.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-navigator-restarted-pods.png new file mode 100644 index 0000000000..92929bfc93 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-navigator-restarted-pods.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-nodes.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-nodes.png new file mode 100644 index 0000000000..55fad8e82a Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-nodes.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-peek-at-logs.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-peek-at-logs.png new file mode 100644 index 0000000000..0e25e8a924 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/k8s-peek-at-logs.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-apm-rc.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-apm-rc.png new file mode 100644 index 0000000000..da0620d4f0 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-apm-rc.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-run.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-run.png new file mode 100644 index 0000000000..b6ebdc3a4b Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-run.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-sort.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-sort.png new file mode 100644 index 0000000000..7fa8775555 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-sort.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-trace-info.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-trace-info.png new file mode 100644 index 0000000000..ed09b9d33f Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/log-observer-trace-info.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/logo-icon.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/logo-icon.png new file mode 100644 index 0000000000..2e7b098b39 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/logo-icon.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/navigatorlist.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/navigatorlist.png new file mode 100644 index 0000000000..db81f331d9 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/navigatorlist.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic-owners.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic-owners.png new file mode 100644 index 0000000000..bda39a5c28 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic-owners.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic.png new file mode 100644 index 0000000000..c4dc2cb55b Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/petclinic.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/profiling-memory.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/profiling-memory.png new file mode 100644 index 0000000000..64da21936d Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/profiling-memory.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/query-details.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/query-details.png new file mode 100644 index 0000000000..307651329d Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/query-details.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-apm-waterfall.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-apm-waterfall.png new file mode 100644 index 0000000000..b0f8bc0c04 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-apm-waterfall.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-env-select.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-env-select.png new file mode 100644 index 0000000000..adbeb96fc7 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-env-select.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-main.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-main.png new file mode 100644 index 0000000000..ad5682471e Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-main.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-overview.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-overview.png new file mode 100644 index 0000000000..2a528b03bf Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-overview.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-tag-spotlight.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-tag-spotlight.png new file mode 100644 index 0000000000..ef7e5cc4b9 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-tag-spotlight.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-trace.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-trace.png new file mode 100644 index 0000000000..76565dd6c8 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-trace.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-user-sessions.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-user-sessions.png new file mode 100644 index 0000000000..54300a92fd Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/rum-user-sessions.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/select-workflow.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/select-workflow.png new file mode 100644 index 0000000000..b3dd42b459 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/select-workflow.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/selecting-a-trace.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/selecting-a-trace.png new file mode 100644 index 0000000000..9db88edb78 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/selecting-a-trace.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/service-view.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/service-view.png new file mode 100644 index 0000000000..0f11a3ab33 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/service-view.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-view.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-view.png new file mode 100644 index 0000000000..0aa98ec210 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-view.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-with-logs.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-with-logs.png new file mode 100644 index 0000000000..74805a980f Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/waterfall-with-logs.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-map.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-map.png new file mode 100644 index 0000000000..507f41c688 Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-map.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-overview.png b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-overview.png new file mode 100644 index 0000000000..435b46076d Binary files /dev/null and b/content/ja/ninja-workshops/1-automatic-discovery/2-petclinic-kubernetes/images/zero-config-first-services-overview.png differ diff --git a/content/ja/ninja-workshops/1-automatic-discovery/_index.md b/content/ja/ninja-workshops/1-automatic-discovery/_index.md new file mode 100644 index 0000000000..f437995dca --- /dev/null +++ b/content/ja/ninja-workshops/1-automatic-discovery/_index.md @@ -0,0 +1,7 @@ +--- +title: 自動ディスカバリー (Automatic Discovery) ワークショップ +description: Java アプリケーション向けの Splunk 自動ディスカバリーおよび設定機能の活用方法を学びます。これらのワークショップでは、ゼロコード計装 (zero-code instrumentation) を使用して、モノリスおよび Kubernetes デプロイメント全体でメトリクス、トレース、ログを即座に生成し、包括的なオブザーバビリティを実現する方法をデモンストレーションします。 +weight: 1 +--- + +{{% children type="card" depth="1" description="true" %}}