0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS EC2上でOllama環境を構築し、Splunkで監視をしてみる(2)

0
Posted at

こんばんは。torippy1024です。

時間があいてしまいましたが前回の続きです。
https://qiita.com/torippy1024/items/726444a818e3d2af0e49

前回、OllmaとOpen WebUIによるセルフマネージドチャットツール環境を構築しました。
今回は、これにSplunk Universal Forwarder(UF)とOpenTelemetry Add-on(OTel Add-on)を導入し、この環境を監視/可視化してみることにします。

構成図

前回構成した環境にUF/OTelを追加した構成図です。
OTelについては導入先によって二種類あることに注意が必要です。
サーバーのOSのログやメトリクスに関しては、OpenTelemetry Add-onを使用して収集しています。
これに対し、Open WebUIのトレースに対しては、OpenTelemetry Distribution(Splunk Distribution of the OpenTelemetry Collector)のOTel Collectorをコンテナイメージ内に導入し収集しています。

image.png

今回、OSとDockerイメージそれぞれにOTelを導入しなければなりませんでした。
その理由は、OSおよびDockerレイヤのログやメトリクスは、OSに導入したOTelで収集できるのですが、Docker上で稼働しているアプリケーション(今回の場合はOpenUI)のトレースを取得するには、Dockerイメージ内にOTelを組み込む必要があったためです。

導入先と監視対象

導入先と監視対象は以下の通りです。
以下以外に、Splunk EnterpriseにTA-Ollam Add-onも入れる必要があることに注意してください。

