Prometheus+Grafana 智能监控告警系统(服务器指标采集、mysql指标采集)

目录

一. 概述

1.1 Grafana介绍

Grafana是一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。它主要有以下六大特点:

  • 展示方式:
    快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
  • 数据源:
    Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
  • 通知提醒:
    以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
  • 混合展示:
    在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
  • 注释:
    使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
  • 过滤器:
    Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
    简单来讲,它是一个多用途的监控工具,同时通过邮件等方式进行有效的预警通知,丰富的直观的可视化界面,多种数据源配置是其优点所在;

1.2 Grafana结构图

二、 Grafana监控系统之Prometheus+Grafana+node_exporter监控系统搭建(centos8为例)

2.1 Prometheus介绍

Prometheus作为一个中间点,而Grafana作为可视化展示,后面的exporter作为监控,exporter将需要获取的数据获取并连接到Prometheus,而Prometheus连接到Grafana,直观展示被监控者状态;

2.2 下载安装prometheus

2.2.1 网址下载prometheus

复制代码
https://github.com/prometheus/prometheus/releases/
或者浏览器直接访问
https://github.com/prometheus/prometheus/releases/download/v3.7.2/prometheus-3.7.2.linux-amd64.tar.gz

2.2.2 上传解压

复制代码
ll
tar -zvxf prometheus-3.7.2.linux-amd64.tar.gz

2.2.3创建专用运行用户

复制代码
# 创建prometheus用户组
groupadd prometheus

# 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
useradd -g prometheus -s /sbin/nologin prometheus

# 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
chown -R prometheus:prometheus  /data/jk/prometheus-3.7.2.linux-amd64

2.2.4 配置systemd服务

复制代码
# 创建服务配置文件
cat > /etc/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus Monitoring System
Documentation=https://prometheus.io/docs/
# 确保网络启动后再启动服务
After=network.target
[Service]
Type=simple
# 使用专用用户运行
User=prometheus       
# 启动命令:指定配置文件和数据存储路径(默认是./data,建议单独目录便于管理)
ExecStart=/data/jk/prometheus-3.7.2.linux-amd64/prometheus    --config.file=/data/jk/prometheus-3.7.2.linux-amd64/prometheus.yml   --storage.tsdb.path=/data/jk/prometheus-3.7.2.linux-amd64/data
# 失败自动重启
Restart=on-failure
# 重启间隔5秒
RestartSec=5     

[Install]
# 加入多用户目标组,实现开机自启
WantedBy=multi-user.target
EOF

注意:--storage.tsdb.path指定的 /data/jk/prometheus-3.7.2.linux-amd64/data目录需要提前创建并赋予权限:

复制代码
cd  /data/jk/prometheus-3.7.2.linux-amd64
mkdir data
chown -R prometheus:prometheus  /data/jk/prometheus-3.7.2.linux-amd64


2.2.5运行Prometheus server

复制代码
# 重新加载systemd配置
systemctl daemon-reload
# 启动服务
systemctl start prometheus.service
# 设置开机自启
systemctl enable prometheus.service
# 检查服务状态(确保Active: active (running))
systemctl status prometheus.service
ps -ef|grep prometheus

2.2.6验证服务是否正常

访问http://服务器IP:9090(默认端口9090),看到Prometheus的Web界面即安装成功

三、安装node_exporter插件(服务器指标采集)

3.1 node_exporter介绍

node_exporter是Prometheus生态中专门用于采集服务器硬件和系统指标(如CPU、内存、磁盘、网络)的代理程序,需要安装到每台被监控的服务器上(包括Prometheus所在服务器)。

3.2.下载安装node_exporter

3.2.1 网址下载node_exporter

复制代码
https://github.com/prometheus/node_exporter/releases
或者浏览器访问下载
https://github.com/prometheus/node_exporter/releases/download/v1.10.2/node_exporter-1.10.2.linux-amd64.tar.gz

3.2.2 上传解压

复制代码
ll
tar -zvxf  node_exporter-1.10.2.linux-amd64.tar.gz

3.2.3创建专用运行用户

复制代码
# 创建prometheus用户组
groupadd node_exporter

# 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
useradd -g node_exporter -s /sbin/nologin node_exporter

# 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
chown -R node_exporter:node_exporter /data/jk/node_exporter-1.10.2.linux-amd64

3.2.4 配置systemd服务

复制代码
sudo bash -c 'cat <<EOF > /etc/systemd/system/node_exporter.service   
[Unit]   
Description=Node Exporter   
After=network.target
   
[Service]   
Type=simple   
User=node_exporter   
Group=node_exporter   
WorkingDirectory=/data/jk/node_exporter-1.10.2.linux-amd64   
ExecStart=/data/jk/node_exporter-1.10.2.linux-amd64/node_exporter   
Restart=on-failure   
RestartSec=5s   
LimitNOFILE=65536
   
