EFK实战之如何实现日志集成

发布时间:2021-10-23 14:31:57 作者:iii
来源:亿速云 阅读:113

本篇内容主要讲解“EFK实战之如何实现日志集成”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“EFK实战之如何实现日志集成”吧!

前言

在EFK基础架构中,我们需要在客户端部署Filebeat,通过Filebeat将日志收集并传到LogStash中。在LogStash中对日志进行解析后再将日志传输到ElasticSearch中,最后通过Kibana查看日志。

上文已经搭建好了EFK的基础环境,本文我们通过真实案例打通三者之间的数据传输以及解决EFK在使用过程中的一些常见问题。

首先看一下实际的业务日志

2020-01-09 10:03:26,719 INFO ========GetCostCenter Start===============
2020-01-09 10:03:44,267 WARN 成本中心编码少于10位!{"deptId":"D000004345","companyCode":"01"}
2020-01-09 10:22:37,193 ERROR java.lang.IllegalStateException: SessionImpl[abcpI7fK-WYnW4nzXrv7w,]: can't call getAttribute() when session is no longer valid.
 at com.caucho.server.session.SessionImpl.getAttribute(SessionImpl.java:283)
 at weaver.filter.PFixFilter.doFilter(PFixFilter.java:73)
 at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
 at weaver.filter.MonitorXFixIPFilter.doFilter(MonitorXFixIPFilter.java:30)
 at weaver.filter.MonitorForbiddenUrlFilter.doFilter(MonitorForbiddenUrlFilter.java:133)

「日志组成格式为:」
时间 日志级别 日志详情
那么我们的主要任务就是将这段日志正常写入EFK中。

filebeat安装配置

filebeat.inputs:- type: log  enabled: true  paths:    - /app/weaver/Resin/log/xxx.log

此段配置日志输入,指定日志存储路径

output.logstash:  # The Logstash hosts  hosts: ["172.31.0.207:5044"]

此段配置日志输出,指定Logstash存储路径

logstash配置

logstash的配置主要分为三段 inputfilteroutputinput用于指定输入,主要是开放端口给Filebeat用于接收日志filter用于指定过滤,对日志内容进行解析过滤。output用于指定输出,直接配置ES的地址即可

input {  beats {    port => 5044  }}output {  elasticsearch {    hosts => ["http://172.31.0.127:9200"]    index => "myindex-%{+YYYY.MM.dd}"    user => "elastic"    password => "xxxxxx"  }}

我们配置好logstash后通过命令重启logstash
docker-compose -f elk.yml restart logstash

经过上述两步配置后应用程序往日志文件写入日志,filebeat会将日志写入logstash。在kibana查看写入的日志结果如下:EFK实战之如何实现日志集成

日志显示有2个问题:

优化升级

  # 以日期作为前缀  multiline.pattern: ^\d{4}-\d{1,2}-\d{1,2}  # 开启多行合并  multiline.negate: true  # 合并到上一行之后  multiline.match: after
filter {
	grok{
		match => {
			"message">

这里主要是使用grok语法对日志进行解析,通过正则表达式对日志进行过滤。大家可以通过kibana里的grok调试工具进行调试EFK实战之如何实现日志集成

配置完成后我们重新打开kibana Discover界面查看日志,符合预期,完美!EFK实战之如何实现日志集成

常见问题

kibana 乱码

这个主要原因还是客户端日志文件格式有问题,大家可以通过 file xxx.log查看日志文件的编码格式,如果是ISO8859的编码基本都会乱码,我们可以在filebeat配置文件中通过encoding指定日志编码进行传输。

filebeat.inputs:- type: log  enabled: true  paths:    - /app/weaver/Resin/log/xxx.log  encoding: GB2312

kibana 提取字段出错

EFK实战之如何实现日志集成

如上所示,打开kibana Discover面板时出现此异常,大家只要删除ES中的 .kibana_1索引然后重新访问Kibana即可。EFK实战之如何实现日志集成

查看周围文件

我们在终端查看日志某关键字时一般会查上下文信息便于排查问题,如经常用到的指令 cat xxx.log | grep -C50 keyword,那么在Kibana中如何实现这功能呢。EFK实战之如何实现日志集成

在Kibana中搜索关键字,然后找到具体日志记录,点击左边向下箭头,然后再点击“查看周围文档”即可实现。

动态索引

我们日志平台可能需要对接多个业务系统,需要根据业务系统建立不同的索引。

- type: log  ......  fields:    logType: oabusiness
input {
  beats {
    port => 5044
  }
}
filter {
  if [fields][logType] == "oabusiness">

到此,相信大家对“EFK实战之如何实现日志集成”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. Apollo的基本概念和集成实战
  2. shareinstall之IOS集成

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

logstash kibana

上一篇:如何在Linux下根据运行的进程监控CPU使用率

下一篇:Nginx的应用场景是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》