サーバー名 導入コンポーネント 監視対象カテゴリ 監視対象
Ollamaサーバー Splunk Universal Forwarder(UF) ログ /var/log/ollama/ollama.log(Ollamaログ)
Ollamaサーバー OpenTelemetry Add-on(OTel Add-on) メトリクス(インフラ) cpu,disk,filesystem,memory,network,load,paging,processes(hostmetricsで取得)
Open-WebUIサーバー Splunk Universal Forwarder(UF) ログ /var/lib/docker/containers/* /*-json.log(Open WebUIのコンテナログ)
Open-WebUIサーバー OpenTelemetry Add-on(OTel Add-on) メトリクス(インフラ) cpu,disk,filesystem,memory,network,load,paging,processes(hostmetricsで取得), docker-container-stats(smartagents/docker-container-statsで取得)
Open-WebUIサーバー Splunk Distribution of the OpenTelemetry Collector(OTel Collector Distribution) トレース(APM) open-webuiコンテナ上のトレース

設定手順

Splunk Enterprise/Splunk Observability Cloudの準備

以下を用意しておく必要があります。

Splunk Enterpriseの作業

  • HEC転送有効化
  • HECトークンの発行
  • ラボ用インデックスの(今回はollama-labという名前で作成)
  • TA-Ollam add-on(https://splunkbase.splunk.com/app/8024 )のインストール

Splunk Observability Cloudの作業

  • realmの確認(この日本語の記事を読む人のほとんどは東京リージョンを使うと思われるのでほぼjp0のはず)
  • access_tokenの発行

Ollamaサーバーへの作業

Universal Forwarderインストールと設定

sudo useradd -m splunk
sudo passwd splunk
(Linux上のsplunkユーザーのパスワードを新規設定)

wget -O splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz "https://download.splunk.com/products/universalforwarder/releases/10.4.2/linux/splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz"
sudo tar -xzvC /opt -f splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz
sudo /opt/splunkforwarder/bin/splunk start --accept-license --answer-yes --seed-passwd password
(splunk adminパスワードをpasswordとして初回起動)
sudo /opt/splunkforwarder/bin/splunk stop

sudo chown -R splunk:splunk /opt/splunkforwarder
sudo /opt/splunkforwarder/bin/splunk enable boot-start -user splunk
sudo /opt/splunkforwarder/bin/splunk start
sudo /opt/splunkforwarder/bin/splunk status

sudo -u splunk /opt/splunkforwarder/bin/splunk add forward-server <splunk enterpriseの内部IPアドレス>:9997

OpenTelemetry Add-onインストールと設定

(/Users/ubuntu/配下に、OTel Add-on for Linux(https://splunkbase.splunk.com/app/8698 )をダウンロードして保管)

sudo mv /home/ubuntu/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz /home/splunk/
sudo chown splunk:splunk /home/splunk/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz
sudo -u splunk /opt/splunkforwarder/bin/splunk install app /home/splunk/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz
sudo -u splunk mkdir /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/

sudo -u splunk vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(default/inputs.confを参考に、以下を追記)
---
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 0
index = _internal
sourcetype = Splunk_TA_otel

splunk_access_token = <access_token>
splunk_realm = jp0
splunk_config = $SPLUNK_HOME/etc/apps/$SPLUNK_MODINPUT_BASE_DIR_NAME/configs/agent_config.yaml
splunk_collector_log_level = error
splunk_collector_env_vars = SPLUNK_HEC_TOKEN=<hec_token>,SPLUNK_HEC_URL = https://<splunk_enterpriseのHEC_endpoint>:8088/services/collector
splunk_collector_cmd_args =
---

sudo cat /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(変更が反映されていることを確認)

sudo /opt/splunkforwarder/bin/splunk restart

Ollamaログ取り込み設定

(/Users/ubuntu/配下に、OTel Add-on for Linux(https://splunkbase.splunk.com/app/8698 )をダウンロードして保管)

sudo mv /home/ubuntu/ta-ollama_015.tgz /home/splunk/ta-ollama_015.tgz
sudo chown splunk:splunk /home/splunk/ta-ollama_015.tgz
sudo -u splunk /opt/splunkforwarder/bin/splunk install app /home/splunk/ta-ollama_015.tgz

sudo -u splunk mkdir /opt/splunkforwarder/etc/apps/TA-ollama-releasev1/local/
sudo -u splunk vi /opt/splunkforwarder/etc/apps/TA-ollama-releasev1/local/inputs.conf 

(以下を追記。モニターパスは前回設定したものに合わせている)
---
[monitor:///var/log/ollama/ollama.log]
disabled = 0
index = test-ollama
sourcetype = ollama:server
---

sudo cat /opt/splunkforwarder/etc/apps/TA-ollama-releasev1/local/inputs.conf 
(変更が反映されていることを確認)

sudo /opt/splunkforwarder/bin/splunk restart

Open-WebUIサーバーへの作業

Universal Forwarderインストールと設定(Ollamaサーバーへの作業と同手順)

sudo useradd -m splunk
sudo passwd splunk
(Linux上のsplunkユーザーのパスワードを新規設定)

wget -O splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz "https://download.splunk.com/products/universalforwarder/releases/10.4.2/linux/splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz"
sudo tar -xzvC /opt -f splunkforwarder-10.4.2-33c3bf42cd73-linux-amd64.tgz
sudo /opt/splunkforwarder/bin/splunk start --accept-license --answer-yes --seed-passwd password
(splunk adminパスワードをpasswordとして初回起動)
sudo /opt/splunkforwarder/bin/splunk stop

sudo chown -R splunk:splunk /opt/splunkforwarder
sudo /opt/splunkforwarder/bin/splunk enable boot-start -user splunk
sudo /opt/splunkforwarder/bin/splunk start
sudo /opt/splunkforwarder/bin/splunk status

sudo -u splunk /opt/splunkforwarder/bin/splunk add forward-server <splunk enterpriseの内部IPアドレス>:9997

dockerログ取り込み設定

sudo -u splunk vi /opt/splunkforwarder/etc/system/local/inputs.conf 
(以下を追記。ラボなので、わざわざ新しいAppフォルダなどは作成せず、何も考えずsystem/local/配下のinputs.confに追記してしまうことにする)
---
[monitor:///var/lib/docker/containers/*/*-json.log]
disabled = 0
index = test-ollama
sourcetype = docker:json
---

sudo -u splunk cat /opt/splunkforwarder/etc/system/local/inputs.conf 
(変更が反映されていることを確認)

OpenTelemetry Add-onインストールと設定(Ollamaサーバーへの作業と同手順)

