暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL高可用测试系列之Patroni + etcd + HAProxy + Keepalived 离线部署(七)

原创 张玉龙 2021-11-03
2585


说明:本系列文章仅用于共享我的学习成果,未经过生产系统考验,对于知识点和一些组件的使用会不定时更新,仅供参考,如有错误的地方,欢迎留言共同学习。

本高可用系列测试不说理论知识,如有需要自行百度,因生产环境大多数是内网环境,无法连接互联网,为模拟生产环境安装,PostgreSQL高可用测试均采用离线部署

所需软件包均以打包上传百度网盘,如有需要自行下载:https://pan.baidu.com/s/1Tb7GPMvj4kfKEIh8iyvdbA 提取码:n9w2 文件名:PostgreSQL_HA.tar.gz

第一章: 介绍测试环境
第二章: PostgreSQL + replication 部署
第三章: Etcd 部署和管理
第四章: Patroni 部署和管理
第五章: HAProxy + Keepalived 部署和管理
第六章: 高可用模拟故障测试用例
第七章: Prometheus + Grafana 监控部署
第八章: 高可用管理
架构图.jpg

第七章: Prometheus + Grafana 监控部署

prometheus用到的几个客户端数据采集工具:

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
image.png
查看现有的监控主机,当前只有本机localhost
image.png
image.png

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

通过浏览器也可以看到新添加的客户端状态
image.png
通过浏览器可以查看到监控数据
image.png
image.png
image.png
这种图形界面显然不太直观和美观,所以引入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,第一次登录会提示修改密码
image.png

9. grafana 添加 prometheus 的数据源

image.png
image.png
image.png
image.png
image.png

10. 导入监控模板

grafana 监控页面显示模板下载:https://grafana.com/grafana/dashboards/
找到想要的模板,Download JSON,如果grafana服务器可以连接互联网,也可以 Copy ID to Clipboard。
image.png
在 Grafana 服务端浏览器页面上导入模板
image.png
image.png
image.png
image.png
image.png
image.png
image.png
至此,prometheus + Grafana 监控部署完成。

最后修改时间:2022-07-01 19:25:01
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
1人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论