Prometheus

Prometheus是一套开源的监控&报警&时间序列数据库的组合。对我来说,它跟 zabbix 最大的区别就是它没有模板,所有的告警规则都得自己写。。。

它有一套查询命令(promQL)可以进行很多的运算。

组成及架构

介绍以下几个常用的组件:

  • Prometheus Server: 用于收集和存储时间序列数据。

  • exporters: 用于暴露已有的第三方服务的 metrics 给 Prometheus。

  • Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,微信、钉钉等。

大概流程:

  1. Prometheus Server 定时去目标上抓取 metrics ,如配置好的 jobs、exporters ,每个目标需要暴露一个 http 接口给它定时抓取。
  2. Prometheus Server 存储收集到的 metrics ,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报。
  3. Alertmanager 根据配置文件,对接收到的告警进行处理,并发出告警。
  4. Grafana 使用 Prometheus 作为数据源,根据收集到的 metrics 生成可视化数据

概念

数据模型

Prometheus 存储的数据为时间序列,由 metrics (指标名称) 和 label (一个或多个标签)组成。不同的 label 表示不同的时间序列。

每条时间序列是由唯一的指标名称和一组标签(key=value)的形式组成。

  • 指标名称: 一般用于表示 metrics 的功能,例如 probe_http_status_code 这样
  • 标签: 就是对一条时间序列不同维度的识别了。例如probe_http_status_code{instance="https://baidu.com",job="blackbox_http"}
四种数据类型(抄的)
  • Counter

一种累加的 metric,典型的应用如:请求的个数,结束的任务数, 出现的错误数等等。

例如,查询 http_requests_total{method="get", job="Prometheus", handler="query"} 返回 8,10 秒后,再次查询,则返回 14。

  • Gauge

一种常规的 metric,典型的应用如:温度,运行的 goroutines 的个数。

可以任意加减。

例如:go_goroutines{instance="172.17.0.2", job="Prometheus"} 返回值 147,10 秒后返回 124。

  • Histogram

可以理解为柱状图,典型的应用如:请求持续时间,响应大小。

可以对观察结果采样,分组及统计。

例如,查询 http_request_duration_microseconds_sum{job="Prometheus", handler="query"} 返回的结果

Summary

类似于 Histogram, 典型的应用如:请求持续时间,响应大小。

提供观测值的 count 和 sum 功能。

提供百分位的功能,即可以按百分比划分跟踪结果。

instance 和 jobs

instance: 一个单独 scrape 的目标, 一般对应于一个进程。

jobs: 一组同种类型的 instances(主要用于保证可扩展性和可靠性),例如:

job 和 instance 的关系

  - job_name: 'pxc'
static_configs:
- targets: ['172.18.201.66:9100', '172.18.201.67:9100', '172.18.201.68:9100']

Prometheus(1) 概念的更多相关文章

  1. prometheus基本概念(思维导图)

    参考文章: prometheus词汇表 prometheus的summary和histogram指标的简单理解

  2. 第七模块 :微服务监控告警Prometheus架构和实践

    119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...

  3. 一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起

    上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本 ...

  4. 一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式

    前言 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念 ...

  5. 部署Prometheus+Grafana监控

    Prometheus 1.不是很友好,各种配置都手写 2.对docker和k8s监控有成熟解决方案 Prometheus(普罗米修斯) 是一个最初在SoudCloud上构建的监控系统,开源项目,拥有非 ...

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

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

  7. Prometheus学习系列(三)之Prometheus 概念:数据模型、metric类型、任务、实例

    前言 本文来自Prometheus官网手册1.Prometheus官网手册2 和 Prometheus简介 说明 Prometheus从根本上存储的所有数据都是时间序列: 具有时间戳的数据流只属于单个 ...

  8. prometheus(1)之核心概念

    个人理解:prometheus核心在于 1.prom数据类型的理解 (4钟数据类型 与常用的promQL语法 其实很容易) 2.各种服务发现与正则拼接(服务发现的拼接其实官方定义好的 理解就行) 3. ...

  9. 使用 Prometheus + Grafana 对 Kubernetes 进行性能监控的实践

    1 什么是 Kubernetes? Kubernetes 是 Google 开源的容器集群管理系统,其管理操作包括部署,调度和节点集群间扩展等. 如下图所示为目前 Kubernetes 的架构图,由 ...

随机推荐

  1. webview的学习总结:

    1.1: Weview常见的坑 及其 内存泄漏的解决方案: WebView 1. WebView常见的坑 API 16之前版本存在远程代码执行漏洞,该漏洞源自于程序没有正确限制使用WebView.ad ...

  2. Eclipse阿里代码规范插件安装,卸载与使用

    使用阿里代码规范插件,我们就可以查看我们写的代码是否规范了 找到阿里代码插件网址: 网址:https://p3c.alibaba.com/plugin/eclipse/update/ 打开我们的网址, ...

  3. (IStool)软件打包时当文件存在时不覆盖文件(配置文件)

    需求:程序实际使用过程中有些配置信息是需要用户手动配置的,不同客户使用配置信息也不同,所以软件发布前需要考虑这个问题,覆盖安装时需要忽略这些配置文件 实现:当对应的目录下由此文件的时候不覆盖此文件 [ ...

  4. Oracle中替换字符中空格、制表符、换行符、回车符

    引用:https://blog.csdn.net/linminqin/article/details/7386510 特殊符号ascii定义 制表符 chr(9)  换行符 chr(10) 回车符 c ...

  5. C语言字符串之无重复字符的最长子串

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 输入: "abcabcbb" 输出: 解释: 因为无重复字符的最长子串是 . 输入: " ...

  6. 【Qt开发】Qt5 中对 C++11 一些新特性的封装

    C++11 是现在的 C++ 标准的名称,C++11 为 C++ 语言带来很多新特性. 而 Qt 4.8 是 Qt 首个在其 API 中开始使用一些新的 C++11 特性的版本,我之前写过一篇博文:C ...

  7. OpenCV.CV_FOURCC

    1.c++ - how to use CV_CAP_PROP_FOURCC_ - Stack Overflow.html(https://stackoverflow.com/questions/223 ...

  8. OpenCV.学习OpenCV.pdf

    1.Pdf.P160(书.P129) “表5-1:平滑操作的各总类型” 的列名 看起来很模糊,现在先把尽可能看得清的字记录下来: 平滑类型 名称 支持 No 输入数据类型 输出数据类型 简要说明 2. ...

  9. Java学习笔记-设计模式

    常见设计模式有23种,设计模式是解决某一类问题最行之有效的方法 单例设计模式 解决一个类在内存中只存在一个对象 思想 为了避免其他程序过多建立该类对象.先禁止其他程序建立该类对象 还为了让其他程序可以 ...

  10. shell中得到当下路径所有文件夹名称

      方法1: for dir in $(ls -al ./|awk '/^d/ {print $NF}') do echo $dir done   方法2: for dir in $(ls ./) d ...