运维监控系列(1)- IT监控系统简介_netflix的use方法-程序员宅基地

技术标签: # 运维监控  java  linux  监控  prometheus  

运维监控系统

监控系统是实现自动化运维的基础,在一个IT环境中会存在各种各样的设备,例如,硬件基础设施需要监控;软件运行状态需要监控;程序中的API需要监控;程序执行脚本需要监控;以及数据库的慢查询需要监控等等。

包含组件

一个完整的运维监控平台,应该包含以下功能:

  • 指标数据采集(抓取)
  • 指标数据存储
  • 指标数据趋势分析及可视化
  • 告警

监控体系(自底向上)

  • 系统层监控
    • 系统监控:CPU、Load. Memory、 Swap、Disk IO、 Processes. Kernel Parameters
    • 网络监控:网络设备、工作负载、网络延迟、丢包率等
  • 中间件及基础设施类系统监控
    • 消息中间件:Kafka、RocketMQ和RabbitMQ等
    • Web服务容器:Tomcat和Jetty等
    • 数据库及缓存系统:MySQL、PostgreSQL、 MogoDB、ElasticSearch和Redis等
    • 数据库连接池:ShardingSpere等
    • 存储系统:Ceph、minIO、FastDFS等
  • 应用层监控
    • 用于衡量应用程序代码的状态和性能
  • 业务层监控
    • 用于衡量应用程序的价值,例如电子商务网站上的销售量
    • QPS、DAU日活、转化率
    • 业务接口:登录数、注册数、订单量、搜索量和支付量等

云原生时代可观测性

在云原生时代,基础设施与应用的部署构建都发生了极大变化,传统的监控方式已经无法适应云原生的场景。在这个背景下,社区引入了云原生可观测性这一理念。可观测性概念最早由Apple 的工程师 Cindy Sridharan 提出,作为监控的进一步延伸,可观测性与监控的区别可以总结为:“监控告诉我们系统的哪些部分是工作的。可观测性告诉我们哪里为什么不工作了”。

当前,主流可观测性系统主要基于Metrics、Traces、Logs三大数据类型构建,围绕着这三种数据类型,开源社区构建了多种多样的开源产品,像Prometheus, Cortex, Fluentd, ELK, Loki, Jaeger等。这些开源产品极大的丰富了人们在云原生可观测性实践中的选择。然而,这些开源组件大多专注于解决某个特定场景的可观测性问题,应对复杂业务场景往往会让开发运维人员陷入困境。

可观测性系统:

  • 指标监控(Metics):随时间推移产生的一些与监控相关的可聚合数据点;
  • 日志监控(Logging):离散式的日志或事件;
  • 链路跟踪(Tracing):分布式应用调用链跟踪;

CNCF将可观测性和数据分析归类一个单独的类别,且划分成了4个子类

  • 监控系统:以Prometheus等为代表;
  • 日志系统:以ElasticStack和PLG Stack等为代表;
  • 分布式调用链跟踪系统:以Zipkin.Jacger.SkyWalking.Pinpoint等为代表;
  • 混沌工程系统:以ChaosMonkey和ChaosBlade等为代表;

可观测性业界动态

AWS

从CloudWatch到AMP/AMG,全面拥抱开源。

CloudWatch一直以来都是AWS最主要的监控服务,包含了监控、告警、日志、事件等功能。为了应对云原生可观测性场景,CloudWatch推出了Container Insights功能,并支持Prometheus指标接入。Container Insights为用户构建了Prometheus指标面板,应用性能监控、集群拓扑图等功能。

阿里云ARMS

以应用监控为核心,构建全链路监控能力。

阿里云ARMS主要能力围绕应用监控构建,包括前端监控、后端监控、移动端监控、业务监控,云拨测等。整体功能如下图:
在这里插入图片描述
为了补足云原生可观测性能力,ARMS又陆续发布了Prometheus监控、容器监控(Container Insights)等功能。

Azure Monitor

