Splunk SAI で VMware を監視する (Setup編) 


## 概要

Splunkで VMware を監視するにはどうすればいい？　ということで実際に VMware 環境を構築して監視するまでを試してみたいと思います。

調べてみると、従来は Splunk App for VMware というアプリが有償版で利用できたらしいのですが、今はこのアプリは推奨ではなく(利用はできますが）、Splunk App for Infrastructure (SAI) というアプリで統合監視するのが推奨とのことです。ただし Splunk App for Infrastructure は無償利用可能なのですが、VMware を監視対象にする場合はITSI のライセンスを購入する必要があるので要注意です。　

今回は VMware データをSplunkに取り込むまでをSetup編としてまとめたいと思います。

続きは [Splunk SAI for VMware(利用編)](https://qiita.com/maroon/private/6c0d1f46c531a17f8671)をご覧ください。

## どんなデータがとれるのか？
vCenterから下記のデータを取得できます。
- Metrics
- Task
- Inventory
- Event
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Admin/AddDataVMware

あとは、VCSA / ESXi の syslogデータを取得できます。

## VMware 環境について

今回は自宅の機材を改良して VMware環境を構築しました。色々とありバージョンは古いものを利用し、Splunk VMware OVAは Workstation Player上に展開しました。
（自宅ラボ NW adapterが新しいバージョンに対応していなかったり、そのため仮想HWのバージョンがOVAに未対応だったため苦肉の策です）

・ESXi 5.1
・VCSA (vCenter Server Appliance) 6.0 
・Workstation Player 15.5 on MAC. 
・Splunk 8.0.1 on MAC. 

## Splunk 環境について

Splunk へは、Splunk App for Infrastructure と VMware ITSI (モジュール追加のため) を追加する必要があります。
また別途 VMware 環境と通信するために DCN という OVA を展開する必要があります。

・ Splunk 8 
・ Splunk ITSI 4.4 (VMware TAモジュールがあります）
・ Splunk App for Infrastructure  |  (https://splunkbase.splunk.com/app/3975/)
・ Splunk VMware OVA for ITSI (https://splunkbase.splunk.com/app/4760/) 
 ( OVAは、VMware Workstation 上に展開しました）

## 構成イメージ

それぞれのコンポーネントのロールと合わせてイメージ化すると以下のようになります。

VMware のログやメトリック・イベント・タスクなどを取得するには syslog 設定をするだけでなく、vCener と連携する必要があります。そのためには DCN (Data Collection Node) と DCS (Data Collection Scheduler) を設定する必要があります。下のイメージ図にあるとおり DCN (OVA) をVMware上にデプロイして、DCSを設定することでスケジュール化されて vCenterと連携してデータを Splunkに取り込めるようになるのです。
ちなみにITSIはなくても動作しますが、vmware add-on系のモジュールが必要なのでダウンロードしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/8d32a05c-ae2d-db89-8436-28f81b59fe0a.png)

こちらのイメージはスタンドアロン構成の場合になりますので、クラスター構成の場合や複数の vCenterがある場合はマニュアルをご確認ください。

## マニュアル
参考資料がほとんどないため、マニュアルをコツコツとみながら進めました。

システム要件
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Install/VMWRequirements

インストールマニュアル
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Install/VMWInstall


## セットアップ手順

### 1) VMware 環境の準備 
今回は詳細は省略します。環境については上記をご覧ください。

### 2) Splunk へ SAI の Install

#### 2-1) SAI Appの Download & setup
こちらより、ダウンロードしてAppの追加をしてください。（やり方は通常のApp追加と同じです)
https://splunkbase.splunk.com/app/3975/


#### 2-2) 受信ポートのEnable
DCNである Heavy Fowarderからデータを受信するため、IndexerであるこのSplunkサーバの受信ポートをEnableにする。
「設定」ー「転送と受信」ー「Receive data」

右上の「New Receiving port」で 9997を入力して追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/23088aae-fd9c-8107-6a3c-57cfb4533269.png)


### 3) ITSI download + 必要なモジュールをセットアップ

#### 3-1) IT Service Intelligenceをダウンロード 
https://splunkbase.splunk.com/app/1841/

#### 3-2) ITSI のデプロイ
通常のAppの追加と違い、コマンドベースで展開する必要があります。（参考：https://docs.splunk.com/Documentation/ITSI/4.4.1/Install/Install)

```:ITSIのデプロイ
$ tar -xvf splunk-it-service-intelligence_<latest_version>.spl -C $SPLUNK_HOME/etc/apps
```

#### 3-3) VMware 関連コンポーネントのデプロイ

```
$ cd $SPLUNK_HOME/etc/apps/vmware_ta_itsi
$ cp -r * .. (etc/apps に配置する)
$ sudo $SPLUNK_HOME/bin/splunk restart  (再起動)
```
VMwareデータを取得するのに必要な inputs.conf や DCSコンポーネントなどが含まれており、etc/appsに配置することで有効になります。


### 4) DCN Deploy ( VMware OVA for ITSI)
DCNマニュアル
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Install/VMWDCN#Deploy_a_DCN_with_the_Splunk_VMware_OVA_for_ITSI

#### 4-1) VMware OVA for ITSI をダウンロードします。
https://splunkbase.splunk.com/app/4760/

#### 4-2) OVA をDeploy 
今回は VMware Workstation Player 上にデプロイ。ただしデフォルトのCPU/Memory が 8vCPU/24GB のため、このままではデプロイできないので 2vCPU/2GB に編集して起動しました。

#### 4-3) DCN Setup
Player Console か SSHで OVAにログインします。

```
$ username: root
$ password: changemenow
```

```:DCNサーバのセットアップ
$ dcn-network-config
Enter the IPv4 address [192.168.98.6]:
Enter the IPv4 address of the default gateway [192.168.98.1]:
Enter the Netmask [255.255.255.0]:
Enter DNS/Nameserver [192.168.98.1]:
Enter Hostname (Requires Splunk restart) [localhost.localdomain] : dcn.localhost
```

#### 4-4) DCN Config (DCN内の HFの設定) 
DCNには、Splunk HF が入っておりますが、その admin ユーザーのパスワードや Splunk Indexer / License Master を登録します。

```
$ username: splunk
$ password: changeme
```

```:Indexer/Licensemaster登録
$ dcn-splunk-config

Enter Splunk admin password:
Enter new password [*****]:
Re-enter new password:
Enter comma separated Indexers(<host>:<port>)[]: 192.168.98.8:9997
Connection to 192.168.98.8 on port 9997: Success
Enter license master(https://<host>:<port>)[self]: 192.168.98.8
Ping license master 192.168.98.8: Success
```

#### 4-5) Additional Config (時刻同期)

```:/etc/ntp.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
 server 0.centos.pool.ntp.org
 server 1.centos.pool.ntp.org
 server 2.centos.pool.ntp.org
```

```
$ sudo service ntpd restart
```

設定内容をみてもらうとお分かりかと思いますが、この時点ではVMware接続の設定はまったくしておりません。

### 5) DCS Setup
DCSと独立させることも可能ですが、今回は SplunkE と DCS を同居させます。

マニュアル
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Admin/AddDataVMware#Integrate_a_vCenter_Server

#### 5-1) vCenter Integration 

SAIのアプリを開き 「データ追加」 - 「VMware vSphere」 を表示
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/3f7d08f5-9931-9edf-4ab1-2585527bd5ee.png)

##### vCenter の登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/ee38cdd3-28cb-443a-94c3-c849ff251aeb.png)

ここで監視したくない ESXiホストがあれば、除外することが可能です。


下記のように valid となれば OK.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/648170e3-4616-214d-7654-7653a74abd19.png)


#### 5-2) VCN Integration 

次に DCS と DCN を接続させます。

##### DCNの登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/328f55fd-7cd5-0a55-821a-414851c2d83b.png)

worker processes は、DCNの CPUコア数 -1 を設定すれば OKです。

下記のように valid となれば OK.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/0aad2268-35e3-c9e7-8c44-926a74ff5436.png)


