# 高性能GO企业级APM监控系统实战（已完结）

*Published:* 2024-09-11
*Author:* 飞翔001

#### 温馨提醒

如果文章内容或图片资源失效，请留言反馈，我们会及时处理，谢谢

本文最后更新于2024年9月10日，已超过 180天没有更新



**课程介绍：**

> 系统掌握精准监控、实时预警与快速响应核心技能，助力成为开发和运维中的抢手人才
> 
> 实时、准确、高性能监控系统是互联网企业的核心系统，而Go语言以其高可用性、故障恢复、快速启动、低延迟等特性，已成为构建高效监控系统的优选语言。掌握Go语言构建生产级APM监控系统，是开发者提升核心竞争力的快车道。本课程将手把手带你基于Go全流程落地一套生产级APM监控系统。课程内容精炼，实战性强，直击要害，助你快速跃升成为行业内抢手人才。

![](https://www.xarjtc.com/wp-content/uploads/2024/09/d815c45ef642616.webp)![](https://www.xarjtc.com/wp-content/uploads/2024/09/3a7c592c5be0664.webp)![](https://www.xarjtc.com/wp-content/uploads/2024/09/77d6b3f8c07f935.webp)![](https://www.xarjtc.com/wp-content/uploads/2024/09/635dc7d08ae1532.webp)

**适合人群**

2年以上想要提升个人技术能力的后端开发者

对构建大型监控系统感兴趣的技术人员

**技术储备**

具备GO编程语言基础

具备Docker基础

**环境参数**

开发环境 Goland

技术栈 Prometheus Grafana ELFK 7.14.2 全家桶Opentelemetry jaeger 1.52

**目录大纲：**

```
├── 第1章 课程整体介绍
│ ├── 1-1 课程导学
├── 第2章 【APM监控系统的综述和架构概览】 全方位认识apm系统
│ ├── 2-1 APM监控系统的整体介绍，了解apm系统的核心概念
│ ├── 2-2 为什么需要开发一套APM系统？了解它在企业中的重要性
│ ├── 2-3 APM系统的三板斧介绍–链路追踪，指标，日志
│ ├── 2-4 APM工具选型(一)常见链路监控工具对比(1)
│ ├── 2-5 OpenTracing,OpenCensus,OpenTelemetry三者之间的联系
│ ├── 2-6 APM工具选型(二) 指标和日志采集分析工具介绍
│ ├── 2-7 APM产品的最终成果
├── 第3章 基于Golang构建电商下单微服务，为APM系统提供基础代码框架
│ ├── 3-1 本章导学
│ ├── 3-2 docker以及docker compose 安装 优化版
│ ├── 3-3 docker compose配置讲解
│ ├── 3-4 docker compose 安装redis 和mysql 优化版
│ ├── 3-5 项目构建–详解项目开发需求
│ ├── 3-6 项目构建–项目代码结构与表结构介绍
│ ├── 3-7 项目构建–创建db和redis连接
│ ├── 3-8 项目构建–创建http服务器
│ ├── 3-9 项目构建–创建grpc服务
│ ├── 3-10 项目构建–服务启动逻辑优化
│ ├── 3-11 项目构建–统一http服务返回格式
│ ├── 3-12 项目构建–日志打印
│ ├── 3-13 项目构建–封装sql 返回工具方法
│ ├── 3-14 项目构建–实现订单服务业务逻辑
│ ├── 3-15 项目构建–实现商品服务业务逻辑
│ ├── 3-16 项目构建–实现用户服务业务逻辑
├── 第4章 项目实战步骤一：【构建APM系统之分布式链路追踪技术】
│ ├── 4-1 本章导学
│ ├── 4-2 【技术详解】链路追踪基本概念
│ ├── 4-3 【问题分析】链路追踪系统落地过程中的挑战
│ ├── 4-4 【技术详解】Opentelemetry 介绍
│ ├── 4-5 【技术详解】OpenTelemetry Collector安装以及配置文件介绍
│ ├── 4-6 【实战】OpenTelemetry Collector 实战, 掌握opentelemetry sdk用法
│ ├── 4-7 【技术详解】Opentelemetry Collector Extension 插件介绍
│ ├── 4-8 【实战】jaeger对追踪数据展示
│ ├── 4-9 【实战】后置采样配置与实践
│ ├── 4-10 确定有意义的调用链路
│ ├── 4-11 【实战】对含有错误信息的链路进行跟踪
│ ├── 4-12 【技术详解】go-mysql库源码剖析
│ ├── 4-13 【实战】装饰器模式封装mysql驱动(1)
│ ├── 4-14 【实战】装饰器模式封装mysql(2)
│ ├── 4-15 【实战】装饰器模式封装mysql驱动(3)
│ ├── 4-16 【实战】对含有mysql慢查询的链路进行跟踪
│ ├── 4-17 【实战】对含有长事务的链路进行跟踪
│ ├── 4-18 【实战】对含有redis报错请求的链路进行跟踪
│ ├── 4-19 【实战】对服务器慢http接口的链路进行跟踪
│ ├── 4-20 【实战】对慢grpc接口的链路进行跟踪
│ ├── 4-21 【实战】业务维度监控之下单成功数指标监控
├── 第5章 项目实战步骤二：【构建APM系统之建设应用性能监控指标】
│ ├── 5-1 本章导学
│ ├── 5-2 【原理】建立性能监控指标的原则有哪些？
│ ├── 5-3 【原理】建立性能监控指标的方法论-四大黄金指标原则，use red方法
│ ├── 5-4 【原理】详解prometheus绘图原理
│ ├── 5-5 【原理】详解prometheus 四大监控指标类型
│ ├── 5-6 【原理】详解prometheus常用函数
│ ├── 5-7 【实战】确定要建立的监控指标
│ ├── 5-8 【实战】为http接口创建qps，错误数 统计指标
│ ├── 5-9 【实战】用grafana绘制监控面板(一)
│ ├── 5-10 【实战】用grafana绘制监控面板(二)
│ ├── 5-11 【实战】对接口进行压测观察qps统计数据
│ ├── 5-12 【实战】对grpc接口创建qps,错误数指标
│ ├── 5-13 【实战】对grpc接口创建qps,错误数指标 监控面板
│ ├── 5-14 【实战】创建应用服务维度mysql监控，sql语法分析
│ ├── 5-15 【实战】创建应用服务维度mysql监控，代码实现
│ ├── 5-16 【实战】创建应用服务维度mysql监控,绘制监控面板
│ ├── 5-17 【实战】对应用服务runtime 指标的监控(一)
│ ├── 5-18 【实战】对应用服务runtime 指标的监控(二)
│ ├── 5-19 【实战】对应用服务内部流量进行分布监控
│ ├── 5-20 【实战】业务维度监控之下单成功数指标监控
├── 第6章 项目实战步骤三:【构建APM系统之精准定位问题代码】
│ ├── 6-1 【原理】golang中性能监控的大杀器–golang pprof
│ ├── 6-2 【实战】如何使用 golang pprof 来进行性能排查(一)-排查cpu性能问题？
│ ├── 6-3 【实战】如何使用 golang pprof 来进行性能排查(二)-排查内存性能问题？
│ ├── 6-4 【实战】如何使用 golang pprof 来进行性能排查(三)-排查block阻塞问题？
│ ├── 6-5 【实战】如何使用 golang pprof 来进行性能排查(四)-排查加锁性能问题？
│ ├── 6-6 【实战】如何使用 golang pprof 来进行性能排查(五)-排查goroutine th
│ ├── 6-7 【原理】golang pprof源码分析 — cpu占用率统计原理【版权修正版】
│ ├── 6-8 【原理】golang pprof源码分析 –memory，block，mutex 统计原理
│ ├── 6-9 【原理】golang pprof源码分析 — goroutine thread 统计原理
│ ├── 6-10 【原理】go trace 分析延迟性问题
│ ├── 6-11 【实战】自动化pprof机制的实现–holmes 库的使用
│ ├── 6-12 【原理】自动化pprof机制的实现–holmes库源码解读
│ ├── 6-13 【实战】电商项目优化–引入holmes实现自动化pprof
│ ├──6-14 【实战】终端一键生成生成pprof profile 之 gops的使用-
│ ├── 6-15 【实战】巧用pprof工具分析内存泄漏问题
├── 第7章 项目实战步骤四：【构建APM系统之应用服务日志收集】
│ ├── 7-1 本章概述
│ ├── 7-2 【原理】详解日志收集架构模型
│ ├── 7-3 【原理】通过ELK技术栈来解决日志收集-详解elasticsearch
│ ├── 7-4 【原理】通过ELK技术栈来解决日志收集-详解kibana
│ ├── 7-5 【实战】 服务器日志采用文件存储
│ ├── 7-6 【实战】通过ELK技术栈来解决日志收集-filebeat收集日志
│ ├── 7-7 【实战】通过ELK技术栈来解决日志收集-logstash收集日志
│ ├── 7-8 【实战】kibana展示日志
│ ├── 7-9 【实战】索引模板配置
│ ├── 7-10 【实战】索引生命周期的配置
│ ├── 7-11 【实战】mysql 审计日志打印
│ ├── 7-12 【实战】kibana 分析日志
第8章 项目实战步骤五：【构建APM系统之自研告警系统】
8-1 【原理】 自研告警服务需求分析以及表结构介绍（08:11）
8-2 【实战】 doglarm服务基础代码框架搭建（07:55）
8-3 【原理】 grafana告警规则配置详解（19:17）
8-4 【实战】 实现grafana指标告警接口_denois（17:43）
8-5 【实战】 实现错误等级Error的日志告警（07:07）
8-6 【实战】 接入电话告警（10:34）
8-7 【实战】 接入钉钉告警（04:57）
8-8 【实战】 对日志内容进行限流排重处理（18:28）
8-9 【实战】 增加应用服务保活探测机制_denois（18:15）
8-10 【实战】 手写代码进行监控埋点（06:04）
8-11 【实战】 dogalarm自监控面板_denois（07:21）
8-12 【实战】 保活机制自动重启应用服务（27:31）
8-13 本章总结

第9章 APM系统拓展：【APM系统组件做自监控】
9-1 如何衡量APM系统本身是正常运行的？（02:51）
9-2 衡量APM系统本身性能的通用手段的副本（13:49）
9-3 APM自监控及扩容思路之链路追踪系统容量瓶颈分析的副本（18:28）
9-4 APM自监控及扩容思路之日志收集系统容量分析及扩容思路的副本（10:51）
9-5 APM自监控及扩容思路之指标系统容量分析及扩容思路（06:35）
9-6 本章总结

第10章 整体课程内容总结
10-1 课程总结（07:21）

├──源码资料.ZIP
```