监控系统作用

监控系统主要用于保证所有业务系统正常运行, 和业务的瓶颈监控. 需要周期性采集和探测.

采集的详情

  • 采集: 采集器, 被监控端, 监控代理, 应用程序自带仪表盘, 黑盒监控, SNMP.
  • 存储: SQL, NoSQL(k/v, document, TSDB(series))
  • 展示: Grafana
  • 报警: Alert 通知 Email, 短信, 微信, 钉钉,
  • 常见开源实现: (Cacti/Nagios/ zabbix/ Prometheus)

监控体系

  • 系统层监控

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

 云原生时代可观测性

  • 可观测性系统

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

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

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

Prometheus

prometheus 是一款时序(time series)数据库,  但他的功能却并非止步于TSDB,  而是一款设计用于进行目标(Target)监控的关键组件.

组合生态系统内的其他组件, 例如 Pushgateway, Altermanager 和 Grafana等, 可构成完整的IT监控系统.

Metric, 有独创的指标格式, Prometheus 格式.

多维度标签, 每个独立的标签组合都代表一个独立的时间序列.

内建时序数据的聚合, 切割, 切片功能.

支持双精度浮点型数据.

时序数据简介

时序数据, 是在一段时间内通过重复测量(measurement)而获得的观测值的集合; 将这些观测值绘制于图形之上, 它会有一个数据轴和一个时间轴.

服务器指标数据, 应用程序性能监控数据, 网络数据等也是时序数据.

如何抓取数据Pull?

基于 HTTP call, 从配置文件中指定的网络端点(endpoint) 上周期性获取指标数据.

Prometheus 支持通过三种类型的途径从目标上抓取(Scrape) 指标数据.

  • Exporters 内建不支持指标暴露

  • Instrumentation 应用程序内建的

  • Pushgateway

Prometheus 同其它 TSDB 相比有一个非常经典的特性; 他可以主动从 Target 上"拉取" 数据, 而非等待被监控端的agent推送"push";

两种方式各有优劣, 其中 Pull 模型的优势在于:

  • 集中控制: 有利于将配置集中在 Prometheus Server上完成, 包括指标即采集速率等.

  • Prometheus 的根本目标在于收集 在 Target 上预先完成集合的聚合性数据.而非一款由时间驱动的存储系统.

Prometheus 生态组件

  • Prometheus Server: 收集和存储时间序列数据.
  • Client Library: 客户端库, 目的在于为那些期望原生提供 Lnstrumentation 更的应用程序提供便捷的开发途径.
  • Push Gateway: 接收那些通常由短期作业生成的指标数据的网关, 并支持Prometheus Server 进行指标拉取操作;
  • Exporters: 用于暴露现有应用程序或者服务(不支持Instrumentation) 的指标给Prometheus Server.
  • Alertmanager: 从 Prometheus Server 接收到告警通知后, 通过去重分组, 路由等预处理功能以高效向用户完成告警信息发送.
  • Data Visuaization: Prometheus Web UI(Prometheus Server 内建), 及 Grafana 等,
  • Service Discovery: 动态发现待监控的Target, 从而完成监控配置的中间组件, 从容器化环境尤为重要, 该组件目前由 Prometheus Server内建支持.

Prometheus 数据模型

Prometheus 仅用于以键值形式存储的时间式的聚合数据, 它并不支持存储文本信息.

其中 键 成为指标 "Metric", 它通常意味着 CPU速率, 内存使用速率, 或 分区空闲比例等.

用一指标可能会适配到读个目标或设备, 因而他使用标签作为元数据, 从而为 Metric 添加更多的信息描述纬度.

这些标签还可以作为过滤器进行指标过滤机聚合运算.

指标类型

Counter 计数器

用于保存单调递增的数据, 例如访问站点访问次数等, 不能为负值, 也不支持减少, 但是可以重置为0.

Gauge 仪表盘

用于 存储有着起伏特征的指标数据, 例如内存空间大小等;

Gauge 是 Counter 的超集, 但存在指标数据丢失的可能性是, Counter 能让用户确切来哦接指标随时间的变化, 而 Gauge 则可能随时间流逝而精准度越来越低.

Histogram 直方图

它会在一段时间内对数据进行采样, 并将其计入可配置的 bucket 之中, Histogram 能够储存更多的信息, 包括样本值分部在每个 bucket (bucket 自身的可配置) 中的数量, 所有样本值之和和以及总的样本数量, 从而 Prometheus 能够使用内建函数进行如下操作:

  • 计算样本平均值: 以值的总和除以值的数量.

  • 计算样本分位值: 分为数有助于了解符合特定标准的数据个数. 例如评估响应时长超1秒中的请求比例, 若超过20%即发送告警等.

