【VMware@SoftLayer】vRealize Log Insight編

#前回までのあらすじ

IBMとVMwareが協業しましたね。

SoftLayer上でVMwareを使っていろいろできるかどうか確認するという趣味を持つ私としては嬉しい限りです。

前回までの詳しい流れについては[こちら](http://qiita.com/khayama/items/b8dc884c7ea273861a24)の記事をご覧ください。


#今回の内容

今回はvSphere環境のログ管理機能を提供するvRealize Log Insightを構築し、どのようにログを収集し、活用できるのかを確認していきます。

#vRealize Log Insight概要

vRealize Log Insightは、リアルタイムでのvSphere環境のログ管理機能を提供する製品です。
![log1.png](https://qiita-image-store.s3.amazonaws.com/0/103277/6ece563c-e5a4-bd8f-3472-fe2b386effc6.png)

仮想マシンはもちろん、各物理ホストや、NSXなどのVMwareのコンポーネントからあらゆるログを収集することが可能で、構造化されていないデータを構造化し、監視、検索、分析に利用することができます。

また、Windows, Linuxの両プラットフォームに対応しており、vRealize Operationsとの連携機能も利用することができます。

#実装

では実際にLog Insightを導入し、ログを収集していきます。

##OVFファイルのデプロイ

Log InsightはOVF形式で配布されているので、vCenterから簡単に展開することができます。

SoftLayerからダウンロードする場合、ダウンロードページが用意されているので、そちらからダウンロードします。カスタマーポータルの「デバイス」→「管理」→「VMware Licenses」メニューを開き、左上の「page」を選択するとダウンロードページに飛ぶことができます。結構分かりにくいところにあります。
![SRM6.png](https://qiita-image-store.s3.amazonaws.com/0/103277/a7a4d23b-62e4-4b15-122f-75e86ff97f5a.png)

ダウンロードしたら、Web Clientにログインし、OVFファイルを展開します。デプロイするクラスターやホストを右クリックし、メニューから「OVFテンプレートのデプロイ」を選択してください。
![log2.png](https://qiita-image-store.s3.amazonaws.com/0/103277/3ac37be8-aeba-bd2e-8529-78158479c89c.png)

後はウィザードに従ってデプロイしていきます。

Log Insightのアプライアンスサイズは以下の4つがあります。要件に合ったサイズを選択してください。
![log3.png](https://qiita-image-store.s3.amazonaws.com/0/103277/a2a7467f-8ec0-f66b-c303-6bcebcdb34fa.png)

名前、場所、ストレージ、ネットワーク等を選択し、最後に「テンプレートのカスタマイズ」でIPアドレスやパスワード、DNSサーバーを指定し、設定を完了します。

##Log Insightの初期設定

デプロイが完了したら、Log Insightにログインし、初期設定を行います。

Log Insightにアクセスするには、 https://(Log InsightのIPアドレスorホスト名)にブラウザからアクセスします。

初めてアクセスした場合、下記のような初期設定の画面が現れるので、画面上の指示に従って初期設定を進めていきましょう。
![log4.png](https://qiita-image-store.s3.amazonaws.com/0/103277/786601da-2692-4d02-2c97-e2438b0cb6e8.png)

始めに展開タイプを選択します。今回は初めてLog Insightを利用するため、「新しい展開の開始」を選択します。
![log5.png](https://qiita-image-store.s3.amazonaws.com/0/103277/11664d9b-3100-71de-9d2d-d10bb9953cba.png)
もしLog Insightをいくつか展開し、クラスタを組みたい場合、2台目以降のLog Insightに関してはここで「既存の展開への参加」を選択してください。本番の環境では少なくとも3つのノードを展開し、可用性を高める構成が推奨されています。

後はLog Insightのライセンス、NTPサーバーの指定、SMTPの設定をして初期設定は完了です。

ちなみにSoftLayer側ではOutbound Port 25 Blockingにより25番ポートは閉じられているので、SMTPの設定の際に注意が必要です。


##ログの収集

初期設定が完了すると、ログを収集することができます。
![log6.png](https://qiita-image-store.s3.amazonaws.com/0/103277/609163ef-18e3-7717-3164-6899ec9d82ec.png)
各コンポーネントでログを収集するために必要な設定を確認していきます。


###vCenter, ESXiホストのログの収集

vCenterとESXiホストのログを収集するためにはLog InsightをvCenterと接続する必要があります。

右上のメニューから「管理」を選択し、左側のタブで「vSphere統合」をクリックします。次に「vCenterを追加」を選択し、vCenterの情報を入力します。
![log7.png](https://qiita-image-store.s3.amazonaws.com/0/103277/92f6cef7-ad71-8821-55cb-0576beb87068.png)
また、ここでログを収集したいホストを指定するとLog Insightにログを送信するように勝手に構成してくれます。
![log8.png](https://qiita-image-store.s3.amazonaws.com/0/103277/1043bd73-0677-80cc-ae9b-15655f45d7e2.png)

これでvCenter, ESXiホストのログがLog Insightに送信されるようになりました。自動で構成してくれるため、大変簡単です。

###仮想マシンのログの収集

####エージェントのインストール

仮想マシンのログを収集するためには、まず各仮想マシンにエージェントをインストールする必要があります。エージェントにはWindows版(.msi)、Linux版(.rpm, .dev, .bin)が用意されており、これら各ファイルもSoftLayerのダウンロードサイトからダウンロードが可能です。

対象の仮想マシンにダウンロードした後、ファイルを実行してインストールします。
![log10.png](https://qiita-image-store.s3.amazonaws.com/0/103277/d8c67fbc-25a1-e298-f07f-5d943f16ad08.png)

複数の仮想マシンに同時にインストールしたい場合、Active Directoryの機能を利用して一度にインストールすることも可能です。下記URLを参照下さい。(もちろんWindows版のみです)
https://support.microsoft.com/ja-jp/kb/816102
https://support.microsoft.com/ja-jp/kb/887405

####liagent.iniファイルの編集

エージェントをインストールすることができましたが、**このままではログは送信されません**。仮想マシンのログをLog Insightに送信するには、インストールしたエージェントの**liagent.iniファイルの設定を変更する必要があります**。

liagent.iniファイルのパラメータは以下のようになっています。
![log11.png](https://qiita-image-store.s3.amazonaws.com/0/103277/abf3db9d-ef13-c206-2c86-0a0f1606863a.png)

「channel」パラメータに収集したいログファイルを追加していきます。ログファイル追加の際、Windowsのイベントファイル(.evtx)と、それ以外のファイルでは文法が少し違うのでお気をつけ下さい。
Windowsのログイベントファイル(.evtx)を追加する際の文法は、以下の表をご覧下さい。
![log14.png](https://qiita-image-store.s3.amazonaws.com/0/103277/5793b6b9-418a-16eb-39b8-029f202942f9.png)

それ以外のファイルを追加するには以下の文法で記入できます。
![log13.png](https://qiita-image-store.s3.amazonaws.com/0/103277/3f8607b0-6a1e-46b4-f4dd-f7c42e9e082c.png)

表だらけで分かりにくくなったのでliagent.iniファイルの設定例を記しておきます。参考になれば幸いです。


```ini:liagent.ini(Windowsの例)
[server]
hostname="hostname"
proto=cfapi
port=9000
ssl=no

[logging]
debug_level=0

[storage]
max_disk_buffer=200

[winlog|Application]
channel=Application
enabled=no

[winlog|Security]
channel=Security
enabled=yes

[winlog|System]
channel=System

```

```ini:liagent.ini(Linuxの例)
[server]
hostname="hostname"
proto=cfapi
port=9000
ssl=no

[logging]
debug_level=0

[storage]
max_disk_buffer=200

[filelog|vsphere6-linux-applmgmt]
directory=/var/log/vmware/applmgmt
include=*.log*;*.txt*
tags={“vmw_product”:”vcenter”}

[filelog|vsphere6-linux-sso]
directory=/var/log/vmware/sso
include=vmware-identity-sts.log*;vmware-sts-idmd.log*
event_marker=^(\[)?\d{4}-\d{2}-\d{2}
tags={“vmw_product”:”sso”}

```

liagent.iniファイルの設定が完了すると仮想マシンのログがLog Insightに送信されます。

#ログの確認

では、正しく設定され、ログが収集されているかを確認していきます。

まず、各ホスト、仮想マシンがLog Insightに正しく認識されているかを確認します。
右上のメニューから「管理」を選択し、左側のタブで「ホスト」もしくは「エージェント」をクリックして各マシンが追加されているかを確認してください。ちなみにここで「エージェント」に表示されるのはcfapiを利用してログを収集する仮想マシンのみで、syslogを設定した仮想マシンは「ホスト」に表示されます。

Log Insightでは、ログの確認画面として「インタラクティブ分析」「ダッシュボード」の2種類のインターフェースがあります。

##インタラクティブ分析

「インタラクティブ分析」画面では、何も操作をしなければ全ホストの全てのログが表示されています。
![log15.png](https://qiita-image-store.s3.amazonaws.com/0/103277/aa2b2de2-904f-7623-80f0-45b9c13e1827.png)
この画面では、検索クエリを自由に作成し、ログの検索、抽出を行うことができます。

検索クエリは、ホスト名、アプリケーション名、ファイル名、イベントタイプ、イベントID、ファイルパス、キーワード等、あらゆる条件で検索可能で、日本語も利用することができ、非常に詳細なログ抽出を行うことができます。また、作成した検索クエリからアラートを発行することができ、特定のイベントに対してアクションを行うことが可能です。

しかし、特定のログを抽出したい時に、どのようなクエリを作成したらよいのか判断できないときもあります。そのような時に使えるのが**コンテンツパック**です。

コンテンツパックは、各製品に特化した監視、分析を行うためのクエリ、アラートのセットがパッケージになったもので、Log Insightのメニューからダウンロードすることができます。
![log16.png](https://qiita-image-store.s3.amazonaws.com/0/103277/35bdacfa-0ca1-1f26-66e7-5b1e722e6a6c.png)
通常、ログの形式は製品によって異なり、自分で全ての製品のクエリを作成するのは大変ですが、このコンテンツパックでは様々な状況に応じてあらかじめ用意されたクエリをそのまま利用することができるため、簡単にログ抽出を行うことができます。

コンテンツパックのマーケットプレイスでは、VMware製品はもちろん、サードパーティー製の様々な製品をサポートしています。

##ダッシュボード

「ダッシュボード」画面では、インタラクティブ分析を利用して抽出したログの、クエリやフィールドテーブルをお気に入りのような形で保存し、一画面に表示させることができます。
![log17.png](https://qiita-image-store.s3.amazonaws.com/0/103277/1f12846b-98e9-0c91-ba36-60c2b52c9fcb.png)
様々な形式のグラフを選択することができ、この画面でアラートやエラーを確認できるため、ログの管理をするのに適しています。

上記の2画面で設定した仮想マシンからログが収集できていることを確認してください。

#利用が想定されるユースケース

実運用を考えると、常にログを見続けていることはあまりないと思うので、「特定のログを検知した際にアラートを受信し、ログを検索して対処する」などといった場面が想定できます。

そこでvRealize Operations(vROps)との連携を想定し、「ある仮想マシンでのログオン失敗が検知されるとvROpsにアラートが送信される」といった動作を確認してみました。

ちなみに、vROps自体の概要、導入に関してはこちらの記事をご覧下さい。
[【VMware@SoftLayer】vRealize Operations編](http://qiita.com/khayama/items/9c63d87e91bee7413e20)

##vRopsとの連携

まずはLog InsightとvROpsを連携します。

連携の方法は単純で、vCenterの接続と同様に「管理」→「統合」→「vRealize Operations」でホスト名、ユーザー名、パスワードを入力するだけです。

##検索クエリの作成

コンテンツパックのクエリをそのまま使ってもいいですが、今回は自分で作成してみました。

Windows仮想マシンのログオンに失敗すると次のログが出力されます。
![log18.png](https://qiita-image-store.s3.amazonaws.com/0/103277/337a7e8c-077c-f5f6-7054-401bd39243b2.png)

下の部分がこのイベントにつけられているタグになります。「フィールドテーブル」タブからそれぞれのタグにどのような値が入っているのかを見ることができるため、このタグと値を元にクエリを作成します。例えば固有のイベントidを利用して

```txt:query1
hostname: dev-test
eventid: 4625
```

等としても抽出できますし、日本語のテキストを用いて

```txt:query2
hostname: dev-test
text: アカウントがログオンに失敗しました
```

としても検索可能でした。自分で作成する場合は誤って他のログを検出しないように複数のタグを利用するなどして工夫して作成しましょう。

##アラートの作成

では作成したクエリを元にアラートを作成してみます。インタラクティブ分析画面のクエリを入力するフィールドの右側にあるベルのマークをクリックすると、現在入力しているクエリを元にアラートを作成することができます。
![log19.png](https://qiita-image-store.s3.amazonaws.com/0/103277/aa45eb8f-abdf-97ac-0fd5-e010cf67306f.png)

アラートはクエリを定期実行し、閾値を超えた場合にアラートを送信するように設定することができます。送信先はe-mail、Webhook、vROpsの中から選択することができます。ちなみにデフォルトの設定では5分間隔でクエリを実行し、一致項目が1つ以上の場合アラートを送信するようになっています。
![log20.png](https://qiita-image-store.s3.amazonaws.com/0/103277/e61e3d4c-9876-7578-dc89-36fd2f6504ae.png)

##ユースケースの確認

Windowsのログオンに失敗し、vROpsにアラートが送信されることを確認します。
![log21.png](https://qiita-image-store.s3.amazonaws.com/0/103277/6554b111-ed20-167f-e238-9205c6c9426e.png)
ログオンの失敗に無事成功しました。すると…
![log22.png](https://qiita-image-store.s3.amazonaws.com/0/103277/95553661-0639-2d32-5c5f-02bf5422d0ce.png)
vROpsのにアラートが送信されています。これでvROpsを見ているだけで特定のイベントに対応できることがわかります。

#いくつかの懸念点

最後に、実運用上で発生し得る懸念点についていくつかあげておきます。

- ログの保有期間について
    - ログの種類毎に保有期間を変更することはできない
    - 容量いっぱいになると古いものからアーカイブ、もしくは削除される
- 可用性はどのように担保するのか
    - クラスターを組む
    - vSphere HAも可能
- ログは圧縮されるのか
    - 検索可能な状態のログは圧縮されていない
    - アーカイブ時に1/10程度に圧縮
- 複数サイト利用時はどのようにLog Insightを立てるのがよいか
    - サイト毎に立てるのがよい
- ロードバランサー機能について
    - クラスター内で設定が可能


#まとめ

かなり長くなりましたが、Log Insightを利用してSoftLayer上のVMware環境のログをとることができました。vROpsとの連携によって、運用時にも活用できそうだということが確認できました。