可观测监控方案大全-SLS全栈监控

本文涉及的产品
性能测试 PTS,5000VUM额度
应用实时监控服务-用户体验监控,每月100OCU免费额度
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
简介: 为了便于用户快速接入和监控业务系统,SLS提供了全栈监控的APP,将各类监控数据汇总到一个实例中进行统一的管理和监控。全栈监控基于SLS的监控数据采集、存储、分析、可视化、告警、AIOps等能力构建。

前言

监控作为每个公司IT系统中必备的功能,伴随着计算机的诞生就已经开始出现,经过几十年的发展,现在的IT技术和架构已经出现了非常大的变化。开发模式、系统架构、部署模式、基础设施都已经经历过多次的架构变迁,目前主流以微服务、容器化、云、DevOps这些技术为主。

伴随着这些架构的变迁,带来的影响是整个的系统也更加的复杂、开发依赖更多的人和部门、部署模式和运行环境也更加动态和不确定,因此IT行业也已经到了需要更加系统化、体系化进行观测的这一过程。对于监控系统,也在经历着巨大的变革,朝向云原生、数据融合、智能等方向演进。

监控系统发展历程

回顾整个IT监控的发展过程,我个人认为可分为4个阶段,分别是Unix时代、数据中心时代、分布式时代以及云原生时代:

  • Unix时代:随着Unix、Linux的流行,我们才有了真正意义上的IT系统,在80、90年代的时候,应用通常都是单机部署,而且很简单。为了能够定位单机应用的一些问题,Unix中增加了很多Metrics,例如CPU、内存、IO的使用情况。同时为了更快速的获取这些指标,Unix/Linux中提供了很多命令行工具,例如top、vmstat、iostat等,同时为使用桌面系统的人提供了很多图形化的工具来看问题,这也是IT监控中最早的折线图应用。在这一阶段,大家对于性能、用户体验等关注不是高,基本上只在乎可用性,也就是服务是否能够Work。
  • 数据中心时代:在90年代,越来越多的公司开始搭建自己的数据中心,少到几台,多到成百上千台。这个时候出现了专门的IT运维人员,为了更好的管理这些机器,开发了SNMP(Simple Network Management Protocol)协议,用于管理和监控数据中心中每台机器的状态。这个时候的监控架构主要还是单机的方式来实现,通过SNMP协议,来监控各个主机的网络和硬件信息。这一阶段也出现了跨主机的应用以及提供对外服务的Web类应用,监控系统也会部分关注网络延迟,但并不是实际的用户请求延迟。
  • 分布式时代:在21世纪后,互联网开始流行,应用场景也越来越广,单机已经逐渐承受不住日益上涨的请求量,因此分层式的分布式架构开始逐渐流行。而监控系统的分层模式也划分的逐渐明显,例如主机监控、网络监控、中间件监控、应用监控等,其中应用监控是新出现的范畴,对于应用监控要求不仅关注应用可用性问题,也要监控和解决性能问题。这一阶段监控系统的架构也变为分布式,后端会有多台机器多个模块组成,例如数据处理、存储、告警等,其中每个模块也可能是分布式的,例如分布式的流式处理、分布式的数据库等。
  • 云原生时代:随着云计算、容器化技术的成熟,很多公司开始采用容器化、微服务的技术来开发应用,应用的部署环境也会选择公有云或者私有云的方式。在云原生的场景下,虚拟化会更加彻底、环境动态性更强,传统的一些监控方式将不再适合,因此需要有能够对接Kubernetes、微服务、云上资源的监控系统。而监控目的也更加向上,关注用户实际的体验和问题排查的效率,因此除了采集更多的监控信息外,也需要能够和其他的可观测数据(例如Logs/Traces)进行关联分析来快速定位问题,同时也引入AI的技术来进行自动化的异常发现、定位与修复。

云原生时代的监控方案

