Prometheus+Grafana监控部署
(个人部署记录,仅供参考)
软件准备:
一、安装go环境
1.1 下载go软件包
网址https://golang.google.cn/dl/,下载后上传至服务器。
1.2 安装go
tar -xvf go1.19.3.linux-amd64.tar.gz
mv go /usr/local/
vim /etc/profile
在最后一行添加
export GOROOT=/usr/local/go
export PATH=
P
A
T
H
:
PATH:
PATH:GOROOT/bin
source /etc/profile
执行go version,如果显示版本号,则Go环境安装成功。
二、安装Prometheus服务端
2.1 下载Prometheus包
网址https://prometheus.io/download/#prometheus,下载后上传至服务器。
2.2 安装Prometheus
tar -xvf prometheus-2.40.2.linux-amd64.tar.gz
mv prometheus-2.40.2.linux-amd64 /usr/local/
cd /usr/local/
mv prometheus-2.40.2.linux-amd64/ prometheus
创建Prometheus服务
cd /etc/systemd/system/
vim prometheus.service
[Unit]
Description=Prometheus Monitoring System
Documentation=Prometheus Monitoring System
[Service]
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--web.listen-address=:9090
[Install]
WantedBy=multi-user.target
启动Prometheus服务
systemctl start prometheus.service
systemctl enable prometheus.service(开机自启)
2.3添加防火墙端口9090
firewall-cmd --zone=public --add-port=9090/tcp --permanent
重启防火墙服务
查看防火墙开启的端口
iptables -L -n
浏览器打开http://IP:9090,即可打开普罗米修斯自带的监控页面。
三、安装Prometheus监控节点
3.1下载node包
网址https://prometheus.io/download/#prometheus,下载后上传至被监控服务器。
3.2 安装node
tar zxvf node_exporter-1.4.0.linux-amd64.tar.gz
mv node_exporter-1.4.0.linux-amd64 /usr/local/
cd /usr/local/
mv node_exporter-1.4.0.linux-amd64/ node_exporter
创建node节点服务
cd /etc/systemd/system/
vim node_exporter.service
[Unit]
Description=node_exporter
Documentation=node_exporter
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
启动node节点服务
systemctl start node_exporter.service
systemctl enable node_exporter.service(开机自启)
3.3 添加防火墙端口9100
firewall-cmd --zone=public --add-port=9100/tcp --permanent
重启防火墙服务
systemctl restart firewalld.service
回到Prometheus服务端服务器,修改prometheus.yml配置文件
cd /usr/local/prometheus/
vim prometheus.yml
依次按格式添加node
重启prometheus服务
systemctl restart prometheus.service
3.4 查看node节点
浏览器打开http://IP:9090,访问普罗米修斯监控页面,查看node节点状态为UP即可正常监控。
3.5 定义主机监控报警规则
示例:
创建告警规则
cd /usr/local/prometheus/
vim alert.rules
groups:
- name: hostStatsAlert
rules:
- alert: hostCpuUsageAlert
expr: sum(avg without (cpu)(irate(node_cpu_seconds_total{mode!='idle'}[1m]))) by (instance) > 0.85
for: 1m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} CPU usgae high"
description: "{{ $labels.instance }} CPU usage above 85% (current value: {{ $value }})"
- alert: hostMemUsageAlert
expr: (node_memory_MemTotal - node_memory_MemAvailable)/node_memory_MemTotal > 0.85
for: 1m
labels:
severity: page
annotations:
summary: "Instance {{ $labels.instance }} MEM usgae high"
description: "{{ $labels.instance }} MEM usage above 85% (current value: {{ $value }})"
修改prometheus.yml
vim prometheus.yml
增加如下配置
重启prometheus服务
systemctl restart prometheus.service
访问http://IP:9090/rules可以查看当前以加载的规则文件。
切换到Alerts标签http://IP:9090/alerts可以查看当前告警的活动状态。
四、安装Grafana
4.1 安装Grafana
vim /etc/yum.repos.d/grafana.repo //添加Grafana安装源
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
yum makecache
yum install grafana -y
4.2 启动Grafana
systemctl start grafana-server.service
systemctl enable grafana-server.service (开机自启)
添加防火墙端口3000
firewall-cmd --zone=public --add-port=3000/tcp --permanent
重启防火墙服务
systemctl restart firewalld.service
4.3 访问Grafana
网址为http://ip:3000,初始账号密码均为admin,首次登陆需修改密码。
4.4 导入Prometheus数据
Configuration → Data Sources → Prometheus → Select,填入http://ip:9090,保存即可
4.5 导入dashboard
官方dashboard模板:https://grafana.com/grafana/dashboards/
选择排行第一的中文模板:1 Node Exporter for Prometheus Dashboard CN v20200628,模板ID是8919。
Manage → Import,填入模板ID,导入
自定义dashboard名称,选择数据源Prometheus
至此,Prometheus + Grafana 部署完成
五、安装Alertmanager告警功能
5.1 下载alertmanager包
网址https://prometheus.io/download/#prometheus,下载后上传至alertmanager服务器(此处为省事我们直接部署在Prometheus服务器)。
5.2 安装alertmanager
tar zxvf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /usr/local/
cd /usr/local/
mv alertmanager-0.24.0.linux-amd64/ alertmanager
设置软链接
ln -s /usr/local/alertmanager/alertmanager /usr/bin/alertmanager
ln -s /usr/local/alertmanager/amtool /usr/bin/amtool
配置systemd管理alertmanager
useradd -M -s /sbin/nologin prometheus
chown -R prometheus:prometheus /usr/local/alertmanager
创建alertmanager服务
cd /etc/systemd/system/
vim alertmanager.service
[Unit]
Description=Alertmanager
Documentation=https://github.com/prometheus/alertmanager/releases/
After=network.target
[Service]
WorkingDirectory=/usr/local/alertmanager/
ExecStart=/usr/local/alertmanager/alertmanager
ExecReload=/bin/kill -HUP $MAINPID
ExecStop=/bin/kill -KILL $MAINPID
Type=simple
KillMode=control-group
Restart=on-failure
RestartSec=15s
[Install]
WantedBy=multi-user.target
启动alertmanager服务
systemctl start alertmanager.service
systemctl enable alertmanager.service(开机自启)
添加防火墙端口9093
firewall-cmd --zone=public --add-port=9093/tcp --permanent
重启防火墙服务
systemctl restart firewalld.service
5.3 修改prometheus.yml配置文件
cd /usr/local/prometheus/
vim prometheus.yml
重启prometheus服务
systemctl restart prometheus.service
5.4 访问prometheus页面
访问prometheus页面,Status → Targets,
可以看到,之前部署的alertmanager状态是UP,说明运行正常。
至此,alertmanager部署完成。但alertmanager还需要进一步配置通知路由和通知接收者。
5.5 修改alertmanager配置文件
修改前先备份
cd /usr/local/alertmanager
mv alertmanager.yml alertmanager.yml.bak
新建alertmanager.yml
vim alertmanager.yml
global:
resolve_timeout: 5m
smtp_from: 邮箱名@163.com
smtp_auth_username: 邮箱名@163.com
smtp_auth_password: 密码(或授权码)
smtp_require_tls: false
smtp_smarthost: 'smtp.163.com:465'
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1m
receiver: 'Prometheus-mail'
receivers:
- name: 'Prometheus-mail'
email_configs:
- to: 邮箱名@163.com
send_resolved: true
检查alertmanager配置文件
./amtool check-config alertmanager.yml
六、Mysql监控
6.1 下载Mysql监控插件包
网址https://prometheus.io/download/#prometheus,下载后上传至Mysql服务器。
6.2 安装Mysql插件包
tar zxvf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64 /usr/local/
cd /usr/local/
mv mysqld_exporter-0.14.0.linux-amd64/ mysqld_exporter
6.3
登陆mysql数据库后,创建mysql数据库监控账户,因mysql_exporter部署在mysql本地,只需localhost访问即可
mysql -uroot -p
输入数据库密码
grant select,replication client,process ON . to ‘prometheus’@‘localhost’ identified by ‘自定义密码’;
flush privileges;
6.4
新增配置文件
vim /usr/local/mysqld_exporter/.my.cnf
[client]
user=prometheus
password=自定义密码
创建mysqld_exporter服务
cd /etc/systemd/system
vim mysqld_exporter.service
[Unit]
Description= mysqld_exporter
[Service]
Restart=on-failure
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf
[Install]
WantedBy=multi-user.target
启动mysqld_exporter服务
systemctl daemon-reload
systemctl start mysqld_exporter.service
systemctl enable mysqld_exporter.service(开机自启)
添加防火墙端口9104(默认mysqld_exporter服务端口)
firewall-cmd --zone=public --add-port=9104/tcp --permanent
重启防火墙服务
systemctl restart firewalld.service
6.5
回到prometheus服务端
修改prometheus.yml,增加mysqld监控项
- job_name: “Mysql”
static_configs:
- targets: [“IP:9104”]
重启prometheus服务
systemctl restart prometheus.service
6.6
访问prometheus页面,Status → Targets,
6.7
访问Grafana页面,添加监控模板,模板ID:7362
七、参考资料
1.https://www.cnblogs.com/zhang-xiao-shuang/p/13091250.html
2.https://zhuanlan.zhihu.com/p/434353542
3.https://www.cnblogs.com/zhaop8078/p/14007009.html
4.https://blog.youkuaiyun.com/weixin_45697293/article/details/119353915