ITの窓辺から

三流IT技術者の日常

Splunk Universal Forwarderの設定 (2)

再びSplunkのフォワーダの調査です。Splunkのバージョンは7.1.1です。

 テキストファイルのモニタリング

Cドライブ直下に今回監視するテスト用のテキストファイルを作成し、testfile.txtという名前で保存します。中身は後で編集します。

続いてtestfile.txtをモニタリングするための設定を行います。
以下のパスにあるinputs.confを編集します。

C:\Program Files\SplunkUniversalForwarder\etc\system\local

前回の記事でWindowsのイベントログの設定をしてたファイルです。そこに以下の内容を追加します。

[monitor://C:\testfile.txt]
disabled = 0
index = main

「monitor://」の後ろに監視対象のファイルパスを書くとそのファイルを監視し、追記があればインデクサにログを送信するようになります。ログフォーマットの指定が面倒なので、いつものSquidのログから数行コピーしてtestfile.txtに貼り付けます。

諸々完了したらフォワーダのサービスを再起動します。

Splunkで検索してみます。ソースタイプを指定し忘れましたが、ちゃんとフォワーダをインストールしたホストからSquidログが送られてきていることが分かります。

f:id:ReaLiZeZNSG:20180716174636p:plain

フォルダのモニタリング

[monitor:<DIRECTORY PATH>]と指定すると、そのフォルダ内のテキストファイル全てが監視対象になります。Splunkの検索結果上でテキストファイルの区別はsourceフィールドで行います。テキストファイル名がsourceとして表示されます。

監視対象とするテキストファイルは正規表現によるホワイトリストブラックリストの指定ができます。

Splunk本体の設定ファイル

設定ファイルの一部ですが、フォワーダと同様にinputs.confファイルがありました。パスは以下の通りです。

<SPLUNK INSTALL PATH>\etc\apps\search\local

この中にinputs.confファイルがあり、これまで設定したデータ入力設定が格納されています。他に、props.confというファイルもあり、この中にソースタイプの定義がありました。他にも諸々見たことのある設定値が格納されたファイルがあったので、WebGUIで設定できない細かい値や自動設定をやろうとしたら直接このファイルを編集すれば良さそうです。

マニュアルを見ていると、設定ファイルの内容は本体とフォワーダでかなり似通っているようです。

 Squidアクセスログの入力デザイン

Squidaccess.logのデフォルトフォーマットはログフィールド間がスペースで区切られています。しかし、2個目のフィールドが「%6d」と定義されており、値を問わず6桁が確保されます。実際このフィールドには数字が入るのですが、例えば4桁の数字がログに書き込まれる場合、実際にはスペースが2個入った後に4桁の数字が書き込まれます。そのため、Splunkでスペース区切りによるフィールド認識をしようとすると変なところで区切られることになり、うまくフィールドの定義ができません。問題解決のためにいくつかのアプローチがあるでしょう。

ログフォーマットを変更する

Squidではアクセスログフォーマットを自分で変更することができるので、6桁固定をやめれば解決します。特段仕掛けがいらないので一番シンプルな方法だと思います。基本的には製品のネイティブ機能で何とかできるパターンが考え方としては楽そうです。次に記載するSplunkの正規表現とで楽な方を選ぶのが良いでしょう。

Splunk側で正規表現を使う

今回Squidのログをスペースで区切ることに問題のあるログフィールドで正規表現を使えば簡単でしょう。

問題を解決した別ファイルを用意する

最近の記事で使用していた、スペースをカンマ区切りに変換したファイルです。恐らく一番無駄が多い方式です。スクリプト等で変換を自動化したとしても、リアルタイム性が圧倒的に落ちます。フォワーダでモニタリングするファイルをオリジナルのアクセスログファイルではなく変換後のアクセスログファイルとする形になると思います。このパターンを使用する場合は、大抵のログは不要だが特定のログのみSplunkで処理したいというようなケースくらいでしょうか。