云原生时代的监控方案,除了监控方案本身需要的进步外,监控的能力和效果也必须提升一个阶层,这里我们总结起来,需要以下几个特性:

  1. 范围广:从基础设施、容器/K8s、云厂商、中间件、数据库等都能够支持
  2. 统一视图:各种不同层级的数据都能有统一的入口和视图来查看
  3. 统一告警:告警是监控的重要组成部分,告警也必须能够实现统一的管理,并且具备智能降噪、动态值班表、告警合并/路由等一些高级特性,降低管理和使用成本
  4. 智能:企业的IT系统中所涉及的组件数量庞大,静态的规则告警很难适用,因此必须要有一些启发式的AIOps时序异常检测方式,能够自动发现异常的曲线并告警
  5. 数据融合分析:可以便捷的和Trace、Log、Event等其他可观测数据有效的进行关联分析,便于快速定位和解决问题

SLS全栈监控

SLS作为阿里可观测性数据引擎,具备可观测数据日志、指标、分布式链路追踪、事件等的一站式采集和存储。为了便于用户快速接入和监控业务系统,SLS提供了全栈监控的APP,将各类监控数据汇总到一个实例中进行统一的管理和监控。全栈监控基于SLS的监控数据采集、存储、分析、可视化、告警、AIOps等能力构建,详细功能如下:

  • 实时监控各类系统,包括主机监控、Kubernetes监控、数据库监控、中间件监控等。
  • 支持ECS、K8s一键安装,支持图形化的监控配置管理,无需登录主机配置采集监控项。
  • 运维老司机多年经验的报表总结,包括资源总览、水位监控、热点分析、详细指标等数十个报表。
  • 支持自定义的分析,支持包括PromQL、SQL92等多种分析语法。
  • 支持对接AIOps指标巡检,利用机器学习技术自动发现异常指标。
  • 支持自定义告警配置,告警通知直接对接消息中心、短信、邮件、语音(电话)、钉钉,并支持对接自定义WebHook。

全栈监控功能概览

主机监控

仪表盘

说明

资源总览

用于实时可视化展示主机配置信息和指标信息的总体情况,包括CPU核数、磁盘总空间、CPU平均使用率、内存平均使用率等。

主机列表

用于实时可视化展示每台主机的配置信息和指标信息,包括CPU核数、内存、CPU使用率、内存使用率等。

热点分析

用于实时可视化热点机器的CPU、内存等资源使用情况,包括CPU热点指标分布、内存热点指标分布、Top CPU使用率、Top 内存使用率等。

单机指标-简

用于实时可视化展示主机的CPU、内存等资源的使用趋势,包括CPU使用率、磁盘空间使用率、内存使用率等。

单机指标-详

用于实时可视化展示主机的CPU、内存等资源处于不同状态的使用趋势,包括CPU(处于Total、System、User、IOWait状态的CPU使用趋势)、内存(处于Total、Availableused、Used状态的内存使用趋势)等。

Kubernetes监控

仪表盘

说明

资源总览

用于实时可视化展示Kubernetes中资源的使用情况,包括Pod、Host、Service、Deployment等。

水位监控

用于实时可视化展示Kubernetes中资源的水位情况,包括Pod运行数、CPU总数、文件系统使用量等。

运行时监控

用于实时可视化展示Kubernetes中处于运行状态的资源信息,包括Deployment运行数量、Daemonset运行数量等。

核心组件监控

用于实时可视化展示Kubernetes中核心组件的相关数据,包括ETCD对象数、ETCD请求QPS等。

Node列表

用于实时可视化展示Node的整体情况以及每个Node的配置信息和指标信息,包括Node总数、运行中的Pod总数等。

Node指标

用于实时可视化展示Node的指标信息,包括可申请Pod数量、CPU使用率等。

Pod列表

用于实时可视化展示Pod的整体情况以及每个Pod的配置信息和指标信息,包括可申请的Pod总数等。

Pod指标

用于实时可视化展示Pod的指标信息,包括Pod基本信息、容器基础信息等。

Deployment列表

用于实时可视化展示每个Deployment的配置信息和指标信息,包括Deployment所属命名空间、集群等。

Deployment指标

用于实时可视化展示Deployment的指标信息,包括CPU Limit使用率、内存Limit使用率等。