Azure Monitor是Azure统一的监控服务,支持Metrics, Logs, Traces等多种数据类型接入,为客户提供可视化、分析、告警、洞察等功能。总体功能如下图:
在这里插入图片描述

Vmware Tanzu

Wavefront是Vmware收购的云计算监控初创公司,以满足VMware将其监控功能扩展到云和容器应用程序的愿景。收购Wavefront也给Vmware带来大量的用户,包括Box、思杰、Clover、Groupon、Intuit、Lyft、SpaceApe、Snowflake和Yammer等。

Wavefront定位为高性能流式分析平台,支持metrics, histograms, traces/spans等多种数据类型,同时也对容器洞察做了专门支持。Wavefront架构图如下:
在这里插入图片描述

著名的监控方法论

Google的四个黄金指标

常用于在服务级别帮助衡量终端用户体验、服务中断、业务影响等层面的问题
,适用于应用及服务监控。

主要关注与以下四种类型的指标:延迟,通讯量,错误以及饱和度:

1、延迟:服务请求所需时间。
记录用户所有请求所需的时间,重点是要区分成功请求的延迟时间和失败请求的延迟时间。 例如在数据库或者其他关键祸端服务异常触发HTTP 500的情况下,用户也可能会很快得到请求失败的响应内容,如果不加区分计算这些请求的延迟,可能导致计算结果与实际结果产生巨大的差异。除此以外,在微服务中通常提倡“快速失败”,开发人员需要特别注意这些延迟较大的错误,因为这些缓慢的错误会明显影响系统的性能,因此追踪这些错误的延迟也是非常重要的。

2、通讯量:监控当前系统的流量,用于衡量服务的容量需求。
流量对于不同类型的系统而言可能代表不同的含义。例如,在HTTP REST API中, 流量通常是每秒HTTP请求数;

3、错误:监控当前系统所有发生的错误请求,衡量当前系统错误发生的速率。
对于失败而言有些是显式的(比如, HTTP 500错误),而有些是隐式(比如,HTTP响应200,单实际业务流程依然是失败的)。

对于一些显式的错误如HTTP 500可以通过在负载均衡器(如Nginx)上进行捕获,而对于一些系统内部的异常,则可能需要直接从服务中添加钩子统计并进行获取。

4、饱和度:衡量当前服务的饱和度。
主要强调最能影响服务状态的受限制的资源。 例如,如果系统主要受内存影响,那就主要关注系统的内存状态,如果系统主要受限与磁盘I/O,那就主要观测磁盘I/O的状态。因为通常情况下,当这些资源达到饱和后,服务的性能会明显下降。同时还可以利用饱和度对系统做出预测,比如,“磁盘是否可能在4个小时候就满了”。

Netflix的USE方法

USE方法由Netflix的内核和性能工程师Rendan Gregg提出,主要用于分析系统性能问题。

1、使用率(Utilization)
关注系统资源的使用情况。这里的资源主要包括但不限于:CPU,内存,网络,磁盘等等100%的使用率通常是系统性能瓶颈的标志。

2、饱和度(Saturation)
例如CPU的平均运行排队长度,这里主要是针对资源的饱和度(注意,不同于4大黄金信号),任何资源在某种程度上的饱和都可能导致系统性能的下降。

3、错误(Errors)
错误计数
例如:“网卡在数据包传输过程中检测到的以太网网络冲突了14次”。

RED方法

RED方法是Weave Cloud在基于Google的4个黄金指标的原则下结合。

Prometheus以及Kubernetes容器实践,细化和总结的方法论,特别适合于云原生应用以及微服务架构应用的监控和度量。

在四大黄金指标的原则下,RED方法可以有效地帮助用户衡量云原生以及微服务应用下的用户体验问题。

RED方法主要关注以下3种关键指标:

  • (Request)Rate:每秒钟接收的请求数;
  • (Request)Errors:每秒失败的请求数;
  • (Request)Duration:每个请求所花费的时长;

