スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Splunk その3

今回は Splunk にデフォルトでインストールされている Search App を使って、/var/log ディレクトリにあるログの検索を行っていきます。

14. データ入力の追加とローカル syslog メッセージの検索

① Launcher 画面の App 一覧にある「検索」をクリックするか、画面右上の App プルダウンメニューから「Search」を選択します。

splunk_setup_24.png

② Search App の画面が表示されたら、右上の「管理」をクリックして Splunk Manager を開きます。

splunk_setup_23.png

③ Splunk Manager のメニューから、「データ入力」をクリックします。

splunk_setup_25.png

④ 「ファイルとディレクトリ」をクリックします。

splunk_setup_13.png

ここに表示されている通り、Unix / Linux 版の Splunk Manager で設定可能なデータ入力の形式には、以下の4種類があります(実際には、この他にも inputs.conf の編集でのみ設定が可能な FS change 等もありますが、そちらの説明についてはひとまず割愛します)。

ファイルとディレクトリ
Splunk サーバ上の特定のファイルやディレクトリ配下の全てのファイルを取り込みます。
また、インデックス化したいファイルをローカル PC からアップロードすることもできます。

TCP
Splunk サーバ上の任意の TCP ポートをリッスンし、送信されてきたデータを取り込みます。
例えば 514/tcp をリッスンすることで、同ポート宛に送られてくる TCP syslog のデータを直接取り込むことができます。

※1 1023 番以下の特権ポートをリッスンするためには、Splunk を root で起動する必要があります(Splunk を一般ユーザで起動している環境で特権ポートのデータを取り込むには、iptables の NAT 設定が必要になります)。

※2 ここで指定するポートが Splunk サーバ上で使用されていないことを確認してください。例えば rsyslog サーバが既に 514/tcp を使用している場合には、Splunk で同じポートをリッスンすることはできません。

UDP
Splunk サーバ上の任意の UDP ポートをリッスンし、送信されてきたデータを取り込みます。
UDP syslog を取り込むのに使用できます。
その他注意点は同上。

Scripts
指定したスクリプトの標準出力を取り込みます。
Unix / Linux 環境ではシェルや Perl、Python など、任意のスクリプトを実行できます。
Windows 環境ではバッチ(.bat)か Python スクリプト(.py)を指定できます。Perl スクリプト等を実行する場合は一旦バッチを噛ませるようにしましょう。


今回使う「ファイルとディレクトリ」以外のデータ入力形式の詳しい設定方法については、今後 App の設定の中で説明する予定です。

③ 「新規」ボタンをクリックします。

splunk_setup_14.png

④ /var/log 配下のログファイルを取り込むよう指定します。

splunk_setup_16.png

今回は「サーバ上のフルパス」のみを設定して、あとはデフォルトのままで保存します。ここで保存した設定は、「$SPLUNK_HOME/etc/apps/search/local/inputs.conf」に保存されます。

いちおう、各項目の簡単な説明です。


ソース
Splunk に取り込むファイルや、ファイルが配置されているディレクトリを指定します。

ソースのセット:
特定のファイルやディレクトリを継続的にモニタする場合は、「ファイルまたはディレクトリをモニタ」を指定します。

オフラインのサーバ上のファイルを CD-ROM 等の媒体に格納して送付し、受け取ったファイルを Splunk サーバに読み込ませる、あるいはテスト用のサンプルログを読み込ませるといった場合には、「ローカルファイルをアップロード」や「Splunkサーバ上にあるファイルをインデックス」を指定します(直接クライアント PC からファイルをアップロードするか、最初に Splunk サーバにファイルをアップロードしておくかの違いです)。

サーバー上のフルパス:
モニタ対象のファイルをフルパスで指定します。

ここでのパスの指定に正規表現は使用できませんが、代わりに「...」や「*」といったワイルドカードが使えます。基本的には、「...」は全てのサブディレクトリに再帰的に適用されるワイルドカード、「*」は 1 階層のディレクトリにのみ適用されるワイルドカードと覚えておけばよいでしょう。詳細についてはマニュアルに具体的な例が出ているので、参照してみてください。

また、パスの指定にどうしても正規表現を使いたい場合は、ホワイトリストやブラックリストを使いましょう。

ホスト
Splunk が取り込んだデータをインデックス化する際には、後から検索がしやすいように様々な属性を自動的に付与します(ユーザが任意の属性を設定することも可能)。ここでは、ソースから取り込んだデータの host フィールドにどのような値をセットするかを指定します。

ホストのセット:
【継続した値】
特定のサーバが出力したファイルをソースに指定する際に使用します。「ホストフィールドの値」で指定したホスト名が host フィールドの値に設定されます。

Syslog サーバなどで、複数のサーバからのログが格納されているディレクトリをソースに指定すると、全てのログのソースが「ホストフィールドの値」で指定した名前に上書きされてしまうので注意してください。

【パスの正規表現】
複数のサーバからのログをそれぞれのサーバごとのログファイルに分けて書き込んでいる環境で、ファイル名の一部にサーバのホスト名が含まれている場合に使用します。

例えば、Syslog サーバでネットワーク機器の syslog を以下のようなファイルに書き込んでいるとします。

/var/log/networks/ROUTER01.log
/var/log/networks/SWITCH01.log
/var/log/networks/FIREWALL01.log

