Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions content/ja/other/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
archetype: "home"
title: さらなるワークショップ
weight: 19
---

{{%children containerstyle="div" style="h3" description="true" %}}
33 changes: 33 additions & 0 deletions content/ja/other/pet-clinic/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
title: Pet Clinic Java ワークショップ
alwaysopen: false
weight: 1
description: JavaアプリケーションをつかったSplunk Oservabilityのワークショップです
---

このワークショップでは、Splunk Observabilityプラットフォームの以下のコンポーネントを構成するための、基本的なステップを体験できます:

* Splunk Infrastructure Monitoring (IM)
* Splunk APM
* Endpoint Performance
* Database Query Performance
* AlwaysOn Profiling
* Splunk Real User Monitoring (RUM)
* Splunk LogObserver

ワークショップの中では、Javaのサンプルアプリケーション(Spring Pet Clinic)をクローン(ダウンロード)し、アプリケーションのコンパイル、パッケージ、実行していきます。

アプリケーションを起動すると、OpenTelemetry Javaエージェントを通じて、Splunk APMでメトリクスとトレースが即座に表示されるようになります。

その後、Splunk OpenTelemetry Javascript Libraries (RUM)を使用して、Pet Clinicのエンドユーザーインターフェース(アプリケーションによってレンダリングされるHTMLページ)を計装し、エンドユーザーが実行する個々のクリックとページロードのすべてについて、RUMトレースを生成していきます。

