Filebeatとは
- Elastic社の軽量ログ収集エージェント群Beatsの1つ。
- BeatsはいずれもGoで書かれており低負荷で動作するため、Logstashと比べてデータソース(Webサーバー等)に直接導入しやすい。
- Logstashと比べて機能はシンプルで、収集対象のデータに応じてエージェントを使い分ける必要がある。
- Filebeatはログファイルのデータ収集に特化したエージェント。
- 指定したログファイルを監視し、更新があるとLogstashやElasticsearch等に出力する。
Moduleとは
- FilebeatとMetricbeatには一般的なログフォーマット(NGINX、Apache、System、Redis、Docker等)のデータに対応するModuleが存在する。一覧はこちら。
- ModuleによってElasticsearchに取り込ませるデータの変換設定やKibanaによる可視化のためのダッシュボード作成を省略・簡略化できる。
- 7.0以降、Moduleで定義されるフィールド・データ型はElastic Common Schemaに準拠しており、異なるデータソース間でも統一された検索・分析基盤を構築できる。
- ex) ユーザー名のフィールドがソースによってuserになったりusernameになったりnginx.access.user_nameになったりせず、user.nameに統一される。
- 今回はFilebeatのPalo Alto Networks moduleを使う。
やったこと
Palo Alto FWのSyslogサーバーにFilebeatを導入し、新規構築したElasticsearch+Kibanaに出力させて可視化する。
環境
- Elasticsearch+Kibana
- Amazon Linux 2 AMI (HVM), SSD Volume Type
- t2.medium
- EBS(汎用SSD) 30GiB
- Syslog+Filebeat
- Amazon Linux 2 AMI (HVM), SSD Volume Type
- t2.micro
- EBS(汎用SSD) 30GiB
- Palo Alto FW
- VM-Series Next-Generation Firewall Bundle 1
- m5.xlarge
- EBS(汎用SSD) 30GiB
- AWSのセキュリティグループは適宜開ける
手順
Elalsticsearch+Kibanaのインストールと設定
- インストール
- yumで入れる
$ sudo yum install java
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
$ sudo vi /etc/yum.repos.d/elastic.repo
/etc/yum.repos.d/elastic.repo
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
[kibana]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
$ sudo yum install elasticsearch kibana
- Elasticsearchの設定
- Filebeatからの出力をElasticsearchで許可する
- シングル構成にするときその旨をは明示しないとサービス起動時にエラーになるっぽい
$ sudo vi /etc/elasticsearch/elasticsearch.yml
/etc/elasticsearch/elasticsearch.yml
network.host: 127.0.0.1, <SyslogサーバーのIP>
discovery.type: single-node
- Kibanaの設定
- 接続元の制限をかけない
- elasticsearchの指定(今回は同居しているのでlocalhost)
$ sudo vi /etc/kibana/kibana.yml
/etc/kibana/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http//localhost:9200"]
- ElasticsearchとKibanaのサービス起動設定
$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable elastcisearch.service
$ sudo /bin/systemctl enable kibana.service
$ sudo systemctl start elasticsearch.service
$ sudo systemctl start kibana.service
Filebeatのインストールと設定
-
syslogの設定は割愛
- Paloからtrafficログとthreatログを受け取って/var/log/pan*.logに配置している前提
-
インストール
- yumで入れる
$ sudo yum install filebeat
- Palo Alto Network moduleの有効化・設定
$ sudo filebeat modules enable panw
$ sudo vi /etc/filebeat/modules.d/panw.yml
/etc/filebeat/modules.d/panw.yml
- module: panw
panos:
enabled: true
var.paths: ["/var/log/pan*.log"]
var.input: "file"
- Filebeatの設定
- ElasticsearchとKibanaを指定する
- 以下は変更箇所のみ、他はデフォルト値
$ sudo vi /etc/filebeat/filebeat.yml
/etc/filebeat/filebeat.yml
setup.kibana:
host: "<Elasticsearch+KibanaサーバーのIP>:5601"
output.elasticsearch:
hosts: ["<Elasticsearch+KibanaサーバーのIP>:9200"]
- Filebeatのセットアップ
- Moduleのデータ変換設定とダッシュボード設定がElastichsearchとKibanaに反映される
$ sudo filebeat setup -e
- Filebeatのサービス起動設定
$ sudo systemctl enable filebeat
$ sudo systemctl start filebeat
ダッシュボード確認
- Kibanaに接続し、Dashboardを確認
![20191219_140404_3757.JPG]
(https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/317139/94f88207-9e80-ee8f-6584-cee5dbb49ab4.jpeg) - traffic用とthreat用のダッシュボードが用意されている
余談
さも運用中のSyslogサーバーに導入した感じで書いたが、実際は記事のために突貫でVMのFWとSyslogサーバーを立てたためデータが少なく見栄えしなかった。
参考
インフラエンジニア向けPaloalto Networks VM-Series for AWSを使ってみる
Filebeat
Filebeat module
Elastic Common Schemaについて
Filebeatの性能チューニングポイントまとめ