Fork me on Gitee

Prometheus介绍

一、 Prometheus简介

prometheus是一个开源的系统监控和报警系统。现已经加入到CNCF(Cloud Native Computing Foundation)云原生计算基金会。成为继K8s之后第二个在CNCF托管的项目。在Kubernetes容器管理系统中,通常会搭配Prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。


二、Prometheus特点

2.1 Prometheus特点

  1. 多维度数据模型。

    每一个时间序列数据都有metric度量指标名称和它的标签labels键值对集合唯一确定:这个metric度量指标名称指定监控目标系统的测量特征。(如:http_requests_total- 接收http请求的总计数)。labels开启了Prometheus的多维数据模型:对于相同的度量名称,通过不同标签列表的结合, 会形成特定的度量维度实例。(例如:所有包含度量名称为/api/tracks的http请求,打上method=POST的标签,则形成了具体的http请求)。这个查询语言在这些度量和标签列表的基础上进行过滤和聚合。改变任何度量上的任何标签值,则会形成新的时间序列图)

  2. 灵活的查询语言(PromQL):可以对采集的metrics指标进行加法、乘法。连接等操作;

  3. 可以直接在本地部署,不依赖其他分布式存储;

  4. 可以基于HTTP的pull方式采集时序数据;

  5. 可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端。

  6. 可以通过服务发现或者静态配置来发现目标服务对象。(如对接cursor)。

  7. 有多种可视化图形界面,比如Grafana等。

  8. 高效的数据存储。没个采样数据占3.5bytes左右,300w的时间序列,30s间隔,保留60天,消耗磁盘大约200G

  9. 高可用。可以对数据做异地备份,联邦集群。部署多套Prometheus、pushgateway上报数据。

2.2 什么是样本

样本 :在时间序列中的每一个点称为一个样本(sample)。一个样本由以下三部分组成

- 指标 (`metric`):指标名称和描述当前样本特征的label sets。
- 时间戳(`timestamp`):一个精确到毫秒的时间戳。
- 样本值(`value`): 一个float64的浮点型数据表示当前样本的值。

表示方式:通过如下表达式方式表示指定 指标名称和指定标签集合的时间序列:

{


三、Prometheus架构图

Prometheus架构图

  • Prometheys Server: Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。
  • Exporters:prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端,所有想prometheus server提供监控数据的程序都可以成为exporter。
  • AlertManager:从Prometheus server接瘦到alerts后,会进行去重,分组,并路由相应的接收方。发出报警。常见的接收方式有:电子邮件,微信,钉钉,短信通知等。
  • Grafana:监控仪表盘,可视化监控数据。
  • PushGateway:各个目标主机可上报数据到pushGateway, 然后Prometheus Server统一从PushGateway拉取数据。

从架构图中可以看到。Prometheus整个生态圈组成主要包括Prometheus Server、exporter、pushgateway、alertManager、Grafana、Web UI界面。Prometheus Server由三个部分组成,RetrievalStoragePromQL

  • Retrieval:负责在活跃的target目标主机上抓取监控指标数据。
  • Storage:主要是把采集到的数据存储到磁盘中。
  • PromQL:是Prometheus提供的查询语言模块。

四、Prometheus 工作流程

  1. Prometheus Server可以定期从活跃状态(up目标主机上(target)拉取监控指标数据。目标主机的监控数据可以通过配置静态job或者服务发现的方式被prometheus server采集到,这种方式默认的pull方式拉取指标数据,也可以通过pushgateway把采集到的数据汇报到prometheus server中。还可以通过一些组件自带的exporter采集响应组件的数据。如Node_exporter、Nginx_exporter。
  2. Prometheus server把采集到的监控指标数据保存到本地磁盘或时序数据库。
  3. Prometheus采集的监控指标数据按时间序列存储,通过配置报警规则,将触发的报警发送到alert Manager
  4. Alert Manager通过配置报警接收方,发送报警到邮件、短信、钉钉或者企业微信。
  5. Prometheus自带的Web UI界面提供PromQL查询语言,可查询监控数据。
  6. Grafana可接入Prometheus数据源,把监控到的数据以可视化大屏方式展示。

五、Prometheus和Zabbix对比

Zabbix Prometheus
定制化 后端采用C开发,界面采用PHP开发,定制化难度很高。 后端用GoLang开发,界面主推Grafana(JSON编辑即可解决)。定制化难度较低。
集群规模 集群规模上线为10000个节点。 支持更大的集群规模。
云原生组件支持 监控数据存储在关系型数据库如MySQL中。很难从现有数据中扩展维度。 监控数据存储在基于时间序列的数据库内,便于对已有数据进行新的聚合。
安装难易 安装简单,Zabbix-server一个软件中包含了所有的服务端功能。 安装相对复杂,监控、告警和界面都分属于不同的组件。
图形化支持 图形化界面比较成熟,界面上基本能够完成全部的配置操作 界面相对较弱,很多配置需要修改配置文件。
成熟度 发展时间更长,对于很多监控场景,都有线程的解决方案。 2015年后开始迅速发展,但发展时间短,成熟度不及Zabbix

六、Prometheus部署模式

6.1 基本高可用模式

该模式只能确保Prometheus服务的可用性问题,不能解决Prometheus Server之间的数据一致性问题以及数据持久化问题(数据丢失后无法回复),也无法进行动态扩展。因此这种模式适合监控规模不大,Prometheus Server也不会频繁发生迁移的情况,并且只需要保存短周期内监控数据的场景。

6.2 基本高可用+远程存储

image-20210711144454843

解决了Prometheus服务可用性的基础上,提供了数据持久化存储方案。当Prometheus Server发生宕机后,可以迅速的恢复。同时Prometheus Server可以进行迁移。因此,该方案适用于用户监控规模不大,但是希望能够监控数据持久化,同时能确保Prometheus Server可迁移性的场景。

6.4 基本高可用+远程存储+联邦集群解决方案

Prometheus的性能瓶颈主要在于大量的采集任务,因此用户需要利用prometheus联邦集群的特性,将不同类型的采集任务划分到不同的Prometheus子服务中,从而实现功能分区。


七、Prometheus能监控哪些数据

# Databases---数据库
    Aerospike exporter
    ClickHouse exporter
    Consul exporter (official)
    Couchbase exporter
    CouchDB exporter
    ElasticSearch exporter
    EventStore exporter
    Memcached exporter (official)
    MongoDB exporter
    MSSQL server exporter
    MySQL server exporter (official)
    OpenTSDB Exporter
    Oracle DB Exporter
    PgBouncer exporter
    PostgreSQL exporter
    ProxySQL exporter
    RavenDB exporter
    Redis exporter
    RethinkDB exporter
    SQL exporter
    Tarantool metric library
    Twemproxy
# Hardware related---硬件相关
    apcupsd exporter
    Collins exporter
    IBM Z HMC exporter
    IoT Edison exporter
    IPMI exporter
    knxd exporter
    Netgear Cable Modem Exporter
    Node/system metrics exporter (official)
    NVIDIA GPU exporter
    ProSAFE exporter
    Ubiquiti UniFi exporter
# Messaging systems---消息服务
    Beanstalkd exporter
    Gearman exporter
    Kafka exporter
    NATS exporter
    NSQ exporter
    Mirth Connect exporter
    MQTT blackbox exporter
    RabbitMQ exporter
    RabbitMQ Management Plugin exporter
# Storage---存储
    Ceph exporter
    Ceph RADOSGW exporter
    Gluster exporter
    Hadoop HDFS FSImage exporter
    Lustre exporter
    ScaleIO exporter
# HTTP---网站服务
    Apache exporter
    HAProxy exporter (official)
    Nginx metric library
    Nginx VTS exporter
    Passenger exporter
    Squid exporter
    Tinyproxy exporter
    Varnish exporter
    WebDriver exporter
# APIs
    AWS ECS exporter
    AWS Health exporter
    AWS SQS exporter
    Cloudflare exporter
    DigitalOcean exporter
    Docker Cloud exporter
    Docker Hub exporter
    GitHub exporter
    InstaClustr exporter
    Mozilla Observatory exporter
    OpenWeatherMap exporter
    Pagespeed exporter
    Rancher exporter
    Speedtest exporter
# Logging---日志
    Fluentd exporter
    Google's mtail log data extractor
    Grok exporter
# Other monitoring systems
    Akamai Cloudmonitor exporter
    Alibaba Cloudmonitor exporter
    AWS CloudWatch exporter (official)
    Cloud Foundry Firehose exporter
    Collectd exporter (official)
    Google Stackdriver exporter
    Graphite exporter (official)
    Heka dashboard exporter
    Heka exporter
    InfluxDB exporter (official)
    JavaMelody exporter
    JMX exporter (official)
    Munin exporter
    Nagios / Naemon exporter
    New Relic exporter
    NRPE exporter
    Osquery exporter
    OTC CloudEye exporter
    Pingdom exporter
    scollector exporter
    Sensu exporter
    SNMP exporter (official)
    StatsD exporter (official)
# Miscellaneous---其他
    ACT Fibernet Exporter
    Bamboo exporter
    BIG-IP exporter
    BIND exporter
    Bitbucket exporter
    Blackbox exporter (official)
    BOSH exporter
    cAdvisor
    Cachet exporter
    ccache exporter
    Confluence exporter
    Dovecot exporter
    eBPF exporter
    Ethereum Client exporter
    Jenkins exporter
    JIRA exporter
    Kannel exporter
    Kemp LoadBalancer exporter
    Kibana Exporter
    Meteor JS web framework exporter
    Minecraft exporter module
    PHP-FPM exporter
    PowerDNS exporter
    Presto exporter
    Process exporter
    rTorrent exporter
    SABnzbd exporter
    Script exporter
    Shield exporter
    SMTP/Maildir MDA blackbox prober
    SoftEther exporter
    Transmission exporter
    Unbound exporter
    Xen exporter
# Software exposing Prometheus metrics---Prometheus度量指标
    App Connect Enterprise
    Ballerina
    Ceph
    Collectd
    Concourse
    CRG Roller Derby Scoreboard (direct)
    Docker Daemon
    Doorman (direct)
    Etcd (direct)
    Flink
    FreeBSD Kernel
    Grafana
    JavaMelody
    Kubernetes (direct)
    Linkerd

参考文章

  1. Prometheus介绍
posted @ 2022-02-24 12:00  shine-rainbow  阅读(471)  评论(0编辑  收藏  举报