文章目录

  • 引言
  • 一、Prometheus 概述
    • zabbix与prometheus区别
    • 1. 简介
    • 2. 特性
    • 3. 监控三大核心步骤
  • 二、Prometheus 监控体系
    • 1. 系统层监控
    • 2. 中间件及基础设施类监控
    • 3. 应用层监控
    • 4. 业务层监控
  • 三、Prometheus 时序数据
    • 1. 数据来源
    • 2. 收集数据
    • 3. prometheus 获取方式
  • 四、Prometheus 生态组件
  • 五、Prometheus 数据模型
    • 1. 概述
    • 2. 指标类型
    • 3. 作业 job 和实列 targets/instance
    • 4. PrometheusQL(数据查询语言也是时序数据库使用语言)
      • ① 即时向量
      • ② 时间范围向量
  • 总结
    • 1.prometheus如何收集k8s/服务的–三种方式收集
    • 2.如何防止告警信息轰炸

引言

我们知道 zabbix 在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了 Prometheus 技术。

一、Prometheus 概述

zabbix与prometheus区别

zabbix消耗的资源比较多,如果监控的主机非常多时(服务器数量超过500台),可能会出现监控超时、告警超时、告警系统,单点故障等现象,不过也有很多解决办法,比如提高硬件性能、改变zabbix监控模式、 多套zabbix等。

1. 简介

  • borgmon (监控系统) 对应克隆的版本:prometheus(go语言)
  • 所以prometheus 特别适合K8S 的架构上,作为一个数据监控解决方案,它由一个大型社区支持,有来自700多家公司的6300个贡献者,13500个代码提交和7200个拉取请求

2. 特性

  • 可以自定义多维数据模型,储存更加高效
  • 具有灵活且强大的查询语句(PromQL)
  • 提供本地存储和分布式存储
  • 通过基于HTTP和HTTPS的Pull模型采集时间序列数据(pull数据的推送,时间序列:每段时间点的数据值指标,持续性的产生。横轴标识时间,纵轴标识数据值,一段时间内数值的动态变化,所有的点连线形成大盘式的折线图)
  • 可以通过push gateway进行时序列数据库推送
  • 可以通过服务发现或静态配置去获取要采集的目标服务器(通过consul自动发现和收缩)
  • 支持多种可视化图表及仪表盘

补充:
apen-Falcaon是小米开源的企业级监控工具,用Go语言开发,包括小米、滴滴、美团等在内的互联网公司都在使用它,是一款灵活、可拓展并且高性能的监控方案

3. 监控三大核心步骤

① 数据收集模块 ② 数据提取模块 ③ 监控告警模块

可以细化为下面6层

第一层:数据收集层 (多渠道监控数据)
第二层:数据展示层 (数据生成曲线图展示,对时序数据的动态展示)
第三层:数据提取层 (定时采集数据到监控模块)
第四层:告警规则配置层 (告警规则设置、告警伐值设置)
第五层:告警事件生成层 (实时记录告警事件、形成分析图表,趋势分析、可视化)
第六层:用户展示管理层 (同一用户管理、集中监控、集中维护)

二、Prometheus 监控体系

1. 系统层监控

  • CPU、load、Memory、swap、disk、I/O、process 等

  • 网络监控:网络设备、工作负载、网络延迟、丢包率等

2. 中间件及基础设施类监控

  • 消息中间件:Kafka、RocktMQ 等消息代理
  • web 服务器容器:tomcat、weblogic、apache、php、spring 系列
  • 数据库/缓存数据库:MySQL、PostgreSQL、MogoDB、es、redis

监控数据库哪些东西:例如redis监控内容:

  • redis所在服务器的系统层监控
  • redis 服务状态
  • RDB AOF日志监控
  • 日志—>如果是哨兵模式—>哨兵共享集群信息,产生的日志—>直接包含的其他节点哨兵信息及redis信息
  • key的数量
  • key被命中的数量/次数
  • 最大连接数——>redis 和 系统:
  • 系统:ulimit -a redis :redis-cli 登陆——> config get maxclients 查看最大连接

3. 应用层监控

  • 用于衡量应用程序代码状态和性能
  • 监控的分类:黑盒监控,白盒监控( promtheus)

白盒监控 :自省指标,等待被下载(只需要去拿就行)
黑盒指标: 基于探针的监控方式,不会主动干预、影响数据(摄像头这种)

4. 业务层监控

用于衡量应用程序的价值,如电商业务的销售量,ops、dau日活、转化率等
业务接口:登入数量,注册数、订单数、搜索量和支付量

三、Prometheus 时序数据

时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴,服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据。

1. 数据来源

  • prometheus 基于HTTP call (http/https请求),从配置文件中指定的网络端点(endpoint/IP:端口)上周期性获取指标数据
  • 很多环境、被监控对象,本身是没有直接响应/处理http请求的功能,prometheus-exporter则可以在被监控端收集所需的数据,收集过来之后,还会做标准化,把这些数据转化为prometheus可识别,可使用的数据(兼容格式)

