使用Prometheus进行系统监控,包括Mysql、Redis,并使用Grafana图形化表示

embedded/2024/9/30 0:23:43/

Prometheus是一个开源的的监控工具,而且还免费。这一次我们用Prometheus来对之前安装的所有服务,包括Mysql、Redis、系统状况等进行监控,并结合Grafana进行图形化展示

Prometheus下载和安装

下载地址(以下所有插件的官方下载地址都是这个):https://prometheus.io/download/

选择合适版本用wget进行下载:

wget -P "/opt" https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz

可以看到下载默认是从gayhub上下载的,如果没有代理的话,下载速度十分感人。所以我这边使用国内镜像https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/

wget -P "/opt" https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/2.54.1%20_%202024-08-27/prometheus-2.54.1.linux-amd64.tar.gz

接下来进行解压和安装,顺便把文件夹改个名字:

tar -xvzf /opt/prometheus-2.54.1.linux-amd64.tar.gz
mv prometheus-2.54.1.linux-amd64 prometheus-2.54.1

安装脚本

将以上过程,用shell脚本实现。并配置开机启动。

#!/bin/bash
#Prometheus安装和配置脚本#下载
wget -P "/opt" https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/2.54.1%20_%202024-08-27/prometheus-2.54.1.linux-amd64.tar.gz# 解压
tar -zxf /opt/prometheus-2.54.1.linux-amd64.tar.gz -C /opt/
mv /opt/prometheus-2.54.1.linux-amd64 /opt/prometheus-2.54.1
# 创建用户和组
# groupadd prometheus
# useradd -g prometheus -s /sbin/nologin prometheus# 创建目录
mkdir -p /opt/prometheus-2.54.1/data# 修改权限
# chown -R prometheus:prometheus /opt/prometheus-2.54.1/# 配置开机启动
cat > /etc/systemd/system/prometheus.service << EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io
Wants=network-online.target
After=network-online.target[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/prometheus-2.54.1/prometheus \
--config.file=/opt/prometheus-2.54.1/prometheus.yml \
--storage.tsdb.path=/opt/prometheus-2.54.1/data[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl start prometheus.service
systemctl status prometheus.service
systemctl enable prometheus.service

接下来,我们就可以从浏览器访问了,http://192.168.32.21:9090/注意打开防火墙9090端口。

我们点击status-target,就可以默认看到本机。如下图所示:

在这里插入图片描述

配置文件

各配置文件的意义可以参考这个链接,

https://www.cnblogs.com/liwenchao1995/p/16895710.html

配置文件默认就在安装目录下,

[root@node21 prometheus-2.54.1]# cat /opt/prometheus-2.54.1/prometheus.yml 
#全局配置 (如果有内部单独设定,会覆盖这个参数)
global:#告警插件定义。这里会设定alertmanager这个报警插件。
alerting:#告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现。
rule_files:#采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
scrape_configs:#用于远程存储写配置
remote_write:#用于远程读配置
remote_read:

Grafana安装

Grafana是一个可视化的平台,它可以采用Prometheus的数据源,来对服务器的监控实现图形化展示。所以经常搭配使用。我们下载rpm文件,然后使用yum安装。

#!/bin/bash
# Grafana安装配置# 下载
wget -P "/opt" https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/Package/grafana-enterprise-10.1.0-1.x86_64.rpm
yum localinstall /opt/grafana-enterprise-10.1.0-1.x86_64.rpm -y# 设置开机启动
systemctl enable grafana-server
# 启动
systemctl start grafana-server# 开放端口
firewall-cmd --permanent --add-port=3000/tcp
firewall-cmd --reload

安装后可以使用ip+端口进行访问,默认账号密码都是admin。注意更改密码。

Prometheus+Grafana监控MySQL

参考了如下链接:https://www.cnblogs.com/easydb/p/14151866.html

整个服务的架构如下:

在这里插入图片描述

安装node_exporter

node_exporter是用来收集服务器信息的一个组件,该组件需要安装在被监控的机器上。我们来简单写一个安装脚本

#!/bin/bash
# mysql监控组件node_exporter和mysqld_exporter# 下载,没找到国内下载源,下载速度很慢。建议用scp发送到其他机器。
wget -P "/opt" https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
#scp "/opt/node_exporter-1.8.2.linux-amd64.tar.gz" root@"$target_ip":/opt/
# 解压
tar -zxvf /opt/node_exporter-1.8.2.linux-amd64.tar.gz -C /opt/
# 改名
mv /opt/node_exporter-1.8.2.linux-amd64 /opt/node_exporter
# 设置开机启动
cat > /etc/systemd/system/node_exporter.service << EOF
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
ExecStart=/opt/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动
systemctl daemon-reload
systemctl start node_exporter
systemctl enable node_exporter

在目标主机上进行安装:

#!/bin/bash
#在指定范围主机上,批量安装node_exporter。需要准备好配置文件和安装文件start_ip=22
end_ip=24
network="192.168.32"for ip in $(seq ${start_ip} ${end_ip})
dotarget_ip=${network}.${ip}scp "/opt/node_exporter-1.8.2.linux-amd64.tar.gz" root@"$target_ip":/opt/scp "/etc/systemd/system/node_exporter.service" root@"$target_ip":/etc/systemd/system/echo "正在 ${target_ip} 安装node_exporter..."ssh root@"$target_ip" << EOFtar -zxf /opt/node_exporter-1.8.2.linux-amd64.tar.gz -C /opt/mv /opt/node_exporter-1.8.2.linux-amd64 /opt/node_exportersystemctl daemon-reloadsystemctl start node_exportersystemctl enable node_exporter
EOFecho "${target_ip} 上的node_exporter配置完成..."
done

访问如下页面,如果能看到说明成功了(注意防火墙需要开放9100端口)

在这里插入图片描述

修改Prometheus的配置文件

在被监控主机端安装了node_exporter后,就可以在Prometheus的配置中,添加目标主机来进行监控了,修改配置文件如下所示:

#!/bin/bash
#修改配置文件,添加被监控主机# 目标主机 IP 范围
network="192.168.32"
start_ip=22
end_ip=24for ip in $(seq ${start_ip} ${end_ip})
dotarget_ip=${network}.${ip}echo "正在写入$target_ip的配置"cat >> /opt/prometheus-2.54.1/prometheus.yml << EOF- job_name: '$target_ip'      # 给被监控主机取个名字,我这里直接填的IPstatic_configs:- targets: ['$target_ip:9100']      # 被监控主机的IP和端口
EOFdone# 重启服务
systemctl stop prometheus.service
systemctl start prometheus.service
systemctl status prometheus.service

再次访问,已经可以看到我们添加的这几台机器了,如下所示

在这里插入图片描述

mysqld_exporter_246">安装mysqld_exporter

监控mysql服务需要安装mysqld_exporter组件,我们使用如下脚本在目标主机上安装。顺便添加开机启动和配置文件:

简单说明下,我们需要准备两个配置文件

  1. mysqld_exporter.cnf用来指定连接mysql的用户名和密码
  2. 另一个mysqld_exporter.service是用来做开机自动启动的
#!/bin/bash
#在指定范围主机上,批量安装node_exporter。需要准备好配置文件和安装文件
# wget -P "/opt/" https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz# 准备配置文件,用来指定mysql的用户,建议是建一个专门的监控用户
cat > /opt/mysqld_exporter.cnf << EOF
[client]
user=root
password=Abc@1234
# host=127.0.0.1:3306
EOF# 准备开机启动的配置文件
cat > /opt/mysqld_exporter.service << EOF
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
ExecStart=/opt/mysqld_exporter/mysqld_exporter \--config.my-cnf /etc/mysqld_exporter.cnf \--collect.slave_status \--collect.slave_hosts \--log.level=error \--collect.info_schema.processlist \--collect.info_schema.innodb_metrics \--collect.info_schema.innodb_tablespaces \--collect.info_schema.innodb_cmp \--collect.info_schema.innodb_cmpmem
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF# 指定ip范围
start_ip=22
end_ip=23
network="192.168.32"# 在指定主机上分别配置
for ip in $(seq ${start_ip} ${end_ip})
dotarget_ip=${network}.${ip}scp "/opt/mysqld_exporter-0.15.1.linux-amd64.tar.gz" root@"$target_ip":/opt/scp "/opt/mysqld_exporter.cnf" root@"$target_ip":/etc/scp "/opt/mysqld_exporter.service" root@"$target_ip":/etc/systemd/system/echo "正在 ${target_ip} 安装mysqld_exporter..."ssh root@"$target_ip" << EOFtar -zxf /opt/mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /opt/mv /opt/mysqld_exporter-0.15.1.linux-amd64 /opt/mysqld_exportersystemctl daemon-reloadsystemctl start mysqld_exportersystemctl enable mysqld_exporter# 开放端口firewall-cmd --permanent --add-port=9104/tcpfirewall-cmd --reload
EOFecho "正在写入$target_ip的配置"cat >> /opt/prometheus-2.54.1/prometheus.yml << EOF- job_name: 'mysql$ip'static_configs:- targets: ['$target_ip:9104']
EOF
done# 重启服务
systemctl stop prometheus.service
systemctl start prometheus.service
systemctl status prometheus.service

然后启动后,访问ip+9104端口,如果看到如下界面,说明安装成功了

在这里插入图片描述

回到Prometheus界面,刷新也可以看到监控的mysql

在这里插入图片描述

设置Grafana可视化

这个挺简单的,请参考原链接。我就不截图了,简单来说就是下面这个步骤

  1. 在添加Prometheus数据源
  2. 在dashboard导入模版11074
  3. 导入后即可查看详细

最终效果如下所示:

在这里插入图片描述

Mysql数据可视化

mysql的可视化和上面类似,导入对应的模版即可。比如7362。

还有一种方式是直接去Github上下载json文件,然后从Grafana的web界面导入。下载地址是:https://github.com/percona/grafana-dashboards 然后找到dashboard的mysql那个文件夹,下载kson文件,后面就不多介绍了。

效果如下:

在这里插入图片描述

监控Redis

redis的监控和上面的流程差不多,简单来说就是如下步骤

  1. 安装redis_exporter
  2. 在Prometheus中添加配置
  3. 在Grafana中添加模版,比如12776,https://grafana.com/grafana/dashboards/11835-redis-dashboard-for-prometheus-redis-exporter-helm-stable-redis-ha/。当然也可以用别的dashboard模版

用到的脚步如下:

首先是在本机上安装redis_expoeter:

#redis_exporter的安装配置wget -P "/opt" https://github.com/oliver006/redis_exporter/releases/download/v1.63.0/redis_exporter-v1.63.0.linux-amd64.tar.gzredis_pwd=Abc@1234# 解压和安装
tar -zxf /opt/redis_exporter-v1.63.0.linux-amd64.tar.gz -C /opt/
mv /opt/redis_exporter-v1.63.0.linux-amd64 /opt/redis_exporter# 开放端口,redis_exporter默认使用9121端口
firewall-cmd --permanent --add-port=9121/tcp
firewall-cmd --reload# 准备配置文件
cat > /etc/systemd/system/redis_exporter.service << EOF
[Unit]
Description=redis_exporter
After=network.target
[Service]
Type=simple
ExecStart=/opt/redis_exporter/redis_exporter -redis.addr 127.0.0.1:6379  -redis.password $redis_pwd
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF# 启动
systemctl daemon-reload
systemctl start redis_exporter
systemctl enable redis_exporter# 写入Prometheus配置cat >> /opt/prometheus-2.54.1/prometheus.yml << EOF- job_name: 'redis_192.168.32.21'static_configs:- targets: ['192.168.32.21:9121']
EOF
# 重启Prometheus
systemctl restart prometheus

在指定范围的Ip内主机上安装:

#!/bin/bash
#在指定主机范围安装redis_exporter,默认本机上已经有安装文件和service文件# 指定ip范围
start_ip=23
end_ip=24
network="192.168.32"# 在指定主机上分别配置
for ip in $(seq ${start_ip} ${end_ip})
dotarget_ip=${network}.${ip}scp "/opt/redis_exporter-v1.63.0.linux-amd64.tar.gz" root@"$target_ip":/opt/scp "/etc/systemd/system/redis_exporter.service" root@"$target_ip":/etc/systemd/system/echo "正在 ${target_ip} 安装redis_exporter..."ssh root@"$target_ip" << EOFtar -zxf /opt/redis_exporter-v1.63.0.linux-amd64.tar.gz -C /opt/mv /opt/redis_exporter-v1.63.0.linux-amd64 /opt/redis_exportersystemctl daemon-reloadsystemctl start redis_exportersystemctl enable redis_exporter# 开放端口firewall-cmd --permanent --add-port=9121/tcpfirewall-cmd --reload
EOFecho "正在写入$target_ipredis配置"cat >> /opt/prometheus-2.54.1/prometheus.yml << EOF- job_name: 'redis_$ip'static_configs:- targets: ['$target_ip:9121']
EOF
done# 重启服务
systemctl stop prometheus.service
systemctl start prometheus.service
systemctl status prometheus.service

最终效果如下

在这里插入图片描述

总结

至此,我们实现了用Prometheus监控系统信息、Mysql、Redis。本次实践只是单纯的获取了信息源,可以在Grafana面板中进行图形化表示而已。至于详细的监控指标和报警设置,那又是另外一个话题了。我们下次再聊。


http://www.ppmy.cn/embedded/119648.html

相关文章

面经4——亚信

1、简单介绍一下自己和在大学做过的东西 这个大家根据自己的经历回答即可 2、了解过Oracle吗&#xff1f; Oracle和MySQL一样&#xff0c;也是关系型数据库。 Oracle数据库是由美国甲骨文公司&#xff08;Oracle Corporation&#xff09;开发的一款关系型数据库管理系统。它…

Tomcat系列漏洞复现

CVE-2017-12615——Tomcat put⽅法任意⽂件写⼊漏洞 漏洞描述 当 Tomcat运⾏在Windows操作系统时&#xff0c;且启⽤了HTTP PUT请求⽅法&#xff08;例如&#xff0c;将 readonly初始化参数由默认值设置为false&#xff09;&#xff0c;攻击者将有可能可通过精⼼构造的攻击请求…

更新gitignore后如何使其生效

更新gitignore后如何使其生效 当我们更新了gitignore后&#xff0c;当我们想push文件的时候&#xff0c;我们声明的忽略文件还是会出现在push的目录中 原因 某些文件已经被纳入版本管理中&#xff0c;就算是在.gitignore中已经声明也不会起作用 解决方案 git rm -r --cach…

ubuntu 如何彻底卸载谷歌浏览器

卸载 在Ubuntu系统中彻底卸载谷歌浏览器&#xff08;Google Chrome&#xff09;可以通过命令行来完成。以下是卸载步骤&#xff1a; 首先&#xff0c;打开终端&#xff08;Terminal&#xff09;。 运行以下命令来停止正在运行的Chrome进程&#xff08;如果有的话&#xff09;…

Swagger3基本使用

Swagger 课程目标 Swagger简介【了解】 Springboot整合swagger【掌握】 Swagger 常用注解【掌握】 knife4j-Swagger【会用】 一、Swagger3简介 Swagger 是一系列 RESTful API 的工具&#xff0c;通过 Swagger 可以获得项目的⼀种交互式文档&#xff0c;客户端 SDK 的自 动…

[深度学习]卷积神经网络CNN

1 图像基础知识 import numpy as np import matplotlib.pyplot as plt # 图像数据 #imgnp.zeros((200,200,3)) imgnp.full((200,200,3),255) # 可视化 plt.imshow(img) plt.show() # 图像读取 imgplt.imread(img.jpg) plt.imshow(img) plt.show() 2 CNN概述 卷积层convrelu池…

商标名称注册查询,到底是查询什么!

在商标注册前是需要商标名称注册查询&#xff0c;那这个到底是查询什么&#xff0c;普推知产商标老杨发现&#xff0c;近日国家知产局发布《商标代理委托合同示范文本》征求意见稿&#xff0c;虽然是参考使用不具有强制性&#xff0c;里面对商标名称注册查询描述是申请前商标检…

3. 轴指令(omron 机器自动化控制器)——>MC_MoveVelocity

机器自动化控制器——第三章 轴指令 6 MC_MoveVelocity变量▶输入变量▶输出变量▶输入输出变量 功能说明▶指令详情▶时序图▶重启运动指令▶多重启动运动指令▶异常 动作示例▶动作示例▶梯形图▶结构文本(ST) MC_MoveVelocity 使用伺服驱动器的位置控制模式&#xff0c;进行…