内容简介:Prometheus是一个功能强大,可扩展,轻量级,易于使用和部署的监视工具,对于每个系统管理员和开发人员来说都是必不可少的。出于这些原因和其他原因,许多公司正在将Prometheus作为其基础设施的一部分。本文将学习安装和编写Prometheus普罗米修斯监控和警报系统的查询。Prometheus是
Prometheus是一个功能强大,可扩展,轻量级,易于使用和部署的监视工具,对于每个系统管理员和开发人员来说都是必不可少的。出于这些原因和其他原因,许多公司正在将Prometheus作为其基础设施的一部分。本文将学习安装和编写Prometheus普罗米修斯监控和警报系统的查询。
Prometheus 是一个开源监控和警报系统,可直接从目标主机上运行的代理程序中删除指标,并将收集的样本集中存储在其服务器上。度量也可以使用像插件collectd_exporter进行推送, -尽管这不是Promethius的默认行为,它可能在某些环境中有用:比如主机在防火墙后或由安全策略禁止端口访问。
Prometheus是 Cloud Native Computing Foundation的 一个项目,它使用联合模型进行扩展,该模型使一个Prometheus服务器能够抓取另一个Prometheus服务器。这允许创建分层拓扑,其中中央系统或更高级别的Prometheus服务器可以抓取已从下级实例收集的聚合数据。
除Prometheus服务器外,其最常见的组件是 Alertmanager 及其exporters。
警报规则可以在Prometheus中创建,并配置为向Alertmanager发送自定义警报。然后,Alertmanager处理和处理这些警报,包括通过电子邮件或第三方服务(如 PagerDuty) 等不同机制发送通知。
Prometheus的exporters可以是库包,流程,设备或任何其他公开Prometheus将要删除的指标的东西。这些指标可在端点/指标处获得,这使得Prometheus可以直接抓取它们而无需代理。本文中的教程使用 node_exporter来公开目标主机的硬件和操作系统指标。exporters的输出是明文和高度可读的,这是Prometheus的优势之一。
此外,您可以将 Grafana 配置为使用Prometheus作为后端来提供数据可视化和仪表板功能。
理解Prometheus的配置文件
控制抓取时间间隔的粒度在配置文件中定义为scrape_interval参数,默认情况下设置为60秒。
需要为scrape_configs部分中的每个scrape作业设置目标。每个作业都有自己的名称和一组标签,可以帮助您过滤,分类并更轻松地识别目标。一项工作可以有很多目标。
安装Prometheus
在本教程中,为简单起见,我们将使用 docker 安装Prometheus服务器和node_exporter。Docker应该已经在您的系统上正确安装和配置。
在开始之前,在工作目录中创建Prometheus配置文件prometheus.yml,如下所示:
global: scrape_interval:15s evaluation_interval:15s scrape_configs: - job_name:'prometheus'<b>static</b>_configs : - targets:['localhost:9090'] - job_name:'webservers'<b>static</b>_configs : - targets:['<node exporter node IP>:9100' ]
通过运行以下命令启动与Docker的Prometheus:
$ sudo docker run -d -p 9090:9090 -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml prom / prometheus
默认情况下,Prometheus服务器将使用端口9090.如果此端口已在使用,您可以通过在末尾添加参数--web.listen-address =“<IP of machine>:<port>”来更改它。
在要监视的计算机中,使用以下命令下载并运行node_exporter容器:
$ sudo docker run -d -v <font>"/proc:/host/proc"</font><font> -v </font><font>"/sys:/host/sys"</font><font> -v </font><font>"/:/rootfs"</font><font> --net=</font><font>"host"</font><font> prom/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored- mount-points </font><font>"^/(sys|proc|dev|host|etc)($|/)"</font><font> </font>
出于学习练习的目的,您可以在同一台计算机上安装node_exporter和Prometheus。请注意,在生产中在Docker下运行node_exporter并不明智- 这仅用于测试目的。
要验证node_exporter是否正在运行,请打开浏览器并导航到http:// <Node of node exporter host>:9100 / metrics。将显示收集的所有指标; 这些是Prometheus将要采取的相同指标。
要验证Prometheus服务器安装,请打开浏览器并导航到 http://localhost:9090 。
您应该看到Prometheus界面。单击Status,然后单击Targets。在状态下,您应该看到您的机器列为 UP。
使用Prometheus查询
现在是时候熟悉 PromQL ,Prometheus的查询语法及其图形化Web界面。在Prometheus服务器上转到 http:// localhost:9090 / graph 。您将看到一个查询编辑器和两个选项卡:Graph和Console。
Prometheus将所有数据存储为时间序列,使用度量标准名称标识每个数据。例如,度量标准node_filesystem_avail_bytes显示可用的文件系统空间。度量标准的名称可以在表达式框中使用,以选择具有此名称的所有时间序列并生成即时向量。如果需要,可以使用选择器和标签(一组键值对)过滤这些时间序列 - 例如:
node_filesystem_avail_bytes{fstype=<font>"ext4"</font><font>} </font>
过滤时,您可以匹配“完全相等”(=),“不等于”(!=),“正则表达式匹配”(=〜)和“不要正则表达式匹配”(!〜)。以下示例说明了这一点:
要过滤node_filesystem_avail_bytes以显示ext4和XFS文件系统:
node_filesystem_avail_bytes{fstype=~"ext4|xfs"}
要排除匹配:
node_filesystem_avail_bytes{fstype!="xfs"}
您还可以使用方括号从当前时间返回一系列样本。您可以使用s表示秒,m表示分钟,h表示小时,d表示天,w表示数周,y表示年。使用时间范围时,返回的向量将是范围向量。
例如,以下命令生成从五分钟到现在的样本:
node_memory_MemAvailable_bytes[5m]
Prometheus还包括允许高级查询的功能,例如:
100 * (1 - avg by(instance)(irate(node_cpu_seconds_total{job='webservers',mode='idle'}[5m])))
请注意标签如何用于过滤作业和模式。度量node_cpu_seconds_total返回一个计数器,irate ()函数根据范围间隔的最后两个数据点计算每秒的变化率(意味着该范围可以小于五分钟)。要计算总体CPU使用率,可以使用node_cpu_seconds_total指标的空闲模式。处理器的空闲百分比与繁忙的处理器相反,因此从1中减去irate值。要使其为百分比,请将其乘以100。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- TiDB入门(四):从入门到“跑路”
- MyBatis从入门到精通(一):MyBatis入门
- MyBatis从入门到精通(一):MyBatis入门
- Docker入门(一)用hello world入门docker
- 赵童鞋带你入门PHP(六) ThinkPHP框架入门
- 初学者入门 Golang 的学习型项目,go入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
URL 编码/解码
URL 编码/解码
HSV CMYK 转换工具
HSV CMYK互换工具