[elk]基于elk的业务日志格式设计

背景

php项目,业务监控为0,需要搭建一套日志查看,阀值告警等功能的监控系统。撒都不用说,直接上ELK。

我们跳过搭建过程(网上太多了)。
通过docker搭建好了elk那一套(明显单机版),我要监控测试和线上,所以是个多采集的环境,使用了官方推荐的最新的filebeat就行log聚合,格式化还是在master用logstash。


需求

业务需求并不是很多,因为是在初期,等团队使用熟练后,业务日志会接入更多(项目决定)。

现在能想到的需求:

  • php运行错误和异常

  • api和页面执行性能

  • mysql慢查

本人已尽对项目代码进行改造,运行时发生的所有异常和error都会通过json格式写入在本地日志目录中,关键就看怎么定义格式了满足上面的一些需求了


思路

直接讲结果吧:

  • php运行错误和异常

    • 异常信息,时间,具体内容

    • 错误信息,时间,具体内容

  • api和页面执行性能

    • 访问的api地址,执行时间等

    • 访问的page地址,执行时间等

  • mysql慢查

    • 当前执行慢的sql, 参数(去除敏感信息)

从上面大致需要的监控需求来说,会发现很多共同点或者说是共有信息字段,比如:访问的模块,访问的路由,访问的用户,访问的哪种类型,子类型等

考虑下上面的这些问题,大体上我们就能设计出满足这些需求的通用日志格式了:

格式说明:

字段 类型 es not_analyzed 备注
sid string ture uuid
time data ture log生成时间
level string ture log等级
msg string ture 信息简要
app string ture 项目名称
group string ture 日志一级分类
object string ture 日志二级分类
host string ture host
client string ture client
status number ture 状态码
elapsed number ture 执行毫秒
error string ture 错误的完整信息
url string ture
route string ture

例子:

php错误

group: php_error
msg: 错误标题
error:错误完整的内容,大家可自行定义

php异常

group: exception
msg: 异常标题
error:异常完整的内容,大家可自行定义

api,page 访问性能

group: api
elapsed : 100.123 (毫秒)
url: 具体url
route: 路由(聚合分类用)

mysql慢查询

group: data
object: slow_query
url: 具体url
error: 慢差的完整信息,包括sql,params等

格式意见定义好了,满足了之前的设计需求。
具体如何通过定义好的格式去在kibana上进行可视化,熟悉的朋友应该能有个思路了,具体就不在这展开了。


最后

日记接入成功后,接下来只要封装好调用的方法即可。
后面项目上还需要接入

  • 队列日志

  • 异步事务日志

具体实现思路敬请期待后面的文章。


成长之路
围绕php, java相关程序设计与开发。

Java,源码分析,敏捷开发, PM

314 声望
58 粉丝
0 条评论
推荐阅读
[学习笔记-Java并发源码-2] volatile的实现原理
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。

df007df2阅读 1.7k

怎样用 PHP 来实现枚举?
在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,...

唯一丶25阅读 6.3k评论 4

图片防盗链破解 解决图片防盗链问题 反向代理
当客户端(浏览器)向服务器请求内容的时候,会提交一个header,这个header中包含了如:浏览器信息、cookie等内容,那么有一个叫referer的东东,也包含在这里面。

TANKING7阅读 11.2k评论 5

Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...

王中阳Go5阅读 2k评论 2

封面图
PHP转Go实践:xjson解析神器「开源工具集」
我和劲仔都是PHP转Go,身边越来越多做PHP的朋友也逐渐在用Go进行重构,重构过程中,会发现php的json解析操作(系列化与反序列化)是真的香,弱类型语言的各种隐式类型转换,很大程度的减低了程序的复杂度。

王中阳Go6阅读 1.3k评论 2

封面图
微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程1、申请微信公众号测试账号URL:[链接]2、登录,配置开发者服务器URL和Token开发者服务器配置代码:config.php {代码...} URL是config.php在你服务器的URLToken是上面代码自己设置的Token搞定之后,就能完...

TANKING2阅读 10k

Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
通过javascript监听搜索框的内容,调用后端即可。(1)javascript监听搜索框的内容(2)把搜索框的关键词传给后端进行搜索(3)搜索到结果,遍历到页面

TANKING1阅读 4.3k

Java,源码分析,敏捷开发, PM

314 声望
58 粉丝
宣传栏