linux中prometheus的使用

概念

  • 首先,Prometheus是一款时序(time serier)数据库,但它的功能却并不止于TSDB,而是一款设计用于进行目标(Target)监控的关键组件;集合生态系统内的其他组件,例如pushGateway、Altermanager和Grafana等,可构成一个完整的IT监控系统。
  • 时序数据,是在一段时间内通过重复测量而获得的观察值的集合;将这些观测值绘制于图形之上,有一个数据轴和时间轴。我们服务器的指标数据、应用程序的性能检测数据、网络数据等也都是时序数据。基于http/https,从配置文件中指定的网络端点(客户端)上周期性获取指标数据。
  • 工作模型是基于pull/push中的pull(拉取)。

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 体系中的告警处理中心。

linux中prometheus的使用_第1张图片

安装部署: 

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

linux中prometheus的使用_第2张图片

linux中prometheus的使用_第3张图片

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客户端的监控信息

linux中prometheus的使用_第4张图片

grafana连接prometheus

在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的数据 

linux中prometheus的使用_第5张图片

linux中prometheus的使用_第6张图片 

传输认证部分自行修改,获取方式修改成get,最后保存测试

 现在就可以把添加好的数据源做成图形显示 

linux中prometheus的使用_第7张图片

 linux中prometheus的使用_第8张图片

到这就结束啦,之后的深入我在研究!!! 

你可能感兴趣的:(监控,Linux运维,安全,源码软件,linux)