问题背景

由于微服务很多,在查询时有些比较频繁,事先设置好常用的查询,操作更友好

graylog+kafka+zookeeper(单机测试及源码),graylog组件部署,查找问题分析(一)

graylog+kafka+zookeeper(单机测试及源码),kafka+zookeeper组件部署(二)

graylog+kafka+zookeeper(单机测试及源码),graylog测试用例及源码(三)

graylog+kafka+zookeeper(单机测试及源码),graylog收集kafka(脚本创建发布订阅方式)存储的消息(四)

graylog+kafka+zookeeper(单机测试及源码),graylog设置URL报警方式(五)

graylog+kafka+zookeeper(单机测试及源码),graylog+filebeat+sidecars收集log日志(六)

graylog+kafka+zookeeper(单机测试及源码),微服务日志查询使用(七)

graylog+kafka+zookeeper(单机测试及源码),仪表板Dashboards创建及使用(八)

graylog+kafka+zookeeper(单机测试及源码),indices索引和streams流创建及使用,日志定期删除功能(九)

方案一 通过logback方式进行发送日志

1 先通过查询条件找出需要的微服务如,以此类推,选择查询时间,点击保存,输入名字
authentication-server微服务的正常日志

app_name:authentication-server AND (level_name:INFO OR level_name:WARN OR level_name:DEBUG)

authentication-server微服务的错误日志

app_name:authentication-server AND level_name:ERROR



这样就可以每次直接查询想要的微服务了

2 点击search,在点击Load

3 点击Load之后,选择需要查询的微服务日志

3 选择authentication-server-INFO,再选择查询时间,点击查询按钮,查询语法
显示如下

方案二 通过filebeat+sidecar方式

1 每台服务需要安装filebeat和sidecar

2 设置查询条件,直接选择查找的日志,因为filebeat方式没有像logback的方式可以设置服务名app_name,并且没有日志等级level_name,所以查询并不方便,也没有traceId,spanId,parentId等,唯一能分服务查询使用的是日志存储的路径名,因为在打印日志时,已经区分了ERROR日志,和INFO日志,具体语法如下:

filebeat_log_file_path:\/usr\/local\/adayun\/authentication\-server\/logs\/app.log
filebeat_log_file_path:\/usr\/local\/adayun\/authentication\-server\/logs\/app-error.log

反斜杠为转义字符


3 sidecar前缀开头的是filebeat+sidecar查询方式

4 选择sidecar-authentication-server-INFO,再选择查询时间,点击查询按钮,显示如下

方案选择总结

  • 推荐使用logbcak方式,因为filebeat有非常大的局限性,很多查询条件没有了,比如没有日志等级、微服务名、traceId、spanId、parentId等查询条件

  • 使用logback方式,可以根据traceId条件查询,找到一条链路所打印的日志,例如使用查询条件traceId:bd93b472a6acde19,可以一次性找到一条链路的信息

  • 如果要使用filebeat追踪链路日志,需要在日志打印的时候,手动添加traceId在message,这样可以作为查询条件使用,但还是推荐logback,这也是官方推荐,可以看到traceId、spanId、parentId等信息,如下所示

心得

  • 这样设置之后,用起来很方便,大家有好的方法也可以留言




作为程序员第 24 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric: 开心的被粘手

Logo

Kafka开源项目指南提供详尽教程,助开发者掌握其架构、配置和使用,实现高效数据流管理和实时处理。它高性能、可扩展,适合日志收集和实时数据处理,通过持久化保障数据安全,是企业大数据生态系统的核心。

更多推荐