StatefulSet列表

用于实时可视化展示每个StatefulSet的配置信息和指标信息,包括StatefulSet所属命名空间、集群等。

StatefulSet指标

用于实时可视化展示StatefulSet的指标信息,包括CPU Limit使用率、内存Limit使用率等。

DaemonSet列表

用于实时可视化展示每个DaemonSet的配置信息和指标信息,包括DaemonSet所属命名空间、集群等。

DaemonSet指标

用于实时可视化展示DaemonSet的指标信息,包括CPU Limit使用率、内存Limit使用率等。

数据库监控

仪表盘

说明

MySQL监控

用于实时可视化展示MySQL数据库中监控指标,包括启动时间、Query执行次数、连接数等。

Redis监控

用于实时可视化展示Redis数据库中的监控指标,包括开启集群实例个数、Redis运行时间、连接的客户端数量等。

Elasticsearch监控

用于实时可视化展示Elasticsearch中的监控指标,包括Cluster health、Nodes等。

Clickhouse监控

用于实时可视化展示Clickhouse数据库中的监控指标,包括Query、Merge等。

MongoDB监控

用于实时可视化展示MongoDB数据库中的监控指标,包括Available Connections、Query Operations等。

中间件监控

仪表盘

说明

JVM监控

用于实时可视化展示JVM中的监控指标,包括进程运行时长、总内存、堆内存、CPU使用率等。

Nginx监控

用于实时可视化展示Nginx中的监控指标,包括Processed connections、QPS等。

Tomcat监控

用于实时可视化展示Tomcat中的监控指标,包括进程运行时长、QPS、错误数、CPU使用率等。

Kafka监控

用于实时可视化展示Kafka中的监控指标,包括Controller状态、总Topic数、每秒消息数量等。

NVIDIA GPU监控

用于实时可视化展示NVIDIA GPU中的监控指标,包括GPU Utilization、Memory Utilization等。

Coming soon

现阶段全栈监控提供了主机监控、K8s监控、数据库监控、中间件监控,后续横向和纵向的功能扩展也即将和大家见面,例如:

  1. 云资源监控,包括阿里云上各类监控以及AWS、Azure等其他云上的监控指标
  2. 主机增加更多的功能,例如进程级别监控、内核的监控、进程/内核Profile能力等
  3. K8s增加性能、变更以及服务拓扑等监控能力;数据库增加诊断、Plan监控等;中间件支持更多的种类
  4. 增加和用户体验以及应用相关的监控能力,例如拨测、前端监控、移动端监控等

参考

  1. 全栈监控:https://sls.console.aliyun.com/lognext/app/monitor
  2. 监控数据接入:https://help.aliyun.com/document_detail/354229.html
  3. 大盘说明:https://help.aliyun.com/document_detail/364237.html
  4. 智能异常诊断:https://help.aliyun.com/document_detail/356467.html
  5. 告警配置:https://help.aliyun.com/document_detail/209951.html

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
消息中间件 存储 监控
微服务日志监控的挑战及应对方案
【10月更文挑战第23天】微服务化带来模块独立与快速扩展,但也使得日志监控复杂。日志作用包括业务记录、异常追踪和性能定位。
|
2月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
3月前
|
Kubernetes API Docker
跟着iLogtail学习容器运行时与K8s下日志采集方案
iLogtail 作为开源可观测数据采集器,对 Kubernetes 环境下日志采集有着非常好的支持,本文跟随 iLogtail 的脚步,了解容器运行时与 K8s 下日志数据采集原理。
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
3月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
383 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
54 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
69 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
114 0
|
4月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
183 0
|
4月前
|
消息中间件 Prometheus 监控
Producer的监控与日志记录最佳实践
【8月更文第29天】在分布式系统中,消息队列作为关键组件之一,其稳定性和性能至关重要。生产者(Producer)负责生成并发送消息到消息队列中,因此确保生产者的健康运行是非常重要的。本文将探讨如何为生产者设置监控和日志记录,以跟踪其健康状况和性能指标。
79 0
下一篇
DataWorks