开源解决方案

1. zabbix

Zabbix 是一个企业级分布式开源监控解决方案。

Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化能。这些功能使得 Zabbix 成为容量规划的理想选择。

2. Prometheus

Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。

3. Nagios

Nagios是一款开源的企业级监控系统,能够实现对系统CPU、磁盘、网络等方面参数的基本系统监控,以及 SMTP,POP3,HTTP,NNTP等各种基本的服务类型。另外通过安装插件和编写监控脚本,用户可以实现应用监控,并针对大量的监控主机和多个对象 部署层次化监控架构。

4. anglia

Ganglia是加州大学伯克利分校发起的一个开源集群监控项目,设计之初是用于监控数以千计的网络节点。Ganglia是一个跨平台可扩展的,高性能计算系统下的分布式监控系统。它已被广泛移植到各种操作系统和处理器架构上。

5. Open-falcon

Open-falcon是小米运维团队从互联网公司的需求出发,根据多年的运维经验,结合SRE、SA、DEVS的使用经验和反馈,开发的一套面向互联网的企业级开源监控产品。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43437874/article/details/108866833

智能推荐

Oracle Linux 7.5安装oracle 12cR2数据库_linux7.5不用图形界面安装oracle12c-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏22次。Oracle Linux 7.5安装oracle 12cR2数据库1 安装Oracle之前的环境准备1.1 预先准备安装oracle所需的RPM包(本次yum安装12cR2的基础环境RPM包进行全部基础包安装和参数设置,需要能访问外网且配置DNS)1.1.1 yum安装oracle官方的12cR2基础环境设置RPM包yum -y install oracle-database-ser..._linux7.5不用图形界面安装oracle12c

Python读取和操作Excel(.xlsx)文件_python打开或创建.xlsx文件,并获取活动表单-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏38次。Python读取Excel使用openpyxl库来控制excel文件(即.xlsx为后缀的文件)。这里介绍一下excel数据的结构。打开excel文件后生成一个workbook(工作簿)每个工作簿中包含多张表单worksheet正在操作的表单被称为活跃表单active sheet对于某一特定行和列的小格子称为单元格cell安装使用pip安装,pip install openpyxl简单的步骤import openpyxl # 导入openpyxl模块wb = openpyxl.loa_python打开或创建.xlsx文件,并获取活动表单

进阶篇---Soft Actor-Critic (SAC)_soft actor critic 为什么需要两个网络-程序员宅基地

文章浏览阅读1.5k次。进阶篇—Soft Actor-Critic (SAC)SAC是一个off-policy + actor critic + maximum entropy的RL算法。比DDPG,SVG等方法稳定并且效果更好。代码参见我的GitHub前言1、on-policy 与 off-policy:on-policy:“边交互边学习” ,每一次参数更新时,都需要与环境交互,因而当遇到复杂任务时,需要的更新步骤更多,增大了复杂度off-policy :“重用过去的经验”,典型的就是经验池策略的方法,比如DQN,DD_soft actor critic 为什么需要两个网络

spring bean的循环引用-程序员宅基地

文章浏览阅读203次。看过一次spring公开课,记录一下bean的循环引用问题。问题:public class IndexService{  @Autowired  IndexDao indexDao;}public class IndexDao{  @Autowired  IndexService indexService;}以上的实例中IndexService依赖..._spring bean循环引用

Docker结合Jenkins部署vue项目_docker jenkins vue-cli-程序员宅基地

文章浏览阅读3.1k次。Docker结合Jenkins部署vue项目接上篇Vue项目没什么好说的,在本地一般使用vue ui启动vue管理的前端,然后在里面进行启动Vue官方说可以不通过ngin来部署,但是如果上生产环境,建议还是要走nginx安装nginx这里安装过程不再赘述,如果不清楚可以参考下面这篇文章https://blog.csdn.net/qq_42815754/article/details/8..._docker jenkins vue-cli