#### 5-3) 接続確認

上記セットアップが完了したら、５−１０分立つとスケジューラーが作動してデータを収集してきます。
サーチ画面に戻って以下のコマンドで確認できます。

```
|mstats latest(_value) where metric_name=* AND index=vmware-perf-metrics by metric_name
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/2c46e0ee-1f16-ce97-d324-30177e140552.png)



### 6) Syslog Setup (vCenter / ESXi - SAIで logデータを取得）

マニュアル
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Admin/VMwareLogs

#### 6-1) VCSA log設定
今回は VCSA のアプライアンスから syslogデータを収集します。もし Windows vCenter Serverをご利用の方はUFをインストールする別の方法がありますので、マニュアルをご覧ください。
また Indexer Clusterをご利用の方は、転送先がIndexerではなくDCNを指定する必要がありますので、こちらもマニュアルをご覧ください。

##### 6-1-1) VCSA上で syslog の設定

```:VCSAにログイン
$ ssh root@<VCSA hostname>

# VCSA上でshell操作ができるようにする
Command> shell.set --enabled True
Command> shell
```

次に rsyslog.conf を以下のように編集する。　その前に元のファイルをcopyしてバックアップを取っておくとよい。

```:/etc/rsyslog.conf
$template vclogtemplate,"%syslogtag% %rawmsg%"

$ModLoad imfile
$InputFileName /var/log/vmware/vpxd/vpxd.log
$InputFileTag vpxd
$InputFileStateFile state-vpxd
$InputFileSeverity all
$InputRunFileMonitor

$ModLoad imfile
$InputFileName /var/log/vmware/vpxd/vpxd-profiler.log
$InputFileTag vpxd-profiler
$InputFileStateFile state-vpxd-profiler
$InputFileSeverity all
$InputRunFileMonitor