(/Users/ubuntu/配下に、OTel Add-on for Linux(https://splunkbase.splunk.com/app/8698 )をダウンロードして保管)

sudo mv /home/ubuntu/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz /home/splunk/
sudo chown splunk:splunk /home/splunk/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz
sudo -u splunk /opt/splunkforwarder/bin/splunk install app /home/splunk/splunk-add-on-for-opentelemetry-collector-for-linux-x86_64_01570.tgz
sudo -u splunk mkdir /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/

sudo -u splunk vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(default/inputs.confを参考に、以下を追記)
---
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 0
index = _internal
sourcetype = Splunk_TA_otel

splunk_access_token = <access_token>
splunk_realm = jp0
splunk_config = $SPLUNK_HOME/etc/apps/$SPLUNK_MODINPUT_BASE_DIR_NAME/configs/agent_config.yaml
splunk_collector_log_level = error
splunk_collector_env_vars = SPLUNK_HEC_TOKEN=<hec_token>,SPLUNK_HEC_URL = https://<splunk_enterpriseのHEC_endpoint>:8088/services/collector
splunk_collector_cmd_args =
---

sudo cat /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(変更が反映されていることを確認)

sudo /opt/splunkforwarder/bin/splunk restart

dockerメトリクス取り込み設定

sudo -u splunk cp -a /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/configs/agent_config.yaml /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/configs/agent_config-with-docker.yaml

sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/configs/agent_config-with-docker.yaml
(以下のように、receivers配下にsmartagent/docker-container-statsを追加し、service-pipelines-metrics配下にsmartagent/docker-container-statsを追加)
---
receivers:
  smartagent/docker-container-stats:
    type: docker-container-stats
:
service:
  pipelines:
    metrics:
      receivers: [host_metrics, otlp, smartagent/docker-container-stats]
---

sudo cat /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/configs/agent_config-with-docker.yaml | grep "smartagent/docker-container-stats" -C5
(変更が反映されていることを確認)

sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(以下の通り、OTelが使用するコンフィグを修正版に変更)
---
splunk_config = $SPLUNK_HOME/etc/apps/$SPLUNK_MODINPUT_BASE_DIR_NAME/configs/agent_config_with_docker.yaml
---

sudo cat /opt/splunkforwarder/etc/apps/Splunk_TA_otel_linux_x86_64/local/inputs.conf
(変更が反映されていることを確認)

sudo usermod -aG docker splunk
sudo /opt/splunkforwarder/bin/splunk restart

Splunk Distribution of the OpenTelemetry Collectorインストールと設定

以前デプロイしたopen-webuiコンテナの停止

docker stop open-webui
docker rm open-webui

open-webui-with-otelコンテナ用の環境変数ファイルの作成(<Ollamaサーバーの内部IP>は変更して実行すること)

echo "WEBUI_SECRET_KEY=$(openssl rand -hex 32)" >> ~/.open-webui-with-otel.env
echo "OLLAMA_BASE_URL=http://<Ollamaサーバーの内部IP>:11434" >> ~/.open-webui-with-otel.env
echo "AIOHTTP_CLIENT_SESSION_TOOL_SERVER_SSL=false" >> ~/.open-webui-with-otel.env
echo "SCARF_NO_ANALYTICS=true" >> ~/.open-webui-with-otel.env
echo "DO_NOT_TRACK=true" >> ~/.open-webui-with-otel.env
echo "WEBUI_ADMIN_EMAIL=admin@example.com" >> ~/.open-webui-with-otel.env
echo "WEBUI_ADMIN_PASSWORD=password" >> ~/.open-webui-with-otel.env
echo "ENABLE_OTEL=true" >> ~/.open-webui-with-otel.env
echo "ENABLE_OTEL_TRACES=true" >> ~/.open-webui-with-otel.env
echo "OTEL_EXPORTER_OTLP_ENDPOINT=http://host.docker.internal:4317" >> ~/.open-webui-with-otel.env
echo "OTEL_EXPORTER_OTLP_PROTOCOL=grpc" >> ~/.open-webui-with-otel.env
echo "OTEL_EXPORTER_OTLP_INSECURE=true" >> ~/.open-webui-with-otel.env
echo "OTEL_SERVICE_NAME=open-webui" >> ~/.open-webui-with-otel.env
echo "OTEL_RESOURCE_ATTRIBUTES=deployment.environment=lab" >> ~/.open-webui-with-otel.env
echo "OTEL_INSTRUMENTATION_GENAI_EMITTERS=span_metric" >> ~/.open-webui-with-otel.env
echo "OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT=SPAN_ONLY" >> ~/.open-webui-with-otel.env
echo "OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta" >> ~/.open-webui-with-otel.env

cat ~/.open-webui-with-otel.env
(上記の環境変数が表示されることを確認)

chmod 600 ~/.open-webui-with-otel.env

open-webui-with-otelのデプロイ

docker run -d \
  -p 80:8080 \
  --add-host=host.docker.internal:host-gateway \
  --env-file ~/.open-webui-with-otel.env \
  --name open-webui-with-otel \
  --restart unless-stopped \
  -v open-webui:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

稼働確認

docker ps
docker logs open-webui-with-otel --tail 30

APMトレースによるService Map表示(Splunk Observability Cloud)
スクリーンショット 2026-08-02 013535.png

Dockerメトリクスの表示(Splunk Observability Cloud)
スクリーンショット 2026-08-02 013617.png

OSメトリクスの表示(Splunk Observability Cloud)
スクリーンショット 2026-08-02 013745.png

ログの表示(Splunk Enterprise)
スクリーンショット 2026-08-02 013902.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?