MySQL与Redis数据库结合(一)——lnmp+redis+mysql实现读写分离_redis+mysql读写分离流程-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏15次。Redis—redis结合lnmp架构做mysql的缓存服务器文章目录一 、redis结合lnmp架构做mysql的缓存服务器实现读写分离(一)在server1中配置nginx(二)在server2中配置redis(三)在server3上安装mysql(四)建立php和redis,mysql的连接(五)浏览器访问测试一 、redis结合lnmp架构做mysql的缓存服务器实现读写分离读写分离..._redis+mysql读写分离流程

随便推点

0x00007FF9A7F72079 (ucrtbased.dll)处引发的异常: 0xC0000005: 写入位置 0x000000094D100000 时发生访问冲突_0x00007fffbd9cac87 (ucrtbased.dll)处(位于 mysql c++连接-程序员宅基地

文章浏览阅读1.7w次,点赞22次,收藏11次。此类型错误,需要更改为其temp中name数组的长度,在scanf_s中需要添加,在scanf中不需要。_0x00007fffbd9cac87 (ucrtbased.dll)处(位于 mysql c++连接.exe 中)引发的异常: 0

TiDB 混沌工程实践:如何打造健壮的分布式系统?-程序员宅基地

文章浏览阅读181次。本文转载自 InfoQ 网站作者:唐刘策划:赵钰莹原文链接:https://www.infoq.cn/article/bxGvrb_CxAZD6Wv3fUj8作为一个分布式数据库,TiDB 面临的严重挑战在于如何让用户相信存储在 TiDB 里面的数据是安全的,不会出现丢失,损坏等情况..._唐刘 tidb

android中的activity跳转动画_android13车载系统使用activity跳转动画-程序员宅基地

文章浏览阅读536次。仿微信页面平移跳转,android中的Activity跳转动画_android13车载系统使用activity跳转动画

SAP实现多个统御科目:特殊总账SGL+备选统驭科目Alternative Reconciliation Accounts_sap特别总账科目调账-程序员宅基地

文章浏览阅读7.9k次,点赞2次,收藏8次。问题: 客户或供应商因多种业务,需要多个统御科目1、特殊总账 SGL一个客户或供应商或资产默认只有一个统驭科目,F-02记账的时候,若不选特别总账标示,则记账在主记录中的统驭科目中,一般为应收应付。若关于此客户、供应商、资产等有非应收应付业务发生时,比如预收、预付、信用证、保证金等,此时记账虽然记账在客户供应商上,但不需要记账在往来科目上,此时就需要选择特别总账_sap特别总账科目调账

android常用控件ViewPager(二) ViewPager与Fragment_fragment viewpage2获取子fragment-程序员宅基地

文章浏览阅读355次。在上一篇中提到过ViewPager通常和Fragment一起使用来达到View的切换效果。为此google也提供了两个与Fragment的适配器。分别为 FragmentPagerAdapter与FragmentStatePagerAdapter。前者会缓存三个Fragment。后者在我们切换不同的Fragment的时候,我们会把前面的Fragment销毁。但会把我们的我们Fragment的Bund_fragment viewpage2获取子fragment

在pycharm中运行pytest报错ModuleNotFoundError: No module named 'pytest'_pycharm控制台执行“pytest” 报错:assert mod not in mods-程序员宅基地

文章浏览阅读1.1w次,点赞4次,收藏3次。萌新记录一下安装pytest后在pycharm中运行出现的错误,及解决方法问题本人萌新一个,一开始还以为自己pytest和pycharm安装的盘不一样导致的,全部卸了重安,网上的解决方案也试了全部没用,最后找了朋友帮忙。其实只是命名有问题,pytest的文件名称必须为test_.py或_test.py我之前的名称中有空格所以出现问题,修改之后就没有问题了感谢朋友,记录这个小问题..._pycharm控制台执行“pytest” 报错:assert mod not in mods

推荐文章

热门文章

相关标签