Monitoring Splunk

jemallocの採集方法について

cweiliou_splunk
Splunk Employee
Splunk Employee

splunkd プロセスに対し、再現性のあるメモリ問題が発生しています。
Splunk サポートに、このメモリ問題の詳細調査を依頼するために、jemalloc ダンプを採集したいですが、具体的な手順を教えて頂けますか。

0 Karma
1 Solution

cweiliou_splunk
Splunk Employee
Splunk Employee

Splunk が /opt/splunk にインストールされていると仮定し、以下の手順で jemalloc を採集できます。

1) 問題の splunk を停止してください。

$ /opt/splunk/bin/splunk stop

2) jemalloc 情報を格納するディレクトリを作成してください。

$ mkdir /tmp/output

3) 「MALLOC_CONF="prof:true,prof_accum:true,prof_leak:true,lg_prof_interval:28,prof_prefix:/tmp/output/heap_data」 を追加した状態で splunkd を起動してください。
補足1 : prof_prefix の /tmp/output/ は手順2で作成したディレクトリと一致する必要があります。
補足2 : lg_prof_interval は割り当てられた 2^lg_prof_interval バイト毎にダンプを作成しますので、「lg_prof_interval:28」の場合、2^28 = 268435456 バイト ( およそ 268 MB ) 毎にダンプを作成します。つまり、lg_prof_interval の数値が小さいほど、より多いダンプの数が作成されます。

$ MALLOC_CONF="prof:true,prof_accum:true,prof_leak:true,lg_prof_interval:28,prof_prefix:/tmp/output/heap_data" /opt/splunk/bin/splunk start splunkd

4) メモリ問題の再現後に splunk を停止し、「tar cvfz」コマンドでダンプ情報を圧縮し、サポートに提出してください。

$ /opt/splunk/bin/splunk stop
$ tar cvzf heap.tar.gz /tmp/output

View solution in original post

cweiliou_splunk
Splunk Employee
Splunk Employee

Splunk が /opt/splunk にインストールされていると仮定し、以下の手順で jemalloc を採集できます。

1) 問題の splunk を停止してください。

$ /opt/splunk/bin/splunk stop

2) jemalloc 情報を格納するディレクトリを作成してください。

$ mkdir /tmp/output

3) 「MALLOC_CONF="prof:true,prof_accum:true,prof_leak:true,lg_prof_interval:28,prof_prefix:/tmp/output/heap_data」 を追加した状態で splunkd を起動してください。
補足1 : prof_prefix の /tmp/output/ は手順2で作成したディレクトリと一致する必要があります。
補足2 : lg_prof_interval は割り当てられた 2^lg_prof_interval バイト毎にダンプを作成しますので、「lg_prof_interval:28」の場合、2^28 = 268435456 バイト ( およそ 268 MB ) 毎にダンプを作成します。つまり、lg_prof_interval の数値が小さいほど、より多いダンプの数が作成されます。

$ MALLOC_CONF="prof:true,prof_accum:true,prof_leak:true,lg_prof_interval:28,prof_prefix:/tmp/output/heap_data" /opt/splunk/bin/splunk start splunkd

4) メモリ問題の再現後に splunk を停止し、「tar cvfz」コマンドでダンプ情報を圧縮し、サポートに提出してください。

$ /opt/splunk/bin/splunk stop
$ tar cvzf heap.tar.gz /tmp/output

kaono
New Member

こんにちは、有用な情報をありがとうございます。
私は下記の環境にて同様のコマンドを実行した結果、下記の出力が出ました。
環境
・centOS6.9
・Splunk Enterprise6.6.11

出力結果
...
ERROR: The Splunk daemon is configured to present a web UI using a
separate application server (the "appServerPorts" setting in
web.conf) This means that when starting splunkd will also
bring up the web-based UI on port 8000 at the same time.
...

そこで、下記のコマンドを代わりに実行したところ、
/opt/splunk/bin/splunk start splunkd
-> /opt/splunk/bin/splunk start

