slurm集群监控部署

一、Prometheus(普罗米修斯)

1、Prometheus简述

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),基于Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus在2016年加入了云原生计算基金会,成为Kubernetes之后的第二个项目。
Prometheus是一个开源的监控系统,它可以帮助用户监控各种不同类型的系统和应用程序。Prometheus采用的是pull模型,它定期从目标系统中拉取指标数据在本地数据库中。这些指标数据可以用于生成图表、警报和报告,以帮助用户了解他们系统的运作状态和性能表现。Prometheus通过多种数学算法能实现强大的监控需求,原生支持k8s服务发现,能监控容器的动态变化,并且结合Grafana能绘出漂亮图形,然后使用Altermanager或Grafana实现报警。

2、Prometheus特点

多维数据模型:由度量名称和键值对标识的时间序列数据
时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器指标数据、应用程序性能监控数据、网络数据等都是时序数据
内置时间序列(Time Series)数据库:Prometheus ;外置的远端存储通常会用:InfluxDB、OpenTSDB 等
promQL 一种灵活的查询语言,可以利用多维数据完成复杂查询
基于 HTTP 的 pull(拉取)方式采集时间序列数据
同时支持 PushGateway 组件收集数据
通过静态配置或服务发现发现目标
支持作为数据源接入 Grafana

3、Prometheus生态组件

Prometheus Server:用于收集、存储和查询监控数据的核心组件。它定期从配置的目标中拉取指标数据,并将其存储在本地的时间序列数据库中。
Alertmanager:用于处理和发送警报通知的组件。Alertmanager可以根据配置的规则对监控数据进行分析,并在触发警报条件时发送通知。
Exporters:用于将各种服务和应用程序的指标数据转换成Prometheus可读取的格式。
Client Libraries:用于将应用程序的指标数据暴露给Prometheus Server的库。Prometheus提供了多种语言的客户端库,方便开发人员集成监控功能到他们的应用程序中。
Service Discovery:服务发现,用于动态发现待监控的 Target,Prometheus 支持多种服务发现机制:文件、DNS、Consul、Kubernetes 等等。 服务发现可通过第三方提供的接口,Prometheus 查询到需要监控的 Target 列表,然后轮询这些 Target 获取监控数据。该组件目前由 Prometheus Server 内建支持
Grafana:一个开源的数据可视化工具,可以与Prometheus集成,用于创建仪表板和图表展示监控数据。

4、Prometheus工作原理

●Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标 exporter 来采集(Scrape)指标数据;
●Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用 PromQL 接口来检索数据,也能够按需将告警需求发往 Alertmanager 完成告警内容发送;
●一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到 Server 端,它们一般会采用推送(Push)方式输出指标数据, Prometheus 借助于 Pushgateway 接收这些推送的数据,进而由 Server 端进行抓取

二、部署Prometheus(Master节点部署)

1.系统架构

2、部署Prometheus、

直接访问官网
①地址:https://prometheus.io/download/
image.png
在服务器上直接下载

②地址:https://prometheus.io/download/

wget https://github.com/prometheus/prometheus/releases/download/v2.53.2/prometheus-2.53.2.linux-amd64.tar.gz

2.1解压缩到/usr/local/下

[root@master ~]# tar -xvf prometheus-2.53.2.linux-amd64.tar.gz 
[root@master ~]# mv prometheus-2.53.2.linux-amd64 /usr/local/
[root@master ~]# cd /usr/local
[root@master ~]# mv prometheus-2.53.2.linux-amd64   prometheus

2.2修改配置

[root@master prometheus]# cd /usr/local/prometheus/
[root@master prometheus]# cp prometheus.yml prometheus.yml.bak
[root@master prometheus]# vim prometheus.yml

## 第六行添加
scrape_timeout: 10s        ##采集超时时间
## 最后一行localhost改为本机的ip(其实不改也可以,为了分辨,建议修改)
 - targets: ["192.168.0.23:9090"]  

2.3、配置系统启动文件
配置系统启动文件,并且设置开机自启动

[root@master prometheus]# mkdir -p /usr/local/prometheus/data
#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/prometheus.service 


[Unit]
Descriptinotallow=Prometheus server
Documentatinotallow=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
Type=simple
User=root
Group=root
Restart=on-abnormal
ExecStart=/usr/local/prometheus/prometheus \
  --config.file=/usr/local/prometheus/prometheus.yml \
  --storage.tsdb.path=/usr/local/prometheus/data \
  --storage.tsdb.retention.time=60d \
  --web.enable-lifecycle

[Install]
WantedBy=multi-user.target
[root@master prometheus]# systemctl restart prometheus 
[root@master prometheus]# systemctl enable prometheus
[root@master prometheus]# ss -antp|grep 9090

image.png
通过浏览器访问http://192.168.0.23:9090 就可以访问到 Prometheus 的主界面:
image.png
默认只监控了本机一台,点 Status→点 Targets→可以看到只监控了本机:UP状态说明数据采集正常
image.png
通过 http://192.168.0.23:9090/metrics 可以查看到监控的数据:
image.png

三、部署Node Exporter监控系统级指标(所有节点部署)

1、下载安装包
地址:https://prometheus.io/download/
监控远程主机(被监控端上安装node_Export192.168.0.23~25)组件
image.png
2、上传解压(所有的节点部署)

