AWSでElastic Stack - Beats編

# はじめに
不定期投稿になります。

前回、Elasticsearch+Kibanaをインストールして画面を確認するところまで行きました。
今回は加えてBeatsを利用することで、データを取り込み、Kibanaで表示・検索をできるようにしたいと思います。

# 今回の構成
前回の投稿で作成した構成に例えばサービス用のサーバをイメージして異なるサブネットセキュリティグループに一台追加します。のサーバにBeats(今回はfilebeat)をインストールし、Elasticsearchにデータを送ります。

今回の構成のイメージは以下のような形になります。
サブネットを二つに分けたので少しAWSらしくなった感じがします。
![構成.png](https://qiita-image-store.s3.amazonaws.com/0/189789/32588588-64ad-1538-19bd-e5a57d09f3f6.png)

# AWS側の設定について
AWS側の設定は前回に以下を加えています。

**VPC Subnet**
VPC Subnet B(192.100.0.32/27)を追加
**仮想マシン**：Amazon Linux
**追加した仮想マシンプラン**：t2.medium
**仮想マシン台数**：1台追加(計4台)
srv4：192.100.0.36/EIP付き
※beatsでのデータ転送にはEIPは不要なのですが、パッケージインストール等の為にEIPを付けてあります。
**セキュリティグループ**
SecutiryGroup Bを追加
SecurityGroup AはBeatsからの転送を受け入れる為、InboundにTCP 9200 Security Group Bからの通信許可
SecurityGroup BはSSH (22) TCP (6) 22　[sshアクセスするIPアドレス]

それではsrv4を作っていきます。基本的にsrv4の作業のみとお考え頂ければ問題ありません。

# 構築作業

## 1.事前準備
### 1.1.beatsをyumでインストールできるようにGPGキーのインポートと、リポジトリの作成
```
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
# vi /etc/yum.repos.d/beats.repo
[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1
```

## 2.filebeatのインストールと設定
Beatsについて、細かいことは公式を見て頂くとして、各種プロダクト群の名前となります。
今回利用するのはその中のfilebeatです。

### 2.1.filebeatのインストール

yumで入るのは相変わらず有り難い。

```
# yum install filebeat
```

### 2.2.configファイルを編集
まずfilebeatのconfigファイルを確認します。

```
# cat /etc/filebeat/filebeat.yml |grep -v -e '^\s*#' -e '^\s*$'
filebeat:
  prospectors:
    -
      paths:
        - /var/log/*.log
      input_type: log
  registry_file: /var/lib/filebeat/registry
output:
  elasticsearch:
    hosts: ["localhost:9200"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB
```

\- /var/log/*.logが対象となるログファイル
hosts: ["localhost:9200"]がデータ転送先

srv4のとりあえずsecureログを送ることにします。ログイン履歴がkibanaで確認できるというイメージになります。転送先はElasticsearchのどのサーバでも良さそうですが、１号機を指定することにします。

ファイルを編集します。
\# vi /etc/filebeat/filebeat.yml

編集後のファイルの中身はこちら

```
# cat /etc/filebeat//filebeat.yml |grep -v -e '^\s*#' -e '^\s*$'
filebeat:
  prospectors:
    -
      paths:
        - /var/log/secure ☜変更箇所１
      input_type: log
  registry_file: /var/lib/filebeat/registry
output:
  elasticsearch:
    hosts: ["192.100.0.4:9200"] ☜変更箇所２
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB
```

###3.filebeatの自動起動設定と起動

```
# chkconfig --add filebeat
# chkconfig --list filebeat
filebeat        0:off   1:off   2:on    3:on    4:on    5:on    6:off
# service filebeat start
Starting filebeat:                                         [  OK  ]
```

###4.Kibanaから確認
それではKibanaから確認します。

http://[srv1のEIP]:5601

![QS_20171106-113941.png](https://qiita-image-store.s3.amazonaws.com/0/189789/cbb6c235-1c2d-1b6e-a57b-9c3828a0c84d.png)

特に何も設定していないので、なにやら怒られています。
filebeatから送られてきたデータ見るため、インデックスを登録します。

左ペインのManagementを選択し、右ペインのIndex Patternsを選択します。
![kibana2.png](https://qiita-image-store.s3.amazonaws.com/0/189789/dfb872da-1f6f-522b-3f90-b164c3a8eaa6.png)

最初の画面に戻されます。Indexを何かしら最初に登録しておかないとこうなります。
![QS_20171106-114705.png](https://qiita-image-store.s3.amazonaws.com/0/189789/7ffd6bc8-bda4-bce2-fc09-de8421611f01.png)

ではfilebeatをインデックスとして登録します。
![kibana4.png](https://qiita-image-store.s3.amazonaws.com/0/189789/fa10fcaf-d76b-7790-dd01-1cffa8fbf8a8.png)

Indexが登録されました。Indexを追加したい場合は左上の赤枠を選択すれば追加可能になります。
![kibana5.png](https://qiita-image-store.s3.amazonaws.com/0/189789/391b3a86-54dc-28fa-1844-28f20313d007.png)

それでは実際にデータが取得できているか確認します。
左ペインの一番上、Discoverを選択すると・・・
![QS_20171106-120709.png](https://qiita-image-store.s3.amazonaws.com/0/189789/1980e144-2777-f80b-42ad-f0fcc2851b31.png)

対象のデータが無い為、表示されません。これは現在時刻のデータが存在しない為この画面になります。
(この取れていない状態の画像を後で取得したため、画面上の時間が進んでいます。)
画面上部の<を選択して下さい。
![kibana6.png](https://qiita-image-store.s3.amazonaws.com/0/189789/14ca6709-3734-056a-d750-b186bdb94ab8.png)

過去のログが見つかった為、データが表示されます。
![QS_20171106-120049.png](https://qiita-image-store.s3.amazonaws.com/0/189789/c74c3bfb-959c-6bc2-8b94-49864c31c208.png)

何やらsrv4(192.100.0.36)の内容が取得できております。
この日の為に起動したマシンのsecureログなので、ログイン履歴等はありません。
ですので、実際にsrv4にログインして、ログの内容を増やして、鍵認証の成功で検索したいと思います。

さっそくsrv4にログインして戻ってきました。
そのままですと、新しく出力したログの時間が検索範囲に入っていない為、検索範囲を修正します。
画面右上の時間をクリックすると、画像のようにTime Range画面が出ますので、検索範囲の時間を指定してGOとなります。
![kibana7.png](https://qiita-image-store.s3.amazonaws.com/0/189789/92979b8b-9b17-26b8-bb7c-eeaf9db03c2f.png)

元の画面に戻りますので、画面上部の検索窓に公開鍵ログインの成功を示す、Accepted Publickeyを入力します。
![kibana8.png](https://qiita-image-store.s3.amazonaws.com/0/189789/3dc301c2-93d9-d08a-9266-ce5faf141cf4.png)

２件のログが出力されました。実際にサーバにログインしなくてもログの検索が可能になりました。
Kibanaでログ検索ができればログ確認の為にサーバ側のログイン権限をユーザに渡す必要が無くなります。
もちろんKibana側のセキュリティ設定は必要になりますが・・・

次回は引き続きBeatsの他のプロダクトについて等書きたいと思います。