Grafana监控PostgreSQL

1、下载postgres_exporter部署包

java 复制代码
curl -L -O https://github.com/prometheus-community/postgres_exporter/releases/download/v0.15.0/postgres_exporter-0.15.0.linux-amd64.tar.gz

2、解压并拷贝命令

java 复制代码
temdir=$(mktemp -d)
tar xvf postgres_exporter-0.15.0.linux-amd64.tar.gz -C ${temdir}
sudo cp ${temdir}/postgres_exporter-0.15.0.linux-amd64/postgres_exporter /usr/local/bin/

3、启动postgres_exporter服务

java 复制代码
cat <<'EOF' | sudo tee /usr/lib/systemd/system/postgres_exporter.service >> /dev/null
[Unit]
Description=postgres_exporter
Documentation=https://github.com/prometheus-community/postgres_exporter
Wants=network.service
After=network.service

[Service]
Type=simple
User=postgres
Environment=DATA_SOURCE_USER=postgres
Environment=DATA_SOURCE_PASS=123456
Environment=DATA_SOURCE_URI=localhost:5432/postgres?sslmode=disable
ExecStart=/usr/local/bin/postgres_exporter --web.listen-address=:9187 --collector.postmaster --collector.stat_statements
ExecStop=/bin/kill -s SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable postgres_exporter.service --now

4、清理文件

java 复制代码
sudo rm -rf ${temdir}

postgresql配置扩展

1、验证是否有编译pg_stat_statements扩展

java 复制代码
ls /app/postgresql/lib/pg_stat_statements.so

2、编译pg_stat_statements扩展

java 复制代码
cd ./postgresql-14.10/contrib/pg_stat_statements/
 make && sudo make install

3、修改postgresql配置文件

java 复制代码
grep shared_preload_libraries $PGDATA/postgresql.confshared_preload_libraries = 'pg_stat_statements' # (change requires restart)
sudo systemctl restart postgresql

4、验证是否有pg_stat_statements扩展

java 复制代码
psql -h localhost -p 5432 -U postgres -W -c "select name from pg_available_extensions where name = 'pg_stat_statements';"
Password: 
        name        
--------------------
 pg_stat_statements
(1 row)

5、添加pg_stat_statements扩展

java 复制代码
psql -h localhost -p 5432 -U postgres -W -c "CREATE EXTENSION pg_stat_statements;"

Prometheus和grafana配置

1、Prometheus采集postgres数据

java 复制代码
kubectl -n kube-system edit cm prometheus
    - job_name: "postgres-exporter"
      static_configs:
      - targets:
        - "172.139.20.17:9187"
        - "172.139.20.81:9187"
        - "172.139.20.177:9187"

2.验证是否采集成功

java 复制代码
curl -s $(kubectl -n kube-system get svc prometheus -ojsonpath='{.spec.clusterIP}:{.spec.ports[0].port}')/prometheus/api/v1/query --data-urlencode 'query=up{job="postgres-exporter"}' 
{"status":"success","data":{"resultType":"vector","result":[{"metric":{"__name__":"up","instance":"172.139.20.17:9187","job":"postgres-exporter"},"value":[1731314524.901,"1"]},{"metric":{"__name__":"up","instance":"172.139.20.81:9187","job":"postgres-exporter"},"value":[1731314524.901,"1"]},{"metric":{"__name__":"up","instance":"172.139.20.177:9187","job":"postgres-exporter"},"value":[1731314524.901,"1"]}]}}
相关推荐
zhangchaoxies11 分钟前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
zhangchaoxies41 分钟前
CSS如何实现响应式弹性网格布局_配合media query修改flex-wrap属性
jvm·数据库·python
霖霖总总1 小时前
[Redis小技巧32]Redis分布式锁的至暗时刻:从原理演进到时钟跳跃的终极博弈
数据库·redis·分布式
Polar__Star2 小时前
C#怎么操作Chart图表控件 C#如何用WinForms Chart控件绑定数据绘制统计图表【控件】
jvm·数据库·python
2401_897190552 小时前
CSS如何制作数字滚动效果_利用transform位移数字
jvm·数据库·python
一 乐2 小时前
电影院|基于springboot + vue电影院购票管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·电影院购票管理管理系统
1.14(java)2 小时前
Spring核心:IoC与DI详解
数据库
运维 小白2 小时前
PostgreSQL高可用(Patroni + etcd + Keepalived)
数据库·postgresql·etcd
2301_813599553 小时前
HTML图片怎么用UnoCSS对齐_UnoCSS原子化CSS图片对齐实战
jvm·数据库·python
m0_377618233 小时前
c++怎么在不加载整个大文件的情况下获取其SHA256校验值【进阶】
jvm·数据库·python