$ModLoad imfile
$InputFileName /var/log/vmware/vpxd/vpxd-alert.log
$InputFileTag vpxd-alert
$InputFileStateFile state-vpxd-alert
$InputFileSeverity all
$InputRunFileMonitor

$ModLoad imfile
$InputFileName /var/log/vmware/vws/watchdog-vws/watchdog-vws-syslog.log
$InputFileTag vws
$InputFileStateFile state-vws
$InputFileSeverity all
$InputRunFileMonitor

$ModLoad imfile
$InputFileName /var/log/vmware/perfcharts/stats.log
$InputFileTag stats
$InputFileStateFile state-stats
$InputFileSeverity all
$InputRunFileMonitor

 *.* @@192.168.98.8:1517;vclogtemplate
```

最後の 192.168.98.8 の箇所は Splunk Server のIPアドレスかホスト名を入力。（場合によってはDCN) 

サービス起動

```
$ service syslog restart
```

##### 6-1-2) Splunk上で 受信の設定
次に、Splunk側の設定です。

```:$SPLUNK_HOME/etc/apps/Splunk_TA_vcenter/local/inputs.conf
[tcp://1517]
connection_host = ip  (またはdns) 
index = vmware-vclog
sourcetype = vclog
disabled = 0
```

Splunk再起動


ちなみに、vmware-vclog というインデックスは、ITSIを追加することで自動的に作成されております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/fcb8a535-9515-af4e-538f-f04f0695e123.png)

##### 6-1-3) Splunk上で確認

こちらのように表示されればOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/cf3704f2-c5a9-169e-de33-84b87158fc76.png)




#### 6-2) ESXi のsyslog 設定

こちらのマニュアルに従って ESXiの syslog設定ができます。
https://docs.vmware.com/jp/VMware-vSphere/6.7/com.vmware.esxi.upgrade.doc/GUID-9F67DB52-F469-451F-B6C8-DAE8D95976E7.html

##### 6-2-1) ESXi syslog設定 using WebClient

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/c2170a45-e141-5e30-346a-8b9c963819bd.png)

##### 6-2-2) 受信側の設定

以下のinputs.conf を作成する。

```:$SPLUNK_HOME/etc/apps/Splunk_TA_esxilogs/local/inputs.conf
[udp://514]
index = vmware-esxilog
sourcetype = vmw-syslog
connection_host = ip
disabled = 0
```
splunkの再起動


以上で、VMware のデータを取得完了です。お疲れ様でした。

この後は、SAI側の設定をして取得したデータをみていきます。

##### 6-2-3) データの確認

それでは、SAIでデータが取得できているかみてみましょう。

SAIのアプリの「調査」タブを開くと、エンティティー（取得データポイント）が表示されます。今回取得したVMware のエンティティーが表示されていればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/f62bf5c9-d3d1-9106-1bea-76877da43307.png)


各エンティティでは、以下のようにデフォルトでいくつかメトリック情報が見えるようになっております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/74f13676-88fb-946e-6edb-5158bf5451ec.png)

またそれ以外のメトリックも分析タブを開くと表示できます。メトリックとログ出力を一緒に表示できるので便利です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/a3be194c-d004-870c-5466-3734f00a5de6.png)

これらのデータ詳細は、 [Splunk SAI for VMware(利用編)](https://qiita.com/maroon/private/6c0d1f46c531a17f8671)をご覧ください。


### 7) 各OS上の設定 (option) 

OS 内の情報は、今回のVMwareモジュールだけでは取れないので、別途OS上に UFなどを入れて取得する必要があります。メトリック情報もcollectdなどを使いSAIで管理できるため統合運用を試しては如何でしょうか？

こちらは Linux環境を SAIに取り込むための参考記事です。 (by saeoshi さん)
https://qiita.com/saeoshi/items/ba05da112b17ae893709


## その他

#### a) データサイズの目安
VMware データを収集する際のデータサイズの目処になります。
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Install/VMWRequirements#Data_Collection_Scheduler_requirements

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/4ef64c42-d3ba-1067-1c34-759b0de3f973.png)


#### b) ITSI for VMware モジュールの詳細

ITSI をインストールすると、以下の directoryにモジュールが保存されております。
vmware_ta_itsi 

各コンポーネントの詳細と配置場所については、こちらをご覧ください。
https://docs.splunk.com/Documentation/InfraApp/2.0.1/Install/VMWRequirements#Where_to_install_VMware_data_collection_components

今回は、DCSとIndexerが同じサーバになるので、合わせて配置する必要があります。
ちなみに今回の構成に関してまとめると vmware_ta_itsi 配下にあるコンポーネントについて
１） Splunk Server(DCS, indexer) : 全てのコンポーネントを etc/appに配置
2) DCN OVA: OVA上にすでに必要なコンポーネントがあるので、そのままでOK. ( syslog転送先を DCNにした場合は、コンポーネントコピーが必要）

#### c) ITSI for VMware で作成される Indexer
VMWindex モジュールにより、自動的にIndexerが作成されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/392303/7466030f-dac5-9414-30ce-160c44eacff9.png)