FileBeat+ELK安装

一、概要

1、开发和测试环境查看日志有点麻烦,现在搭建一个ELK系统收集日志,方便查询和统计。每天所有开发、测试服务器的日志加起来200M左右,数据的准确性要求不是那么高,Logstash、Elasticsearch 单节点就够用了。

2、ELK是现在比较流行的日志收集解决方案,ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

3、下载 https://www.elastic.co/cn/products

4、现在选择FileBeat => Logstash => Elasticsearch => Kibana 这套方案

5、以下内容的路径和IP根据实际情况修改。

二、安装及启动

1、采用tar包安装,版本filebeat-6.5.1-linux-x86_64.tar.gz、logstash-6.5.1.tar.gz、elasticsearch-6.5.1.tar.gz、kibana-6.5.1-linux-x86_64.tar.gz

2、elasticsearch安装在192.168.18.13的/home/es下面,配置文件在./config文件夹下,elasticsearch.yml一般修改path.data、path.logs、network.host就可以了

jvm.options根据实际情况修改,其他几个配置文件一般默认就可以。

然后  执行 ./elasticsearch -d,

注意:elasticsearch不能以root启动,useradd es,su es

启动是可能报错,需要修改一些配置文件,参考https://blog.csdn.net/yjclsx/article/details/81302041

关闭elasticsearch kill-9 (优雅的关闭方式待完善)

3、kibana安装在192.168.18.13的 /usr/local/kibana 下面,修改config文件夹下面的kibana.yml,一般只修改elasticsearch.url: "http://192.168.18.13:9200" 就可以了。

kibana和elasticsearch的ssl的认证没有打开

启动:nohup ./bin/kibana &  

关闭:kill -9 (优雅的起停服务待完善)

3、logstash安装在192.168.18.13的 /usr/local/logstash 文件夹下,修改logstash-sample.conf,elasticsearch.hosts = 192.168.18.13:9200,然后增加filter(具体根据业务需求)

启动nohup ./bin/logstash   -f   ./config/logstash-sample.conf  &

注意:./bin/logstash  -t  ./config/logstash-sample.conf是测试配置文件,默认的配置文件测试时会报错的,但是可以启动(具体原因没查,可能test写的有问题)

需要配置 date { match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ]} 要不然查到的都是增加了8小时的数据(时区原因,时间timestamp字段会默认增加8小时)

根据我们的业务需求修改  ./vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/java(以下是根据项目的实际情况做的新增、修改

新增:BTBS_LOG_LEVEL (INFO|DEBUG|ERROR|WARN|TRACE)
新增:BTBS_TOMCAT_DATESTAMP %{YEAR}-%{MONTHNUM}-%{MONTHDAY} %{HOUR}:?%{MINUTE}:?%{SECOND}
新增:BTBS_TOMCATLOG %{BTBS_TOMCAT_DATESTAMP:btbs_timestamp} %{BTBS_LOG_LEVEL:level}

坑:不能使用timestamp(btbs_timestamp),timestamp是系统默认的字段,配置之后正则可能无法生效

multiline功能filebeat已有,logstash无需安装该插件

4、filebeat安装在每台需要收集日志的机器上,统一安装在:/work/filebeat ,修改 filebeat.yml 

filebeat.inputs.enabled: true、filebeat.inputs.enabled.paths: - /var/log/btbs/*/main.log 、multiline.pattern: ^[^\d] 、multiline.match: after

注释 output.elasticsearch 相关配置

打开  output.logstash:hosts: ["192.168.18.13:5044"]

filebeat与logstash的ssl认证没有打开

启动:nohup ./filebeat -e -c filebeat.yml &

关闭:kill -9 (优雅的起停服务待完善)

5、 因为elasticsearch是安装在内网,公网服务器无法访问,而且公网是非固定IP(如果elasticsearch在公网,这条不用关心)

增加端口映射。把公网的5044端口映射到192.168.13的5044端口上

在192.168.18.10增加/home/work/task/filebeat-config-task.sh,并添加到crontab定时任务,每5分钟执行一次,该脚本会判断公网IP是否改变,如果改变则会执行远程的/work/filebeat/start-filebeat.sh脚本

在各filebeat节点的/work/filebeat/下增加 start-filebeat.sh

在192.168.18.10的jnekins上增加任务start-one-filebeat,可以手动执行远程的/work/filebeat/start-filebeat.sh脚本

filebeat-config-task.sh

#!/bin/bash

remote_ip_arr=("100.137.151.11" "135.110.67.67")

myip=$(wget -qO - ifconfig.co)

ipconfig="$(cat /home/es/task/ip-address.conf)"

last_ip="${ipconfig[0]}"


if [ "$last_ip" != "$myip" ]
then
  remote_shell='/work/filebeat/start-filebeat.sh '$myip

  for remote_ip in ${remote_ip_arr[@]}
  do
    ssh root@${remote_ip} $remote_shell
  done

  echo "$myip" > /home/es/task/ip-address.conf
else
 echo 'same ip'
fi

start-filebeat.sh

#!/bin/bash

ip_address=$1

param="output.logstash.hosts=["$ip_address:5044"]"

pid=$(ps -ef|grep 'filebeat -e'|grep -v 'grep'|awk '{print $2}')

echo $pid

if [ -n "$pid" ]; then 
    kill -9 $pid
    sleep 1
fi

cd /work/filebeat/
echo "$param"

nohup ./filebeat -e -E "$param" >/dev/null 2>&1 &

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值