はじめに
Splunkはフォワーダー管理機能(Forwarder Management)を用いて、他のSplunkインスタンスのApp設定を一元管理することができます。
この機能を使うと、たとえば沢山のUniversalForwarderに同じ設定をまとめて設定したい時、1台ずつサーバーにログインして設定を行う必要なく、一括して配布することができます。
公式ドキュメントにおいて、Forwarder管理機能を使って設定を管理するSplunkインスタンスのことをDeploymentServer、管理対象になったSplunkインスタンスのことをDeploymentclient(単にクライアント)と呼ぶことが多いようです。
フォワーダー管理機能はSplunkの標準機能として備わっており、Splunkのメニューから設定->フォワーダー管理で利用することができます。
フォワーダー管理画面では主に以下のことが確認できます。
- クライアント情報(ホスト名,IPアドレス,dns,os,フォワーダーからの通信が最後にいつあったか)
- クライアントが配属しているサーバークラス
- 配布App
フォワーダー管理機能で出来ないこと
- 配布対象Appを作成する※データ入力だけであれば、別の画面から作成可能
- 配布対象Appを配布用フォルダに配置する※同上
- 配布対象appを更新後、再配布(CLI)
- クライアントの再起動
しかしこのフォワーダー管理画面はかゆいところに手が届きません。
- フォワーダーの管理台数が多いとき、ページャーを使って根気よくめくる(一応検索ボックスはある)
- フォワーダーにどのAppがインストールされているのか確認したいとき、1行ずつドリルダウンしていく必要がある
などなど...
そこでSplunk のREST Endpointにリクエストを投げるRESTコマンドを使うことで
サーチ結果としてフォワーダーの情報を取得することができます。
確認したバージョン:7.3.3,8.0.0
コマンド
| rest /services/deployment/server/clients
restコマンドの引数にサーバークラス名を指定すると、サーバークラスに属するクライアントだけをサーチすることができます。
項目が多いのでどんなフィールドがあるのかtransposeコマンドで
整形してみます。
| rest /services/deployment/server/clients
| transpose
サーバークラスを1つも設定していない場合、
31個のフィールドが取れるようです。
サーバークラスとAppがある場合
フィールド数が変化するようです。
よく使うフィールド
フィールド名 | 内容 | 備考 |
---|---|---|
hostname | クライアントのホスト名 | |
ip | クライアントのIPアドレス | |
dns | クライアントのDNS名 | |
guid | クライアントのGUID(Splunk固有のID) | |
splunkVersion | クライアントのGUID | |
package | クライアントが使用しているSplunk。UFの場合universal_forwarder,Splunk Enterpriseの場合"enterprise"と表示されるようです。 | |
utsname | linux-x86_64,windows-x64 |
フィールド名 | 内容 | 備考 |
---|---|---|
application.<app_name>. | app名。 | |
application.<app_name>.serverclasses | appを配布するサーバークラス。 |
フィールド名 | 内容 | 備考 |
---|---|---|
serverClasses.<serverclass_name>.repositoryLocation | 配布先Appを置くディレクトリ。デフォルトでは$SPLUNK_HOME/etc/deployment-apps/ |
tableコマンドで必要な情報のみ表示されるよう整形します。
フォワーダーのサーバー情報が欲しい場合は、hostname,ip,clientNameフィールドなどだけ抽出するとよいでしょう。
| rest /services/deployment/server/clients serverclasses=<サーバークラス名>
| table hostname ip
※パラメータで指定したサーバークラスが設定されていない場合、エラーになります。また、パラメータにワイルドカードは使えないようです。(大文字小文字区別あり)
参考
REST API Reference Manual - Deployment endpoint descriptions
https://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTdeploy#deployment.2Fserver.2Fclients
補足
※管理するためには、管理"する"側の他に、管理"される"側のSplunkインスタンス(Splunk EnterpriseもしくはUniversal Forwarder)にも予め設定が必要です。
※デフォルトのAppをフォワーダー管理機能で管理することはSplunk社非推奨となっています。フォワーダー管理機能はクライアント側のAppをリモートでアンインストール(削除)することができるので、おそらくデフォルトAppをフォワーダー管理下に置くと消せてしまうからではないかと...