Splunk: 自作のテキストログファイルを取り込んでみる


###### 実施環境：

Splunk Free 8.2.2

```Linux:Linux
[root@testhost ~]# uname -a
Linux testhost 4.18.0-338.el8.x86_64 #1 SMP Fri Aug 27 17:32:14 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@testhost ~]# echo $SHELL
/bin/bash
```

### 0. 概要

 Splunk はログ解析ソフトウェアですが、当然解析するためにはログをソフトウェア内に取り込む必要があります。
今回は以下のような自作テキストログファイルを Splunk に取り込むことを考えてみます。

```Splunk:Splunk
[root@testhost ~]# file /var/log/test.log
/var/log/test.log: ASCII text
[root@testhost ~]# cat /var/log/test.log
2022/08/14 12:41:40 testhost root INFO Hello World.
[root@testhost ~]#
```

### 1. インデックスを作成する

まずは、取り込んだログの保存先となるインデックスを作成します。

「設定」→「インデックス」を選択します。

![WS000175.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/30592724-546b-d670-211f-d2ed521b8a5b.jpeg "設定")

インデックスの一覧画面が開くので、右上にある「新規インデックス」を押します。

![WS000177.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/98fcc14d-aa82-24ee-6dba-3a8ae2f14be1.jpeg "インデックス")

すると、新規インデックスの作成画面が開きます。

![WS000178.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/24f5ff29-841a-1ebe-3974-720fc48c49f8.jpeg "新規インデックス")

インデックスで設定できる項目は結構多いですが、今回はインデックス名を「 test_index 」にして、あとはデフォルトのまま「保存」を押します。
インデックス一覧の画面に、以下の通り作成したインデックスが表示されます。

![WS000428.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8ca55eb1-a6bd-f8b3-f05d-0a79809d7c18.jpeg "新規インデックス作成")

### 2. ソースタイプを作成する

次に、ソースタイプを作成します。
これは、取り込んだログがどのような種類のものなのかを表すもので、ログデータを項目毎に分割するためのフィールド抽出文も多くの場合これに紐づけて管理します。

「設定」→「ソースタイプ」を選択します。

![WS000180.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ddabe818-90d6-d002-9828-04fa40aa477b.jpeg "設定2")

ソースタイプの一覧画面が開くので、右上にある「新規ソースタイプ」を押します。

![WS000181.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/96af6f0f-5356-df40-1104-65306187124d.jpeg "ソースタイプ")

すると、新規ソースタイプの作成画面が開きます。

![WS000182.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/b6af7cb2-6fbf-d940-1761-ca7717fcd55a.jpeg "新規ソースタイプ")

ソースタイプで設定できる項目も多いですが、今回は名前を「 test_log 」にして、あとはデフォルトのまま「保存」を押します。
ソースタイプ一覧の画面に、以下の通り作成したソースタイプが表示されます。

![WS000184.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/0a325593-2464-bb38-7a2c-4325e8f3a07c.jpeg "ソースタイプ作成")

### 3. フィールド抽出文作成

ログデータはただ取り込むだけではあまり有効に活用はできません。
ログデータに記載されている要素を適切に分割、抽出する必要があります。
そのためのフィールド抽出文を作成します。

「設定」⇒「フィールド」を選択します。

![WS000185.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/11a4415e-2277-5292-36ec-2bc21de691fb.jpeg "設定3")

「フィールド抽出」を選択します。

![WS000186.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/f8e7f718-3c61-2839-f7cd-b32ddfbcf38c.jpeg "フィールド")

フィールド抽出文の一覧画面が開くので、右上にある「新しいフィールドの抽出」を押します。

![WS000187.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/37ffbea9-e066-27f7-f067-b373ad355984.jpeg "フィールド抽出")

すると、新規フィールド抽出文の作成画面が開きます。
今回は次の通りに指定します。

|項目名|値|
|:-|:-|
|宛先 App | search |
|名前| test_field |
|適用先|ソースタイプ|
|名前付き| test_log |
|タイプ|インライン|
|抽出/変換|`^(?<date>\d{4}/\d{2}/\d{2})\s(?<time>\d{2}:\d{2}:\d{2})\s(?<host_name>\w*)\s(?<user_name>\w*)\s(?<log_level>\w*)\s(?<log_message>.*)$`|

抽出文は正規表現で書かれ、`(?<フィールド名>正規表現)`の形でフィールドを抽出する箇所を指定します。
正規表現についてはここでは詳しく説明しませんので、以下のサイトを参照してください。

[About Splunk regular expressions](https://docs.splunk.com/Documentation/Splunk/9.0.0/Knowledge/AboutSplunkregularexpressions)

![WS000189.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/6e07fe63-18b9-0865-a5de-e944807b0a77.jpeg "フィールド抽出文")

設定を入力後「保存」を押せば、フィールド抽出文一覧の画面に以下の通り作成したフィールド抽出文が表示されます。

![WS000190.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/e9d6c299-95f6-929c-453e-97f003c453fa.jpeg "フィールド抽出文作成")

### 4. データ入力設定

さて、ここまででログデータを取り込む準備は整ったので、いよいよログの取り込みを行っていきます。

「設定」⇒「データ入力」を選択します。

![WS000191.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/5a2f2a12-8c5d-efa4-4a22-204ba4319bd6.jpeg "設定4")

今回はローカルに存在するログファイルを取り込むので、「ファイルとディレクトリ」を選択します。

![WS000192.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ccf776b3-0455-6c35-c383-45ef2c022489.jpeg "データ入力")

データ入力設定の一覧画面が開くので、右上にある「新しいローカルファイルとディレクトリ」を押します。

![WS000193.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/ca86dd9d-4c95-65fa-cc89-5a3529b8b7ea.jpeg "ファイルとディレクトリ")

最初はファイルの選択画面となるので、今回取り込むファイルのパス`/var/log/test.log`を入力し、「次へ」を押します。

![WS000194.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/3ce9e2b7-c049-c618-fe0b-a2fd53b9be39.jpeg "ソースの選択")

次にソースタイプの設定画面となるので、先ほど作成した「 test_log 」を選択し「次へ」を押します。

![WS000195.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/8836d74b-9387-2df6-dce7-3eb09421f934.jpeg "ソースタイプの設定")

入力設定画面となるので、 App を search 、ホストを定数値の testhost 、インデックスを先ほど作成した test_index にして「確認」を押します。

![WS000197.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/025fe115-5152-7369-fe06-d891f08134a1.jpeg "入力設定")

確認画面となるので、設定を確認して「実行」を押します。

![WS000198.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/80adfea2-fa96-b0ba-f34f-aa8ee3a408f4.jpeg "確認")

以下のように表示されればデータ入力設定は完了です。

![WS000199.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/fd713511-77f0-dc65-8366-84518303ee74.jpeg "完了")

データ入力設定一覧の画面にも設定が表示されました。
あとは自動的に取り込みが行われます。

![WS000200.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/2bbb382a-4585-dfbf-4d92-830a9c0a9364.jpeg "データ入力設定作成")

### 5. 確認

正常にログ取り込みができたことを確認してみましょう。

「詳細モード」で以下の SPL を実行します。

```Splunk:Splunk
index="test_index"
```

実行結果を見ると、ログデータが取り込めていることがわかります。

![WS000201.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/985be0a1-1fef-ea08-3818-08a845b87ae5.jpeg "確認1")

イベント左の「>」を押して詳細情報を開くと、正常にフィールドが抽出できていることも確認できました。

![WS000202.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1465018/1d31a3e5-c71d-e720-867a-28cc19d24cf9.jpeg "確認2")