热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

可观测实践|如何使用阿里云Prometheus观测ECS应用

作者:颍川引言Prometheus+Grafana已经成为云原生时代的可观测性事实标准。我们使用Prometheus观测云原生时代的Kubernetes体系下的Node、ApiSe

作者:颍川


引言

Prometheus + Grafana 已经成为云原生时代的可观测性事实标准。我们使用 Prometheus 观测云原生时代的 Kubernetes 体系下的 Node、ApiServer、workload 等的基础 metric,同时通过 Prometheus Exporters 采集各种组件(如 Redis、Kafka 等)和业务应用的 metric,最后通过 Grafana 展示大盘、AlertManager 进行告警,实现了云原生 Kubernetes 体系下 metric 可观测闭环。

由于大量非云原生的历史系统演进到云原生体系是个长时期过程,因此这些非云原生系统的可观测闭环也是我们必须解决的问题。我们很自然地想到“既然 Prometheus + Grafana 实现了云原生体系的 metric 可观测闭环,是否可以使用这套神器来解决非云原生体系应用的同样问题呢?”,答案是肯定的。

本文介绍如何使用阿里云 Prometheus 来实现非 Kubernetes 应用(即 ECS 应用)的 metric 观测。


ECS 应用的典型部署场景


场景 1:纯公有云 VPC

业务应用部署在一个或多个 VPC 内,每个 VPC 内购买了一批 ECS,在这些 ECS 上部署了基础组件(数据库和中间件等)和业务应用。此场景下,我们需要对这些 ECS OS(Linux 或 Windows)、基础组件和业务应用本身进行 metric 观测。

1.png


场景 2:公有云 VPC+线下 IDC

业务除了部署公有云 VPC 上外,还需要与线下 IDC 机房进行互通互联。通常,我们使用专线方式打通云上 VPC 和线下 IDC 机房。此场景下,我们期望有一套完整的 metric 观测平台,同时解决线上 VPC 和线下 IDC 的 metric 观测。

2.png


场景 3:公有云 VPC+多云 ECS

业务除了部署在阿里云 VPC 上外,还通过公网与其它云上的 ECS 进行互通互联。此场景下,我们也期望有一套完整的 metric 观测平台,实现一体化全局视角观测。

3.png


自建 Prometheus 观测 ECS 应用的痛点

自建 Prometheus 观测 ECS 应用,我们将面临的典型问题有:



  1. 由于安全、组织管理等因素,用户业务通常部署在多个相互隔离的 VPC,需要在多个 VPC 内都重复、独立部署 Prometheus,导致部署和运维成本高。



  2. 每套完整的自建观测系统都需要安装并配置 Prometheus、Grafana、AlertManager 以及各组件 Exporter,过程复杂、实施周期长。



  3. 缺少与阿里云 ECS 无缝集成的服务发现(ServiceDiscovery)机制,无法根据 ECS 标签来灵活定义抓取 targets。如果自行实现类似功能,则需要使用 Golang 语言开发代码(调用阿里云 ECS POP 接口)、集成进开源 Prometheus 代码、编译打包后部署,实现门槛高、过程复杂、版本升级困难。



  4. 常用组件的开源 Grafana 大盘不够专业,缺少结合观测组件的原理和最佳实践进行深入定制。



  5. 缺少常用组件的告警项模板,需要用户自行研究、配置告警项,工作量大,且很可能缺少各组件领域的专业技术沉淀。




阿里云 Prometheus 监控的能力框架

阿里云 Prometheus 监控 [ 1] 是一款全面对接开源 Prometheus 生态,支持类型丰富的组件观测,提供多种开箱即用的预置观测大盘,且提供全面托管的混合云/多云 Prometheus 服务。除了支持阿里云容器服务、自建 Kubernetes、Remote Write 外,阿里云 Prometheus 还提供混合云+多云 ECS 应用的 metric 观测能力;并且支持多实例聚合观测能力,实现 Prometheus 指标的统一查询,统一 Grafana 数据源和统一告警。其逻辑架构如下示意:

4.png

