prometheus+grafana部署(Centos7)
大家好,今天记录一下prometheus+grafana的监控系统部署,我会从浅到深逐步更新。
好的废话不多说,我们直接开始。
- 时钟同步(这里采用内网集群,有一台作为ntp服务器,其它机器作为时间服务的客户端)
选择一台机器作为ntp服务端,但是每一个节点都需要安装chrony
1.1.时钟服务器服务端安装
//安装服务
yum install chrony
//修改配置文件
vi /etc/chrony.conf (配置ntp服务端)
禁用外网NTP同步,仅以本机系统时钟作为基准(注释所有原有 server/pool 配置,添加以下行)
local stratum 10
allow 192.168.1.0/24 (这里需要修改为实际IP地址,也可以为 0.0.0.0/0)
//重启服务
systemctl restart chronyd
//设置为开机自启动
systemctl enable chronyd
//查看NTP服务监听状态(确认UDP 123端口已监听)
ss -uln | grep 123

1.2时钟服务客户端安装
//修改客户端 chrony 配置文件
vi /etc/chrony.conf
注释掉所有原有 server/pool 开头的外网 NTP 配置(如 0.ubuntu.pool.ntp.org 等)。
核心配置:指向内网NTP服务端(替换为你的服务端实际内网IP)
server 192.168.1.100 iburst #这里需要设置为ntp服务端的IP
//重启服务
systemctl restart chronyd
//设置为开机自启动
systemctl enable chronyd
//查看时间同步源(重点关注 * 号,* 表示当前正在使用的同步源,这里需要等待2-3分钟才可以显示正常)
chronyc sources -v