[Install]   
WantedBy=multi-user.target   
EOF'

3.2.5运行node_exporter

复制代码
sudo systemctl daemon-reload          # 重新加载配置   
sudo systemctl start node_exporter    # 启动服务   
sudo systemctl enable node_exporter   # 开机自启   

3.2.6验证服务是否正常

复制代码
sudo systemctl status node_exporter   # 检查状态
curl http://localhost:9100/metrics    # 测试指标采集

3.2.7Prometheus配置监控node_exporter

3.2.7.1 配置Prometheus抓取任务

Prometheus通过prometheus.yml配置需要监控的目标(称为"Job")。我们需要添加对node_exporter的抓取任务:

复制代码
vim /data/jk/prometheus-3.7.2.linux-amd64/prometheus.yml
3.2.7.2 验证配置并重启Prometheus
复制代码
http://ip:9090/targets
systemctl restart prometheus
3.2.7.3 查看监控目标状态

访问Prometheus Web界面(http://服务器IP:9090/targets),在"Status"列应看到UP状态,说明Prometheus已成功抓取node_exporter的指标。

四、 安装Grafana(监控可视化工具)

4.1 网址下载prometheus

复制代码
https://grafana.com/grafana/download?platform=linux&edition=oss
或者浏览器直接访问
wget https://dl.grafana.com/grafana/release/12.2.1/grafana_12.2.1_18655849634_linux_amd64.tar.gz

4.2 上传解压

复制代码
ll
tar -zvxf grafana_12.2.1_18655849634_linux_amd64.tar.gz

4.3 安装插件

复制代码
cd /data/jk/grafana-12.2.1/bin
./grafana-server cli plugins install grafana-piechart-panel --pluginsDir /data/jk/grafana-12.2.1/data/plugins

4.4创建专用运行用户

复制代码
# 创建prometheus用户组
groupadd grafana

# 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
useradd -g grafana -s /sbin/nologin grafana

# 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
chown -R grafana:grafana  /data/jk/grafana-12.2.1

4.5 配置systemd服务

复制代码
sudo bash -c 'cat <<EOF > /etc/systemd/system/grafana.service   
[Unit]   
Description=Grafana Server   
After=network.target
   
[Service]   
Type=simple   
User=grafana   
Group=grafana   
WorkingDirectory=/data/jk/grafana-12.2.1   
ExecStart=/data/jk/grafana-12.2.1/bin/grafana-server web   
Restart=on-failure   
RestartSec=5s   
LimitNOFILE=65536   
EnvironmentFile=-/etc/default/grafana-server
   
[Install]   
WantedBy=multi-user.target   
EOF'

4.6运行Grafana

复制代码
# 重新加载 systemd 配置   
sudo systemctl daemon-reload   
# 启动 Grafana 服务   
sudo systemctl start grafana   
# 设置开机自启   
sudo systemctl enable grafana

4.7验证grafana服务是否正常

浏览器访问http://服务器IP:3000(默认端口3000),初始用户名/密码为admin/admin(首次登录会提示修改密码)。

4.8grafana页面改为中文

4.8.1登录后,点击头像下菜单中->Profile

4.8.2在Preferences一栏下面,找到Language一项

4.8.3选择中文(简体)后点 Save 按钮即可

五、安装mysqld_exporter插件(mysql指标采集)

5.1 mysqld_exporter介绍

mysqld_exporter 是 Prometheus 官方推荐的 MySQL 监控导出器(Exporter),用于将 MySQL 数据库的性能指标暴露为 Prometheus 可以抓取的 HTTP 接口。

用途:采集 MySQL / MariaDB 的各种运行时指标(如连接数、慢查询、InnoDB 状态、缓冲池使用等),并以标准格式暴露给 Prometheus。

5.2.下载安装mysqld_exporter

复制代码
https://github.com/prometheus/mysqld_exporter/releases
或者浏览器访问下载
https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.2/mysqld_exporter-0.17.2.linux-amd64.tar.gz

5.2.1 上传解压并创建 .my.cnf 文件

复制代码
ll
tar -zvxf mysqld_exporter-0.17.2.linux-amd64.tar.gz
cd  /data/jk/mysqld_exporter-0.17.2.linux-amd64
vim .my.cnf
cat   .my.cnf

[clent]
user=root
password=root



注意事项

配置文件路径:

  • 确保 .my.cnf 文件存在于 /data/jk/mysqld_exporter-0.17.2.linux-amd64/
    目录中。 .my.cnf 内容示例(需包含MySQL连接信息):

    [client]
    user=mysqld_exporter
    password=z4LaaAA11--pa44w0rdhost=127.0.0.1
    port=3306

权限控制:确保 .my.cnf 仅对 mysqld_exporter 用户可读:

复制代码
chmod 600 /data/jk/mysqld_exporter-0.17.2.linux-amd64/.my.cnf
  • mysqld_exporter 默认连接 localhost:3306
  • 如果你要监控远程 MySQL 或非标准端口,可以通过 命令行参数指定地址,而不是写在 .my.cnf 中

数据库创建连用户

复制代码
 CREATE USER 'mysqld_exporter'@'127.0.0.1' IDENTIFIED BY 'z4LaaAA11--pa44w0rd';
 GRANT ALL PRIVILEGES ON *.* TO 'mysqld_exporter'@'127.0.0.1' WITH GRANT OPTION;
 FLUSH PRIVILEGES;

5.2.2创建专用运行用户

复制代码
# 创建prometheus用户组
groupadd mysqld_exporter

# 创建prometheus用户(-s指定不允许登录系统,-g指定用户组)
useradd -g mysqld_exporter -s /sbin/nologin mysqld_exporter

# 为Prometheus主目录赋予权限(确保用户有权限访问配置和数据)
chown -R mysqld_exporter:mysqld_exporter  /data/jk/mysqld_exporter-0.17.2.linux-amd64

5.2.3 配置systemd服务

复制代码
sudo bash -c 'cat <<EOF > /etc/systemd/system/mysqld_exporter.service   
[Unit]   
Description=MySQLd Exporter   
After=network.target
   
[Service]   
Type=simple   
User=mysqld_exporter   
Group=mysqld_exporter   
WorkingDirectory=/data/jk/mysqld_exporter-0.17.2.linux-amd64   
ExecStart=/data/jk/mysqld_exporter-0.17.2.linux-amd64/mysqld_exporter \\
    --config.my-cnf=/data/jk/mysqld_exporter-0.17.2.linux-amd64/.my.cnf   
Restart=on-failure   
RestartSec=5s   
LimitNOFILE=65536   
[Install]   
WantedBy=multi-user.target   
EOF'   

5.2.4运行mysqld_exporter

复制代码
sudo systemctl daemon-reload            # 重新加载配置   
sudo systemctl start mysqld_exporter    # 启动服务   
sudo systemctl enable mysqld_exporter   # 开机自启   

5.2.5验证服务是否正常

复制代码
sudo systemctl status mysqld_exporter   # 检查状态
curl http://localhost:9104/metrics      # 测试指标采集(默认端口9104)

5.2.6Prometheus配置监控mysqld_exporter

5.2.6.1 配置Prometheus抓取任务

Prometheus通过prometheus.yml配置需要监控的目标(称为"Job")。我们需要添加对mysqld_exporter 的抓取任务:

复制代码
vim /data/jk/prometheus-3.7.2.linux-amd64/prometheus.yml
5.2.6.2 验证配置并重启Prometheus
复制代码
http://ip:9090/targets
systemctl restart prometheus
5.2.6.3 查看监控目标状态

访问Prometheus Web界面(http://服务器IP:9090/targets),在"Status"列应看到UP状态,说明Prometheus已成功抓取mysqld_exporter 的指标。

六、Grafana配置Prometheus数据源

6.1 添加数据源

6.1.1登录Grafana(http://服务器IP:3000),点击左侧菜单l 连接> 数据源。

6.1.2在URL字段填写Prometheus的访问地址(如http://192.168.1.100:9090



6.2 导入仪表盘模板

6.2.1仪表板---》新建---》新建仪表板

6.2.2导入仪表板-----》服务器监控--》8919





6.2.3导入仪表板-----》数据库监控--》7362



相关推荐
郝学胜-神的一滴3 小时前
使用 Python 元类与属性实现惰性加载:Effective Python 第47条
linux·服务器·开发语言·python
袁煦丞 cpolar内网穿透实验室3 小时前
安卓旧机变服务器,KSWEB部署Typecho博客并实现远程访问:cpolar内网穿透实验室第645个成功挑战
android·运维·服务器·远程工作·内网穿透·cpolar
Hefin_H4 小时前
Linux 多用户服务器限制单用户最大内存使用(systemd user.slice)
linux·运维·服务器
G.Chenhui4 小时前
【Macos】安装 macFUSE 和 SSHFS 实现在 Finder 中挂载服务器目录
服务器·macos
饼瑶4 小时前
基于AutoDL远端服务器在pycharm复现:具身智能论文pai0
服务器·elasticsearch·pycharm
阿巴~阿巴~4 小时前
Linux 信号的保存机制
linux·服务器·信号·信号集·信号保存
郝学胜-神的一滴5 小时前
使用现代C++构建高效日志系统的分步指南
服务器·开发语言·c++·程序人生·个人开发
kgduu5 小时前
go-ethereum core之交易索引txIndexer
服务器·数据库·golang
QC七哥6 小时前
关于宽带网络下公网地址的理解
服务器·网络