微服务业务监控和行为分析怎么做?试试日志埋点

file

一、说明

互联网公司一般都会有专门的数据团队对公司的一些业务指标负责;为了拿到这些基本的业务指标,一般也要工程团队去配合做一些数据采集工作,于是埋点诞生了。  

埋点的方式有很多种,本文主要介绍 日志埋点 这种方式以及实现思路和案例。

日志埋点 就是通过程序打印 log 日志的方式进行业务/行为数据的记录

 

二、总体架构

file

通过 日志埋点 来实现业务监控和行为分析主要需要以下4个步骤

  1. 数据生成(埋点)
  2. 数据收集
  3. 数据解析(结构化)
  4. 数据落盘
  5. 数据使用(展示/分析)

 

三、方案说明

3.1. 数据生成

日志数据的生成直接使用 Logback 等日志框架就可以了,可以自己封装公共方法、aop、注解等方式来生成指定的埋点日志

但是为了便于后面的数据解析,日志数据需要规范先行

  1. 所有的埋点日志必需约定好统一的格式,例如:{时间}|{来源}|{对象id}|{类型}|{对象属性(以&分割)}

按上面的格式生成的日志为: 2019-11-07 10:32:01|api-gateway|1|request-statistics|ip=171.221.203.106&browser=CHROME&operatingSystem=WINDOWS_10

  1. 避免埋点的日志文件和系统本身输出的日志混淆 file

埋点的日志输出的目录、文件等需要和应用本身的日志分离,通过 Logback 的配置就能实现

 

埋点案例

file

生成日志

file

网关埋点用户请求

 

3.2. 数据收集

关于日志数据的收集可选择的中间件比较多,除了图中的 FileBeat 之外还有 FlumeFluentdrsyslog 等;需要每台服务器都部署一个收集中间件。

每台服务器部署一个就行了,就算一台服务器中启了多个微服务也是可以一齐收集

PS:日志收集后面的 消息队列 并不是必需的可以去掉,但是增加 消息队列 后有以下两个优点

  1. 削峰填谷:减轻后面日志解析的压力
  2. 数据共享:日志数据除了提供给日志系统之外,可以增加消费端的同时提供给其他地方使用,如流计算等

 

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 索引并以天为单位分片 file

可以通过索引模板来指定每个字段的类型和分词器等属性

 

3.5. 数据使用

日志数据落盘到 Elasticsearch 后,就可以通过聚合查询等方式实时显示监控数据或者分析日志数据

监控案例

file

聚合查询逻辑可参考 https://gitee.com/zlt2000/microservices-platform

 

四、总结

日志埋点 只是其中一种埋点手段而已,优点是系统无入侵且灵活;日志收集、解析、落盘等都可以灵活搭配选择不同的中间件,并且不需要修改源系统的代码;并且可以方便对接其他分析平台(例如: 大数据平台)

PS:业务监控是否可以不做日志埋点,直接查询业务的数据库呢?(不建议这样做)

  1. 使用日志埋点能实现监控数据与业务数据分离,监控平台不会影响或增加业务数据库的压力
  2. 使用日志埋点能方便实现实时业务数据预警

举个栗子:日志收集后面添加流计算中间件,计算某个时间窗口内优惠卷日志的数量或者金额大于某个阀值,则发出预警

 

进QQ群(779809018)免费领取学习资源,疑难问题解答。同时欢迎大家关注我的微信公众号:代码帮 ,免费领取学习资源和学习每天不定时推送的技术性文章。

本公众号将秉持活到老学到老学习无休止的交流分享开源精神,汇聚于互联网和个人学习工作的精华干货知识,一切来于互联网,反馈回互联网。
目前研究领域:大数据、机器学习、深度学习、人工智能、数据挖掘、数据分析。 语言涉及:Java、Scala、Python、Shell、Linux等 。同时还涉及平常所使用的手机、电脑和互联网上的使用技巧、问题和实用软件破解。 只要你一直关注和呆在群里,每天必须有收获,讨论和答疑QQ群:大数据和人工智能总群(779809018)微信公众号(代码帮)每天分享最新IT、大数据和人工智能新技术。

