本人3y,markdown程序员,一年CRUD经验,十年经验嘛,最后留一个TODO:运行应用的服务器一般都是集群,并且日志数据会记录在不同的机器上,所以只能登录到每台服务器进行排查和定位问题。今天就来聊聊这个话题。00.为什么需要分布式日志组件?在文章正式开始之前,先分享一个我之前负责的系统。它的架构是这样的:每次检查一个问题,我可能可以初步定位到逻辑层的问题,但是为了向业务方解释,我需要向业务方展示证据(日志信息是铁证)。一个请求必须由这8台机器中的一台来处理,但是是哪一台,我不知道。因此,我需要在每台机器上grep一条日志,然后才能找到对应的日志来证明我的分析。有的时候,接入层可能也需要一起参与,就为了排查一个问题,人傻(翻日志的时间太长了)。后来看到同事的风骚操作(在item2写了个脚本:快速登录堡垒机(不用输入账号密码信息),根据应用服务器数量切窗,切换到对应的日志目录)。说白了就是一键登录多个应用服务器。嗯,查看日志的速度比以前快多了。后来公司运维端主要推广了网页登录应用服务器(自动登录堡垒机),省去了写脚本(支持批量操作)。但是从当时的体验来看,item2的访问并不顺畅(总感觉卡住了)。但是还是有问题,因为我们经常不知道info/warn/error下面是哪个文件。大多数时候,您只能一个一个地检查文件。虽然可以直接用通配符搜索,但是如果日志太大,导致卡顿会很烦人。一旦系统被问到业务问题,检查日志的频率就太高了。所以在策划某Q的时候,就想自己把日志信息写到搜索引擎上,顺便学习一下搜索引擎的知识。然后这个方案被群里的一个大佬看到了,在下面评论说:不如试试Graylog吧?原来是群里自己在维护一个日志框架,但是我不知道……于是我连接上了Graylog日志,工作效率大大提高了。借着这件事,我吹了一个Q。自从连上后,我就没有登录过应用服务器,差点连一次grep都写不出来。01.轻量级ELK(Graylog)说起ELK,即使没用过,也一定听说过。它在后端非常受欢迎。这次austin连接的是一个比较轻量级的ELK框架:我觉得Graylog框架还是蛮好用的,作为用户连接起来也很简单(估计运维应该挺简单的,很多人用Graylog来直接发送UDP给Server,不需要在机器上安装代理收集日志)一张图顶十个字:官方文档:https://docs.graylog.org/docs据我所知,不少公司用它来查看日志和业务监控告警,本文就让大家直接体验一下。02.同样的方法部署Graylog,直接进入docker-compose,如果你一直跟着我的步骤走,应该不会陌生。docker-compose.yml的内容其实是从官网复制过来的,这里贴一下(大家不用看)version:'3'services:mongo:image:mongo:4.2networks:-graylogelasticsearch:图片:码头工人。elastic.co/elasticsearch/elasticsearch-oss:7.10.2环境:-http.host=0.0.0.0-transport.host=localhost-network.host=0.0.0.0-"ES_JAVA_OPTS=-Dlog4j2.formatMsgNoLookups=true-Xms512m-Xmx512m"ulimits:memlock:soft:-1hard:-1deploy:resources:limits:memory:1gnetworks:-grayloggraylog:image:graylog/graylog:4.2environment:-GRAYLOG_PASSWORD_SECRET=somepasswordpepper-GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918-GRAYLOG_HTTP_EXTERNAL_URI=http://ip:9009/#这里注意更改ip入口点:/usr/bin/tini--wait-for-itelasticsearch:9200--/docker-entrypoint.shnetworks:-graylogrestart:alwaysdepends_on:-mongo-elasticsearchports:-9009:9000-1514:1514-1514:1514/udp-12201:12201-12201:12201/udpnetworks:graylog:driver:bridge仅需要此文件改的就是ip(原来的端口是9000,我已经占用了9000端口,所以我这里把端口改成9009,大家放心)好了,写好docker-compose.yml文件后,直接docker-composeup-d它启动了。启动后,我们可以通过ip:port访问对应的Graylog后台地址。默认帐号和密码为admin/admin。然后,我们配置inputs的配置,找到GELFUDP,点击Launchnewinput,Title字段只需要填写,保存就大功告成(其他不用动)。好了,到这里,我们的GrayLog设置就完成了。03.SpringBoot使用GrayLog。还记得我们austin项目使用的日志框架吗?没错,就是logback。我们将日志数据写入Graylog是非常简单的。只需要两步:1.引入依赖:
