Elasticsearch + Kibana + Logstash + Filebeat でシスログ監視 [7.x]
概要
シスログ監視をElasticsearch + Kibana + + Logstash + Filebeat を一括で行って見た際の実行ログ
公式リンク
Wikiより
ElasticsearchはLucene基盤の分散処理マルチテナント対応検索エンジンである。
オープンソースソフトウェアだが、現在はオランダ・アムステルダムに本社を置くElastic社が中心になって開発が進められている[1]。
なお「Elastic Search」といったように間に空白を入れる・「search」の頭を大文字にするといった表記は誤り
(ただしVer.1.0.0リリース前にはそのような表記も混在していた)
各ソフトウェアについての概要と実装言語
beats | 概要 | 言語 |
---|---|---|
elasticsearch | 分散型RESTful検索エンジン | Java |
kibana | ブラウザーベースの分析および検索ダッシュボード | JavaScript |
Filebeat | ログファイルの収集 | Go |
Metricbeat | CPU,メモリ等の情報収集 | Go |
Packetbeat | パケット情報の収集 | Go |
Winlogbeat | Windowsのイベントログの収集 | Go |
Auditbeat | 監査データの収集 | Go |
Heartbeat | リモートから稼働状況の監視 | Go |
logstash | サーバー側のデータ処理パイプライン | Ruby |
簡単な用語まとめ
beats | 概要 | 参考 |
---|---|---|
cluster | 同一の名前を持つnodeの集合 | |
index | RDBにおけるデータベース | |
type | RDBにおけるテーブル | |
field | RDBにおけるカラム | |
document | RDBにおけるレコード | |
mapping | RDBにおけるスキーマ定義 | |
node | elasticsearchインスタンスを実行している単位 |
環境
$ uname -r
3.10.0-957.el7.x86_64
$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
デフォルトポート
今回は下記のように設定しています。
既に使用済みの場合は適宜変更してください
プロセス | ポート番号 |
---|---|
Elastisearch | 9200 |
Kibana | 5201 |
Logstash | 5044 |
構築するイメージ
インストール前準備
# Javaインストール
$ yum search java-1.8.0-openjdk
$ yum -y install java-1.8.0-openjdk
$ export JAVA_HOME=/usr/bin/java
# リポジトリ登録
$ rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
$ vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
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=1
autorefresh=1
type=rpm-md
インストール
Elasticsearchインストール
GitHub : elastic/elasticsearch
# インストール
$ yum install -y elasticsearch
# 外部からアクセスできるように設定
$ vim /etc/elasticsearch/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
# Elasticsearch起動/確認
$ systemctl enable elasticsearch.service
$ systemctl start elasticsearch.service
$ systemctl status elasticsearch.service
$ curl [IPアドレス]:9200
Kibanaインストール
GitHub : elastic/kibana
# インストール
$ yum install -y kibana
# 外部からアクセスできるように設定
$ vim /etc/kibana/kibana.yml
server.host: "[IPアドレス]"
# Kibana起動/確認
$ systemctl enable kibana.service
$ systemctl start kibana.service
$ systemctl status kibana.service
$ curl -XGET 'http://[IPアドレス]:9200/filebeat-*/_search?pretty'
Logstashインストール
# インストール
$ yum -y install logstash
# フィルター用のファイルを作成
$ vim /etc/logstash/conf.d/01-syslog.conf
input {
beats {
port => "5044"
type => "beats"
}
}
output {
elasticsearch {
hosts => ["[IPアドレス]9200"]
index => "squid-%{+YYYY.MM}"
}
}
# サービス起動/確認
$ systemctl start logstash
$ systemctl status logstash
# ログを監視
tail -f /var/log/logstash/logstash-plain.log
Filebeatインストール (監視対象ノード)
GitHub : elastic/beats/filebeat
# インストール
$ yum -y install filebeat
# syslogを収集するように設定
$ vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: syslog
protocol.udp:
host: "192.168.1.238:9000"
- type: log
enabled: false
paths:
- /var/log/messages
# Kibana連携
$ vim /etc/kibana/kibana.yml
setup.kibana:
host: "[IPアドレス]:5601"
# Elasticsearch連携
$ vim /etc/kibana/kibana.yml
output.elasticsearch:
hosts: ["[IPアドレス]:9200"]
# 実行
$ filebeat setup
$ systemctl start filebeat
Metricbeat
# インストール
$ yum -y install metricbeat
# 設定ファイル編集
setup.kibana:
host: "[IPアドレス]:5601"
output.elasticsearch:
hosts: ["[IPアドレス]:9200"]
# 実行
$ metricbeat setup
$ systemctl start metricbeat
$ systemctl status metricbeat
logを送信してみる
動作確認するためのコマンドです。
# ログファイルへ追記する
$ logger "test log"
# pingでネットワーク通信を実行
$ ping -s 1M 192.168.179.10
上記実行後にKibanaからログが見れれば動作成功。
イメージ
メトリクス
ログ検索
apacheモジュール
beatにあるapacheモジュールを使うことでアクセスログやアクセス元の地域を可視化することができます。
また、ブラウザの種類やアクセス数なども特別な設定をせずにみることもできます。
# モジュールを有効化
$ filebeat modules enable apache2
# モジュールリストを表示
$ filebeat modules list
# 設定ファイル
$ vim /etc/filebeat/modules.d/apache2.yml
- module: apache2
# Access logs
access:
enabled: true
var.paths:
- /var/log/httpd/access_log
# Error logs
error:
enabled: true
var.paths:
- /var/log/httpd/error_log
# サービス再起動
$ systemctl restart filebeat
Index Lifecycle Policies
ここまでの設定のままだとログが無限に溜まってく一方です。
そこで削除するようなライフサイクルポリシーを定義します。
kibanaを開き Management > Index Lifecycle Policies > Create Policyを選択
ここで「Hot phase」、「Warm phase」、「Cold phase」、「Delete phase」とあります。
詳しい説明は下記をご参照ください。
ここでは削除までの定義としてDelete phaseに下記のように設定します。
Optimizing Elasticsearch – Part 2: Index Lifecycle Management
上記の意味は4日前に作成されたインデックスを削除するといった意味です。
そのあとは1階層上へ戻り下記のように選択します。
そこでmetricbeatのログやfilebeatのログなどこのポリシーを適用したいログを選択してください。
参考記事
はじめての Elasticsearch
Filebeat にモジュール機能が追加され、ログ可視化が簡単になりました
Kibanaで簡単! サクサク ビジュアライズしよう!
Filebeatの性能チューニングポイントまとめ
参考スライド
アプリケーション(パフォーマンス) 監視入門 - Elastic編
ElasticSearch+Kibanaでログデータの検索と視覚化を実現するテクニックと運用ノウハウ
Author And Source
この問題について(Elasticsearch + Kibana + Logstash + Filebeat でシスログ監視 [7.x]), 我々は、より多くの情報をここで見つけました https://qiita.com/ryuichi1208/items/910764e721c47ba31386著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .