Monitoring Splunk

jemallocの採集方法について

Splunk Employee
Splunk Employee

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

0 Karma
1 Solution

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

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

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

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 

New Member

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

0 Karma