Splunk Cloudにサーバーからログデータを送信する

## はじめに
[Splunk Cloud](https://www.splunk.com/ja_jp/software/splunk-cloud.html) を使用する機会ががありました。
そこで、Linuxサーバーから各種ログを転送する方法を備忘録として残しておきます

この記事は[Get *nix data into Splunk Cloud](https://docs.splunk.com/Documentation/SplunkCloud/8.0.2003/Admin/UnixGDI) に基づいています

## 事前準備
- [Splunk Cloud](https://www.splunk.com/ja_jp/software/splunk-cloud.html) に登録しておく
    - 無料トライアルで大丈夫です
- Linuxのインスタンスを用意する
    - GCPのMarketplaceにある[Wordpress](https://console.cloud.google.com/marketplace/details/click-to-deploy-images/wordpress) で動作確認をしています

## 手順
1. サーバーにUniversal Forwarderをインストールする
2. Universal　Forwarder のクレデンシャルをダウンロードしインストールする
3. Universal Forwarder にLinux用のAdd-onをインストールする
4. 3.でインストールしたAdd-onをパースするためのAppをインストールする
5. データが受信できることを確認する

### 1. サーバーにUniversal Forwarderをインストールする
splunk.com にログインしたあと、[ここ](https://www.splunk.com/en_us/download/universal-forwarder.html) からUniversal Forwarder をダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314443/8ad814a4-4ee0-4755-21db-250874126c92.png)
お好きなパッケージの`Download Now` をクリックします。
規約に同意したあと、`Download via Command Line(wget)` を押すことでインスタンス内から実行できるコマンドを取得することができます

```sh
$ cd /tmp
$ wget ... #先程取得したコマンド
# 環境に合ったパッケージを取得してください
$ sudo rpm -i splunkforwarder-<…>-linux-2.6-x86_64.rpm 
$ sudo dpkg -i splunkforwarder-<…>-linux-2.6-x86_64.deb
# インストール後、splunkユーザが追加されます
$ sudo su - spulnk
$ cd /opt/splunkforwarder/bin
$ ./splunk start
# ユーザー名とパスワードの入力が求められます。
# splunkforwarderで使用するものなのでsplunk.com とは違うもので大丈夫です
# 下記のように表示されたら終了
All installed files intact.
Done
All preliminary checks passed.
Starting splunk server daemon (splunkd)...
Done
```

### 2. Universal　Forwarder のクレデンシャルをダウンロードしインストールする
1. `https://<自分のインスタンス>.splunkcloud.com/ja-JP/app/splunkclouduf/setupuf` にアクセス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314443/244d60b9-8b36-b22f-a6b7-f894ea6c41d2.png)
2. `3. Download your customized universal forwarder credentials package.` からクレデンシャルをダウンロードします
3. ダウンロードしたクレデンシャルをインスタンスに`sftp` などで転送します

```shell
$ pwd
<PATH-TO-FILE>
$ ls
splunkclouduf.spl
$ sudo su - splunk
$ /opt/splunkforwarder/bin/splunk install app <PATH-TO-FILE>/splunkclouduf.spl
# ユーザー名とパスワードの入力を求められた場合、先程のものを入力します

# 下記のメッセージが表示されたらインストールは終了です
App '<PATH-TO-FILE>/splunkclouduf.spl' installed

# universal forwarder を再起動します 
$ ./splunk restart
```

### 3. Universal Forwarder にLinux用のAdd-onをインストールする
[Splunkbase](https://splunkbase.splunk.com/)からAdd-onをダウンロードし、フォワーダーにインストールすること機能の拡張を行うことができます。
今回は[Splunk Add-on for Unix and Linux](https://splunkbase.splunk.com/app/833/)を導入します。
このAdd-onを導入することでLinux環境における各種ログの転送の設定を行ってくれます。

1. [Splunk Add-on for Unix and Linux](https://splunkbase.splunk.com/app/833/)をダウンロードします。

以下ターミナルで作業

```sh
# /Downloads/splunk-add-on-for-unix-and-linux_602.tgz にAdd-onがダウンロードされたとします

# scpなどを使ってインスタンスにダウンロードしたtarファイルをコピーします。
$ scp splunk@<LINUX_INSTANCE_IP_ADDR>:/tmp/ /Downloads/splunk-add-on-for-unix-and-linux_602.tgz

# Linuxインスタンスにログインします。これより下はLinuxインスタンスで作業します。
$ ssh splunk@<LINUX_INSTANCE_IP_ADDR>
$ cd /tmp
$ tar xvfz splunk-add-on-for-unix-and-linux_602.tgz

# Splunk_TA_nix というディレクトリができていることを確認
$ ls

# splunkforwarder/etc/appsに移動させる
$ mv Splunk_TA_nix/ /opt/splunkforwarder/etc/apps
$ cd /opt/splunkforwarder/etc/apps/Splunk_TA_nix

# 設定ファイルをコピーします
$ mkdir local
$ cp default/inputs.conf local

# 設定ファイル
$ cat local/inputs.conf | head -n 6
# Copyright (C) 2020 Splunk Inc. All Rights Reserved.
[script://./bin/vmstat.sh]
interval = 60
sourcetype = vmstat
source = vmstat
disabled = 1

# disabled = 0 にすることでデータの転送ができます
$ sed -e 's/disabled = 0/disabled = 1/g' local/inputs.conf > local/inputs.conf
$ sed -e 's/disabled = true/disabled = false/g' local/inputs.conf > local/inputs.conf

# 変更できたあと、再起動します
$ cd /opt/splunkforwarder/bin
$ ./splunk restart
```

### 4. 3.でインストールしたAdd-onをパースするためのAppをインストールする
上記の設定を済ませた段階で、すでにLinuxからのデータが送られてきています。
しかし、一部のデータのパースができていないためそのままでは使いづらいデータになっています。
そのため、Splunk Cloudに`Splunk Add-on for Unix and Linux` を導入します。
このAdd-onを導入することでデータのパースを行うことができます。

1. Splunk Cloudの左上から、`他のAppのサーチ` を選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314443/ae464c22-916e-437e-6865-a9f6b1c42475.png)
2. `Splunk Add-on for Unix and Linux` を検索して、インストールします。

### 5. データが受信できることを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/314443/a5a4933e-edee-18ed-12eb-7ad88fc5e7a8.png)
設定が正しく出来ていれば、topの結果がこのようにパースされて表示されます。


#### 参考リンク
[Get *nix data into Splunk Cloud](https://docs.splunk.com/Documentation/SplunkCloud/8.0.2003/Admin/UnixGDI)