概念
Prometheus支持通过三种类型的途径从目标上抓取(scrape)指标数据;管理告警,主要是负责实现报警功能。在 Prometheus Server 中支持基于 PromQL 创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由 AlertManager 进行管理。
Prometheus 的生态组件
Prometheus Server
Prometheus组件中的核心部分,收集和存储时间序列数据,提供PromQL查询语言的支持。内置的 Express Browser UI,通过这个 UI 可以直接通过 PromQL 实现数据的查询以及可视化。
Exporters
将监控数据采集的端点通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的Endpoint端点,即可以获取到需要采集的监控数据
PushGateway
主要是实现接收由 Client push 过来的指标数据,在指定的时间间隔,由主程序来抓取。由于 Prometheus 数据采集基于 Pull 模型进行设计,因此在网络环境的配置上必须要让 Prometheus Server 能够直接与 Exporter 进行通信。当这种网络需求无法直接满足时,就可以利用 PushGateway 来进行中转。可以通过 PushGateway 将内部网络的监控数据主动 Push 到 Gateway 当中。而 Prometheus Server 则可以采用同样 Pull 的方式从 PushGateway 中获取到监控数据。
Alertmanager
管理告警,主要是负责实现报警功能。在 Prometheus Server 中支持基于 PromQL 创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由 AlertManager 进行管理。在 AlertManager 中我们可以与邮件,Slack 等等内置的通知方式进行集成,也可以通过 Webhook 自定义告警处理方式。AlertManager 即 Prometheus 体系中的告警处理中心。
安装部署:
Prometheus 官方网站:https://prometheus.io/
GitHub下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.35.0https://github.com/prometheus/prometheus/releases/tag/v2.35.0
环境准备:
192.168.152.128 | Prometheus |
192.168.152.138 | grafana |
192.168.152.148 | client |
先把3台机器的防火墙都关闭哦
[root@prometheus ~]# systemctl stop firewalld.service
导入并执行prometheus
[root@prometheus ~]# tar xzvf prometheus-2.35.0.linux-amd64.tar.gz -C /usr/local/
prometheus-2.35.0.linux-amd64/
prometheus-2.35.0.linux-amd64/consoles/
...
[root@prometheus ~]# cd /usr/local/
[root@prometheus local]# ll
total 0
drwxr-xr-x. 2 root root 6 Aug 12 2018 bin
drwxr-xr-x. 2 root root 6 Aug 12 2018 etc
drwxr-xr-x. 2 root root 6 Aug 12 2018 games
drwxr-xr-x. 2 root root 6 Aug 12 2018 include
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib
drwxr-xr-x. 2 root root 6 Aug 12 2018 lib64
drwxr-xr-x. 2 root root 6 Aug 12 2018 libexec
drwxr-xr-x. 4 3434 3434 132 Apr 21 18:03 prometheus-2.35.0.linux-amd64
drwxr-xr-x. 2 root root 6 Aug 12 2018 sbin
drwxr-xr-x. 5 root root 49 Oct 18 2020 share
drwxr-xr-x. 2 root root 6 Aug 12 2018 src
[root@prometheus local]# cd prometheus-2.35.0.linux-amd64/
[root@prometheus prometheus-2.35.0.linux-amd64]# ./prometheus &
[1] 8869
...
[root@prometheus prometheus-2.35.0.linux-amd64]# lsof -i:9090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
prometheu 8869 root 7u IPv6 80098 0t0 TCP *:websm (LISTEN)
prometheu 8869 root 10u IPv6 80137 0t0 TCP localhost:54866->localhost:websm (ESTABLISHED)
prometheu 8869 root 11u IPv6 80138 0t0 TCP localhost:websm->localhost:54866 (ESTABLISHED)
web页面访问Prometheus
client安装node_exporter(监控远程linux主机)
#在远程linux主机(被监控端安装node_exporter组件)
#下载地址:Release 1.3.1 / 2021-12-01 · prometheus/node_exporter · GitHubhttps://github.com/prometheus/node_exporter/releases/tag/v1.3.1
Prometheus的监控不同的指标需要不同的exporter包,如监控Linux的CPU负载等性能指标,就需要安装官网的node_exporter-0.16.0.linux-amd64.tar.gz包,监控mysql服务器就需要安装mysqld_exporter包。
[root@client ~]# tar xzvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
node_exporter-1.3.1.linux-amd64/
node_exporter-1.3.1.linux-amd64/LICENSE
node_exporter-1.3.1.linux-amd64/NOTICE
node_exporter-1.3.1.linux-amd64/node_exporter
[root@client ~]# cd /usr/local/node_exporter-1.3.1.linux-amd64/
[root@client node_exporter-1.3.1.linux-amd64]# nohup ./node_exporter &
[1] 7905
[root@client node_exporter-1.3.1.linux-amd64]# lsof -i:9100
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node_expo 7905 root 3u IPv6 68553 0t0 TCP *:jetdirect (LISTEN)
客户端安装完成,接下来让服务器端去监控客户端
配置prometheus服务端:
在主配置文件中添加监控的客户端信息。#add something
[root@prometheus ~]# cd /usr/local/prometheus-2.35.0.linux-amd64/
[root@prometheus prometheus-2.35.0.linux-amd64]# vim prometheus.yml
scrape_configs:
# The job name is added as a label `job=` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# add something
- job_name: "client"
static_configs:
- targets: ["192.168.152.148:9100"]
重新启动该服务
[root@prometheus prometheus-2.35.0.linux-amd64]# kill -9 3586
[1]+ Killed ./prometheus
[root@prometheus prometheus-2.35.0.linux-amd64]# ./prometheus &
[1] 3625
登录到web,可以看到target中已经存在client客户端的监控信息
在grafana服务器上安装grafana
下载地址:Index of /grafana/yum/rpm/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirrorhttps://mirrors.bfsu.edu.cn/grafana/yum/rpm/
[root@grafana ~]# wget https://mirrors.bfsu.edu.cn/grafana/yum/rpm/grafana-8.5.0-1.x86_64.rpm
[root@grafana ~]# rpm -ivh grafana-8.5.0-1.x86_64.rpm
warning: grafana-8.5.0-1.x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID 24098cb6: NOKEY
Verifying... ################################# [100%]
...
[root@grafana ~]# systemctl start grafana-server.service
[root@grafana ~]# lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
grafana-s 3350 grafana 10u IPv6 68326 0t0 TCP *:hbci (LISTEN)
可以通过web访问grafana的3000端口,默认用户名:,默认密码:admin
将Prometheus服务器收集到的数据作为一个数据源添加到grafana,让grafana可以得到Prometheus的数据
传输认证部分自行修改,获取方式修改成get,最后保存测试
现在就可以把添加好的数据源做成图形显示
到这就结束啦,之后的深入我在研究!!!