こんにちは。torippy1024です。
本日は、Splunk Observability Cloudを利用する上での一つの基本構成(と思われる)Gatewayサーバー経由でのログ転送を行ってみます。
Splunk Cloudでは、Forwarderをログ取得対象サーバーとプロキシサーバー(中継Forwarderサーバー)にインストールしましたが、Splunk Observability Cloudでは、OpenTelemetry Collectorをメトリクス取得対象サーバーとGatewayサーバー(プロキシサーバー)にインストールする必要があります。
【1】構成図
構成図は上記の通りです。
監視取得対象サーバー(Linux)とプロキシサーバーは両方Ubuntu 22.04上で動作させます。
監視取得対象サーバー(Windows)は、Windows Server 2022です。
どちらのサーバーにもOpenTelemetry Collectorを導入するのですが、メトリクス取得対象サーバーにはAgentモード、プロキシサーバーにはGatewayモードで導入します。
通信に使うポート(プロトコル)については、数が多くていまいちどれがどう使われているのかわからなかったのですが、とりあえず以下の通信が許可されていればよさそうです。
通信方向 | 接続許可すべきポート(プロトコル) |
---|---|
監視対象サーバー→Gatewayサーバー | 4317/tcp(OTLP/gRPC), 4318/tcp(OTLP/http), 9943/tcp(signalfx), 6060/tcp(http forwarder) |
Gatewayサーバー→Splunk Observability Cloud | 443/tcp(HTTPS) |
今回は、Infrastructure Monitoringを使ってインフラ環境のメトリクスを取得することにします。
【2】Splunk Observability Cloudトライアル環境の申し込みとトークンの発行/確認
今回はSplunk Observability Cloudのトライアル環境を利用して検証をします。
以下のURLより、トライアル環境を払い出してください。14日間使用可能です。
私が試したところでは、Splunk Cloudと違いトライアル申し込み回数の上限はないように見えましたが、もしかしたら今後変わってくるかもしれません。
https://www.splunk.com/ja_jp/download/o11y-cloud-free-trial.html
ホスティング先の地域については日本(realm=jp0)を選択しておきます。
メールアドレスや連絡先を指定して提出すれば申し込みは完了です。
その後、有効化のためのURLが記載されたメールが指定したメールアドレスに届きます。
【3】Splunk Observability Cloudトライアル環境の設定
Splunk Observability Cloud環境でセットアップすることは特にありません。
が、GUI画面でエージェント側にどのようなセットアップをすればいいのか、ガイドを表示させることができます。
また、後で使用するためのトークンの値も参照しておきます。
ログイン後、メニューより「Data Management」-「Available integrations」-「Deploy the Splunk OpenTelemetry Collector」を選択します。
OpenTelemetryの導入ガイドが表示されます。試しに、以下のように設定を指定してみます。
次の画面で導入手順が表示されます。
今回は、以下のSPLUNK ADD-ONを使ったセットアップ方法にて検証を行います。
以前、別の記事でも書きましたが、これはSplunk Add-On for OpenTelemetry Collectorを使って、Forwarder上のAdd-onの一つとしてOpenTelemetryをインストールする方法です。
Splunk Add-On for OpenTelemetry Collector
https://splunkbase.splunk.com/app/7125
このため、サーバーにはまずForwarderをインストールし、次にSplunk Add-On for OpenTelemetry Collectorをインストールすることになります。
トークンはメニュー画面の「Setting」-「Access Tokens」より参照/作成ができます。
今回はDefaultトークンをそのまま使うことにします。
「Access Tokens」画面からDefaultトークンを選択し、Token Secretに表示された値をどこかにコピペして保存しておきます。
【4】プロキシサーバー(Gatewayサーバー)の設定
最初にGatewayサーバーへのインストールを行います。
Forwarderインストール、Splunk Add-On for OpenTelemetry Collectorインストール、Splunk Add-On for OpenTelemetry Collector設定の順番で実施していきます。
(1)Forwarderインストール
Forwarder(Universal Forwarder)をインストールします。バージョンは執筆時点の最新版である9.4.3です。
Forwarderは、Splunk EnterpriseまたはSplunk Cloudにログを転送するために使用するコンポーネントであり、Splunk Observability Cloudにメトリクスデータを転送する際に使用しなくてもいいのですが、今回はこちらを使って導入することにします。
ssh torippy1024@zz.zz.zz.zz
wget -O splunkforwarder-9.4.3-237ebbd22314-linux-amd64.tgz "https://download.splunk.com/products/universalforwarder/releases/9.4.3/linux/splunkforwarder-9.4.3-237ebbd22314-linux-amd64.tgz"
sudo tar -xzvC /opt -f splunkforwarder-9.4.3-237ebbd22314-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 useradd -m splunk
sudo passwd splunk
(Linux上のsplunkユーザーのパスワードを新規設定)
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
(2)Splunk Add-On for OpenTelemetry Collectorインストールと設定
次にSplunk Add-On for OpenTelemetry Collectorをインストールします。インストールファイルは以下よりダウンロードできます。執筆時点のバージョンは4.1.2でした。
https://splunkbase.splunk.com/app/7125
Add-onファイルを転送(ローカルPC上で実行)
scp -r /Users/torippy1024/splunk-add-on-for-opentelemetry-collector_142.tgz torippy1024@zz.zz.zz.zz:/home/torippy1024/
Add-onのインストール(Gatewayサーバー上で実行)
sudo -u splunk /opt/splunkforwarder/bin/splunk install app splunk-add-on-for-opentelemetry-collector_142.tgz
ls -la /opt/splunkforwarder/etc/apps/Splunk_TA_otel
(Splunk_TA_otelフォルダの中が表示されることを確認)
インストールが完了したらCollectorをGatewayとして設定します。
ただ、実はそんなにやることはありません。
OpenTelemetryでは、通常環境変数を使ってパラメータを指定するのですが、Splunk Add-On for OpenTelemetry Collectorでは、Add-onの中にあるinputs.confとよばれるコンフィグファイルを使ってパラメータを指定することになります。
このinputs.confは、Splunk_TA_otel/default/inputs.confというパスにテンプレートファイルが保管されています。これをコピーし、Splunk_TA_otel/local/inputs.confを作成して編集して再起動すれば設定は完了します。
Add-onの設定(サーバー上で実行)
sudo -u splunk mkdir /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo -u splunk cp -r /opt/splunkforwarder/etc/apps/Splunk_TA_otel/default/inputs.conf /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/inputs.conf
(以下の設定を変更。3か所のrealmをus0をjp0に変更すること、splunk_gateway_url=https://api.jp0.signalfx.comを指定すること、splunk_listen_interfaceをlocalhost以外にも開放すること、splunk_configをta-agent-to-gateway-config.yamlに変更することを設定)
変更前のinputs.conf
[monitor://$SPLUNK_HOME/var/log/splunk/otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[monitor://$SPLUNK_HOME/var/log/splunk/Splunk_TA_otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 60
index = _internal
sourcetype = Splunk_TA_otel
splunk_access_token_file=$SPLUNK_OTEL_TA_HOME/local/access_token
splunk_api_url=https://api.us0.signalfx.com
splunk_bundle_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle
splunk_collectd_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle/run/collectd
splunk_ingest_url=https://ingest.us0.signalfx.com
splunk_listen_interface=localhost
splunk_realm=us0
splunk_config=$SPLUNK_OTEL_TA_HOME/configs/ta-agent-config.yaml
splunk_otel_log_file=$SPLUNK_HOME/var/log/splunk/otel.log
変更後のinputs.conf
[monitor://$SPLUNK_HOME/var/log/splunk/otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[monitor://$SPLUNK_HOME/var/log/splunk/Splunk_TA_otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 60
index = _internal
sourcetype = Splunk_TA_otel
splunk_access_token_file=$SPLUNK_OTEL_TA_HOME/local/access_token
splunk_api_url=https://api.jp0.signalfx.com
splunk_bundle_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle
splunk_gateway_url=https://api.jp0.signalfx.com
splunk_collectd_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle/run/collectd
splunk_ingest_url=https://ingest.jp0.signalfx.com
splunk_listen_interface=0.0.0.0
splunk_realm=jp0
splunk_config=$SPLUNK_OTEL_TA_HOME/configs/ta-gateway-config.yaml
splunk_otel_log_file=$SPLUNK_HOME/var/log/splunk/otel.log
トークンの追記と再起動
sudo -u splunk cp -r /opt/splunkforwarder/etc/apps/Splunk_TA_otel/default/access_token /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/access_token
(Splunk Observability Cloud上で確認したToken Secretを記載して保存)
sudo reboot
【5】監視対象サーバーの設定(Ubuntu)
次に、Agentサーバーへのインストールを行います。
手順はほぼ同じですが、Splunk Add-On for OpenTelemetry Collector設定パラメータが異なります。
(1)Forwarderインストール
ssh torippy1024@xx.xx.xx.xx
wget -O splunkforwarder-9.4.3-237ebbd22314-linux-amd64.tgz "https://download.splunk.com/products/universalforwarder/releases/9.4.3/linux/splunkforwarder-9.4.3-237ebbd22314-linux-amd64.tgz"
sudo tar -xzvC /opt -f splunkforwarder-9.4.3-237ebbd22314-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 useradd -m splunk
sudo passwd splunk
(Linux上のsplunkユーザーのパスワードを新規設定)
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
(2)Splunk Add-On for OpenTelemetry Collectorインストールと設定
Add-onファイルを転送(ローカルPC上で実行)
scp -r /Users/torippy1024/splunk-add-on-for-opentelemetry-collector_142.tgz torippy1024@xx.xx.xx.xx:/home/torippy1024/
Add-onのインストール(サーバー上で実行)
sudo -u splunk /opt/splunkforwarder/bin/splunk install app splunk-add-on-for-opentelemetry-collector_142.tgz
ls -la /opt/splunkforwarder/etc/apps/Splunk_TA_otel
(Splunk_TA_otelフォルダの中が表示されることを確認)
Add-onの設定(サーバー上で実行)
sudo -u splunk mkdir /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo -u splunk cp -r /opt/splunkforwarder/etc/apps/Splunk_TA_otel/default/inputs.conf /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/inputs.conf
(以下の設定を変更。3か所のrealmをus0をjp0に変更すること、splunk_gateway_urlをGatewayサーバーの内部IPアドレスに変更すること、splunk_configをta-agent-to-gateway-config.yamlに変更することを設定)
変更後のinputs.conf
[monitor://$SPLUNK_HOME/var/log/splunk/otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[monitor://$SPLUNK_HOME/var/log/splunk/Splunk_TA_otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 60
index = _internal
sourcetype = Splunk_TA_otel
splunk_access_token_file=$SPLUNK_OTEL_TA_HOME/local/access_token
splunk_api_url=https://api.jp0.signalfx.com
splunk_bundle_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle
splunk_collectd_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle/run/collectd
splunk_gateway_url=<Gatewayサーバーの内部IPアドレス>
splunk_ingest_url=https://ingest.jp0.signalfx.com
splunk_listen_interface=localhost
splunk_realm=jp0
splunk_config=$SPLUNK_OTEL_TA_HOME/configs/ta-agent-to-gateway-config.yaml
splunk_otel_log_file=$SPLUNK_HOME/var/log/splunk/otel.log
トークンの追記と再起動
sudo -u splunk cp -r /opt/splunkforwarder/etc/apps/Splunk_TA_otel/default/access_token /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/
sudo vi /opt/splunkforwarder/etc/apps/Splunk_TA_otel/local/access_token
(Splunk Observability Cloud上で確認したToken Secretを記載して保存)
sudo reboot
【6】監視対象サーバーの設定(Windows)
お次はWindowsです。こちらも設定するパラメータはほぼ同じです。
コマンドラインで作業するか、せっかくWindowsを使っているのだからGUIで作業するかは好みです。
(1)Forwarderインストール
cd C:\tmp
wget -O splunkforwarder-9.3.1-0b8d769cb912-x64-release.msi "https://download.splunk.com/products/universalforwarder/releases/9.3.1/windows/splunkforwarder-9.3.1-0b8d769cb912-x64-release.msi"
msiexec.exe /i splunkforwarder-9.3.1-0b8d769cb912-x64-release.msi AGREETOLICENSE=yes /quiet
(サイレントインストールのため、少しの間待機)
."C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" status
(サイレントインストールが完了し、実行中となったことを確認)
."C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" stop
."C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" edit user admin -password password -auth admin:changeme
(splunk adminパスワードをデフォルトのchangemeからpasswordに変更)
."C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" start
(2)Splunk Add-On for OpenTelemetry Collectorインストールと設定
Add-onのインストール
(Add-onファイルsplunk-add-on-for-opentelemetry-collector_142.tgz をC:\tmp\配下に配置し、サーバー上で実行)
cd C:\tmp
."C:\Program Files\SplunkUniversalForwarder\bin\splunk.exe" install app "C:\tmp\splunk-add-on-for-opentelemetry-collector_142.tgz" -auth admin:password
ls -la /opt/splunkforwarder/etc/apps/Splunk_TA_otel
(Splunk_TA_otelフォルダの中が表示されることを確認)
mkdir "C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\local"
cp "C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\default\inputs.conf" "C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\local\inputs.conf"
cp "C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\default\access_token" "C:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\local\access_token"
Add-onの設定
(メモ帳をC:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\local\inputs.confを以下の通り編集)
[monitor://$SPLUNK_HOME/var/log/splunk/otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[monitor://$SPLUNK_HOME/var/log/splunk/Splunk_TA_otel.log]
_TCP_ROUTING = *
index = _internal
sourcetype = Splunk_TA_otel
[Splunk_TA_otel://Splunk_TA_otel]
disabled=false
start_by_shell=false
interval = 60
index = _internal
sourcetype = Splunk_TA_otel
splunk_access_token_file=$SPLUNK_OTEL_TA_HOME/local/access_token
splunk_api_url=https://api.jp0.signalfx.com
splunk_bundle_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle
splunk_collectd_dir=$SPLUNK_OTEL_TA_PLATFORM_HOME/bin/agent-bundle/run/collectd
splunk_gateway_url=<Gatewayサーバーの内部IPアドレス>
splunk_ingest_url=https://ingest.jp0.signalfx.com
splunk_listen_interface=localhost
splunk_realm=jp0
splunk_config=$SPLUNK_OTEL_TA_HOME/configs/ta-agent-to-gateway-config.yaml
splunk_otel_log_file=$SPLUNK_HOME/var/log/splunk/otel.log
Add-onの設定
(メモ帳でC:\Program Files\SplunkUniversalForwarder\etc\apps\Splunk_TA_otel\local\access_tokenにSplunk Observability上で取得したToken Secretを記載)
(Token Secretの値を記載)
設定が終わったら、OSを再起動しておきます。
【7】動作確認
設定が正常に完了していれば、Splunk Observability Cloud上でインフラストラクチャーのメトリクスが参照できるようになっています。
CPU/メモリ/ディスク/ネットワークなど、さまざまなメトリックを分析するための事前定義されたダッシュボードがたくさんあるので、いろいろ操作してみてもよいと思います。
【8】参考情報
公式ドキュメントは以下です。
Splunk Add-On for OpenTelemetry Collector
https://splunkbase.splunk.com/app/7125
Install the Technical Add-on for the Splunk OpenTelemetry Collector
https://help.splunk.com/en/splunk-observability-cloud/manage-data/splunk-distribution-of-the-opentelemetry-collector/get-started-with-the-splunk-distribution-of-the-opentelemetry-collector/splunk-add-on-for-opentelemetry-collector/install-the-technical-add-on
Configure the deployment mode of your Splunk Add-on Collector instance
https://help.splunk.com/en/splunk-observability-cloud/manage-data/splunk-distribution-of-the-opentelemetry-collector/get-started-with-the-splunk-distribution-of-the-opentelemetry-collector/splunk-add-on-for-opentelemetry-collector/deployment-modes
Exposed ports and endpoints
https://help.splunk.com/en/splunk-observability-cloud/manage-data/splunk-distribution-of-the-opentelemetry-collector/get-started-with-the-splunk-distribution-of-the-opentelemetry-collector/collector-requirements/exposed-ports-and-endpoints#otel-exposed-endpoints
(上記だとサーバー間の通信がわからないので、サーバー間の通信ポートだけを知りたい場合は以下を参照)
https://www.splunk.com/ja_jp/blog/devops/universal-forwarder-and-opentelemetry-collector-integration-splunk-add-on-for-opentelemetry-collector.html
Troubleshoot the Splunk OpenTelemetry Collector
https://help.splunk.com/en/splunk-observability-cloud/manage-data/splunk-distribution-of-the-opentelemetry-collector/get-started-with-the-splunk-distribution-of-the-opentelemetry-collector/troubleshooting/general-troubleshooting
本記事では、AppとしてSplunk Add-On for OpenTelemetry Collectorをインストールしていますが、OpenTelemetryはOSSであるため、Splunk Forwarderなしでもインストールは可能です。ドキュメントによってはSplunk Forwarderなしで直接OpenTelemetryインストールする前提の手順を記載しているものもありますので注意してください。
以上です。