每日一博 | 微服务业务监控和行为分析怎么做?试试日志埋点
一、说明
互联网公司一般都会有专门的数据团队对公司的一些业务指标负责;为了拿到这些基本的业务指标,一般也要工程团队去配合做一些数据采集工作,于是埋点诞生了。
埋点的方式有很多种,本文主要介绍 日志埋点
这种方式以及实现思路和案例。
日志埋点
就是通过程序打印log
日志的方式进行业务/行为数据的记录
二、总体架构
通过 日志埋点
来实现业务监控和行为分析主要需要以下4个步骤
- 数据生成(埋点)
- 数据收集
- 数据解析(结构化)
- 数据落盘
- 数据使用(展示/分析)
三、方案说明
3.1. 数据生成
日志数据的生成直接使用 Logback
等日志框架就可以了,可以自己封装公共方法、aop、注解等方式来生成指定的埋点日志
但是为了便于后面的数据解析,日志数据需要规范先行
- 所有的埋点日志必需约定好统一的格式,例如:{时间}|{来源}|{对象id}|{类型}|{对象属性(以&分割)}
按上面的格式生成的日志为: 2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10
- 避免埋点的日志文件和系统本身输出的日志混淆
埋点的日志输出的目录、文件等需要和应用本身的日志分离,通过
Logback
的配置就能实现
埋点案例
生成日志
网关埋点用户请求
3.2. 数据收集
关于日志数据的收集可选择的中间件比较多,除了图中的 FileBeat
之外还有 Flume
、Fluentd
、rsyslog
等;需要每台服务器都部署一个收集中间件。
每台服务器部署一个就行了,就算一台服务器中启了多个微服务也是可以一齐收集
PS:日志收集后面的 消息队列
并不是必需的可以去掉,但是增加 消息队列
后有以下两个优点
- 削峰填谷:减轻后面日志解析的压力
- 数据共享:日志数据除了提供给日志系统之外,可以增加消费端的同时提供给其他地方使用,如流计算等
3.3. 数据解析
使用 Logstash
的grok表达式解析日志数据并结构化,以上面的日志数据为例
2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10
结构化后的日志数据为:
{ timestamp: '2019-11-07 10:32:01', appName: 'api-gateway', resouceid: '1', type: 'request-statistics', ip: '171.221.203.106', browser: 'CHROME', operatingSystem: 'WINDOWS_10' }
3.4. 数据落盘
通过 Logstash
能自动创建 Elasticsearch
索引并以天为单位分片
可以通过索引模板来指定每个字段的类型和分词器等属性
3.5. 数据使用
日志数据落盘到 Elasticsearch
后,就可以通过聚合查询等方式实时显示监控数据或者分析日志数据
监控案例
四、总结
日志埋点
只是其中一种埋点手段而已,优点是系统无入侵且灵活;日志收集、解析、落盘等都可以灵活搭配选择不同的中间件,并且不需要修改源系统的代码;并且可以方便对接其他分析平台(例如: 大数据平台)
PS:业务监控是否可以不做日志埋点,直接查询业务的数据库呢?(不建议这样做)
- 使用日志埋点能实现监控数据与业务数据分离,监控平台不会影响或增加业务数据库的压力
- 使用日志埋点能方便实现实时业务数据预警
举个栗子:日志收集后面添加流计算中间件,计算某个时间窗口内优惠卷日志的数量或者金额大于某个阀值,则发出预警
推荐阅读
- 日志排查问题困难?分布式日志链路跟踪来帮你
- zuul集成Sentinel最新的网关流控组件
- Spring Cloud开发人员如何解决服务冲突和实例乱窜?
- Spring Cloud同步场景分布式事务怎样做?试试Seata
- Spring Cloud异步场景分布式事务怎样做?试试RocketMQ
- Spring Cloud Gateway的动态路由怎样做?集成Nacos实现很简单
扫码关注有惊喜!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Chrome 引入 Web Bundles,可实现完整的离线 Web Apps 功能
在迈向“渐进式 Web 应用”(WPA)的持续努力下,谷歌已经使 Web Apps 向着原生应用迈进了重要的一步。在新版 Chrome 工具中,其引入了 Web Bundles 技术,以完全弥合两者之间的差距。 据悉,该框架不仅可以使 Web Apps 脱机工作,甚至能够从 USB 等驱动器介质进行安装,并具有后台同步和内容索引之类的功能技术,可在互联网中断时继续无缝运行。 (题图 viaMSPU) 该工具包允许开发者将整个网站打包成一个脱机文件,甚至包含用于身份验证的短信接收、联系人选择、文件系统访问等功能。 下面是 Google 讲述的 Web bundles 的一些特性: 支持多页面封装,将整个网站打包到一个文件中; 与 MHTML 不同的是,它能够启用可执行的 JavaScript; 使用 HTTP Variants 进行内容协商,若离线使用,可在标头中启用 Accept-Language 国际语言支持; 支持发布者加密签名,在其来源的上下文中加载; 本地即时加载。 相关视频点此查看:Web Bundles - user-to-user sharing demo 下面是 Goo...
- 下一篇
Firefox 72 中的滚动条将自适应网页背景色
目前越来越多的应用、网站等都提供了暗黑主题、深色背景,然而许多浏览器的滚动条部分被忽略了,没有进行相应调整。明亮的滚动条在深色页面上显得突兀,令人分心。Mozilla 已经在Firefox 72 nightly 版本中解决了这一问题。 图片来源:ghacks 从 Firefox 72 开始,Firefox 会根据访问页面的背景色来调整滚动条的颜色。偏爱较暗主题的浏览器用户会注意到,滚动条区域的颜色也将以较暗的颜色存在,并且页面位置指示器也将比以前更暗。而在此前,用户只能使用自定义 CSS 样式将滚动条绘制为深色,或是利用某些插件让滚动条变暗。 一名reddit用户发现了这一新功能,随后在论坛上激起了广泛讨论。有网友就此提出更多想法,例如:是否能使滚动条保持暗色,无论网页背景色如何;它是否会对现有插件造成影响;对比度还不够完美,黑色背景下的滚动条几乎看不见等等。可以感受到,用户们希望享有更广泛的自定义权利。 目前,该功能仅在少数网站能够正常使用,也仅在 Windows 版本下发布,Linux 设备上暂且无法使用。根据发布时间表,Firefox 72 Stable 将于 2020 年 1 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果