{{% notice title="前提条件" style="info" %}}
このワークショップは、ホスト/インスタンスが提供されるSplunk実行ワークショップ **または** 自前のホスト/[Multipassインスタンス](https://github.com/splunk/observability-workshop/tree/main/multipass) で行う、自己主導型のワークショップです。

ご自身のシステムには、以下のものがインストールされ、有効になっている必要があります:

1. JDK 17
2. ポート `8080` が開いていること(インバウンド/アウトバウンド)
{{% /notice %}}

![PetClinic Exercise](images/petclinic-exercise.png)
79 changes: 79 additions & 0 deletions content/ja/other/pet-clinic/docs/apm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title: OpenTelemetry Javaエージェントをインストールする
linkTitle: 2. Javaエージェント
weight: 2
---

## 1. Spring PetClinic アプリケーションを動かす

APMをセットアップするためにまず必要なのは...そう、アプリケーションです!この演習では、Spring PetClinicアプリケーションを使用します。これはSpringフレームワーク(Spring Boot)で作られた、非常に人気のあるサンプルJavaアプリケーションです。

まずはPetClinicリポジトリをクローンし、そして、アプリケーションをコンパイル、ビルド、パッケージ、テストしていきます。

```bash
git clone https://github.com/spring-projects/spring-petclinic
```

`spring-petclinic` ディレクトリに移動します:

```bash
cd spring-petclinic
```

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/mysql:5.7.8
```

そして、Splunk版のOpenTelemetry Java APMエージェントをダウンロードしておきましょう。

```bash
curl -L https://github.com/signalfx/splunk-otel-java/releases/latest/download/splunk-otel-javaagent.jar \
-o splunk-otel-javaagent.jar
```

次に、mavenコマンドを実行してPetClinicをコンパイル/ビルド/パッケージ化します:

```bash
./mvnw package -Dmaven.test.skip=true
```

{{% notice title="情報" style="info" %}}
実際にアプリをコンパイルする前に、mavenが多くの依存ライブラリをダウンロードするため、初回実行時には数分かかるでしょう。2回目以降の実行はもっと短くなります。
{{% /notice %}}

そして、以下のコマンドでアプリケーションを実行することができます:


```bash
java -javaagent:./splunk-otel-javaagent.jar \
-Dotel.service.name=$(hostname).service \
-Dotel.resource.attributes=deployment.environment=$(hostname),version=0.314 \
-Dsplunk.profiler.enabled=true \
-Dsplunk.profiler.memory.enabled=true \
-Dsplunk.metrics.enabled=true \
-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql
```


アプリケーションが動作しているかどうかは、`http://<VM_IP_ADDRESS>:8080` にアクセスして確認することができます。
次に、トラフィックを生成し、クリックしまくり、エラーを生成し、ペットを追加するなどしてください。

* `-Dotel.service.name=$(hostname).service` では、アプリケーションの名前を定義しています。サービスマップ上のアプリケーションの名前等に反映されます。
* `-Dotel.resource.attributes=deployment.environment=$(hostname),version=0.314` では、Environmentと、versionを定義しています。
- `deployment.environment=$(hostname)` は、Splunk APM UIの上部「Environment」に反映されます。
- `version=0.314` はここでは、アプリケーションのバージョンを示しています。トレースをドリルダウンしたり、サービスマップの Breakdown の機能で分析したり、Tag Spotlightを開くと `version` 毎のパフォーマンス分析が使えます。
* `-Dsplunk.profiler.enabled=true` および `splunk.profiler.memory.enabled=true` では、CPUとメモリのプロファイリングを有効にしています。Splunk APM UIから、AlwaysOn Profilingを開いてみてください。
* `-Dsplunk.metrics.enabled=true` では、メモリやスレッドなどJVMメトリクスの送信を有効にしています。Dashboardsから、APM java servicesを開いてみてください。

その後、Splunk APM UIにアクセスして、それぞれのテレメトリーデータを確認してみましょう!


{{% notice title="Troubleshooting MetricSetsを追加する" style="info" %}}
サービスマップやTab Spotlightで、 `version` などのカスタム属性で分析できるようにするためには、Troubleshooting MetricSetsの設定をあらかじめ追加する必要があります。
左メニューの **Settings → APM MetricSets** で、設定を管理することができます。 もしお使いのアカウントで分析できなければ、設定を追加してみましょう。
{{% /notice %}}


次のセクションではカスタム計装を追加して、OpenTelemetryでは何ができるのか、さらに見ていきます。
79 changes: 79 additions & 0 deletions content/ja/other/pet-clinic/docs/imt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
title: OpenTelemetry Collectorをインストールする
linkTitle: 1. OpenTelemetry Collector
weight: 1
---

## 1. はじめに

OpenTelemetry Collectorは、インフラストラクチャーとアプリケーションを計装するためのコアコンポーネントです。 その役割は収集と送信です:

* インフラストラクチャーのメトリクス(ディスク、CPU、メモリなど)
* アプリケーションパフォーマンスモニタリング(APM)のトレース情報
* プロファイリングに関するデータ
* ホストおよびアプリケーションのログ

Splunk Observability Cloudでは、インフラストラクチャーとアプリケーションの両方で Collector のセットアップを案内するウィザードを提供しています。デフォルトでは、ウィザードはコレクターのインストールのみを行うコマンドのみを提供します。

## 2. 環境変数を設定する

すでに **Splunk IM** ワークショップを終了している場合は、既存の環境変数を利用することができます。そうでない場合は、`ACCESS_TOKEN`と`REALM`の環境変数を設定して、OpenTelemetry Collectorのインストールコマンドを実行していきます。

例えば、Realmが `us1` の場合、`export REALM=us1` と入力し、`eu0` の場合は `export REALM=eu0` と入力します。

{{< tabs >}}
{{% tab name="ACCESS TOKENを環境変数に設定する" %}}

``` bash
export ACCESS_TOKEN="<replace_with_O11y-Workshop-ACCESS_TOKEN>"
```

{{% /tab %}}
{{< /tabs >}}

{{< tabs >}}
{{% tab name="REALMを環境変数に設定する" %}}

``` bash
export REALM="<replace_with_REALM>"
```

{{% /tab %}}
{{< /tabs >}}

{{% notice title="既存のOpenTelemetryコレクターをすべて削除する" style="warning" %}}
同じVMインスタンスにSplunk IM ワークショップのセットアップをしている場合、Otel Collectorをインストールする前に Kubernetes で実行中の Collector を削除していることを確認してください。これは、以下のコマンドを実行することで行うことができます:

``` bash
helm delete splunk-otel-collector
```

{{% /notice %}}

## 3. OpenTelemetry Collectorをインストールする

次に、Collectorをインストールします。インストールスクリプトに渡される追加のパラメータは `--deployment-environment` です。

``` bash
curl -sSL https://dl.signalfx.com/splunk-otel-collector.sh > /tmp/splunk-otel-collector.sh && \
sudo sh /tmp/splunk-otel-collector.sh --deployment-environment $(hostname)-petclinic --realm $REALM -- $ACCESS_TOKEN
```

{{% notice style="info" title="AWS/EC2インスタンスの場合" %}}。
AWS/EC2インスタンス上でこのワークショップを行う場合、インスタンスのホスト名を公開するためにコレクターにパッチを適用する必要があります:

``` 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
```

{{% /notice %}}

インストールが完了したら、Splunk Observabilityの **Hosts with agent installed** ダッシュボードに移動して、**Dashboards → Hosts with agent installed** からホストのデータを確認してみましょう。

ダッシュボードのフィルタを使用して `host.name`を選択し、仮想マシンのホスト名を入力または選択します。ホストのデータが表示されたら、APMコンポーネントを使用する準備が整いました。
128 changes: 128 additions & 0 deletions content/ja/other/pet-clinic/docs/logobserver.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
---
title: Log Observer
linktitle: 5. Log Observer
weight: 5
---

このセクションでは、Spring PetClinicアプリケーションをファイルシステムのファイルにログを書き込むように設定し、
Splunk OpenTelemetry Collectorがそのログファイルを読み取り(tail)、Splunk Observability Platformに情報を報告するように設定していきます。

## 1. FluentDの設定

Splunk OpenTelemetry Collectorを、Spring PetClinicのログファイルをtailし
Splunk Observability Cloudエンドポイントにデータを報告するように設定する必要があります。

Splunk OpenTelemetry Collectorは、FluentDを使用してログの取得/報告を行い、
Spring PetClinicのログを報告するための適切な設定を行うには、
デフォルトディレクトリ(`/etc/otel/collector/fluentd/conf.d/`)にFluentDの設定ファイルを追加するだけです。

以下は、サンプルのFluentD設定ファイル `petclinic.conf` を新たに作成し、

```bash
sudo nano /etc/otel/collector/fluentd/conf.d/petclinic.conf
```


ファイル `/tmp/spring-petclinic.log`を読み取るよう設定を記述します。

```
<source>
@type tail
@label @SPLUNK
tag petclinic.app
path /tmp/spring-petclinic.log
pos_file /tmp/spring-petclinic.pos_file
read_from_head false
<parse>
@type none
</parse>
</source>
```


このとき、ファイル `petclinic.conf` のアクセス権と所有権を変更する必要があります。

```bash
sudo chown td-agent:td-agent /etc/otel/collector/fluentd/conf.d/petclinic.conf
sudo chmod 755 /etc/otel/collector/fluentd/conf.d/petclinic.conf
```

ファイルが作成されたら、FluentDプロセスを再起動しましょう。

```bash
sudo systemctl restart td-agent
```


## 3. Logbackの設定

Spring Pet Clinicアプリケーションは、いくつかのJavaログライブラリを使用することができます。
このシナリオでは、logbackを使ってみましょう。

リソースフォルダに `logback.xml` という名前のファイルを作成して…

```bash
nano src/main/resources/logback.xml
```


以下の設定を保存しましょう:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<configuration scan="true" scanPeriod="30 seconds">
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
<resetJUL>true</resetJUL>
</contextListener>
<logger name="org.springframework.samples.petclinic" level="debug"/>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/tmp/spring-petclinic.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>springLogFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>5</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>
%d{yyyy-MM-dd HH:mm:ss} - %logger{36} - %msg trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} service.name=%property{otel.resource.service.name}, deployment.environment=%property{otel.resource.deployment.environment} %n
</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="file" />
</root>
</configuration>
```

その後、アプリケーションを再構築して再度実行していきます。


```bash
./mvnw package -Dmaven.test.skip=true
```

```bash
java -javaagent:./splunk-otel-javaagent.jar \
-Dotel.service.name=$(hostname).service \
-Dotel.resource.attributes=deployment.environment=$(hostname),version=0.317 \
-Dsplunk.profiler.enabled=true \
-Dsplunk.profiler.memory.enabled=true \
-Dsplunk.metrics.enabled=true \
-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql
```


これまで通り、アプリケーション `http://<VM_IP_ADDRESS>:8080` にアクセスしてトラフィックを生成すると、ログメッセージが報告されるようになります。

左側のLog Observerアイコンをクリックして、ホストとSpring PetClinicアプリケーションからのログメッセージのみを選択するためのフィルタを追加できます。

1. Add Filter → Field → host.name → <あなたのホスト名>
2. Add Filter → Field → service.name → <あなたのホスト名>.service


## 4. まとめ

これでワークショップは終了です。
これまでに、Splunk Observability Cloudにメトリクス、トレース、ログ、データベースクエリのパフォーマンス、コードプロファイリングが報告されるようになりました。
おめでとうございます!
Loading