Prometheus部署
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的特点:
多维的数据模型(基于时间序列的Key、Value键值对)
灵活的查询和聚合语言PromQL
提供本地存储和分布式存储
通过基于HTTP的Pull模型采集时间序列数据
可利用Pushgateway(Prometheus的可选中间件)实现Push模式
可通过动态服务发现或静态配置发现目标机器
支持多种图表和数据大盘
prometheus的组件:
Prometheus server,负责拉取、存储时间序列数据
客户端库(client library),插入应用程序代码
推送网关(push gateway),支持短暂的任务
特殊类型的exporter,支持如HAProxy,StatsD,Graphite等服务
一个alertmanager处理告警
各种支持工具
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部署相关推荐
- Prometheus 部署告警对接 QQ 邮箱
目录 引言 一.定义 1. 告警功能概述 2. 通知告警信息 3. Prometheus 监控系统的告警逻辑 3.1 告警功能 3.2 静默.抑制.分组等功能 二.部署告警对接邮箱 1. 下载安装包 ...
- 二十七、prometheus部署安装配置告警
1.部署前简介 本次监控部署应用到的相关软件如下 prometheus 数据采集和存储 提供PromQL语法查询 alertmanager 警告管理 进行报警 node_exporter 收集主机的基 ...
- Prometheus部署监控容器
Prometheus架构描述 Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案 Prome ...
- 在 k8s 中部署 Prometheus 和 Grafana
部署 Prometheus 和 Grafana 到 k8s Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8 ...
- caas k8s主控节点如何查询_k8s中部署prometheus监控告警系统prometheus系列文章第一篇...
前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...
- k8s中部署prometheus监控告警系统-prometheus系列文章第一篇
前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...
- 监控 prometheus及其部署及server discovery,alertmanager,grafana(更新结束)
prometheus 一.常用监控简介 1.cacti 2.Nagios 3.Zabbix zabbix核心组件介绍 4.Prometheus 二.运维监控平台设计思路 三.prometheus监控体 ...
- 集群外独立部署Prometheus+Grafana监控K8S全面解析
简介 Prometheus+Grafana作为监控K8S的解决方案,大都是在K8S集群内部部署,这样可以直接调用集群内的cert及各种监控url,但是增加了集群的资源开销.因此在资源有限的情况下,我更 ...
- Prometheus普罗米修斯部署
prometheus部署 1.获取Prometheus安装包并解压 [root@localhost /]# wget https://github.com/prometheus/prometheus/ ...
最新文章
- Linux系统中创建虚拟环境详解
- 新浪股票接口AndroidSDK
- C++ 区分中文,非中文,截取含有中文的string字符串的两种方法
- nokia x7 android 9.0,诺基亚X7升级Android 9.0系统
- python升级pip在哪儿打开_Linux下升级python和安装pip的详解
- oracle adf_Oracle ADF和Oracle Jet一起工作。 建筑模式
- 《AlphaGo世纪对决》与周志华《机器学习》观后感
- proxool mysql 8小时_java数据库连接池proxool介绍及mysql8小时断开连接问题的说明
- 跨境电商独立站建站优化清单
- Python成绩单雷达图
- 阿里情书 | 爱情是什么模样?想来想去,都是你的模样
- Bean Validation 技术规范特性概述
- C语言半框,如何挑选适合自己的镜框(镜片)?
- Horner规则求多项式
- 服务器设置虚拟ip,服务器设置虚拟ip
- Python实现头像换脸(AI换脸)
- 某宝滑块 x82y解决方法、x5sec
- css元素的水平与垂直布局
- 基于大数据的中文舆情分析
- java 汉字转换全拼、首字母拼音
热门文章
- 偏光显微镜研究聚合物的球晶形态
- 【北京】No317| 在京在读研究生,可静可动,乐观,脾气好,很佛系的女孩,喜欢运动,旅游,读书,小吃货一枚,谈恋爱比较粘人...
- 谷歌为iPhone推新版本语音电话软件 北京网游分级制度今年启动(每日关注2010.1.27)
- 网易云课堂[Web安全工程师]第一部分 第二章WEB简介 学习记录
- 黑马C++笔记——STL常用算法
- 介绍一个python工程师必须掌握的 CentOS 命令,nohup
- winSCP:无权访问。 错误码:3 服务器返回的错误消息:Permission denied解决方案
- HTTP (RESTful) API 响应时间分析及SLA定义
- 好玩】续航时间提升四倍? 颂拓拓野3 Peak评测
- python 活体检测_基于Python+Keras+OpenCV实现实时人脸活体检测 | 文末送书