ubuntu 18.04 + Elasticsearch + kibana + logstash (file+http) + apacheのログ監視
0.概要
Kibana + Elasticsearch + Logstashを導入してApacheのログを監視する。
一般的なファイルにアタッチしてログを吸い取る方法から、ネットワーク越しにログを受け取る方法まで。
1. Installation
$ sudo apt-get install openjdk-8-jdk
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# add configuration
network.host:0.0.0.0
$ sudo vi /etc/elasticsearch/jvm.options
# modify configuration
-Xmx64m
-Xms64m
$ sudo systemctl start elasticsearch
$ systemctl status elasticsearch
$ sudo systemctl enable elasticsearch
$ sudo apt-get install kibana
$ sudo vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"
$ sudo systemctl start kibana
$ systemctl status kibana
$ sudo systemctl enable kibana
$ sudo apt-get install logstash
$ sudo systemctl start logstash
$ systemctl status logstash
$ sudo systemctl enable logstash
2. Settings
$ sudo vim /etc/logstash/conf.d/apache.conf
$ sudo apt-get install openjdk-8-jdk
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
$ sudo apt-get install apt-transport-https
$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
$ sudo apt-get update && sudo apt-get install elasticsearch
$ sudo vi /etc/elasticsearch/elasticsearch.yml
# add configuration
network.host:0.0.0.0
$ sudo vi /etc/elasticsearch/jvm.options
# modify configuration
-Xmx64m
-Xms64m
$ sudo systemctl start elasticsearch
$ systemctl status elasticsearch
$ sudo systemctl enable elasticsearch
$ sudo apt-get install kibana
$ sudo vi /etc/kibana/kibana.yml
server.host: "0.0.0.0"
$ sudo systemctl start kibana
$ systemctl status kibana
$ sudo systemctl enable kibana
$ sudo apt-get install logstash
$ sudo systemctl start logstash
$ systemctl status logstash
$ sudo systemctl enable logstash
$ sudo vim /etc/logstash/conf.d/apache.conf
以下を入力
input {
file {
path=> "/var/log/apache2/access.log"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
再起動
$ sudo systemctl restart logstash.service
Kibanaを開き、Management->Index Patterns -> Create Index Patternでapacheを追加。
これでログが監視できるようになる。
3. Check & Delete
Check
データベースの一覧が返ってくる
$ curl http://localhost:9200/_cat/indices?v
こんな感じに帰ってくる
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open index YZfpJsZAStOXOSynXNvxpQ 5 1 0 0 868b 868b
yellow open apache m5JbbZVITx6q-LxNHKW-TA 5 1 199 0 534.7kb 534.7kb
yellow open .kibana bngpvzOfRJ2UYLan0WvfYA 1 1 3 0 15.3kb 15.3kb
これでIndexを確認して、いらないデータベースは以下の手順で消す。
Delete
$ curl -XDELETE localhost:9200/index/type/[INDEX NAME]
4. Application
このままだと内部のファイルしか可視化できないため、外部からJSON形式でログを送って保存させる。
それにはHTTP Pluginという元から入っているものを使えばよいが、普通にConfigファイルを記述すると競合してしまう。
以下のようにConfigファイルを書けば競合を防ぐことが出来る。
まずApache
input {
file {
tags => "apache"
path=> "/var/log/apache2/access.log"
}
}
filter {
if "apache" in [tags] {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
}
output {
if "apache" in [tags]{
elasticsearch {
hosts => ["localhost:9200"]
index => "apache"
}
}
}
次に外部Json
input {
http {
tags => "external"
host=> "0.0.0.0"
port=> 31000
}
}
output {
if "external" in [tags] {
elasticsearch {
hosts => ["localhost:9200"]
index => "external"
}
}
}
もし、内部ループバックによるログしか(内部からしか)受け取らない場合は127.0.0.1
をhostに指定
後はLogstashを再起動して、以下でログ送信
curl -H "content-type: application/json" -XPUT 'http://127.0.0.1:31000/' -d '{
"user" : "log",
"post_date" : "2009-11-15T14:12:12",
"message" : "hello"
}'
因みにURLの後もスラッシュを付けてHeaderを指定できる
'http://127.0.0.1:31000/[Request_URI]'
なのでWebページのクローリング結果等を入れる場合は、WebページのURLをそのまま続けて入れてもよいかもしれない。
Author And Source
この問題について(ubuntu 18.04 + Elasticsearch + kibana + logstash (file+http) + apacheのログ監視), 我々は、より多くの情報をここで見つけました https://qiita.com/harmegiddo/items/179163175b9533eb35cb著者帰属:元の著者の情報は、元の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 .