<think> 根据用户问题,用户已经了解了Spring Cloud Alibaba的监控组件(如Sentinel、Nacos等),现在希望了解**除Spring Cloud Alibaba内置组件外**的**专为微服务监控设计的独立项目**。结合引用内容(Pinpoint、SkyWalking等)行业实践,我将整理主流微服务监控项目。 ### 回答思路: 1. **分类说明**:将监控工具按功能分为链路追踪、指标监控日志监控三类。 2. **项目对比**:每个项目简要说明核心功能、适用场景Spring Cloud Alibaba的集成方式。 3. **引用支持**:引用中提到的Pinpoint、SkyWalking、Prometheus等工具需重点说明。 --- ### 一、分布式链路追踪工具 主要用于跟踪请求在微服务中的完整路径,分析延迟问题。 | 项目名称 | 核心特点 | Spring Cloud Alibaba集成 | |----------------|--------------------------------------------------------------------------|-------------------------------------------------------------------------------------------| | **[Pinpoint](https://pinpoint-apm.gitbook.io/pinpoint/)** | 无侵入式探针、实时拓扑图、代码级监控[^1][^3] | 添加`pinpoint-spring-cloud-starter`依赖,配置Agent即可采集数据[^1] | | **[SkyWalking](https://skywalking.apache.org/)** | 轻量级探针、支持多种存储后端、服务网格观测 | 使用`apm-toolkit-trace`注解或Java Agent自动埋点[^2] | | **[Zipkin](https://zipkin.io/)** | 简单易部署、支持多语言、Spring Cloud Sleuth原生集成 | 通过`spring-cloud-starter-zipkin`直接上报数据 | > 📌 **选型建议**: > - 需要深度代码监控 → Pinpoint > - 云原生环境 → SkyWalking > - 快速轻量级部署 → Zipkin --- ### 二、指标监控工具 专注于收集系统/应用指标(如CPU、QPS、错误率),支持告警可视化。 | 项目名称 | 核心能力 | 集成方式示例 | |------------------|--------------------------------------------------------------------------|-------------------------------------------------------------------------------------------| | **[Prometheus](https://prometheus.io/)** | 多维数据模型、强大的查询语言、主动拉取机制[^2] | 添加`micrometer-registry-prometheus`依赖暴露指标,通过Grafana展示[^2] | | **[Grafana](https://grafana.com/)** | 多数据源可视化、自定义仪表盘、告警集成 | 配置Prometheus/Nacos等数据源,导入Spring Boot监控模板 | | **[Elastic Stack](https://www.elastic.co/)** | 日志/指标/APM一体化、全文搜索分析 | 通过Filebeat收集日志,Metricbeat采集系统指标 | **Prometheus监控Spring Boot示例配置**: ```yaml # application.yml management: endpoints: web: exposure: include: health,metrics,prometheus metrics: tags: application: ${spring.application.name} ``` --- ### 三、日志聚合分析工具 解决微服务日志分散问题,实现集中检索分析。 | 项目名称 | 功能亮点 | 部署要点 | |-----------------|----------------------------------------------------------|--------------------------------------------------------------------------| | **ELK Stack** | Elasticsearch存储 + Logstash处理 + Kibana展示 | Filebeat部署到各微服务节点,转发日志到Logstash | | **Loki** | 轻量级设计、兼容PromQL语法、Grafana深度集成 | 使用Promtail代理收集日志,Grafana直接查询 | | **Splunk** | 企业级分析、AI辅助运维、安全监控 | 通过HTTP Event Collector或Agent上传日志 | --- ### 四、全链路监控方案 整合链路、指标日志的端到端方案: 1. **SkyWalking + Prometheus + Grafana** - SkyWalking:链路追踪 - Prometheus:指标存储 - Grafana:统一可视化界面 ```mermaid flowchart LR A[微服务] -->|链路数据| B[SkyWalking OAP] A -->|指标数据| C[Prometheus] B & C --> D[Grafana] ``` 2. **Elastic APM** 集成在ELK Stack中,提供链路追踪+日志关联分析[^2]。 --- §§ 相关问题 § 1. **Pinpoint SkyWalking 在数据采集原理上有何本质区别?** 2. **如何通过 Prometheus 监控 Spring Cloud Gateway 的实时流量?** 3. **在 Kubernetes 中部署 ELK Stack 有哪些优化策略?** 4. **Loki 相比 ELK 在日志存储效率上做了哪些改进?** 5. **微服务监控如何实现跨云环境的统一管理?** [^1]: [Pinpoint监控Spring Cloud Alibaba:微服务生态](引用1的原始内容) [^2]: [Spring Cloud Alibaba 实战:从 0 到 1 构建可监控微服务体系](引用2的原始内容) [^3]: [Pinpoint监控Spring Cloud Alibaba ServiceComb:微服务框架追踪](引用3的原始内容) </think>### 专为微服务监控设计的独立项目 除 Spring Cloud Alibaba 内置组件外,以下是主流的微服务监控项目(按功能分类): --- #### 一、分布式链路追踪 1. **SkyWalking** - **特点**:国产开源 APM,支持自动探针代码无侵入式监控,集成告警可视化 - **适用场景**:全链路性能分析、服务拓扑图、慢查询诊断[^2][^3] - **集成示例**: ```yaml # agent.config agent.service_name=${SW_AGENT_NAME:your-service} collector.backend_service=${SW_GRPC:127.0.0.1:11800} ``` 2. **Zipkin** - **特点**:Twitter 开源,轻量级分布式追踪系统,支持多语言 - **数据流**: ```mermaid flowchart LR A[微服务] -->|Span数据| B[Zipkin Client] B --> C[Zipkin Server] C --> D[Storage] D --> E[UI] ``` 3. **Jaeger** - **特点**:CNCF 毕业项目,云原生友好,支持 OpenTracing 标准 - **核心能力**:分布式上下文传播、根因分析[^3] --- #### 二、指标监控告警 | 项目 | 特点 | 数据源支持 | |-------------|-------------------------------|---------------------------| | **Prometheus** | 多维数据模型 + PromQL 查询语言 | 支持 exporter 自定义指标[^2] | | **Grafana** | 多数据源可视化仪表板 | Prometheus/ES/MySQL 等 | | **Elastic APM** | ELK 生态的 APM 解决方案 | 深度集成 Elasticsearch | **典型架构**: ```mermaid flowchart TB subgraph 微服务集群 A[Service A] -->|暴露指标| B(Prometheus Exporter) C[Service B] -->|日志| D(Filebeat) end B --> E[Prometheus] D --> F[Elasticsearch] E & F --> G[Grafana] ``` --- #### 三、日志聚合分析 1. **ELK Stack** - **组成**: - Elasticsearch:日志存储检索 - Logstash/Filebeat:日志收集 - Kibana:可视化分析 - **优势**:全文搜索、实时分析、告警联动[^2] 2. **Loki** - **特点**:Grafana 生态的轻量级日志系统,兼容 PromQL 语法 - **适用场景**:资源受限环境,低成本日志管理 --- #### 四、全链路监控方案对比 | 方案 | 侵入性 | 存储开销 | 学习曲线 | 社区生态 | |--------------------|--------|----------|----------|----------| | SkyWalking | 低 | 中 | 低 | ★★★★☆ | | Prometheus+Grafana | 中 | 高 | 中 | ★★★★★ | | Elastic APM | 低 | 高 | 高 | ★★★★☆ | > 💡 **选型建议**: > - 云原生环境:Prometheus + Grafana + Loki > - 企业级监控:SkyWalking + ELK > - 混合云管理:Jaeger + Thanos(Prometheus 长期存储) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值