[root@node01 opt]# tar xf node_exporter-1.8.1.linux-amd64.tar.gz 
[root@node01 opt]# ls
node_exporter-1.8.1.linux-amd64  node_exporter-1.8.1.linux-amd64.tar.gz  rh
[root@node01 opt]# cd node_exporter-1.8.1.linux-amd64/
[root@node01 node_exporter-1.8.1.linux-amd64]# ls
LICENSE  node_exporter  NOTICE
[root@node01 node_exporter-1.8.1.linux-amd64]# mv node_exporter /usr/local/bin/
[root@node01 node_exporter-1.8.1.linux-amd64]# 

3、配置启动文件

[root@node01 ~]# vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

4、启动

[root@node01 ~]# systemctl start node_exporter.service 
[root@node01 ~]# systemctl enable node_exporter.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
[root@node01 ~]# ss -natp|grep 9100

浏览器访问:http://192.168.0.24:9100/metrics ,可以看到 Node Exporter 采集到的指标数据

image.png
5、修改Prometheus配置文件

[root@master prometheus]# vim /usr/local/prometheus/prometheus.yml
  - job_name: 'agent'
    static_configs:
    - targets: ["192.168.0.23:9100","192.168.0.24:9100","192.168.0.25:9100"]
[root@master prometheus]# systemctl restart prometheus.service    #修改完后重启服务
[root@master prometheus]# systemctl status prometheus

image.png
6、检测Prometheus配置文件是否正确

[root@master prometheus]#cd /usr/local/prometheus
[root@master prometheus]# ./promtool check config prometheus.yml

成功状态

Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

失败状态

Checking prometheus.yml
  FAILED: parsing YAML file prometheus.yml: "192.168.0.23:9999/cs" is not a valid hostname

7、访问Prometheus服务器,刷新
回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标
image.png

四、Grafana平台部署

1、Grafana简介
Grafana是一种开源的数据可视化和监控平台,它允许用户通过创建动态仪表板来监视和分析数据。Grafana最初由Torkel Ödegaard于2014年创建,旨在为不同数据源提供统一的可视化界面。它支持多种数据源,包括但不限于Graphite、Prometheus、Elasticsearch、InfluxDB等。通过Grafana,用户可以轻松创建图标、图形和面板,以直观和动态的方式展示数据趋势、指标和报警。

随着公司业务的不断发展,业务种类的增加、服务器数量的增长和网络环境的复杂以及版本发布频繁,从而不可避免带来了线上事故的增多,因此需要对服务器进行全方位的监控,提前预警,急需一个工具来实现解决这个问题,而Grafana的出现完美解决了这个问题。
2、Grafana部署
下载地址:https://grafana.com/grafana/download
image.png
安装命令

sudo yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.2.0-1.x86_64.rpm

如果是直接在服务器执行下载的,直接等待下载完成启动即可,如果是下载的rpm包,就需要上传到服务器上,然后使用rpm -ivh grafana-enterprise-11.2.0-1.x86_64.rpm 进行安装;
3、启动服务

[root@master prometheus]# systemctl daemon-reload
[root@master prometheus]# systemctl enable grafana-server.service
[root@master prometheus]# systemctl start grafana-server.service

4、访问界面

http://192.168.0.23:3000
注意:默认账号密码为:
账号:admin
密码:admin

grafana默认配置文件目录 /etc/grafana/grafana.ini

image.png
5、配置添加数据源,选择Data source
image.png
6、选择数据类型为prometheus
image.png
7、输入要采集的IP和端口
image.png
8、选择http的采集模式,点击save&test
image.png
9、以下就看到了配置好的数据源
image.png

五、部署slurm的数据采集(只需要在slurm-master节点部署)

1、安装git和wget

yum -y install wget git

2、配置go的编译环境

export VERSION=1.15 OS=linux ARCH=amd64
wget https://dl.google.com/go/go$VERSION.$OS-$ARCH.tar.gz
tar -xzvf go$VERSION.$OS-$ARCH.tar.gz
export PATH=$PWD/go/bin:$PATH

3、下载prometheus-slurm-exporter代码并编译prometheus-slurm-exporter

git clone https://github.com/vpenso/prometheus-slurm-exporter.git
cd prometheus-slurm-exporter
make

image.png
4、设置启动服务

[root@master prometheus-slurm-exporter]# cp bin/prometheus-slurm-exporter /usr/bin/
[root@master prometheus-slurm-exporter]# vim  /lib/systemd/system/prometheus-slurm-exporter.service
复制以下内容
[Unit]
Description=Prometheus SLURM Exporter

[Service]
ExecStart=/usr/bin/prometheus-slurm-exporter
Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target
启动服务
systemctl start prometheus-slurm-exporter.service
netstat -atnp | grep 8080

[root@master prometheus-slurm-exporter]#  vim /usr/local/prometheus/prometheus.yml
添加以下prometheus的配置

  - job_name: "slurm_exporter"

    scrape_interval:  30s

    scrape_timeout:   30s

    static_configs:
            - targets: ["192.168.0.23:8080"]
重启prometheus服务
[root@master prometheus-slurm-exporter]# systemctl restart prometheus

image.png
5、下载Grafana采集模板
https://grafana.com/grafana/dashboards/4323-slurm-dashboard/
image.png
6、导入模板
image.png
7、选择你下载好要导入的模板
image.png
8、选择你要导入json文件
image.png
9、选择import导入
image.png
image.png
10、查看监控效果
image.png

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值