乐钱科技

台湾公司文档库


日志模块重构

<p>[toc]</p> <h1>方案分析</h1> <p>刚入职的时候写过关于我们日志模块的改造方案(基于之前的开发经验). 经过上周的对graylog工具的调研,发现了更加专业的日志解决方案,特此请大家共同参考下.</p> <p><strong>A.首先看下我们现有的日志技术栈</strong> <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/f6ccd88003f62443dc970b6840a090c4" alt="" /> <strong>B.使用Graylog的日志技术栈</strong> <img src="https://www.showdoc.com.cn/server/api/attachment/visitfile/sign/30e07b93ccdd1c52ffca5c7147ba88ec" alt="" /> <em>注1: 图中的虚线部分这个到时候得研究下能不能直接调用google的bigquery接口,这样就不需要依赖外部插件</em></p> <p><strong>C.我们从各项维度对比下这两种方案:</strong></p> <table> <thead> <tr> <th style="text-align: left;">因素</th> <th style="text-align: left;">ELK</th> <th style="text-align: left;">GRAYLOG</th> <th style="text-align: left;">备注</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">知名度</td> <td style="text-align: left;">高</td> <td style="text-align: left;">高</td> <td style="text-align: left;">elk成名更早</td> </tr> <tr> <td style="text-align: left;">应用场景</td> <td style="text-align: left;">大数据</td> <td style="text-align: left;">日志领域</td> <td style="text-align: left;">gray专业做日志管理</td> </tr> <tr> <td style="text-align: left;">是否免费</td> <td style="text-align: left;">有开源版本</td> <td style="text-align: left;">开源版本</td> <td style="text-align: left;">-</td> </tr> <tr> <td style="text-align: left;">运维成本</td> <td style="text-align: left;">高</td> <td style="text-align: left;">低</td> <td style="text-align: left;">学习,运维成本较高</td> </tr> <tr> <td style="text-align: left;">性能</td> <td style="text-align: left;">高</td> <td style="text-align: left;">更高</td> <td style="text-align: left;">elk臃肿庞大,gray专业简洁</td> </tr> <tr> <td style="text-align: left;">交互体验</td> <td style="text-align: left;">好</td> <td style="text-align: left;">更好</td> <td style="text-align: left;">-</td> </tr> </tbody> </table> <p>不做过多对比了, 这里有篇文章,比我讲的全面: <a href="https://www.cnblogs.com/lfl17718347843/p/14115046.html">https://www.cnblogs.com/lfl17718347843/p/14115046.html</a></p> <p><em>还有两点我认为比较重要的</em>:</p> <ul> <li>1 docker是原生支持graylog的,也就意味着服务部署的简化,且是udp协议,效能更佳.</li> <li>2 elk现在的日志收集,当控制台的单条日志内容过多导致跨行时,elk里面会出现截断,每一行一条日志,这个在排查问题的时候非常的难受. graylog经过对代码的处理可以做到日志记录的完整性.</li> <li>3 部分告警功能可以直接在graylog里面直接对接.对完善告警机制这一块提供了灵活性.</li> <li>4 elk 和 graylog 在日志的存储上都是使用的Elasticsearch, graylog很好的屏蔽了ES的复杂性和优化工作.</li> </ul> <p><strong>D.总结</strong> 不得不说,我之前的方案有点封闭了. 当下业内在面向容器开发服务时, 有了更多可选的优秀的日志管理方案.比如elk,graylog ... 经过上周对graylog的调研及可行性研究. 个人觉得它适合我们的技术栈.</p> <p>elk的话虽然很强大,但是门槛高,需要专业的运维人员来维护. 以elk的发展战略来看,它现在已经深耕大数据领域,日志管理只是它的一个基本场景.用它来管理小公司的日志数据平台.有点杀鸡用牛刀的感觉.</p> <p>相比elk,graylog在日志领域就显得更加专业(从名字上就可以看出来咯),在部署,配置,使用 层面都比elk要简单许多,外部依赖项少,还支持基于日志的告警模块. 即便是相关人员离职.也不会给现有开发人员留下太多尴尬,对于公司发展来讲更有利.</p> <h1>方案实施</h1> <ul> <li><strong>阶段一</strong> <ul> <li>a 本地搭建graylog环境</li> <li>b 重构或者重写项目中的glog模块对接gelf的日志格式,发送到graylog.同时兼容现有elk方案,配置个开关.</li> <li>c 模拟崩溃,docker日志发送到graylog.</li> <li>d 编写graylog相关文档,供大家学习使用.</li> </ul></li> <li><strong>阶段二</strong> <ul> <li>a 让PP站使用上新版的日志模块</li> <li>b 把PP站的elk部署事项移除,更换为graylog.</li> <li>c 大家都观察体验一段时间.</li> <li>d 研究下项目中bigquery日志部分.</li> <li>e 结合分析量,对graylog设置内存,磁盘,过期等参数配置.</li> <li>f 添加部分已知的告警模块(钉钉运维群,告警群的创建)</li> </ul></li> <li><strong>阶段三</strong> <ul> <li>确实没问题后,调整正式环境 aws1 aws2 aws3 三个环境的graylog环境.</li> <li>继续丰富完善告警模块</li> </ul></li> </ul>

页面列表

ITEM_HTML