Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。

官网:https://prometheus.io 最新版本: 2.36.0

Exporter是一个采集监控数据并通过Prometheus监控规范对外提供数据的组件,能为Prometheus提供监控的接口。

Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可获取到需要采集的监控数据。不同的Exporter负责不同的业务。

Prometheus 开源的系统监控和报警框架,灵感源自Google的Borgmon监控系统

AlertManager 处理由客户端应用程序(如Prometheus server)发送的警报。它负责将重复数据删除,分组和路由到正确的接收者集成,还负责沉默和抑制警报

Node_Exporter 用来监控各节点的资源信息的exporter,应部署到prometheus监控的所有节点

PushGateway 推送网关,用于接收各节点推送的数据并暴露给Prometheus server

文档:https://prometheus.io/docs/introduction/overview/

下载prometheus各组件:

https://prometheus.io/download/

环境准备
主机说明:
系统 ip 角色 cpu 内存 hostname
ubuntu 18.04 192.168.30.135 prometheus、node1 >=2 >=2G prometheus
ubuntu 18.04 192.168.30.136 altermanager、node2 >=2 >=2G altermanager
ubuntu 18.04 192.168.30.137 grafana、node3 >=2 >=2G grafana
全部关闭防火墙和selinux:

systemctl stop firewalld && systemctl disable firewalld
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config  && setenforce 0

Prometheus介绍
prometheus的特点:

  1. 多维的数据模型(基于时间序列的Key、Value键值对)

  2. 灵活的查询和聚合语言PromQL

  3. 提供本地存储和分布式存储

  4. 通过基于HTTP的Pull模型采集时间序列数据

  5. 可利用Pushgateway(Prometheus的可选中间件)实现Push模式

  6. 可通过动态服务发现或静态配置发现目标机器

  7. 支持多种图表和数据大盘

prometheus的组件:

  1. Prometheus server,负责拉取、存储时间序列数据

  2. 客户端库(client library),插入应用程序代码

  3. 推送网关(push gateway),支持短暂的任务

  4. 特殊类型的exporter,支持如HAProxy,StatsD,Graphite等服务

  5. 一个alertmanager处理告警

  6. 各种支持工具

prometheus的架构:
下图说明了Prometheus的体系结构及其某些生态系统组件:

prometheus的使用场景:
prometheus非常适合记录任何纯数字时间序列。它既适合以机器为中心的监视,也适合监视高度动态的面向服务的体系结构。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

prometheus的设计旨在提高可靠性,使其成为中断期间要使用的系统,从而使您能够快速诊断问题。每个prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务,当基础设施部分出现问题时仍然可以使用它。

Prometheus概念
数据模型:
prometheus将所有数据存储为时间序列:属于相同 metric名称和相同标签组(键值对)的时间戳值流。

metric 和 标签:
每一个时间序列都是由其 metric名称和一组标签(键值对)组成唯一标识。

metric名称代表了被监控系统的一般特征(如 http_requests_total代表接收到的HTTP请求总数)。它可能包含ASCII字母和数字,以及下划线和冒号,它必须匹配正则表达式[a-zA-Z_:][a-zA-Z0-9_:]*。

注意:冒号是为用户定义的记录规则保留的,不应该被exporter使用。

标签给prometheus建立了多维度数据模型:对于相同的 metric名称,标签的任何组合都可以标识该 metric的特定维度实例(例如:所有使用POST方法到 /api/tracks 接口的HTTP请求)。查询语言会基于这些维度进行过滤和聚合。更改任何标签值,包括添加或删除标签,都会创建一个新的时间序列。

标签名称可能包含ASCII字母、数字和下划线,它必须匹配正则表达式[a-zA-Z_][a-zA-Z0-9_]*。另外,以双下划线__开头的标签名称仅供内部使用。

标签值可以包含任何Unicode字符。标签值为空的标签被认为是不存在的标签。

表示法:
给定 metric名称和一组标签,通常使用以下表示法标识时间序列:

{=, …}
例如,一个时间序列的 metric名称是 api_http_requests_total,标签是 method=“POST” 和 handler=“/messages”。可以这样写:

api_http_requests_total{method=“POST”, handler=“/messages”}
这和OpenTSDB的表示法是一样的。

metric类型:
Counter 值只能单调增加或重启时归零,可以用来表示处理的请求数、完成的任务数、出现的错误数量等

Gauge 值可以任意增加或减少,可以用来测量温度、当前内存使用等

Histogram 取样观测结果,一般用来请求持续时间或响应大小,并在一个可配置的分布区间(bucket)内计算这些结果,提供所有观测结果的总和

                    累加的 counter,代表观测区间:<basename>_bucket{le="<upper inclusive bound>"}所有观测值的总数:<basename>_sum观测的事件数量:<basenmae>_count

Summary 取样观测结果,一般用来请求持续时间或响应大小,提供观测次数及所有观测结果的总和,还可以通过一个滑动的时间窗口计算可分配的分位数
观测的事件流φ-quantiles (0 ≤ φ ≤ 1):{quantile=“φ”}
所有观测值的总和:_sum
观测的事件数量:_count

实例与任务:
在prometheus中,一个可以拉取数据的端点叫做实例(instance),一般等同于一个进程。一组有着同样目标的实例(例如为弹性或可用性而复制的进程副本)叫做任务(job)。

当prometheus拉取目标时,它会自动添加一些标签到时间序列中,用于标识被拉取的目标:

job:目标所属的任务名称

instance:目标URL中的:部分

如果两个标签在被拉取的数据中已经存在,那么就要看配置选项 honor_labels 的值来决定行为了。

每次对实例的拉取,prometheus会在以下的时间序列中保存一个样本(样本指的是在一个时间序列中特定时间点的一个值):

up{job=“”, instance=“”}:如果实例健康(可达),则为 1 ,否则为 0

scrape_duration_seconds{job=“”, instance=“”}:拉取的时长

scrape_samples_post_metric_relabeling{job=“”, instance=“”}:在 metric relabeling 之后,留存的样本数量

scrape_samples_scraped{job=“”, instance=“”}:目标暴露出的样本数量

up 时间序列对于实例的可用性监控来说非常有用。

Prometheus部署
下载prometheus:

mkdir /software && cd /softwarewget https://github.com/prometheus/prometheus/releases/download/v2.36.0/prometheus-2.36.0.linux-amd64.tar.gz
tar xf prometheus-2.36.0.linux-amd64.tar.gz
mv prometheus-2.36.0.linux-amd64.tar.gz /usr/local/prometheus

安装prometheus:

useradd -M -s /sbin/nologin prometheus
mkdir -p /data/prometheus
chown -R prometheus:prometheus /usr/local/prometheus /data/prometheus
vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target[Service]
Type=simple
Environment="GOMAXPROCS=4"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/prometheus/prometheus \--config.file=/usr/local/prometheus/prometheus.yml \--storage.tsdb.path=/data/prometheus \--storage.tsdb.retention=30d \--web.console.libraries=/usr/local/prometheus/console_libraries \--web.console.templates=/usr/local/prometheus/consoles \--web.listen-address=0.0.0.0:9090 \--web.read-timeout=5m \--web.max-connections=10 \--query.max-concurrency=20 \--query.timeout=2m \--web.enable-lifecycle
PrivateTmp=true
PrivateDevices=true
ProtectHome=true
NoNewPrivileges=true
LimitNOFILE=infinity
ReadWriteDirectories=/data/prometheus
ProtectSystem=fullSyslogIdentifier=prometheus
Restart=always[Install]
WantedBy=multi-user.target

启动prometheus:

systemctl daemon-reload
systemctl enable prometheus && systemctl start prometheus
netstat -lntp | grep prometheus

tcp6 0 0 :::9090 ::