この場合に「ホストのセット: パスの正規表現」、「正規表現: /var/log/networks/(.*)\.log」を指定すると、それぞれのファイルに書き込まれたログをインデックス化する際に、host フィールドの値として ROUTER01 / SWITCH01 / FIREWALL01 が自動でセットされます。

【パス上のセグメント】
基本的には「パスの正規表現」と同じように複数サーバからログを受けている環境で使いますが、こちらはファイルのパスの一部にサーバのホスト名が含まれている場合に使用します。

例えば、Syslog サーバでネットワーク機器の syslog を以下のようなファイルに書き込んでいるとします。

/var/log/networks/BIGIP01/ltm
/var/log/networks/BIGIP01/gtm
/var/log/networks/ROUTER01/messages
/var/log/networks/FIREWALL01/accesslog
/var/log/networks/FIREWALL01/messages

この場合に「ホストのセット: パス上のセグメント」、「セグメント #: 4」を指定すると、それぞれのファイルに書き込まれたログをインデックス化する際に、host フィールドの値として BIGIP01 / ROUTER01 / FIREWALL01 が自動でセットされます。


ソースタイプ
sourcetype フィールドには通常、出力元のアプリケーションやログのカテゴリを表すような値が格納され、検索条件として利用されます。

/var/log など、様々なタイプのログが格納されるディレクトリをソースに指定する場合は、「ソースタイプのセット」を「自動」にしておけば Splunk が自動的にログを識別し、syslog や dmesg といった値をセットしてくれます。

また、自動で識別できないログがあった場合は、「ソースタイプのセット」を「リストから」にして一覧から選択するか、「手動」で値を直接入力することもできます。

インデックス
データの格納先となるインデックスを指定します。インデックスは検索条件として指定でき、バックアップやデータ削除などのメンテナンス操作の適用単位にもなるので、データボリュームが大きくなりそうな場合には独立したインデックスを使うとよいでしょう。

ちなみに、データ入力を追加する際に指定するインデックスは、その時点で作成済みである必要があります。まだ作成していない場合は、Splunk Manager の「インデックス」メニューから作成しておきましょう。

なお、今回のように「default」を指定した場合の動作ですが、ここでは Search App の画面から設定を追加しているため、まず Search App のデフォルトインデックスが格納先の候補になります。ただし、初期状態の Search App の設定ではデフォルトのインデックスを指定していないため、システムのデフォルトが検索され、最終的には main インデックスが格納先となります。

高度なオプション
各種オプションの設定を行います。

末尾の追跡:
既存のサイズの大きなファイルをソースに指定する際に、ファイルの中身を先頭から取り込む代わりに、今後追記されたデータのみを取り込むよう指定できます。ライセンス違反を回避したい場合や、既存の内容が不要な場合に設定するとよいでしょう。

ホワイトリスト (オプション):
指定した正規表現にマッチするファイルのみをデータ入力の対象として扱います。例えば、「\.log$」と指定した場合、ファイル名が「.log」で終わるファイルだけが対象になります。

ブラックリスト (オプション):
指定した正規表現にマッチするファイル以外をデータ入力の対象として扱います。例えば、「\.([0-9]+|gz)$」と指定した場合、ファイル名が「.1」「.2」「.gz」などで終わるファイルはデータ入力の対象外になります。


⑤ 画面左上の「Search に戻る」をクリックします。

splunk_setup_17.png

⑥ Search App のダッシュボードに表示される「インデックスされたすべてのデータ」に、取り込んだログの情報が表示されていることを確認します。

splunk_setup_19.png

⑦ 検索用のテキストボックスに適当なキーワード(ここでは「error」)を入力してリターンキーを押します。

splunk_setup_20.png

⑧ 検索結果が表示されます。

splunk_setup_26.png

ログに含まれる検索キーワードは黄色でハイライトされます。この画面で「error」というキーワードが「Error」にマッチしていることからわかる通り、検索条件で大文字・小文字は区別されません。

⑨ さらに絞込み検索を行いたい場合は、検索用のテキストボックスにキーワードを手動で追加するか、検索結果に含まれる単語をマウスでクリックします。ここでは先ほどの検索結果から、「sshd」という単語をクリックしてみます。

splunk_setup_27.png

⑩ 検索キーワードに「sshd」が追加され、「error」と「sshd」を含むログのみが検索結果に表示されます。

splunk_setup_28.png

ここまでの操作で一通りローカルの syslog メッセージの検索ができるようになりました。

同様の手順で Splunk サーバ上で動作する様々なアプリのログを監視することができますので、各自でデータ入力を追加してみて下さい。


本当はもっと進んでいる予定だったのですが、長くなったので一旦ここで区切ります。
次回はネットワーク機器からのリモート syslog の取り込みについてです。
関連記事

テーマ : おすすめソフトウェア
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

米麹

筆者: 米麹
某社に勤務する SE です。
ここでは本職とは関係のない趣味的な検証情報などを書いていきます。

注意事項とお願い
記事の内容は掲載時点のもので、現在は異なる可能性があります。情報に誤りや不適切な事項があった場合には、コメントやメールフォームでご指摘下さい。
また、本サイトの情報を利用することによって生じたいかなる損害についても、筆者は責任を負いかねますのでご了承下さい。
カレンダー
01 | 2018/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 - - -
最新記事
月別アーカイブ
カテゴリ
全記事表示リンク

全ての記事を表示する

検索フォーム
メールフォーム

名前:
メール:
件名:
本文:

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。