文章目录
1. 普罗米修斯
1.1 前置准备
虚拟机系统:ubuntu-22.04.5
CPU:2
内存: 4G
硬盘:100G
1.2 普罗米修斯部署
1.2.1下载普罗米修斯
或点击这个直接下载https://download.csdn.net/download/m0_58761900/91337074
- 解压下载的文件:
tar xf prometheus-3.4.2.linux-amd64.tar.gz -C /usr/local/
- 对解压后的文件,重命名
mv prometheus-2.25.0.linux-amd64/ prometheus
- 查看版本号
cd prometheus
./prometheus --version
1.2.2 配置prometheus
- 查看 prometheus.yml 文件内容
- 启动服务
./prometheus --config.file=prometheus.yml
启动选项了解:./prometheus --help
# 指定配置文件
--config.file="prometheus.yml"
# 默认指定监听地址端口,可修改端口
--web.listen-address="0.0.0.0:9090"
1.2.3访问 http://localhost:9090
- 访问http://x.x.x.x:9090/metrics查看暴露指标
1.2.4 将Prometheus 配置为系统服务
- 进入 system目录:
cd /usr/lib/systemd/system
- 创建文件:
vim prometheus.service
给文件中写入
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.listen-address=:9090
[Install]
WantedBy=multi-user.target
- 生效系统system 文件
systemctl daemon-reload
- 启动服务
systemctl start prometheus
1.3 客户端,配置服务发现监控Linux主机及相关服务
1.3.1 安装node_exporter
- 下载node_exporter
监控linux常用node_exporter
- 解压下载的文件:
tar xf node_exporter-1.9.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-1.9.1.linux-amd64/ node_exporter
1.3.2 启动node_exporter
- 启动node_exporter,并添加到服务
cd usr/local/node_exporter
./node_exporter &
启动后会监听9100端口
- 配置node_exporter为系统服务
vim /usr/lib/systemd/system/node_exporter.service
给文件写入
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 启动node_exporter
systemctl daemon-reload
systemctl start node_exporter
1.3.3 普罗米修斯服务端配置文件添加监控项
cd /usr/local/prometheus
vim prometheus.yml
给文件最后面写入这三行
- job_name: 'linux'
static_configs:
- targets: ['x.x.x.x:9100','x.x.x.x:9100'] # 多个IP用,分开
重启普罗米修斯
systemctl restart prometheus.service
打开普罗米修斯自带的监控页面,Status -> Targets 查看:
1.4 监控mysql(mysqld-exporter)
1.4.1 下载mysqld-exporter
- 下载mysql-exporter并解压至usr/local
tar xf mysqld_exporter-0.17.2.linux-amd64.tar.gz -C /usr/local/
mv mysqld_exporter-0.17.2.linux-amd64 mysqld_exporter
vim .my.cnf
给文件中写入
[client]
user=root
password=123456
还需要下载mysql,否则后面会再次重启普罗米修斯会持续报错
1.4.2 启动mysqld-exporter
cd /usr/local/mysqld_exporter
./mysqld_exporter --config.my-cnf="/usr/local/mysqld_exporter/.my.cnf" &
ps -ef |grep exporter
ss -lntp |grep pid
启动后会监听9104端口
1.4.3 普罗米修斯配置文件添加监控项后重启
- 更新普罗米修斯配置文件
cd /usr/local/prometheus
vim prometheus.yml
在后面添加上
- job_name: 'mysql'
static_configs:
- targets: ['x.x.x.x:9104']
- 重启普罗米修斯
systemctl restart prometheus.service
若此时重启完成后,持续打印错误日志,排查思路:
- 检查prometheus.yml 文件是否配置错误(字符、换行等)
- 检查mysql相关,mysql 是否安装完成,.my.cnf 文件是否密码错误等
1.4.4 将主机节点监控采集node_exporter加入到服务配置文件里
vi /usr/lib/systemd/system/node_exporter.service
/usr/local/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(docker|sshd|nginx).service
# 监控客户端,docker服务,nginx服务,sshd
启动node_exporter
systemctl daemon-reload
systemctl start node_exporter
重启普罗米修斯
systemctl restart prometheus.service
2. Grafana安装+配置
2.1 安装Grafana
2.1.1 下载Grafana
https://grafana.com/grafana/download
sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_12.0.2_amd64.deb
sudo dpkg -i grafana-enterprise_12.0.2_amd64.deb
执行步骤3安装Grafana时,若出现,主目录/usr/share/grafana无法创建时,可以手动创建一下
mkdir -p /usr/share/grafana
chown -R grafana:grafana /usr/share/grafana
然后再次执行步骤3
- 安装完成后,查看Grafana 是否启动
systemctl status grafana-server.service
- Grafana配置开机自启动
systemctl enable grafana-server
- 检查开机启动列表
systemctl list-unit-files | grep grafana
- 启动后访问地址:http://x.x.x.x:3000
初始用户名和密码都是admin
- 登录后重置密码
2.1.2 添加prometheus 数据源
Connections -> Data Sources ->add data source -> Prometheus
2.1.3 新增Dashboard Linux 基础数据展示
- 下载模板或直接输入模板ID 或者输入JSON都可以
https://grafana.com/grafana/dashboards
比如输入dashboards id如8919
- 查看Dashboard
2.1.4 新增Dashboard MySQL数据展示
- 设置数据源
- 搜索添加Mysql,并配置连接信息
若连接不上,查看mysql 相关日志 tail -f /var/log/mysql/error.log
vi /etc/mysql/mysql.conf.d/mysqld.cnf
修改
[mysqld]
bind-address = 0.0.0.0 # 允许所有IP连接
# skip-networking = 0 # 确保此项被注释
重启mysql
sudo systemctl restart mysql
- 导入dashboard,数据源选择下载完成的mysql数据源
链接:https://pan.baidu.com/s/1GBzogDLsYS3IvwH4WbdPLw 提取码:ef6e
参考文章:
https://blog.csdn.net/qq_31725371/article/details/114697770
2.2 普罗米修斯+Grafana 使用
2.2.1 新增监控主机
监控的linux主机配置node_exporter服务:
- 将下载的node_exporter包放在 Linux系统的任意目录:
然后解压下载的文件
tar xf node_exporter-1.9.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-1.9.1.linux-amd64/ node_exporter
- 启动node_exporter,并添加到服务
cd usr/local/node_exporter
./node_exporter &
启动后会监听9100端口
- 配置node_exporter为系统服务
vim /usr/lib/systemd/system/node_exporter.service
给文件写入
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 启动node_exporter
systemctl daemon-reload
systemctl start node_exporter
- 修改prometheus.yml配置
登录系统后台:
cd /usr/local/prometheus
vim prometheus.yml
给文件写入这三行
- job_name: 'linux'
static_configs:
- targets: ['x.x.x.x:9100','x.x.x.x:9100'] # 更新监控主机,只需要修改这个,多个IP用,分开
- 重启普罗米修斯
systemctl restart prometheus.service
访问 http://x.x.x.x:9090/targets,查看监控信息是否更新成功
3. 监控告警通知机制配置
监控告警有多种途径,下面介绍**邮件告警通知和企微群消息告警通知**
3.1 邮件告警通知配置
3.1.1 修改Grafana配置文件
- 修改Grafana配置文件
vim /etc/grafana/grafana.ini
搜索找到 smtp部分,配置邮件服务器(也是在内网环境搭建的, hMailServer邮件服务器环境搭建)
- 重启Grafana服务
systemctl restart grafana-server
3.1.2 配置Grafana邮件通知
点击Alerting → Contact points
点击 Add contact point 添加通知渠道
3.1.3 配置邮件告警规则
定义一个内存使用率大于90%进行告警的策略
- 内存信息右键点击Edit,点击New alret rule
**linux部分告警规则**
CPU大于90%规则
100 - (avg by (instance,job)(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
内存大于90%规则
(1 - (node_memory_MemAvailable_bytes)/node_memory_MemTotal_bytes)* 100 >90
磁盘大于90%规则
100-(node_filesystem_free_bytes{fstype=~"ext4|xfs"}/node_filesystem_size_bytes {fstype=~"ext4|xfs"}*100) > 90
- 下面这里创建一个内存大于90%的告警规则
- 配置检测时间
- 选择3.1.2中配置的邮箱,并设置告警默认msg
3.1.4 告警邮件接收
下面是设置的告警策略所发送的邮件
3.2 企微群消息机器人告警
3.2.1 创建企微群机器人
- 企微群设置里面,点击添加创建群机器人:
- 复制Webhook地址:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=66bxxxa7-2xxe-xxx-xxxx-xxxxxxx
3.2.2 Grafana配置企微Webhook
3.2.3 配置企微群消息告警规则
基本流程和3.1.3一致, 区别就是,这里选择配置的企微通知策略