Prometheus部署相关推荐

  1. Prometheus 部署告警对接 QQ 邮箱

    目录 引言 一.定义 1. 告警功能概述 2. 通知告警信息 3. Prometheus 监控系统的告警逻辑 3.1 告警功能 3.2 静默.抑制.分组等功能 二.部署告警对接邮箱 1. 下载安装包 ...

  2. 二十七、prometheus部署安装配置告警

    1.部署前简介 本次监控部署应用到的相关软件如下 prometheus 数据采集和存储 提供PromQL语法查询 alertmanager 警告管理 进行报警 node_exporter 收集主机的基 ...

  3. Prometheus部署监控容器

    Prometheus架构描述 Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案 Prome ...

  4. 在 k8s 中部署 Prometheus 和 Grafana

    部署 Prometheus 和 Grafana 到 k8s Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8 ...

  5. caas k8s主控节点如何查询_k8s中部署prometheus监控告警系统prometheus系列文章第一篇...

    前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...

  6. k8s中部署prometheus监控告警系统-prometheus系列文章第一篇

    前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...

  7. 监控 prometheus及其部署及server discovery,alertmanager,grafana(更新结束)

    prometheus 一.常用监控简介 1.cacti 2.Nagios 3.Zabbix zabbix核心组件介绍 4.Prometheus 二.运维监控平台设计思路 三.prometheus监控体 ...

  8. 集群外独立部署Prometheus+Grafana监控K8S全面解析

    简介 Prometheus+Grafana作为监控K8S的解决方案,大都是在K8S集群内部部署,这样可以直接调用集群内的cert及各种监控url,但是增加了集群的资源开销.因此在资源有限的情况下,我更 ...

  9. Prometheus普罗米修斯部署

    prometheus部署 1.获取Prometheus安装包并解压 [root@localhost /]# wget https://github.com/prometheus/prometheus/ ...

最新文章

  1. Linux系统中创建虚拟环境详解
  2. 新浪股票接口AndroidSDK
  3. C++ 区分中文,非中文,截取含有中文的string字符串的两种方法
  4. nokia x7 android 9.0,诺基亚X7升级Android 9.0系统
  5. python升级pip在哪儿打开_Linux下升级python和安装pip的详解
  6. oracle adf_Oracle ADF和Oracle Jet一起工作。 建筑模式
  7. 《AlphaGo世纪对决》与周志华《机器学习》观后感
  8. proxool mysql 8小时_java数据库连接池proxool介绍及mysql8小时断开连接问题的说明
  9. 跨境电商独立站建站优化清单
  10. Python成绩单雷达图
  11. 阿里情书 | 爱情是什么模样?想来想去,都是你的模样
  12. Bean Validation 技术规范特性概述
  13. C语言半框,如何挑选适合自己的镜框(镜片)?
  14. Horner规则求多项式
  15. 服务器设置虚拟ip,服务器设置虚拟ip
  16. Python实现头像换脸(AI换脸)
  17. 某宝滑块 x82y解决方法、x5sec
  18. css元素的水平与垂直布局
  19. 基于大数据的中文舆情分析
  20. java 汉字转换全拼、首字母拼音

热门文章

  1. 偏光显微镜研究聚合物的球晶形态
  2. 【北京】No317| 在京在读研究生,可静可动,乐观,脾气好,很佛系的女孩,喜欢运动,旅游,读书,小吃货一枚,谈恋爱比较粘人...
  3. 谷歌为iPhone推新版本语音电话软件 北京网游分级制度今年启动(每日关注2010.1.27)
  4. 网易云课堂[Web安全工程师]第一部分 第二章WEB简介 学习记录
  5. 黑马C++笔记——STL常用算法
  6. 介绍一个python工程师必须掌握的 CentOS 命令,nohup
  7. winSCP:无权访问。 错误码:3 服务器返回的错误消息:Permission denied解决方案
  8. HTTP (RESTful) API 响应时间分析及SLA定义
  9. 好玩】续航时间提升四倍? 颂拓拓野3 Peak评测
  10. python 活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书