对于 ECS 应用,阿里云 Prometheus 提供以下 metric 数据采集方式:



  • 托管 exporter:提供 MySQL、Redis 等数十种常见组件 [ 2] (持续更新中)的托管部署。用户只需要在阿里云 Prometheus 控制台配置观测组件相关信息(如 IP 地址、端口等),即可实现 VPC 内 ECS 上这些组件的 metric 监控。由于线下 IDC 通过专线与 VPC 互通,因此托管 exporter 同时也能采集到线下 IDC 内的组件 metric。



  • 非托管 exporter:对于我们暂未提供托管 exporter 的组件,或用户业务应用的自定义 metric,用户可以在 VPC 或 IDC 内部署自定义 exorter,然后在阿里云 Prometheus 控制台上配置自定义服务发现(ServiceDiscovery),最后阿里云 Prometheus 主动发现这些 exporter,并定时抓取和存储 metric。



  • Node/Windows exporter:它们是一类特殊的非托管 exporter,因为需要部署在每台 ECS 上,以便采集 ECS OS 上观测信息。阿里云 Prometheus 提供了 Node exporter 的原生支持,Windows exporter 原生支持也即将上线。




ECS 应用场景下,自建 Prometheus 与阿里云 Prometheus 对比

5.png


如何使用阿里云 Prometheus 观测 ECS 应用


步骤 1:创建 VPC 实例

登录 Prometheus 控制台 [ 3] ,选择新建 Prometheus 实例,根据界面提示,填写实例名、选择 VPC / VSwitch / SecurityGroup / Grafana 工作区,即可创建 VPC 实例成功。操作说明详见阿里云帮助中心文档 [ 4]

6.png

7.png


步骤 2:接入组件监控

目前阿里云 Prometheus 已支持 Node exporter、MySQL、Redis、ElasticSearch、Kafka、Nginx、MongoDB、PostgreSQL、RabbitMQ、RocketMQ、BlackBox 等组件观测。

阿里云 Prometheus 天然内置支持了 static_configs和aliyun_sd_configs 两种最常用/实用的服务发现方式,方便用户进行组件观测目标 ECS 的配置。

此处以 MySQL 为例,简要描述接入配置方法。登录 Prometheus 控制台后,进入已创建的 VPC 实例详情的集成中心界面,新建 MySQL 接入,填写 MySQL 监控名称、MySQL 地址、端口、用户名/密码等信息即可。详细操作步骤和说明,参见阿里云帮助中心文档 [ 5]

8.png


步骤 3:查看大盘

阿里云 Prometheus 无缝集成了共享版 Grafana 和专家版 Grafana,用户无需单独安装 Grafana,即可查看各个组件的观测大盘。

接入需要监控的组件后,在集成中心点击对应组件图标的已安装 Exporter,可以看到该组件的大盘略缩图和链接,点击即可进入阿里云 Grafana,查看对应观测大盘。详见阿里云帮助中心文档 [ 6]

9.png

10.png


步骤 4:配置告警

进入 VPC 实例详情的集成中心界面,进入 MySQL 组件的告警界面,即可创建 Prometheus 告警规则,详见阿里云帮助中心文档 [ 7]

11.png

12.png

阿里云 Prometheus 提供了免运维、开箱即用的 VPC(以及和 VPC 打通的线下 IDC 机房)内 ECS 的 OS、常见中间件、业务应用的 metric 观测能力,实现了一站式的云原生和非云原生环境的 metric 观测协同和闭环。同时我们正在持续升级和丰富常用组件的观测能力(如 Windows、JMX、ClickHouse、Jenkins、Process 等),敬请期待。


关于阿里云 Prometheus 监控

阿里云 Prometheus 服务是基于云原生可观测事实标准 - Prometheus 开源项目构建的全托管观测服务。默认集成常见云服务,兼容主流开源组件,全面覆盖业务观测/应用层观测/˙中间件观测/系统层观测。通过开箱即用的 Grafana 看板与智能告警功能,并全面优化探针性能与系统可用性,帮助企业快速搭建一站式指标可观测体系。助业务快速发现和定位问题,减轻故障给业务带来的影响,并免去系统搭建与日常维护工作量,有效提升运维观测效率。

13.jpeg

与此同时,阿里云 Prometheus 作为阿里云可观测套件的重要组成部分,与 Grafana 服务、链路追踪服务,形成指标存储分析、链路存储分析、异构构数据源集成的可观测数据层,同时通过标准的 PromQL 和 SQL,提供数据大盘展示,告警和数据探索能力。为 IT 成本管理、企业风险治理、智能运维、业务连续性保障等不同场景赋予数据价值,让可观测数据真正做到不止于观测。


