LoginSignup
3
1

More than 5 years have passed since last update.

AWSでElastic Stack - Beats編

Posted at

はじめに

不定期投稿になります。

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

今回の構成

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

今回の構成のイメージは以下のような形になります。
サブネットを二つに分けたので少しAWSらしくなった感じがします。
構成.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のどのサーバでも良さそうですが、1号機を指定することにします。

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

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

# cat /etc/filebeat//filebeat.yml |grep -v -e '^\s*#' -e '^\s*$'
filebeat:
  prospectors:
    -
      paths:
        - /var/log/secure ☜変更箇所1
      input_type: log
  registry_file: /var/lib/filebeat/registry
output:
  elasticsearch:
    hosts: ["192.100.0.4:9200"] ☜変更箇所2
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

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

左ペインのManagementを選択し、右ペインのIndex Patternsを選択します。
kibana2.png

最初の画面に戻されます。Indexを何かしら最初に登録しておかないとこうなります。
QS_20171106-114705.png

ではfilebeatをインデックスとして登録します。
kibana4.png

Indexが登録されました。Indexを追加したい場合は左上の赤枠を選択すれば追加可能になります。
kibana5.png

それでは実際にデータが取得できているか確認します。
左ペインの一番上、Discoverを選択すると・・・
QS_20171106-120709.png

対象のデータが無い為、表示されません。これは現在時刻のデータが存在しない為この画面になります。
(この取れていない状態の画像を後で取得したため、画面上の時間が進んでいます。)
画面上部の<を選択して下さい。
kibana6.png

過去のログが見つかった為、データが表示されます。
QS_20171106-120049.png

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

さっそくsrv4にログインして戻ってきました。
そのままですと、新しく出力したログの時間が検索範囲に入っていない為、検索範囲を修正します。
画面右上の時間をクリックすると、画像のようにTime Range画面が出ますので、検索範囲の時間を指定してGOとなります。
kibana7.png

元の画面に戻りますので、画面上部の検索窓に公開鍵ログインの成功を示す、Accepted Publickeyを入力します。
kibana8.png

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

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

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1