ELK日志接入流程

本文详细介绍了如何将java项目的日志接入到ELK(Elasticsearch、Logstash、Kibana)环境,包括日志格式改造、Logstash和Filebeat配置、Kafka消息队列的检查以及ELK集群的监控。通过这个过程,确保日志数据能够顺利从生产环境传输到ELK,并在Kibana中进行有效管理和分析。
摘要由CSDN通过智能技术生成

首先接入测试环境中进行适配测试,确认无误后,根据生产环境上线安排或做重启操作,最后完成生产环境的接入。

以下是通用接入步骤,使用正式环境部署路径,截图为例,配置文件内容见文章末尾:

(一) 以下步骤和操作仅针对java项目,根据日志引擎输出的日志格式,使用log4j或者log4j2的配置文件为模板,和研发人员协商进行日志改造,改造完毕后重启应用,确认输出新格式的日志, 整改前的旧日志删除掉或者移动到其他目录作为归档(生产和测试适用)。准备先接入到ELK测试环境。

(二) 编辑logstash配置文件,加入新项目的配置:

vim /data/ELK/logstash/config/conf.d/logstash_kafka_to_es.conf

(1) 在input模块下,复制一段kafka的配置段(注意花括号范围),项目分组group_id可自定义,不同服务划分为不同的组group,如下图中的HDPRO_ELK_JAVA_idr-attendance,然后定义项目标签名,修改topics和type为idr-attendance,这两个字段保持一致。注意不同的logstash节点下的配置差别是client_id,用来标识不同的logstash节点身份。其次就是出于负载均衡配置的考虑,不同的logstash节点需保持项目分组group_id一致,其他配置项作用详见Logstash-7.5.2搭建流程

 

(2) 在filter模块下,复制一段if匹配规则的配置段(注意花括号范围),根据上述步骤(1)中的type字段,修改相应的地方,非java项目需要修改patterns_dir下相关的日志格式匹配规则,此处不赘述;

(3) 在output模块下,复制一段if匹配规则的配置段(注意花括号范围),根据上述步骤(1)中的type字段,修改相应的地方,同时修改索引字段index,索引命名规则测试环境统一为[type-test_date]的模式,如idr-attendance-test_%{+YYYY.MM.dd},而正式环境则不加"test",如下图;

(4) 最后保存后,使用systemctl restart logstash 重启logstash服务让新增配置生效

(三) 在产生日志的服务器上,(1)检查日志所在服务器系统时间是否在上海时区,系统时间是否和ELK集群同步,时间是否正常;(2)检查filebeat到kafka的网络链路(9200端口)是否联通。然后根据filebeat配置文件模板修改配置文件/etc/filebeat/filebeat.yml,filebeat中的项目名称字段tags等和上述logstash中保持一致,注意host_ip字段更改为生产日志服务器的ip地址,日志编码不为UTF-8的可根据实际编码使用encoding选项修改,最后部署并启动filebeat服务,做好开机自启动

(四) 登录kibana,点击左边菜单栏图标,找到设置小齿轮-索引管理,搜索步骤(二)中项目所配置的索引名称,如idr-attendance,查看新项目所新增的索引是否已经入库,如有则项目日志添加到ELK完成,如下图,后续就是新建索引模式,新建角色,用户,进行相关索引查看权限授权,项目日志的接入工作结束,如无,则接着看下一个步骤

(五) 登录到kafka集群节点中的任意服务器,查看kafka中由filebeat所传递过来的新项目的消息队列情况,

(1) 查看是否存在数据,使用的命令为(注意根据实际修改相应参数)

/data/kafka/bin/kafka-topics.sh --list --zookeeper 192.168.145.109:2181|grep 'idr-attendance'

(2) 如上图,确认有项目消息队列名称后,再确认队列中是否有日志数据,使用如下命令

/data/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.145.109:9092 --topic idr-attendance  --from-beginning

如上图,确认改项目消息队列中存在数据,排除网络原因,logstash一端基本上能拿到从kafka传递过来的数据,继而kibana中也能搜索到相关的索引。

(3) 由于日志改造前的日志数据已经进入到kafka的队列缓存中,这部分旧日志的数据是不必要传递到elasticsearch中的,也影响kibana上的观感,所以有时候需要手动清理一下kafka和zookeeper中的旧日志数据,以便重新接收日志改造后的数据(需确保服务器上旧格式的日志已经删除或者转移到其他地方),命令如下(自行修改相应的参数):

/data/kafka/bin/kafka-topics.sh --delete --bootstrap-server 192.168.145.109:9092 --topic idr-attendance

(4) 删除topic之后按照步骤(1)中"list"一下,查看 kafka中是否删除成功,若不成功,则需要到zookeeper上删除,如下

/data/zookeeper/bin/zkCli.sh

进入到zookeeper的终端后,查看并删除项目相关的消息队列名

ls /brokers/topics

rmr /brokers/topics/idr-attendance

(5) 若还是删除不完全,则需要把Kafka节点都暂停,删除Kafka的data目录(具体位置详见conf/server.properties的log.dirs配置项)下对应的主题topic所有的数据目录,然后重启kafka即可重新生成主题topic,然后重新加载数据流

 之后等待filebeat重新把数据传递过来即可再次在kafka上查看到,日志数据流更新完成

最后附上Logstash-7.5.2和Filebeat-7.10.0的配置文件模版:

Logstash:https://github.com/drowsc089/configuration_files/blob/master/ELK/logstash-7.5.2/conf/conf.d/logstash_kafka_to_es.conf

Filebeat:https://github.com/drowsc089/configuration_files/blob/master/ELK/filebeat-7.10.0/conf/filebeat.yml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值