|
| 1 | +--- |
| 2 | +title: Log Observer |
| 3 | +linktitle: 5. Log Observer |
| 4 | +weight: 5 |
| 5 | +--- |
| 6 | + |
| 7 | +このセクションでは、Spring PetClinicアプリケーションをファイルシステムのファイルにログを書き込むように設定し、 |
| 8 | +Splunk OpenTelemetry Collectorがそのログファイルを読み取り(tail)、Splunk Observability Platformに情報を報告するように設定していきます。 |
| 9 | + |
| 10 | +## 1. FluentDの設定 |
| 11 | + |
| 12 | +Splunk OpenTelemetry Collectorを、Spring PetClinicのログファイルをtailし |
| 13 | +Splunk Observability Cloudエンドポイントにデータを報告するように設定する必要があります。 |
| 14 | + |
| 15 | +Splunk OpenTelemetry Collectorは、FluentDを使用してログの取得/報告を行い、 |
| 16 | +Spring PetClinicのログを報告するための適切な設定を行うには、 |
| 17 | +デフォルトディレクトリ(`/etc/otel/collector/fluentd/conf.d/`)にFluentDの設定ファイルを追加するだけです。 |
| 18 | + |
| 19 | +以下は、サンプルのFluentD設定ファイル `petclinic.conf` を新たに作成し、 |
| 20 | + |
| 21 | +```bash |
| 22 | +sudo nano /etc/otel/collector/fluentd/conf.d/petclinic.conf |
| 23 | +``` |
| 24 | + |
| 25 | + |
| 26 | +ファイル `/tmp/spring-petclinic.log`を読み取るよう設定を記述します。 |
| 27 | + |
| 28 | +``` |
| 29 | +<source> |
| 30 | + @type tail |
| 31 | + @label @SPLUNK |
| 32 | + tag petclinic.app |
| 33 | + path /tmp/spring-petclinic.log |
| 34 | + pos_file /tmp/spring-petclinic.pos_file |
| 35 | + read_from_head false |
| 36 | + <parse> |
| 37 | + @type none |
| 38 | + </parse> |
| 39 | +</source> |
| 40 | +``` |
| 41 | + |
| 42 | + |
| 43 | +このとき、ファイル `petclinic.conf` のアクセス権と所有権を変更する必要があります。 |
| 44 | + |
| 45 | +```bash |
| 46 | +sudo chown td-agent:td-agent /etc/otel/collector/fluentd/conf.d/petclinic.conf |
| 47 | +sudo chmod 755 /etc/otel/collector/fluentd/conf.d/petclinic.conf |
| 48 | +``` |
| 49 | + |
| 50 | +ファイルが作成されたら、FluentDプロセスを再起動しましょう。 |
| 51 | + |
| 52 | +```bash |
| 53 | +sudo systemctl restart td-agent |
| 54 | +``` |
| 55 | + |
| 56 | + |
| 57 | +## 3. Logbackの設定 |
| 58 | + |
| 59 | +Spring Pet Clinicアプリケーションは、いくつかのJavaログライブラリを使用することができます。 |
| 60 | +このシナリオでは、logbackを使ってみましょう。 |
| 61 | + |
| 62 | +リソースフォルダに `logback.xml` という名前のファイルを作成して… |
| 63 | + |
| 64 | +```bash |
| 65 | +nano src/main/resources/logback.xml |
| 66 | +``` |
| 67 | + |
| 68 | + |
| 69 | +以下の設定を保存しましょう: |
| 70 | + |
| 71 | +```xml |
| 72 | +<?xml version="1.0" encoding="UTF-8"?> |
| 73 | +<!DOCTYPE xml> |
| 74 | +<configuration scan="true" scanPeriod="30 seconds"> |
| 75 | + <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> |
| 76 | + <resetJUL>true</resetJUL> |
| 77 | + </contextListener> |
| 78 | + <logger name="org.springframework.samples.petclinic" level="debug"/> |
| 79 | + <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
| 80 | + <file>/tmp/spring-petclinic.log</file> |
| 81 | + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> |
| 82 | + <fileNamePattern>springLogFile.%d{yyyy-MM-dd}.log</fileNamePattern> |
| 83 | + <maxHistory>5</maxHistory> |
| 84 | + <totalSizeCap>1GB</totalSizeCap> |
| 85 | + </rollingPolicy> |
| 86 | + <encoder> |
| 87 | + <pattern> |
| 88 | + %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 |
| 89 | + </pattern> |
| 90 | + </encoder> |
| 91 | + </appender> |
| 92 | + <root level="debug"> |
| 93 | + <appender-ref ref="file" /> |
| 94 | + </root> |
| 95 | +</configuration> |
| 96 | +``` |
| 97 | + |
| 98 | +その後、アプリケーションを再構築して再度実行していきます。 |
| 99 | + |
| 100 | + |
| 101 | +```bash |
| 102 | +./mvnw package -Dmaven.test.skip=true |
| 103 | +``` |
| 104 | + |
| 105 | +```bash |
| 106 | +java -javaagent:./splunk-otel-javaagent.jar \ |
| 107 | +-Dotel.service.name=$(hostname).service \ |
| 108 | +-Dotel.resource.attributes=deployment.environment=$(hostname),version=0.317 \ |
| 109 | +-Dsplunk.profiler.enabled=true \ |
| 110 | +-Dsplunk.profiler.memory.enabled=true \ |
| 111 | +-Dsplunk.metrics.enabled=true \ |
| 112 | +-jar target/spring-petclinic-*.jar --spring.profiles.active=mysql |
| 113 | +``` |
| 114 | + |
| 115 | + |
| 116 | +これまで通り、アプリケーション `http://<VM_IP_ADDRESS>:8080` にアクセスしてトラフィックを生成すると、ログメッセージが報告されるようになります。 |
| 117 | + |
| 118 | +左側のLog Observerアイコンをクリックして、ホストとSpring PetClinicアプリケーションからのログメッセージのみを選択するためのフィルタを追加できます。 |
| 119 | + |
| 120 | +1. Add Filter → Field → host.name → <あなたのホスト名> |
| 121 | +2. Add Filter → Field → service.name → <あなたのホスト名>.service |
| 122 | + |
| 123 | + |
| 124 | +## 4. まとめ |
| 125 | + |
| 126 | +これでワークショップは終了です。 |
| 127 | +これまでに、Splunk Observability Cloudにメトリクス、トレース、ログ、データベースクエリのパフォーマンス、コードプロファイリングが報告されるようになりました。 |
| 128 | +おめでとうございます! |
0 commit comments