はじめに
SplunkはブラウザやAPI経由でログのサーチや可視化ができますが、運用管理で役立つ CLI もたくさん用意されています。
全部を把握するのは難しいですが、よく使うもの・役立つものを自分の備忘録も兼ねていくつか紹介します。
CLI実行方法
$SPLUNK_HOME/bin/splunk
でCLI呼び出し
基本的な実行方法は↓
$SPLUNK_HOME/bin/splunk <commands>
どういうコマンドが使えるかは、下記で確認可能
$SPLUNK_HOME/bin/splunk help commands
(参考)$SPLUNK_HOMEって?
$SPLUNK_HOME
はSplunkがインストールされているディレクトリ
Linuxなら /opt/splunk
(Universal Forwarderなら /opt/splunkforwarder
)、Windowsなら C:\\Program Files\Splunk
この環境変数はSplunkのマニュアルでも散見されますが、OSで決めているわけではなく、Splunkのプロセスで定義されています
よく使うSplunk CLI
ということで、さっそく紹介してきます
起動 /停止 / 再起動
定番中の定番ですね
# Splunk起動
$SPLUNK_HOME/bin/splunk start
初期インストール時やアップグレード後の起動は↓ようにオプション指定すると便利
# Splunk起動(ライセンスに自動で同意)
$SPLUNK_HOME/bin/splunk start --accept-license --answer-yes --no-prompt
-- 2018/05/07 追記 ココカラ --
Splunkのバージョン 7.1.0 (2018年4月24日リリース)以降を使う場合は、 --no-prompt
使ってはいけないみたいです。
どうやら初回起動で admin ユーザーのパスワードを設定するみたいなので、 --no-prompt
を指定するとパスワード設定の処理をスキップしてしまい、ユーザーが作成されていない状態のままログインできなくなるみたいです。(対処法あるにはあるのですが...)
なので、 7.1.0 以降を使う場合は初回起動を以下のように書き換えましょう。
sudo -u splunk /opt/$DIRECTORY/bin/splunk start --accept-license --answer-yes --seed-passwd changeme
この --seed-passwd
は7.1.0の新しいオプションのようです。
-- 2018/05/07 追記 ココマデ --
# Splunk停止
$SPLUNK_HOME/bin/splunk stop
# Splunk再起動
$SPLUNK_HOME/bin/splunk restart
Splunkの自動起動を設定
OS起動したタイミングで自動的にSplunkを起動させる設定
Windowsは自動的にオンになっているので、これはLinux向け
$SPLUNK_HOME/bin/splunk enable boot-start -user <user>
-user
にはSplunkのプロセスを起動するOSユーザーを指定
※ これはOS設定 /etc/init.d/splunk
を書き換えるので、sudoが必要になる場合もあります
プロセス動いてるかチェック
Splunkが起動しているかのステータスをチェック
$SPLUNK_HOME/bin/splunk status
Splunkの設定をチェック
どの設定が有効になっているかを確認
inputs.conf や indexes.conf といった設定ファイルはAppごとやSystemで複数作成できて、設定の重複もありえるのですが、どの設定が上書きされるかを確認するためのものになります。
$SPLUNK_HOME/bin/splunk btool <conf_file> list <option>
<conf_file>
は例えば inputs.conf だったら inputs
、indexes.conf だったら indexes
を指定
<option>
に --debug
を指定すると有効になっている設定のファイルパスが表示されます
注意事項として、設定変更後にSplunk再起動が必要な場合、再起動前でも btool
ではその設定が有効になってしまっているように見えます。
Splunkサーバー名、ホスト名を設定
# Splunkホスト名を設定
$SPLUNK_HOME/bin/splunk set default-hostname <hostname>
# Splunkサーバー名を設定
$SPLUNK_HOME/bin/splunk set servername <servername>
ポート設定
# Webポート(デフォルト 8000)
$SPLUNK_HOME/bin/splunk set web-port <port>
# 管理ポート(デフォルト 8089)
$SPLUNK_HOME/bin/splunk set splunkd-port <port>
# KV Storeポート(デフォルト 8191)
$SPLUNK_HOME/bin/splunk set kvstore-port <port>
# Appサーバーポート(デフォルト 8065)
$SPLUNK_HOME/bin/splunk set appserver-ports <port>
実はSplunkはディレクトリを分ければ一つのサーバー・端末・VMに複数のSplunkをインストールすることができます。
その際、ポートを分ければ同時に複数のSplunkインスタンスを起動することができます。
ただし、この使い方はサポートされてないので、あくまで検証用として自己責任で。
最小の空きディスク容量を設定
Splunk稼働のために必要となる最小の空き容量を設定
# Splunkサーバー名を設定
$SPLUNK_HOME/bin/splunk set minfreemb <min_free_mb>
<min_free_mb>
には最小空き容量をメガバイトで指定
デフォルトは 5000
(だったかな?)
ちょっとした検証用にEC2を8GBディスクで起動するとすぐ空容量足りなくなるので、これは個人的にはよく使います。
インデックスの中のデータを削除
Splunkにインデックスされたデータを一括削除
$SPLUNK_HOME/bin/splunk clean eventdata -index <index>
<index>
はインデックス名を指定
特定のインデックス内の 全ての データを削除するので、他の条件(時間範囲等)は指定できません。
Splunk停止状態でのみ実行可能なので、必ず splunk stop
の後に実行しましょう。
Forwarderからのデータ受信設定
スタンドアロン環境や分散環境、クラスタ環境でIndexerがForwarderからデータを受け取る際にデータ受信用のポートを開ける必要があるので、それを設定
$SPLUNK_HOME/bin/splunk enable listen 9997
9997
がポート番号
これ以外の数字でもいいけど、Splunk的には 9997
が一般的
Deployment ServerにForwarderを登録
# Forwarderで設定
$SPLUNK_HOME/bin/splunk set deploy-poll <deploy_ip>:<deploy_port>
<deploy_ip>:<deploy_port>
にはDeployment ServerのIPアドレス(もしくはホスト名やFQDN)とポートを指定
これはForwarder側で実行
Deployment Serverを読み込み
Deployment ServerのWeb UIでForwarder管理の設定をした後、その設定を読み込ませる
$SPLUNK_HOME/bin/splunk reload deploy-server
これはDeployment Serverで実行
SplunkプロセスからPython実行
$SPLUNK_HOME/bin/splunk cmd python <python_script>
例えば、Splunkの環境変数を取得するPythonスクリプトはこちら↓
import os
if __name__ == '__main__':
for key in os.environ.keys():
print key + ' = ' + os.environ[key]
標準出力に $SPLUNK_HOME
といった環境変数が表示されます。
ちなみに、SplunkでPythonを実行する際は、OSに入っているPythonではなくSplunkにパッケージとして入っているPythonを実行します。
2018年3月時点での最新版 Splunk 7.0.xでは、Python 2.7が入っています。
Appの一覧表示 / インストール / アンインストール
# App一覧表示
$SPLUNK_HOME/bin/splunk list app
# Appインストール
$SPLUNK_HOME/bin/splunk install app <app_file_path>
# Appアンインストール
$SPLUNK_HOME/bin/splunk remove app <app_name>
ユーザーの一覧表示 / 追加 / 削除
# ユーザー一覧表示
$SPLUNK_HOME/bin/splunk list user
# ユーザー追加
$SPLUNK_HOME/bin/splunk add user <app_name> -role <role> -password <password>
# ユーザー削除
$SPLUNK_HOME/bin/splunk remove user <username>
最後に
今回は比較的使用頻度の高いものだけを書きました。
利用可能なCLIはもっとたくさあんあるので、今回はほんの氷山の一角なんです。
例えば、クラスター環境構築もほとんどCLIで実現できます。
それはまた別の機会に記事書きます。
-- 2018/05/07 追記 --
CLIを使ったクラスター環境構築の記事を書きました → Splunkのクラスター環境を10分で構築してやるよ