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

Grafana监控PostgreSQL:数据运维新利器

Linux运维智行录 2024-11-12
84

在数据驱动的业务环境中,数据库的性能监控是确保数据流畅和系统稳定的关键。PostgreSQL,作为强大的开源关系型数据库,其性能监控尤为重要。Grafana,一个开源的数据可视化和监控平台,提供了一个直观的界面来监控和分析数据。本文将带您了解如何利用Grafana来监控PostgreSQL,让您的数据库运维工作更加高效。

数据不说谎,监控到位,故障无处遁形


01
postgres_exporter部署

1、下载postgres_exporter部署包

$ 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、解压并拷贝命令

$ 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服务

$ 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、清理文件

$ sudo rm -rf ${temdir}

01
postgresql配置扩展

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

ls /app/postgresql/lib/pg_stat_statements.so

2、编译pg_stat_statements扩展

$ cd ./postgresql-14.10/contrib/pg_stat_statements/
$ make && sudo make install

3、修改postgresql配置文件

$ grep shared_preload_libraries $PGDATA/postgresql.confshared_preload_libraries = 'pg_stat_statements' # (change requires restart)

$ sudo systemctl restart postgresql

4、验证是否有pg_stat_statements扩展

$ 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扩展

$ psql -h localhost -p 5432 -U postgres -W -c "CREATE EXTENSION pg_stat_statements;"
Password: 

03
Prometheus和grafana配置

1、Prometheus采集postgres数据

$ 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、验证是否采集成功

$ 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"]}]}}

3、grafana上添加postgres_exporter dashboard,对应的id为12485

Tip:postgres_exporter dashboard官网地址:https://grafana.com/grafana/dashboards/12485-postgresql-exporter/,可能会有些坑,需要自行修改json适配各位环境。




效果图




04
结语

通过本文的介绍,您应该对如何使用Grafana来监控PostgreSQL有了更深入的了解。Grafana不仅提供了强大的数据可视化功能,还通过与Prometheus的集成,为PostgreSQL的性能监控提供了一个全面的解决方案。开始使用Grafana来监控您的PostgreSQL数据库,让您的数据运维工作更加智能和高效。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论