Postgres出口国
在这个页面:
介绍
下面的快速入门提供设置指令和预配置的仪表板和报警规则Postgres出口国。贯穿在这个快速入门的步骤之后,您将:
设置和配置Postgres出口国收集Postgres度量每秒查询(每秒)和行获取/返回/插入/更新/删除/秒。Postgres出口国将公开这些Prometheus-style指标。
普罗米修斯刮Postgres出口国配置指标和可选船Grafana云。
进口Grafana仪表板可视化你的度量数据。
建立普罗米修斯报警规则提醒在你的度量数据。
指标使用
这出口国发布约450普罗米修斯默认时间序列。看到一个度量列表默认发货出口国,请下载样本指标刮伤在这里。
注意,根据其配置、Postgres出口国可能收集和发布指标远远超过这个默认设置。了解更多关于配置Postgres出口国和切换的收藏家,请参见Postgres出口国GitHub库。
超出了切换Postgres出口国的设置,您可以减少下降时间序列指标使用你不需要存储在普罗米修斯或者Grafana云。学习如何做到这一点,请参阅减少普罗米修斯指标和重新使用从Grafana云文档。
Grafana云Postgres的出口国集成
如果你使用Grafana云,您可以跳过本指南的所有步骤中通过安装Postgres出口国集成,其目的是帮助你获得启动并运行命令和点击。免费注册。
学习如何设置Postgres出口国使用Postgres出口国集成,请参阅Postgres出口国集成从Grafana云文档。
在这个页面:
Postgres出口国快速入门
本指南中您将了解如何设置和配置Postgres出口国收集Postgres度量每秒查询(每秒),数据库死锁和冲突,暴露Prometheus-style指标。您将配置普罗米修斯刮Postgres指标和可选船Grafana云。最后,您将设置一个预配置和策划组Grafana指示板和报警规则。本指南的末尾你仪表板,您可以使用可视化你的Postgres指标,和预配置警报。
如果您正在使用Grafana云,Postgres集成可以帮助你迅速启动并运行。Postgres集成嵌入到Postgres出口国Grafana云代理并自动报警规则规定和指示板,所以你不需要贯穿本指南中的步骤。学习如何设置Postgres出口国使用Postgres集成,请参阅Postgres集成从Grafana云文档。
先决条件
在你开始之前,你应该有以下可用:
- 一台机器兼容Postgres出口国。可用版本的列表,请参阅释放。
- Postgres运行在您的机器上。更多地了解安装和运行Postgres,请参阅Postgres安装指南。
- 普罗米修斯在您的环境中或直接在机器上运行。学习如何安装普罗米修斯,请参阅安装从普罗米修斯文档。
- Grafana运行在您的环境中或直接在机器上。学习如何安装Grafana,请参阅安装Grafana从Grafana文档。
- (可选)Grafana云账户。Grafana云主机Grafana和皮质端点的普罗米修斯指标。你仍然需要刮指标,使用普罗米修斯在您的环境中安装,或Grafana云代理。了解更多关于Grafana云,请参阅Grafana云。
步骤1:设置Postgres出口国
在此步骤中,我们将设置Postgres出口国在您的机器上收集和公开Postgres普罗米修斯格式的指标。本指南使用Ubuntu 20.04系统13.2 Postgres。步骤可能稍有不同,这取决于您的操作系统和Postgres版本。
首先,登录到您的机器和下载相关的二进制Postgres出口国。本指南使用linux-amd64
二进制但是你应该选择一个对应于系统的操作系统和架构:
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v0.9.0/postgres_exporter-0.9.0.linux-amd64.tar.gz
取代v0.9.0
你想安装的版本。本指南可能变得陈旧所以最好检查Postgres出口国释放页面最新的稳定版本。
解压缩tarball,cd
目录:
焦油xvfz postgres_exporter - * .linux-amd64.tar。广州cd postgres_exporter - * .linux-amd64
我们将运行的Postgres出口国postgres
用户获取数据库指标。获取指标non-superuser,你可以遵循的指令Postgres出口国Github回购。
我们需要通知出口商如何到达Postgres服务器。我们通过设置以下环境变量:
出口DATA_SOURCE_NAME = ' postgresql: / / postgres: enter_password_here@postgres_hostname: 5432 / postgres ? sslmode =禁用'
一定要更换postgres
与用户您将使用从Postgres获取指标,enter_password_here
用户的密码,postgres_hostname
与Postgres实例的主机名(如果你在同一台机器上localhost)。
最后,运行出口国:
/ postgres_exporter信息。[0000]开始服务器::9187来源=“postgres_exporter.go: 1850”
如果你看到上面的输出,你成功地跑Postgres出口国。
Postgres出口国发布Postgres指标普罗米修斯格式在端口9187年
。你可以测试使用旋度
。你需要打开一个新的SSH会话或背景Postgres出口国过程使用旋度
。
curl http://localhost: 9187 /指标
#类型pg_exporter_scrapes_total计数器pg_exporter_scrapes_total 1 # #帮助pg_locks_count数量的锁类型pg_locks_count计pg_locks_count {datname =“postgres”=“accessexclusivelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“accesssharelock”模式,服务器= " localhost: 5432} 1 pg_locks_count {datname =“postgres”=“exclusivelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“rowexclusivelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“rowsharelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“sharelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“sharerowexclusivelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“shareupdateexclusivelock”模式,服务器= " localhost: 5432} 0 pg_locks_count {datname =“postgres”=“sireadlock”模式,服务器= " localhost: 5432} 0
如果你看到上面的输出中,您已经准备好开始使用普罗米修斯刮Postgres指标。
为了避免从命令行运行和管理Postgres出口国,您可以创建一个systemd
服务。学习如何做到这一点,请参阅创建一个systemd服务管理代理。替代路径的路径代理二进制Postgres出口国。
您可以指定——extend.query-path
国旗的路径queries.yaml
文件,您可以指定您的自定义查询。更多地了解这些特性,请参阅Postgres出口国GitHub库。
步骤2:使用普罗米修斯刮Postgres出口国
现在Postgres出口国已经启动并运行在您的机器上,您可以配置一个普罗米修斯刮工作度量收集和存储Postgres出口国。
添加以下刮工作配置scrape_configs
你的节prometheus.yml
配置文件:
- job_name: postgres static_configs:目标:[' postgres_exporter_machine_IP_address: 9187 ']
取代postgres_exporter_machine_IP_address
与机器的IP地址运行Postgres出口国。如果你是普罗米修斯在同一台机器上运行,这将是本地主机
。了解更多关于配置普罗米修斯,请参阅配置从普罗米修斯文档。
如果你没有一个prometheus.yml
配置文件,创建一个简单的一个使用您喜欢的文本编辑器。打开你喜欢的文本编辑器和粘贴在下面普罗米修斯配置:
全球:scrape_interval: 15秒scrape_configs: job_name: postgres static_configs: -目标:(' postgres_exporter_machine_IP_address: 9187)
这个配置告诉普罗米修斯刮所有工作每15秒。唯一刮配置工作postgres
和定义了一个postgres_exporter_machine_IP_address: 9187
目标。默认情况下,普罗米修斯将刮/指标
使用HTTP端点。
保存并关闭该文件。然后您可以使用下面的命令运行普罗米修斯的文件:
/ prometheus.yml /普罗米修斯——config.file =
航运指标Grafana云
船Postgres出口国指标从普罗米修斯Grafana云,配置remote_write
参数在你prometheus.yml
配置文件。要了解更多,请参阅度量——普罗米修斯从Grafana云文档。学习更多有关remote_write
参数,请参阅remote_write
从普罗米修斯文档。
步骤3:配置仪表板
本快速入门包括一个仪表板:
- Postgres概述
学习如何将这些仪表板导入Grafana,请参阅导入一个仪表板从Grafana文档。
你可以卖到仪表板在这里。
第四步:配置警报
普罗米修斯报警规则,您可以定义警报时,火PromQL表达式违反一些阈值或在一段时间内满足指定条件。例如,您可以定义一个HighRequestLatency
火灾警报,当一个请求延迟度量大于某个阈值在一段时间内。一旦触发报警条件,警戒进入等待
状态。满足条件后定义的一段时间为
参数,警报进入发射
状态。您可以配置路由和解雇的通知提醒使用工具Alertmanager。Alertmanager还内置Grafana云。
您可以获取报警规则YAML文件在这里。
报警规则加载到普罗米修斯
报警规则加载到普罗米修斯,添加以下prometheus.yml
配置文件:
rule_files:——“postgres_exporter_alerting_rules.yml”
一定要更换postgres_exporter_alerting_rules.yml
Postgres报警规则YAML文件的路径。
报警规则加载到Grafana云
学习如何报警规则加载到Grafana云,请参阅普罗米修斯与cortextool洛基规则。
结论
在这个快速入门你您的Linux机器上安装和运行Postgres出口国。然后配置普罗米修斯刮数据库和Postgres指标暴露Postgres出口国。你报警规则加载到普罗米修斯,最后导入Grafana仪表板可视化Postgres指标。
如果你使用Grafana云,你可以跳过所有的步骤在这个指导安装与Grafana Postgres集成云代理。这种集成一个预配置的Postgres出口国嵌入剂和自动规定Grafana仪表盘和普罗米修斯报警和记录的规则,所以你不必手动导入它们。学习如何设置Postgres集成,请参阅Grafana云集成。
仪表板、记录规则和报警规则生成使用Mixin Postgres出口国。mixin dasboards可重用模板,记录规则和警报策划和设计的主题专家。要了解更多,请参阅Postgres Mixin存储库。
在这个页面:
仪表板Postgres概述
这个指示板包含以下指标:面板
- 当前每秒
- 获取、返回、插入、更新、删除行
- 数据库死锁和冲突
- 缓存命中率
- 的活跃连接数
- 缓冲区
你可以直接导入仪表板使用以下仪表板ID:14114年
。
你可以卖到仪表板JSON在这里。
这个指示板生成使用Postgres出口国mixin。
在这个页面:
本快速入门包括以下报警规则:
PostgreSQLMaxConnectionsReached
Postgres跑出可用的连接
PostgreSQLHighConnections
Postgres超过80%的当前配置最大Postgres连接限制
PostgreSQLDown
Postgres不是处理查询
PostgreSQLSlowQueries
Postgres的缓慢的查询
PostgreSQLQPS
每秒Postgres高数量的查询
PostgreSQLCacheHitRatio
Postgres缓存命中率很低
下载以下报警规则YAML文件组:-名称:PostgreSQL规则:-警报:PostgreSQLMaxConnectionsReached expr: sum (pg_stat_activity_count)(实例)> = (pg_settings_max_connections)和(实例)和(pg_settings_superuser_reserved_connections)(实例):1 m标签:严重性:电子邮件注释:摘要:“{{$标签。实例}}已经刷爆了Postgres连接。描述:“{{$标签。实例}}超过当前配置最大Postgres连接限制(当前值:{{$价值}})。服务可能发生退化,请立即采取行动(您可能需要增加max_connections的码头工人形象和重新部署”。- alert: PostgreSQLHighConnections expr: sum(pg_stat_activity_count) by (instance) > (sum(pg_settings_max_connections) by (instance) - sum(pg_settings_superuser_reserved_connections) by (instance)) * 0.8 for: 10m labels: severity: email annotations: summary: "{{ $labels.instance }} is over 80% of max Postgres connections." description: "{{ $labels.instance }} is exceeding 80% of the currently configured maximum Postgres connection limit (current value: {{ $value }}s). Please check utilization graphs and confirm if this is normal service growth, abuse or an otherwise temporary condition or if new resources need to be provisioned (or the limits increased, which is mostly likely)." - alert: PostgreSQLDown expr: pg_up != 1 for: 1m labels: severity: email annotations: summary: "PostgreSQL is not processing queries: {{ $labels.instance }}" description: "{{ $labels.instance }} is rejecting query requests from the exporter, and thus probably not allowing DNS requests to work either. User services should not be effected provided at least 1 node is still alive." - alert: PostgreSQLSlowQueries expr: avg(rate(pg_stat_activity_max_tx_duration{datname!~"template.*"}[2m])) by (datname) > 2 * 60 for: 2m labels: severity: email annotations: summary: "PostgreSQL high number of slow on {{ $labels.cluster }} for database {{ $labels.datname }} " description: "PostgreSQL high number of slow queries {{ $labels.cluster }} for database {{ $labels.datname }} with a value of {{ $value }} " - alert: PostgreSQLQPS expr: avg(irate(pg_stat_database_xact_commit{datname!~"template.*"}[5m]) + irate(pg_stat_database_xact_rollback{datname!~"template.*"}[5m])) by (datname) > 10000 for: 5m labels: severity: email annotations: summary: "PostgreSQL high number of queries per second {{ $labels.cluster }} for database {{ $labels.datname }}" description: "PostgreSQL high number of queries per second on {{ $labels.cluster }} for database {{ $labels.datname }} with a value of {{ $value }}" - alert: PostgreSQLCacheHitRatio expr: avg(rate(pg_stat_database_blks_hit{datname!~"template.*"}[5m]) / (rate(pg_stat_database_blks_hit{datname!~"template.*"}[5m]) + rate(pg_stat_database_blks_read{datname!~"template.*"}[5m]))) by (datname) < 0.98 for: 5m labels: severity: email annotations: summary: "PostgreSQL low cache hit rate on {{ $labels.cluster }} for database {{ $labels.datname }}" description: "PostgreSQL low on cache hit rate on {{ $labels.cluster }} for database {{ $labels.datname }} with a value of {{ $value }}"
这个报警规则YAML文件生成使用Postgres出口国mixin。
在这个页面:
Grafana云有一组不断扩大的集成快速得到一个可观测性堆栈在几分钟内启动并运行。Postgres集成,内置Grafana云代理,暴露和擦伤必不可少的Postgres指标和推动他们Grafana云。代理将刮指标使用嵌入式Postgres出口国,和Grafana云会自动为可视化提供定制的Grafana仪表板和警报和作用于这个数据。
要了解更多,请查看Grafana云文档。
它是如何工作的
配置、安装、连接和维护普罗米修斯监控组件通常涉及重大的领域知识。可能需要很长一段时间从安装到仪表板和警报。Grafana的创造者——普罗米修斯和核心贡献者和皮层——我们构建简单的集成文摘的一些工作为了迅速开始。它是如何工作的:
- 注册(或登录)免费Grafana云账户。
- 选择目标你想观察(一个不断扩大的目录)。
- 运行一行命令安装Grafana代理。代理嵌入放弃的preconfigures出口商公开默认度量,并逼迫他们Grafana云指标后端。
- 瞧!你会看到定制Grafana仪表盘和将受益于理智提醒违约。
寻找不同的出口商或集成?看看我们越来越多的图书馆为受欢迎的组件集成像MySQL、Postgres复述,Memcached和更多。