2. 收集数据

收集数据分为白盒监控、黑盒监控

白盒监控: 自省方式,被监控端内部,可以自己生成指标,只要等待监控系统来采集时提供出去即可
黑盒监控: 对于被监控系统没有侵入性,对其没有直接"影响",这种类似于基于探针机制进行监控(snmp协议)

  • Prometheus属于白盒监控,支持通过以下三种类型的途径从木板上抓取指标数据:
    ① Exporters :指标暴露器;工作在被监控端,周期性的抓取数据并转换为pro兼容格式等待prometheus来收集,自己并不推送
    ② Instrumentation:应用程序内置的指标暴露器;指被监控对象内部自身有数据收集、监控的功能,只需要prometheus直接去获取
    ③ Pushgateway:专用于收集短周期(5~10s的数据收集)、临时的任务,等待prometheus拉取

3. prometheus 获取方式

Prometheus 同其它 TSDB 相比有一个非常典型的特性:它主动从各 Target 上拉取(pull)数据,而非等待被监控端的推送(push)

  • 两个获取方式各有优劣,其中,pull 模型的优势在于:
    ① 集中控制:有利于将配置集中在 Prometheus server 上完成,包括指标及采取速率等
    ② Prometheus 的根本目标在于收集在 target 上预先完成聚合的聚合型数据,而非一款由事件驱动的存储系统
    ③ 通过targets(标识的是具体的被监控端)

四、Prometheus 生态组件

  • Prometheus Server:服务端;收集和储存时间序列数据;
  • Client Library:客户端库;目的在于为那些期望原生提供Instrumentation功能的应用程序提供便捷的开发途径
  • Exporters :指标暴露器
  • Push Gateway:接收那些通常由短期作业生成的指标数据的网关
  • Prometheus Service Discovery(sd):服务动态发现待监控的Target,发送告警信息
  • Prometheus scrape:数据采集器
  • Alertmanager:由告警规则对接
  • Instrumentation:应用程序内置的指标暴露器
  • Data Visualization(Dashboards):(prome-UI界面)

五、Prometheus 数据模型

1. 概述

  • Prometheus 仅用键值方式存储时序式的聚合数据,不支持文本信息

  • 其中的 “键” 称为指标(metric),通常意味着CPU速率、内存使用率或分区空闲比例等

  • 同一指标可能适配到多个目标或设备、因而它使用 “标签”作为元数据,从而为metric添加更多的信息描述维度

  • Prometheus 每一份样本数据都包含了:
    ① 时序列标识:key+lables
    ② 当前时间序列的样本值value
    ③ 这些标签可以作为过滤器进行指标过滤及聚合运算,如何从上万的数据过滤出关键有限的时间序列,同时从有限的时间序列在特定范围的样本那就需要手动编写出时间序列的样本表达式来过滤出我们想要的样本数据

2. 指标类型

  • 默认都是以双精度浮点型数据(服务器端无数据量类型数据)
    ① counter:计数器单调递增
    ② gauge:仪表盘:有起伏特征的
    ③ histogram:直方图
    在一段时间范围内对数据采样的相关结果,并记入配置的bucket中,他可以存储更多的数据,包括样本值分布在每个bucket的数量,从而prometheus就可以使用内置函数进行计算:
    计算样本平均值:以值得综合除以值的数量
    计算样本分位值:分位数有助于了解符合特定标准的数据个数,例如评估响应时间超过1秒的请求比例,若超过20侧则进行告警等
    ④ summary:摘要,histogram的扩展类型,它是直接由监控端自行聚合计算出分位数,同时将计算结果响应给prometheus server的样本采集请求,因而,其分位数计算是由监控端完成

3. 作业 job 和实列 targets/instance

① job:能够接收 prometheus server 数据 scrape ,如 “mysql nodes” “mysql master slave”
② targets:每一个可以被监控的系统,成为 targets 多个相同的 targets 的集合(类)称为 job
③ instance:实例与 targets 类似
与 target 相比,instance 更趋近于一个具体可以提供监控数据的实例,而 targets 则更像一个对象、目标性质

4. PrometheusQL(数据查询语言也是时序数据库使用语言)

支持两种向量,同时内置提供了一组用于数据处理的函数

① 即时向量

最近以此时间戳上跟踪的数据指标,表示的是一个时间刻度;
即时向量选择器:返回0个1个或者多个时间序列上在给定时间戳上的各自的一个样本,该样本成为即时样本

② 时间范围向量

指定时间范围内所有时间戳上的数据指标,表示的是一组时间区间;
范围向量选择器:返回0个1个或多个时间序列上在给定时间范围内的各自的一组样本(范围向量选择器无法用于绘图)

总结

