说明:本系列文章仅用于共享我的学习成果,未经过生产系统考验,对于知识点和一些组件的使用会不定时更新,仅供参考,如有错误的地方,欢迎留言共同学习。
本高可用系列测试不说理论知识,如有需要自行百度,因生产环境大多数是内网环境,无法连接互联网,为模拟生产环境安装,PostgreSQL高可用测试均采用离线部署。
所需软件包均以打包上传百度网盘,如有需要自行下载:https://pan.baidu.com/s/1Tb7GPMvj4kfKEIh8iyvdbA 提取码:n9w2 文件名:PostgreSQL_HA.tar.gz
第一章: 介绍测试环境
第二章: PostgreSQL + replication 部署
第三章: Etcd 部署和管理
第四章: Patroni 部署和管理
第五章: HAProxy + Keepalived 部署和管理
第六章: 高可用模拟故障测试用例
第七章: Prometheus + Grafana 监控部署
第八章: 高可用管理
第七章: Prometheus + Grafana 监控部署
- prometheus github 下载地址:https://github.com/prometheus/prometheus 文件名:prometheus-2.30.3.linux-amd64.tar.gz
- Grafana 官网下载地址:https://grafana.com/grafana/download 文件名:grafana-enterprise-8.2.2.linux-amd64.tar.gz
prometheus用到的几个客户端数据采集工具:
- node_exporter github 下载地址:https://github.com/prometheus/node_exporter 文件名:node_exporter-1.2.2.linux-amd64.tar.gz
- postgres_exporter github 下载地址:https://github.com/prometheus-community/postgres_exporter 文件名:postgres_exporter-0.10.0.linux-amd64.tar.gz
- haproxy_exporter github 下载地址:https://github.com/prometheus/haproxy_exporter 文件名:haproxy_exporter-0.12.0.linux-amd64.tar.gz
1. 在节点3上安装并启动prometheus
# 解压即是安装 [root@pgtest3 ~]# tar -zxvf /enmo/soft/prometheus-2.30.3.linux-amd64.tar.gz -C /enmo/app [root@pgtest3 ~]# mv /enmo/app/prometheus-2.30.3.linux-amd64 /enmo/app/prometheus-2.30.3 [root@pgtest3 ~]# ln -s /enmo/app/prometheus-2.30.3 /enmo/app/prometheus # 将prometheus的命令加入到环境变量 [root@pgtest3 ~]# sed -i "s;:\$PATH:;:/enmo/app/prometheus:\$PATH:;g" /etc/profile [root@pgtest3 ~]# source /etc/profile # 创建服务 [root@pgtest3 ~]# vi /usr/lib/systemd/system/prometheus.service [unit] Description=Prometheus Server Documentation=https://prometheus.io/docs/introduction/overview/ After=network.target [Service] User=root Group=root Type=simple Restart=on-failure WorkingDirectory=/enmo/app/prometheus ExecStart=/enmo/app/prometheus/prometheus --storage.tsdb.retention=30d --web.enable-lifecycle --web.enable-admin-api --config.file=/enmo/app/prometheus/prometheus.yml --storage.tsdb.path=/enmo/app/prometheus/data ExecReload=/bin/kill -HUP $MAINPID RuntimeDirectory=prometheus RuntimeDirectoryMode=0750 LimitNOFILE=10000 TimeoutStopSec=20 [Install] WantedBy=multi-user.target # --web.enable-lifecycle 作用:后期修改参数文件时不需要重启服务,可以通过api重新读取参数文件。 # 启动 prometheus [root@pgtest3 ~]# systemctl daemon-reload [root@pgtest3 ~]# systemctl restart prometheus [root@pgtest3 ~]# systemctl enable prometheus
复制
2. 浏览器登录prometheus
登录地址:http://192.168.58.12:9090
查看现有的监控主机,当前只有本机localhost
3. 所有监控客户端安装 node_exporter,用于获取主机的监控指标
# 解压即是安装 [root@pgtest1 ~]# tar -zxvf /enmo/soft/node_exporter-1.2.2.linux-amd64.tar.gz -C /enmo/app/ [root@pgtest1 ~]# mv /enmo/app/node_exporter-1.2.2.linux-amd64 /enmo/app/node_exporter-1.2.2 [root@pgtest1 ~]# ln -s /enmo/app/node_exporter-1.2.2 /enmo/app/node_exporter # 创建服务 [root@pgtest1 ~]# vi /usr/lib/systemd/system/node_exporter.service [unit] Description=Prometheus node_exporter Documentation=https://github.com/prometheus/node_exporter After=network.target [Service] User=nobody ExecStart=/enmo/app/node_exporter/node_exporter --log.level=error ExecStop=/usr/bin/killall node_exporter [Install] WantedBy=multi-user.target # 启动服务 [root@pgtest1 ~]# systemctl daemon-reload [root@pgtest1 ~]# systemctl restart node_exporter [root@pgtest1 ~]# systemctl enable node_exporter
复制
4. 所有监控客户端安装 postgres_exporter,用于获取POstgreSQL数据库的监控指标
# 解压即是安装 [root@pgtest1 ~]# tar -zxvf /enmo/soft/postgres_exporter-0.10.0.linux-amd64.tar.gz -C /enmo/app/ [root@pgtest1 ~]# mv /enmo/app/postgres_exporter-0.10.0.linux-amd64 /enmo/app/postgres_exporter-0.10.0 [root@pgtest1 ~]# ln -s /enmo/app/postgres_exporter-0.10.0 /enmo/app/postgres_exporter # 创建服务 [root@pgtest1 ~]# vi /usr/lib/systemd/system/postgres_exporter.service [unit] Description=Prometheus postgres_exporter Documentation=https://github.com/wrouesnel/postgres_exporter After=network.target [Service] Type=simple User=postgres Environment="DATA_SOURCE_NAME=postgresql://postgres:postgres@localhost:5432/postgres?sslmode=disable" ExecStart=/enmo/app/postgres_exporter/postgres_exporter --log.level=error # --extend.query-path=quires.yaml Restart=on-failure [Install] WantedBy=multi-user.target # 启动服务 [root@pgtest1 ~]# systemctl daemon-reload [root@pgtest1 ~]# systemctl restart postgres_exporter [root@pgtest1 ~]# systemctl enable postgres_exporter
复制
5. 所有监控客户端安装 haproxy_exporter,用于获取haproxy的监控指标
# 解压即是安装 [root@pgtest1 ~]# tar -zxvf /enmo/soft/haproxy_exporter-0.12.0.linux-amd64.tar.gz -C /enmo/app/ [root@pgtest1 ~]# mv /enmo/app/haproxy_exporter-0.12.0.linux-amd64 /enmo/app/haproxy_exporter-0.12.0 [root@pgtest1 ~]# ln -s /enmo/app/haproxy_exporter-0.12.0 /enmo/app/haproxy_exporter # 创建服务 [root@pgtest1 ~]# vi /usr/lib/systemd/system/haproxy_exporter.service [unit] Description=Prometheus haproxy_exporter Documentation=https://github.com/prometheus/haproxy_exporter After=network.target [Service] User=nobody ExecStart=/enmo/app/haproxy_exporter/haproxy_exporter --haproxy.scrape-uri=http://admin:admin@192.168.58.10:1080/?stats;csv --log.level=error ExecStop=/usr/bin/killall haproxy_exporter [Install] WantedBy=multi-user.target # 启动服务 [root@pgtest1 ~]# systemctl daemon-reload [root@pgtest1 ~]# systemctl start haproxy_exporter [root@pgtest1 ~]# systemctl enable haproxy_exporter
复制
6. prometheus服务端配置文件prometheus.yml添加客户端,严格注意yml文件配置的格式
[root@pgtest3 ~]# vi /enmo/app/prometheus/prometheus.yml # 加到文件最后,注意每行前面的空格不要删除 - job_name: "linux_monitor" static_configs: - targets: - "192.168.58.10:9100" - "192.168.58.11:9100" - "192.168.58.12:9100" - job_name: "postgres_monitor" static_configs: - targets: - "192.168.58.10:9187" - "192.168.58.11:9187" - "192.168.58.12:9187" - job_name: "haproxy_monitor" static_configs: - targets: - "192.168.58.10:9101" - "192.168.58.11:9101" - job_name: "etcd_monitor" static_configs: - targets: - "192.168.58.10:2379" - "192.168.58.11:2379" - "192.168.58.12:2379" # prometheus 自带了对etcd的监控,不用安装etcd的exporter # 检查配置文件是否有效 [root@pgtest3 ~]# promtool check config /enmo/app/prometheus/prometheus.yml Checking /enmo/app/prometheus/prometheus.yml SUCCESS: 0 rule files found # 重新载入配置文件或重启prometheus [root@pgtest3 ~]# curl -X POST http://192.168.58.12:9090/-/reload # systemctl restart prometheus # 查看是否能获取到监控数据 [root@pgtest3 ~]# curl http://192.168.58.10:9100/metrics [root@pgtest3 ~]# curl http://192.168.58.11:9100/metrics [root@pgtest3 ~]# curl http://192.168.58.12:9100/metrics [root@pgtest3 ~]# curl http://192.168.58.10:9187/metrics [root@pgtest3 ~]# curl http://192.168.58.11:9187/metrics [root@pgtest3 ~]# curl http://192.168.58.12:9187/metrics [root@pgtest3 ~]# curl http://192.168.58.10:2379/metrics [root@pgtest3 ~]# curl http://192.168.58.11:2379/metrics [root@pgtest3 ~]# curl http://192.168.58.12:2379/metrics [root@pgtest3 ~]# curl http://192.168.58.10:9101/metrics [root@pgtest3 ~]# curl http://192.168.58.11:9101/metrics
复制
通过浏览器也可以看到新添加的客户端状态
通过浏览器可以查看到监控数据
这种图形界面显然不太直观和美观,所以引入Grafana。
7. 在节点3上安装并启动 Grafana
# 解压即是安装 [root@pgtest3 ~]# tar -zxvf /enmo/soft/grafana-enterprise-8.2.2.linux-amd64.tar.gz -C /enmo/app/ [root@pgtest3 ~]# ln -s /enmo/app/grafana-8.2.2 /enmo/app/grafana # 修改defaults.ini文件部分参数如下 sed -i "s:\<data = data\>:data = /enmo/app/grafana/data:g" /enmo/app/grafana/conf/defaults.ini sed -i "s:\<logs = data/log\>:logs = /enmo/app/grafana/data/log:g" /enmo/app/grafana/conf/defaults.ini sed -i "s:\<plugins = data/plugins\>:plugins = /enmo/app/grafana/data/plugins:g" /enmo/app/grafana/conf/defaults.ini sed -i "s:\<provisioning = conf/provisioning\>:provisioning = /enmo/app/grafana/conf/provisioning:g" /enmo/app/grafana/conf/defaults.ini # 命令加入环境变量 [root@pgtest3 ~]# sed -i "s;:\$PATH:;:/enmo/app/grafana/bin:\$PATH:;g" /etc/profile [root@pgtest3 ~]# source /etc/profile # 创建服务 [root@pgtest3 ~]# vi /usr/lib/systemd/system/grafana.service [unit] Description=Grafana Server Documentation=https://grafana.com/grafana/download After=network.target [Service] User=root Group=root Type=simple Restart=on-failure WorkingDirectory=/enmo/app/grafana ExecStart=/enmo/app/grafana/bin/grafana-server --config=/enmo/app/grafana/conf/defaults.ini --homepath=/enmo/app/grafana ExecReload=/bin/kill -HUP $MAINPID ExecStop=killall grafana-server [Install] WantedBy=multi-user.target # 启动服务 [root@pgtest3 ~]# systemctl daemon-reload [root@pgtest3 ~]# systemctl start grafana [root@pgtest3 ~]# systemctl enable grafana
复制
8. 浏览器登录 Grafana
登录地址: http://192.168.58.12:3000 默认账号密码admin/admin,第一次登录会提示修改密码
9. grafana 添加 prometheus 的数据源
10. 导入监控模板
grafana 监控页面显示模板下载:https://grafana.com/grafana/dashboards/
找到想要的模板,Download JSON,如果grafana服务器可以连接互联网,也可以 Copy ID to Clipboard。
在 Grafana 服务端浏览器页面上导入模板
至此,prometheus + Grafana 监控部署完成。
最后修改时间:2022-07-01 19:25:01
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
明明想执行的SQL是DELETE、UPDATE,但为什么看到的是SELECT(FDW的实现原理解析)
小满未满、
374次阅读
2025-03-19 23:11:26
PostgreSQL初/中/高级认证考试(3.15)通过考生公示
开源软件联盟PostgreSQL分会
340次阅读
2025-03-20 09:50:36
IvorySQL 4.4 发布 - 基于 PostgreSQL 17.4,增强平台支持
通讯员
218次阅读
2025-03-20 15:31:04
命名不规范,事后泪两行
xiongcc
198次阅读
2025-03-13 14:26:08
openHalo问世,全球首款基于PostgreSQL兼容MySQL协议的国产开源数据库
严少安
195次阅读
2025-04-07 12:14:29
PG vs MySQL 执行计划解读的异同点
进击的CJR
139次阅读
2025-03-21 10:50:08
版本发布| IvorySQL 4.4 发布
IvorySQL开源数据库社区
128次阅读
2025-03-13 09:52:33
PostgreSQL分区管理扩展——pg_partman
chirpyli
109次阅读
2025-03-19 15:48:31
手把手教你在 openKylin 上部署 IvorySQL 4.4
严少安
106次阅读
2025-03-27 20:41:28
postgresql+patroni+etcd高可用安装
necessary
105次阅读
2025-03-28 10:11:23
TA的专栏
目录