EFK实战二 - 日志集成

本文涉及的产品
云解析 DNS,旗舰版 1个月
日志服务 SLS,月写入数据量 50GB 1个月
全局流量管理 GTM,标准版 1个月
简介: 在EFK基础架构中,我们需要在客户端部署Filebeat,通过Filebeat将日志收集并传到LogStash中。

前言


在LogStash中对日志进行解析后再将日志传输到ElasticSearch中,最后通过Kibana查看日志。

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


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


2020-01-0910:03:26,719INFO========GetCostCenterStart===============2020-01-0910:03:44,267WARN成本中心编码少于10位!{"deptId":"D000004345","companyCode":"01"}
2020-01-0910:22:37,193ERRORjava.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安装配置



  • 将下载后的文件上传至服务器并解压
    tar -zxvf filebeat-7.5.1-linux-x86_64.tar.gz


  • 修改filebeat.yml,


filebeat.inputs:
-type: logenabled: truepaths:
-/app/weaver/Resin/log/xxx.log


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


output.logstash:
#TheLogstashhostshosts: ["172.31.0.207:5044"]


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


  • 启动filebeat
    ./filebeat -e -c filebeat.yml
    如果需要静默启动,则使用nohup ./filebeat -e -c filebeat.yml & 命令启动即可


logstash配置


logstash的配置主要分为三段inputfilteroutput


input用于指定输入,主要是开放端口给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查看写入的日志结果如下:

1.jpg


日志显示有2个问题:


  • 由于错误日志堆栈信息有多行,在kibana中展示成了多行,数据查看很乱。需要将堆栈异常整理成一行显示。


  • 需要对日志进行解析,拆成“时间 日志级别 日志详情”的显示格式。


优化升级


  • 在filebeat中设置合并行
    filebeat默认是行传输的,但是我们的日志肯定是多行一个日志,我们要把多行合并到一起就要找到日志的规律。比如我们的日志格式全都是以时间格式开头,所以我们在filebeat中filebeat.inputs区域添加如下几行配置


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


  • 在logstash中设置对日志的解析
    将日志解析成“时间 日志级别 日志详情”的展示格式,所以我们需要在logstash配置文件中添加filter段


filter {
grok{
match=> {
"message"=>"(?<date>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}),\d{3} %{LOGLEVEL:loglevel} (?<des>.*)"    }
  }
}


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


2.png


配置完成后我们重新打开kibana Discover界面查看日志,符合预期,完美!


3.png


常见问题

kibana 乱码


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


filebeat.inputs:
-type: logenabled: truepaths:
-/app/weaver/Resin/log/xxx.logencoding: GB2312


kibana 提取字段出错


4.png


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


5.png


查看周围文件


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


6.png


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


动态索引


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


  • 在filebeat中给日志打上标记


-type: log  ......
fields:
logType: oabusiness


  • 在logstash中根据标记生成索引


input {
beats {
port=>5044  }
}
filter {
if [fields][logType] =="oabusiness" {
grok{
match=> {
"message"=>"(?<date>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}),\d{3} %{LOGLEVEL:loglevel} (?<des>.*)"      }
    }
  }
}
output {
elasticsearch {
hosts=> ["http://172.31.0.207:9200"]
index=>"%{[fields][logType]}-%{+YYYY.MM.dd}"user=>"elastic"password=>"elastic"  }
}


好了,各位朋友们,本期的内容到此就全部结束啦,能看到这里的同学都是优秀的同学,下一个升职加薪的就是你了!


如果觉得这篇文章对你有所帮助的话请扫描下面二维码加个关注。“转发” 加 “在看”,养成好习惯!咱们下期再见!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
10天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
40 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
29天前
|
Java 程序员 应用服务中间件
「测试线排查的一些经验-中篇」&& 调试日志实战
「测试线排查的一些经验-中篇」&& 调试日志实战
20 1
「测试线排查的一些经验-中篇」&& 调试日志实战
|
15天前
|
Java 程序员 API
Android|集成 slf4j + logback 作为日志框架
做个简单改造,统一 Android APP 和 Java 后端项目打印日志的体验。
67 1
|
24天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
44 0
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
50 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
105 0
|
3月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
226 0
|
3月前
|
数据库 Java 监控
Struts 2 日志管理化身神秘魔法师,洞察应用运行乾坤,演绎奇幻篇章!
【8月更文挑战第31天】在软件开发中,了解应用运行状况至关重要。日志管理作为 Struts 2 应用的关键组件,记录着每个动作和决策,如同监控摄像头,帮助我们迅速定位问题、分析性能和使用情况,为优化提供依据。Struts 2 支持多种日志框架(如 Log4j、Logback),便于配置日志级别、格式和输出位置。通过在 Action 类中添加日志记录,我们能在开发过程中获取详细信息,及时发现并解决问题。合理配置日志不仅有助于调试,还能分析用户行为,提升应用性能和稳定性。
53 0
|
3月前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
50 0
|
5天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
93 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
下一篇
无影云桌面