はじめに
不定期投稿になります。
前回、Elasticsearch+Kibanaをインストールして画面を確認するところまで行きました。
今回は加えてBeatsを利用することで、データを取り込み、Kibanaで表示・検索をできるようにしたいと思います。
今回の構成
前回の投稿で作成した構成に例えばサービス用のサーバをイメージして異なるサブネットセキュリティグループに一台追加します。のサーバにBeats(今回はfilebeat)をインストールし、Elasticsearchにデータを送ります。
今回の構成のイメージは以下のような形になります。
サブネットを二つに分けたので少しAWSらしくなった感じがします。
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
特に何も設定していないので、なにやら怒られています。
filebeatから送られてきたデータ見るため、インデックスを登録します。
左ペインのManagementを選択し、右ペインのIndex Patternsを選択します。
最初の画面に戻されます。Indexを何かしら最初に登録しておかないとこうなります。
Indexが登録されました。Indexを追加したい場合は左上の赤枠を選択すれば追加可能になります。
それでは実際にデータが取得できているか確認します。
左ペインの一番上、Discoverを選択すると・・・
対象のデータが無い為、表示されません。これは現在時刻のデータが存在しない為この画面になります。
(この取れていない状態の画像を後で取得したため、画面上の時間が進んでいます。)
画面上部の<を選択して下さい。
何やらsrv4(192.100.0.36)の内容が取得できております。
この日の為に起動したマシンのsecureログなので、ログイン履歴等はありません。
ですので、実際にsrv4にログインして、ログの内容を増やして、鍵認証の成功で検索したいと思います。
さっそくsrv4にログインして戻ってきました。
そのままですと、新しく出力したログの時間が検索範囲に入っていない為、検索範囲を修正します。
画面右上の時間をクリックすると、画像のようにTime Range画面が出ますので、検索範囲の時間を指定してGOとなります。
元の画面に戻りますので、画面上部の検索窓に公開鍵ログインの成功を示す、Accepted Publickeyを入力します。
2件のログが出力されました。実際にサーバにログインしなくてもログの検索が可能になりました。
Kibanaでログ検索ができればログ確認の為にサーバ側のログイン権限をユーザに渡す必要が無くなります。
もちろんKibana側のセキュリティ設定は必要になりますが・・・
次回は引き続きBeatsの他のプロダクトについて等書きたいと思います。