更具性价比的计费选择,Prometheus 包年包月

14.png


相关链接

[1] 阿里云 Prometheus监控

https://help.aliyun.com/document_detail/122123.html

[2] 常见组件

https://help.aliyun.com/document_detail/251830.html

[3] 应用实时监控服务ARMS

https://arms.console.aliyun.com/#/home

[4] Prometheus实例 for ECS

https://help.aliyun.com/document_detail/274450.html

[5] 使用阿里云Prometheus监控MySQL

https://help.aliyun.com/document_detail/161838.html

[6] 集成中心

https://help.aliyun.com/document_detail/427600.html

[7] Prometheus告警规则

https://help.aliyun.com/document_detail/331981.html



推荐阅读
  • 本书《.NET Core 2.* 开发者指南》是面向开发者的全面学习与实践手册,涵盖了从基础到高级的各个层面。书中详细解析了 .NET Core 的核心概念,包括如何创建 .NET Core 网站,并通过视频教程直观展示操作过程。此外,还深入探讨了 Startup 类的作用、项目目录结构的组织方式以及如何在应用中使用静态文件等内容。对于希望深入了解 .NET Core 架构和开发技巧的开发者来说,本书提供了丰富的实践案例和详尽的技术指导。 ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • 通过优化模板消息机制,本研究提出了一种高效的信息化推送方案。该方案利用获取的访问令牌(access token)和指定的模板ID,实现了精准且快速的信息推送,显著提升了用户体验和信息传递效率。具体实现中,通过调用相关API接口,确保了消息的准确性和及时性,为用户提供更加便捷的服务。 ... [详细]
  • 来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持
    来宾 | Vmware ESXi 平台下的虚拟机在线管理与技术支持 ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 在本教程中,我们将详细介绍如何使用 ArcGIS API 3.x for JavaScript 绘制风向流动图。如果您对所涉及的 API 类不熟悉,建议参考 Esri 官方网站上的 ArcGIS API 3.x for JavaScript 文档,其中提供了详尽的类介绍和使用说明。此外,我们还将提供完整的源代码,帮助您更好地理解和实现这一功能。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 本文推荐了六款高效的Java Web应用开发工具,并详细介绍了它们的实用功能。其中,分布式敏捷开发系统架构“zheng”项目,基于Spring、Spring MVC和MyBatis技术栈,提供了完整的分布式敏捷开发解决方案,支持快速构建高性能的企业级应用。此外,该工具还集成了多种中间件和服务,进一步提升了开发效率和系统的可维护性。 ... [详细]
  • 在进行网络编程时,准确获取本地主机的IP地址是一项基本但重要的任务。Winsock作为20世纪90年代初由Microsoft与多家公司共同制定的Windows平台网络编程接口,为开发者提供了一套高效且易用的工具。通过Winsock,开发者可以轻松实现网络通信功能,并准确获取本地主机的IP地址,从而确保应用程序在网络环境中的稳定运行。此外,了解Winsock的工作原理及其API函数的使用方法,有助于提高开发效率和代码质量。 ... [详细]
  • 本文探讨了如何在 Google Sheets 中通过自定义函数实现 AJAX 调用。具体介绍了编写脚本的方法,以便在电子表格中发起 AJAX 请求,从而实现数据的动态获取与更新。这种方法不仅简化了数据处理流程,还提高了工作效率。 ... [详细]
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 本文深入探讨了算法进阶中的多个核心主题,包括最大似然估计在统计建模中的应用、赔率计算在风险评估中的重要性、FuzzyWuzzy库在字符串相似度匹配中的高效使用、主成分分析(PCA)在数据降维与特征提取中的关键作用,以及One-Hot编码在处理分类变量时的技术细节。通过这些内容,读者将获得对算法应用的全面理解。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • 微信支付授权目录配置详解及操作步骤
    在使用微信支付时,若通过WeixinJSBridge.invoke方法调用支付功能,可能会遇到“当前页面URL未注册”的错误提示,导致get_brand_wcpay_request:fail调用微信JSAPI支付失败。为解决这一问题,需要正确配置微信支付授权目录,确保支付页面的URL已成功注册。本文将详细介绍微信支付授权目录的配置步骤和注意事项,帮助开发者顺利完成支付功能的集成与调试。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
author-avatar
V铿锵花木兰V
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有