PG的Prometheus监控
Prometheus是一种开源的监控系统,它可以监测多个维度的数据,并提供、可视化预警、报警和故障排查等服务。PG的Prometheus监控是专门针对PostgreSQL数据库的监控工具,通过它可以快速了解数据库的整体状态和性能,支持量化SQL的性能,提供数据查询、报表生成、报警机制等功能。本文将详细介绍PG的Prometheus监控的基本使用方法。
1. 安装Prometheus
Prometheus是一款自我托管的监控工具,它在GitHub上以二进制的形式发布,只需要下载并解压缩即可使用。建议将Prometheus安装在管理机上。
2. 配置Prometheus
在Prometheus安装目录下,使用vi编辑器,打开prometheus.yml文件。prometheus.yml包含一个基本的配置模板,内容如下:
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
这是一个基本的配置文件,其中global是全局配置,在此处设置了指标采集的时间间隔,evaluation_interval是规则设定的时间间隔,包括 Prometheus 自带的规则文件中的规则。scrape_configs中定义了被监控的 job 和采集该 job 指标时需要的信息。可以在其中添加多个job的配置。如:
- job_name: 'pg_exporter'
static_configs:
- targets:
- '192.168.0.10:9000'
这个配置表示,要监控名为pg_exporter的job,通过访问192.168.0.10:9000获取指标信息。
3. 配置PG Exporter
PG Exporter是一个PostgreSQL的数据采集程序,它允许Prometheus监控一个PostgreSQL实例的性能指标。首先需要安装PG Exporter,可以从官网上下载最新版本的PG Exporter二进制文件。
运行PG Exporter的命令如下:
./pg_exporter -n postgres://user:password@localhost:5432/dbname
-n后面跟着一个PostgreSQL的连接字符串,其中user、password、localhost和dbname进一步解释如下:
user:PostgreSQL服务器的用户名。
password:连接密码。
localhost:PostgreSQL服务器的主机名或IP。
dbname:连接的数据库名称。
PG Exporter的默认端口号为9187。
4. 配置Grafana
Grafana是一个开源的数据可视化工具,可以在浏览器中构造、查询和可视化各种类型的指标。通过Grafana,可以使用各种图表和表格来可视化监控数据。为了简化部署,我们这里使用基于Docker的Grafana实例。
先下载Grafana的镜像:
docker pull grafana/grafana
然后运行以下命令启动Docker中的Grafana实例:
docker run -d -p 3000:3000 grafana/grafana
现在可以在浏览器中访问http://localhost:3000/管理员也可以使用它们的默认密码(admin:/admin)登录系统。
5. 在Grafana中配置Prometheus
运行Grafana后,需要在其Web界面中配置Prometheus,Grafana可以从Prometheus中查询度量信息,并在页面中显示指标图表。
在Grafana的界面中,依次单击“管理”>“数据源”,然后在“添加数据源”对话框中进行如下设置:
- Name:任意命名,
- Type:选择Prometheus,
- URL:配置Prometheus的URL,
- Access:选择“Server”
- Basic Auth:可选项,如果GitHub验证启用,则输入用户名和密码。
单击下方的"Add"按钮添加数据源,如果连接设置正确,则Grafana将成功创建一个数据源,可以在“仪表盘”页面中创建可视化项。
6. 在Grafana中创建仪表盘
以新增一个PostgreSQL数据库的存储使用量显示为例。依次单击“仪表板”>“新建仪表板”>“新建面板”>“添加查询”,如下图所示。
可以从Prometheus中选择查询结果。例如,如果要查看数据库的存储使用情况,则可以从Prometheus中获取如下指标:
- pg_database_size{datname="db1",tablespace="pg_global"}:指定数据库大小
- pg_table_size{datname="db1",schemaname="public",relname="table1"}:指定表的大小。
选择此查询后,可以从网格视图标签中选择锁定表的名称变量,从而查看不同的数据库。最后,可以在数据图表和视觉效果标签中选择预定义的仪表盘视觉效果。创建后,可以通过将其添加到仪表盘下的一个面板中,来将其显示在仪表盘中。
7. 创建报警
Prometheus可以轻松设置和配置警报。通过Prometheus警报管理条目,可以识别阈值,以及什么应该在该阈值发生变化时通知人员或网站管理员。首先要设定警报规则,然后在Grafana中创建报警通知目标。
假设警戒值是每个PostgreSQL的查询的平均响应时间超过1秒,可以约定一个规则:
- record: postgresql_average_response_time_seconds
expr: avg(pg_stat_activity.query_duration) by (datname) > 1
如上所述,我们定义了一个使用avg()聚合函数计算查询持续时间的新指标,按当前数据库分组,然后与1秒进行比较。如果当前查询工作的平均响应时间超过1秒,则触发警报。
现在创建一个警报时,请单击Prometheus面板的警报管理按钮,然后单击左下角的新警报按钮。这将为您提供以对将要设置报警规则的环境的身份验证所需要的信息。完成此操作后,请单击“添加规则”,输入警报规则名称和条件。例如,“平均查询持续时间>1s”,然后单击保存。由此会触发警报。
最后,在Grafana中,您可以表示被动议案的通知范围。例如,将位于另一组的Slack集成添加到报警管理器中。这样,当规则条件满足时,就会触发警报并将其发送到Slack通知队列中。
本文介绍了PG的Prometheus监控的基本使用方法,希望对读者在实践中使用它进行高效监控提供帮助。