summary 摘要

Histogram 扩展类型, 单它使直接由被检测端自行聚合计算出分位数, 并将计算结果响应给 Prometheus Server 的样本采集请求, 因而, 其分位数计算是由监控端完成.

Prometheus基础的更多相关文章

  1. Prometheus基础应用

    简介 Prometheus使用扫盲,包含基础的概念和操作说明,基于官网和个人测试. versoin: 2.14 官网 GitHub 安装 prometheus安装运行非常方便,下载后解压,运行根目录下 ...

  2. Prometheus基础(二)

    1.什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB).Prometheus使用Go语言开发,是Google BorgMon监控 ...

  3. Prometheus监控学习记录

    官方文档 Prometheus基础文档 从零开始:Prometheus 进阶之路:Prometheus —— 技巧篇 进阶之路:Prometheus —— 理解篇 prometheus的数据类型介绍 ...

  4. 360 基于 Prometheus的在线服务监控实践

    转自:https://mp.weixin.qq.com/s/lcjZzjptxrUBN1999k_rXw 主题简介: Prometheus基础介绍 Prometheus打点及查询技巧 Promethe ...

  5. 《为什么说 Prometheus 是足以取代 Zabbix 的监控神器?》

    为什么说 Prometheus 是足以取代 Zabbix 的监控神器?   Kuberneteschina 致力于提供最权威的 Kubernetes 技术.案例与Meetup! ​关注他 12 人赞同 ...

  6. prometheus学习系列一: Prometheus简介

    Prometheus简介 prometheus受启发于Google的Brogmon监控系统(相似kubernetes是从Brog系统演变而来), 从2012年开始由google工程师Soundclou ...

  7. Prometheus 学习目录

    Prometheus 介绍 Prometheus 安装 https://www.bookstack.cn/read/prometheus-book/quickstart-why-monitor.md ...

  8. 01 . Prometheus简介及安装配置Grafana

    Promethus简介 Prometheus受启发于Google的Brogmon监控系统(相似的Kubernetes是从Google的Brog系统演变而来),从2012年开始由前Google工程师在S ...

  9. Python调用Prometheus监控数据并计算

    Prometheus是什么 Prometheus是一套开源监控系统和告警为一体,由go语言(golang)开发,是监控+报警+时间序列数 据库的组合.适合监控docker容器.因为kubernetes ...

随机推荐

  1. Python3 TypeError: initial_value must be str or None, not bytes

    response.read() returns an instance of bytes while StringIO is an in-memory stream for text only. Us ...

  2. sed 修改替换包含关键字的整行

    查找关键字 user10 所在的行,替换整行内容为aaaaaaaaaa #sed -i "s/^.*user10.*$/aaaaaaaaaa/" useradd.txt

  3. python编程中的流程控制

    内容概要 成员运算 身份运算 流程控制 详细 1.成员运算 定义:判断某个个体在不在某个群体内 关键词:in(在) /// not in(不在) 例: num_list = [1, 2, 3, 4, ...

  4. SpringBoot热部署(7)

    1.引入热部署依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...

  5. Linux usb 2. 协议分析

    文章目录 0. 背景 1. USB 协议传输格式 1.1 Packet 1.1.1 Token Packet 1.1.2 Data Packet 1.1.3 Handshake Packet 1.1. ...

  6. 2020GACTF部分wp

    GACTF misc 签到 给了二维码图 切割再拼上就行 crymisc 给了一个crymisc.docx 无法打开 用file看一下 把后缀名改成zip然后解压 这里奇怪的是用winzip解压会提示 ...

  7. hudi clustering 数据聚集(三 zorder使用)

    目前最新的 hudi 版本为 0.9,暂时还不支持 zorder 功能,但 master 分支已经合入了(RFC-28),所以可以自己编译 master 分支,提前体验下 zorder 效果. 环境 ...

  8. R语言中文分词包jiebaR

    R语言中文分词包jiebaR R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据 ...

  9. ES6基础知识(Promise 对象)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. 详解电子表格中的json数据:序列化与反序列化

    从XML到JSON 当下应用开发常见的B/S架构之下,我们会遇到很多需要进行前后端数据传输的场景.而在这个传输的过程中,数据通过何种格式传输.方式是否迅速便捷.书写方式是否简单易学,都成为了程序员在开 ...