以下のような出力が出て、splunkdが起動できませんでした。

出力結果
...
Starting splunk server daemon (splunkd)...
Done
[ OK ]

Waiting for web server at https://127.0.0.1:8000 to be available..splunkd 19614 was not running.
Stopping splunk helpers...
[ OK ]
Done.
Stopped helpers.
Removing stale pid file... done.

WARNING: web interface does not seem to be available!
...

なお,下記のコマンドであれば実行可能なことは確認済みです。
/opt/splunk/bin/splunk start

コマンドを実行した直後に,splunkd.logのERRORを確認したところ、以下の出力が表示されていました。
出力結果
...
ERROR FrameworkUtils - Incorrect path to script: /.binrunpowershell.cmd. Script must be located inside $SPLUNK_HOME/bin/scripts.
05-22-2019 08:34:21.351 +0900 ERROR ExecProcessor - Ignoring: "/.binrunpowershell.cmd dns-health.ps1"
05-22-2019 08:34:21.351 +0900 ERROR FrameworkUtils - Incorrect path to script: /.binrunpowershell.cmd. Script must be located inside $SPLUNK_HOME/bin/scripts.
05-22-2019 08:34:21.351 +0900 ERROR ExecProcessor - Ignoring: "/.binrunpowershell.cmd dns-zoneinfo.ps1"
...

この状況を回避して、 jemallocを取得するための方法はありますか?

0 Karma

cweiliou_splunk
Splunk Employee
Splunk Employee

質問どうもありがとうございます。また、説明が不足しまして、どうもすみませんでした。
Splunk 6.6.xからはUIが有効な状態で、splunkdのみを起動することができなくなりましたので、以下の何れかの方法でjemallocを採集する必要があります。
1) UIを無効にする
web.confのsettingsスタンザに「startwebserver=0」を追加することにより、UIを無効することが可能です。

SPLUNK_HOME/etc/system/local/web.conf
[settings]
startwebserver=0

手順としては、splunkを停止し、UIを無効にしてから、上記と同じコマンドでsplunkdプロセスのみ起動してください。
2) splunkdとUIを別々に起動する
以下の手順で、splunkdを起動してから、UIを起動してください。

$ MALLOC_CONF="prof:true,prof_accum:true,prof_leak:true,lg_prof_interval:28,prof_prefix:/tmp/heap/heap_data" SPLUNK_HOME=/opt/splunk/ SPLUNK_DB=/opt/splunk/var/lib/splunk/ /opt/splunk/bin/splunk cmd splunkd --nodaemon &
[1] 9499
$ 2019-05-21 21:24:37.283 -0400 splunkd started (build e21ee54bc796)

$ /opt/splunk/bin/splunk restartss 
Your session is invalid. Please login.
Splunk username: admin
Password:
Splunk's web interface has been restarted.

$ ls -l /tmp/heap/
合計 576
-rw------- 1 splunk splunk 133284 5月 21 21:24 heap_data.9499.0.i0.heap
-rw------- 1 splunk splunk 133589 5月 21 21:24 heap_data.9499.1.i1.heap
-rw------- 1 splunk splunk 154670 5月 21 21:24 heap_data.9499.2.i2.heap
-rw------- 1 splunk splunk 160091 5月 21 21:24 heap_data.9499.3.i3.heap 

kaono
New Member

ご回答いただきありがとうございます。
無事jemallocを取得することができました。

0 Karma
Get Updates on the Splunk Community!

Routing logs with Splunk OTel Collector for Kubernetes

The Splunk Distribution of the OpenTelemetry (OTel) Collector is a product that provides a way to ingest ...

Welcome to the Splunk Community!

(view in My Videos) We're so glad you're here! The Splunk Community is place to connect, learn, give back, and ...

Tech Talk | Elevating Digital Service Excellence: The Synergy of Splunk RUM & APM

Elevating Digital Service Excellence: The Synergy of Real User Monitoring and Application Performance ...