在分布式系统中,一台主机可能有多个应用,应用将日志输出到主机的指定目录,这时由logstash来搬运日志并解析日志,然后输出到elasticsearch上。由于于 logstash是java应用,解析日志是非的消耗cpu和内存,logstash安装在应用部署的机器上显得非常的笨重。最常见的做法是用filebeat部署在应用的机器上,logstash单独部署,然后由 filebeat将日志输出给logstash解析,解析完由logstash再传给elasticsearch。
1.下载安装Logstash
地址;https://www.elastic.co/cn/downloads/past-releases#logstash
cd /home/niuhao/elasticsearch
tar -zxvf logstash-6.7.1.tar.gz
#启动
cd /home/niuhao/elasticsearch/logstash-6.7.1/bin
nohup ./logstash -f logstash.conf > logstash.out 2>&1 &
#启动即可/ 将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出
ps -ef |grep logstash
修改logstash-sample.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch {
#集群
# hosts => ["http://10.0.0.5:9200", "http://10.0.0.13:9200", "http://10.0.0.17:9200"]
hosts => ["http://192.168.154.128:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
2.下载安装filebeat
cd /home/niuhao/elasticsearch
tar -zxvf filebeat-6.7.1-linux-x86_64.tar.gz
#启动即可(logstash启动成功后filebeat才能启动成功,即4567,9600端口启动)
cd /home/niuhao/elasticsearch/filebeat-6.7.1-linux-x86_64
nohup ./filebeat -e -c filebeat.yml > filebeat.out 2>&1 &
ps -ef |grep filebeat
netstat -nptl
修改:filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/service-hi.log
setup.kibana:
host: "192.168.154.128:5601"
output.logstash:
hosts: ["192.168.154.128:5044"]
主要配置的是日志的搜集目录为/var/log/service-hi.log,这个目录是应用service-hi输出日志的文件。