2. prometheus部署
下载安装包 https://prometheus.io/download/
将下载好的安装包上传到其中一台服务器部署,我们这里采用单机的方式部署,同样也可以实现集群的监控
tar -xvf prometheus-3.9.1.linux-amd64.tar.gz #解压安装包
解压之后的目录结构如下。
这里为了方便,我们可以讲prometheus设置为系统服务级别systemctl,这样后面启动时方便。
cat << EOF > /etc/systemd/system/prometheus.service
[Unit]
# 服务描述信息,可自定义
Description=Prometheus Monitoring System
# 服务依赖:网络就绪后再启动 Prometheus
After=network.target
[Service]
# 运行 Prometheus 的用户(建议使用非 root 用户,若未创建可改为 User=root,生产环境推荐创建专用用户如 prometheus)
User=root
# 运行 Prometheus 的组
Group=root
# 工作目录(指定为 Prometheus 安装目录)
WorkingDirectory=/data/prometheus-3.9.1
# 核心:启动命令(指定可执行文件路径,--config.file 指定配置文件路径,--storage.tsdb.path 指定数据存储目录)
ExecStart=/data/prometheus-3.9.1/prometheus \
--config.file=/data/prometheus-3.9.1/prometheus.yml \
--storage.tsdb.path=/data/prometheus-3.9.1/data \
--web.listen-address=:9090
# 进程退出后的重启策略(推荐 always,意外退出时自动重启)
Restart=always
# 重启间隔时间(秒)
RestartSec=5
# 可选:限制进程打开的文件句柄数,避免高并发下资源不足
LimitNOFILE=65535
[Install]
# 设定服务在开机时的启动级别(multi-user.target 对应多用户命令行环境,通用场景)
WantedBy=multi-user.target
EOF
写入命令之后进行测试
systemctl daemon-reload //重载
systemctl start prometheus.service //启动
systemctl enable prometheus.service //设置为开机自启动
systemctl status prometheus.service //查看启动状态
这时就可以通过9090端口进行访问啦
3. node-exporter部署
接下来,我们需要部署exporter。他的作用我们可以理解成为服务端,主要的目的是收集各个服务器上的信息如服务器本机的资源使用情况、redis、mysql等,每一个exporter都有不同的作用,我们先部署一个 node_exporter,作用是监控服务器的资源使用情况。部署好之后在prometheus进行配置会自动拉去exporter产生的信息,之后进行展示。
安装包下载 https://prometheus.io/download/#node_exporter
解压安装包tar -xvf node_exporter-1.10.2.linux-amd64.tar.gz //目录结构如下
node_exporter的安装不需要做什么配置,我们可以直接启动,之后在prometheus中添加node_exoirter服务端口即可。同样我们也需要做一下systemctl的命令启动
cat << EOF > /etc/systemd/system/node_exporter.service
[Unit]
# 服务描述,自定义即可
Description=Node Exporter - System Metrics Collector
# 启动顺序:在网络服务之后启动
After=network.target
[Service]
# 运行用户(推荐使用nobody,无权限普通用户,更安全;也可改为root)
User=ztgy
# 运行组
Group=ztgy
# 核心:node_exporter可执行文件的绝对路径(你的安装目录下的二进制文件)
ExecStart=/data/node_exporter-1.10.2/node_exporter
# 可选配置:进程崩溃后自动重启
Restart=on-failure
# 可选配置:重启间隔时间(秒)
RestartSec=5
[Install]
# 开机自启的目标级别:多用户模式(默认即可)
WantedBy=multi-user.target
EOF
写入命令之后进行测试
systemctl daemon-reload //重载
systemctl start node_exporter.service //启动
systemctl enable node_exporter.service //设置为开机自启动
systemctl status node_exporter.service //查看启动状态
4. 修改prometheus配置
这里主要的目的是为了使prometheus与node_exporter做关联使prometheus拉去node_exporter数据
修改/data/prometheus-3.9.1/prometheus.yml
重启prometheus
systemctl restart prometheus.service
再次访问prometheus,http://ip:9090/targets我们可以看到,可以看到这里已经按照分组将node添加成功了。
5. Grafana部署
下载安装包
https://dl.grafana.com/grafana-enterprise/release/12.3.1/grafana-enterprise_12.3.1_20271043721_linux_amd64.rpm
grafana的部署与prometheus部署在同一台机器上
执行命名
yum localinstall grafana-enterprise_12.3.1_20271043721_linux_amd64.rpm
systemctl start grafana-server.service //启动 systemctl enable
grafana-server.service //设置开机自启动 systemctl status
grafana-server.service //查看运行状态
访问grafana http://ip:3000
添加prometheus数据源
添加完成之后,下滑到最下面,点击Slave&test进行保存。
grafana模版导入
模版下载地址
https://grafana.com/grafana/dashboards/
点击放大镜,搜索node模版
搜索之后进入模版库,勾选左侧Dashboards进行筛选
点击Node Exporter之后,进入点击Download下载
将下载好的模版导入。导入成功之后,我们就可以看到箭头所指向的内容,点击之后就可以看到我们的服务器资源监控啦。
6. mysql-exporter部署(新增)
mysql-exporter安装包下载 https://prometheus.io/download/
# 上传解压之后新增配置文件
cat > /data/mysqld_exporter-0.18.0/my.cnf << EOF
[client]
user = mysqld_exporter
password = ExporTer!0115
host = 数据库IP
port = 数据库端口
EOF
#登录要监控的mysql创建监控用户
CREATE USER 'mysqld_exporter'@'IP' IDENTIFIED BY 'ExporTer!0115';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysqld_exporter'@'1P';
flush privileges;
#创建启动脚本
cat > /etc/systemd/system/mysqld_exporter.service << EOF
[Unit]
Description=Prometheus MySQL Exporter
After=network.target mysql.service
[Service]
User=root
Group=root
WorkingDirectory=/data/mysqld_exporter-0.18.0
ExecStart=/data/mysqld_exporter-0.18.0/mysqld_exporter --config.my-cnf=/data/mysqld_exporter-0.18.0/my.cnf --web.listen-address=ip:9104
[Install]
WantedBy=multi-user.target
EOF
#启动mysql-exporter服务
systemctl daemon-reload //重载
systemctl start mysql_exporter.service //启动
systemctl enable mysql_exporter.service //设置为开机自启动
systemctl status mysql_exporter.service //查看启动状态
#修改prometheus.yml 配置文件,新增。
- job_name: mysql
static_configs:
- targets: ["mysql-exporterIP地址:9104"]
#重启prometheus服务
systemctl restart prometheus.service
重启之后验证是否在prometheus的Target中添加成功,并且点击可以正常访问到mysql-exporterIP地址:9104/metrics
添加Grafana模版
https://grafana.com/grafana/dashboards/17320-1-mysqld-exporter-dashboard/
导入时选择数据源点击Import即可
更多推荐




















所有评论(0)