0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Splunk Advent Calendar 2019Advent Calendar 2019

Day 17

Splunkでフォワーダー管理対象クライアントをサーチ(REST API)で確認する

Last updated at Posted at 2019-12-17

はじめに

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をフォワーダー管理下に置くと消せてしまうからではないかと...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?