请启用 Javascript 以查看内容

Prometheus介绍

 ·   ·  ☕ 5 分钟  ·  ✍ CNSRE · 👀... 阅读

Prometheus介绍

Prometheus 简介

Prometheus 起初是 SoundCloud 创建的一个开源系统监控报警工具。自其 2012 年开创以来,众多公司、组织都采用了 Prometheus,该项目也有一个非常活跃的开发者和用户社区。Prometheus 于 2016 年加入了 CNCF,成为了继 Kubernetes 之后的第二个托管项目。

Prometheus 原理介绍

 目前Prometheus支持OpenTsdbInfluxDBElasticsearch等后端存储,通过适配器实现Prometheus存储的remote writeremote read接口,便可以接入Prometheus作为远程存储使用

PrometheuGo语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过KubernetesonslDNS等多种方式动态获取监控对象。在数据采集方面,借助Go语音的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。

Prometheus 特性(Features)

Prometheus 的主要特性

  • 通过指标名(metric name)和 KV 结构,使用时序数据(time series data)表达的多维度数据模型
  • PromQL,一种灵活的查询语言,能够更好的利用维度
  • 对分布式存储没有依赖;单服务器节点即可自治
  • 通过使用基于 HTTP 的拉模式 (pull model) 进行时序数据采集
  • 通过中间网关 ( gateway) 以支持推送时序数据
  • 通过服务发现或静态配置,发现监控目标(targets)
  • 支持多图和仪表盘模式

Prometheus 组件(Components)

  • Prometheus 生态由多组件构成,其中大部分都是可选配置:
  • 主要的 Promethues server:抓取和存储时序数据
  • 客户端 libraries:装置在应用端以采样(instrumenting)应用程序代码
  • push gateway:能够支持短时任务
  • 特别的 exporters 给各类服务,比如 HAProxy、StatsD、Graphite 等。
  • alertmanager:用来处理报警
  • 各式支持工具

Prometheus 架构(Architecture)

SRE运维博客|Linux系统运维|自动化运维|云计算|运维监控
Prometheus 采样数据有两种方式,一种是直接采样仪表化任务(instrumenting job),另一种通过中介 push gateway 来采样短时任务。Prometheus 在本地存储所有采样的样本,同时基于这些数据,执行规则(rules)用以从已存数据上聚合、记录新的时序数据,或用以发送报警。Grafana 或其他的 API consumers 可以可视化这些收集的数据。

Prometheus的基本原理是通过HTTP周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口并符合Prometheus定义的数据格式,就可以介入Prometheus监控

针对 Prometheus、Zabbix监控系统的对比

Zabbix Prometheus
优点 1、支持多平台的企业级分布式开源监控软件;
2、安装部署简单,多种数据采集插件灵活集成
3、功能强大,可实现复杂多条件告警
4、自带画图功能,得到的数据可以绘成图形
5、提供多种API接口,支持调用脚本
6、出现问题时可自动远程执行命令(需对agent设置执行权限)
1、后端用golang开发,前端是Grafana,JSON编辑即可解决。定制化难度较低
2、监控数据存储在基于时间序列的数据库内,便于对已有数据进行新的聚合。
3、各个组件都有较成熟高可用方案,没有单点故障
4、适合对云环境进行监控,对OpenStack,Kubernetes 有很好的集成。
5、支持报警的收敛
缺点 1、项目批量修改不方便
2、但是深层次需求需要非常熟悉Zabbix并进行大量的二次定制开发,难度较大;
3、系统级别报警设置相对比较多,如果不筛选的话报警邮件会很多;并且自定义的项目报警需要自己设置,过程比较繁
4、数据报表需要特殊二次开发定义;
1、安装相对复杂,监控、告警和界面都分属于不同的组件。
2、界面相对较弱,很多配置需要修改配置文件。

对比项 Prometheus zabbix Prometheus优势 zabbix优势
管理 二进制文件启动 LNMP+编译 轻量级server,便于迁移和维护
配置 配置文件 图形化 更好的支持自动化配置 学习成本低 -
client 丰富的client库 zabbix_agent自定义脚本 为各种中间件、应用提供专业的exporter,监控项更全面 支持自定义监控项,对监控设计者的格局要求较高
数据存储方式 Prometheus TSDB MySQL 监控数据以时间为维度统计情况较多,时序数据库更适用于监控数据的存储,按时间索引性能更高 MySQL较常用,学习成本低
数据处理 PromQL MySQL PromQL计算函数丰富,统计维度广 同上
二次开发 丰富的sdk api 提供了Go、Java/Scala、Python、Ruby等sdk,二次开发更便捷 api适配较为常用,学习成本低
对云环境的支持 原生支持容器监控 更适合物理机监控 自动发现容器,更好的适配k8s
告警方式 可按照标签分组,收敛 在次数上收敛 告警收敛方式更多样化
监控项值 支持数字 支持数字字符串 可做日志监控

文章链接
https://www.cnsre.cn/posts/210326133909/

您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

Avatar
作者
CNSRE
一位只会重启的运维


目录