1.prometheus如何收集k8s/服务的–三种方式收集

  • Exporters(指标暴露器) :收集节点的信息、将数据格式化或转化为promtheus可识别的http这种转化方式/镜像拉取方式
  • Instrumentation (应用内置的指标暴露器): 收集有内置指标暴露器的信息
  • Pushgateway : 收集短周期的数据

2.如何防止告警信息轰炸

  • alertmanagr: prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件altermanager来进行告警,emailetctif优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸

  • 把这条告警规则中的支持静默开启,让它必须,配置文件里直接改alertmanagr改一个单词

Prometheus监控(一)相关推荐

  1. SpringBoot使用prometheus监控

    本文介绍SpringBoot如何使用Prometheus配合Grafana监控. 1.关于Prometheus Prometheus是一个根据应用的metrics来进行监控的开源工具.相信很多工程都在 ...

  2. Prometheus监控的最佳实践——关于监控的3项关键指标

    本文来自Weaveworks的工程师Anita Burhrle在Rancher Labs与Weaveworks联合举办的Online Meetup上的技术分享.在此次分享中,嘉宾们讨论了如何使用Ran ...

  3. 基于 eBPF 的 prometheus 监控方案

    基于 eBPF 的 prometheus 监控方案 1. 前言 2. ebpf_exporter 环境搭建 3. Prometheus 与 Grafana 配置 4. ebpf_exporter 代码 ...

  4. prometheus监控_使用Prometheus和Grafana监视开放自由

    prometheus监控 我录制了一个视频,该视频如何通过简单地配置服务器功能,使用Prometheus和Grafana向Open Liberty实例添加监视. 如果我们仅添加监视功能( monito ...

  5. 使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库

    使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库 原文:使用 Docker 部署 Grafana + Prometheus 监控 MySQL 数据库 一.背 ...

  6. 阿里云容器Kubernetes监控(七) - Prometheus监控方案部署

    前言 Prometheus是一款面向云原生应用程序的开源监控工具,作为第一个从CNCF毕业的监控工具而言,开发者对于Prometheus寄予了巨大的希望.在Kubernetes社区中,很多人认为Pro ...

  7. 从零搭建Prometheus监控报警系统

    从零开始搭建Prometheus自动监控报警系统 从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据 ...

  8. 监控工具—Prometheus—监控Redis

    原文作者:wyl9527 原文地址:Grafana Prometheus系统监控Redis服务 目录 1.下载redis_exporter安装包 2.解压安装 3.systemd管理redis_exp ...

  9. 监控工具—Prometheus—监控Java程序

    原文作者:青蛙小白 原文地址:Prometheus监控实践:使用Prometheus监控Java应用 目录 1.Prometheus JVM Client 2.Prometheus的服务发现 3.Gr ...

  10. 服务器运维监控指标,运维体系~指标监控~Prometheus监控告警与日志

    一 Prometheus 入门 1.1 入门介绍 运维体系~指标监控 先来一张图,说明一下Prometheus监控相关的软件和知识点. 1: 首先要安装:Prometheus, 负责收集各种监控指标, ...

最新文章

  1. figma设计_在Figma中使用隔片移交设计
  2. 判断android图片是否硬解码(方法)
  3. STM32-串口接收、发送数据实验-程序代码分析
  4. 微服务升级_SpringCloud Alibaba工作笔记0028---Nacos之Nacos集群配置下
  5. 如何在XP SP2下面使用DTC
  6. python训练模型函数参数_keras读取训练好的模型参数并把参数赋值给其它模型详解...
  7. Javassist进行方法插桩
  8. 入行GIS圈N年,看看资深GISer如何进行场景绘制?
  9. BIM学习笔记(一)
  10. 中国首档程序员真人秀,20位选手找bug做模型,结果一开场主办方就惨遭攻击
  11. Lotus Notes 7.0找不到服务器路径
  12. cmd连接oracle数据库常用命令
  13. 如何制作实时库存报表
  14. Apache原理详解
  15. VMware虚拟机复制文件卡死的解决
  16. 计算机上u盘变成快捷方式,打开u盘文件变成快捷方式怎么办?
  17. 护照阅读器助力港珠澳大桥拓展大湾区
  18. Oracle卸载卸不干净,Oracle彻底删除的办法(winxp)
  19. java word导出图片格式_用java怎么将word文档转成图片格式
  20. Win10安装java环境

热门文章

  1. python 网页微信_python---web微信开发
  2. Python爬虫入门【19】: B站博人传评论数据抓取 scrapy
  3. python错误:SyntaxError: Non-UTF-8 code starting with ‘\xbd‘
  4. 集合(无序,区别有序集合)
  5. php5.5 wamp,wamp环境单独安装(windows下apache2.4、mysql5.5、php5.5的版本)
  6. 说说我自己对于 基金 股票 的理解
  7. 基于短周期价量特征的多因子选股体系的实现(三)----因子计算
  8. miix4linux双系统,联想MIIX4笔记本U盘重装win10系统教程
  9. shell exec命令
  10. FpML to QuantLib 外滙美式選擇權估值