当前位置: 首页 > news >正文

部署postgresql_exporter监控pgsql

  • 部署exporter
  • 配置监控job
  • 配置告警规则

一键部署脚本

#!/bin/bash

# 定义变量
PG_HOST="xx.ap-southeast-1.rds.amazonaws.com"
PG_PORT="5432"
PG_PASSWORD="bagayalu321"
PG_USER="monitor_user"
EXPORTER_VERSION="0.16.0"  # PostgreSQL exporter版本

# 安装PostgreSQL客户端
echo "正在安装PostgreSQL客户端..."
apt-get update
apt-get install -y postgresql-client

# 测试连接到PostgreSQL服务器
echo "测试PostgreSQL连接..."
PGPASSWORD=$PG_PASSWORD psql -h $PG_HOST -p $PG_PORT -U $PG_USER -c "SELECT version();"

# 创建授权用户(这部分您已经完成,但为完整性保留)
cat > /tmp/create_user.sql << EOF
CREATE USER $PG_USER WITH PASSWORD '$PG_PASSWORD';
GRANT pg_monitor TO $PG_USER;
GRANT SELECT ON pg_stat_database TO $PG_USER;
EOF

echo "注意:用户创建部分仅供参考,您已经完成此步骤"

# 下载并安装Prometheus PostgreSQL exporter
echo "安装Prometheus PostgreSQL exporter..."

# 创建用户
useradd --no-create-home --shell /bin/false postgres_exporter

# 下载Prometheus PostgreSQL exporter
wget https://github.com/prometheus-community/postgres_exporter/releases/download/v$EXPORTER_VERSION/postgres_exporter-$EXPORTER_VERSION.linux-amd64.tar.gz
tar -xzf postgres_exporter-$EXPORTER_VERSION.linux-amd64.tar.gz
cp postgres_exporter-$EXPORTER_VERSION.linux-amd64/postgres_exporter /usr/local/bin/
chown postgres_exporter:postgres_exporter /usr/local/bin/postgres_exporter

# 创建配置
mkdir -p /etc/postgres_exporter
cat > /etc/postgres_exporter/postgres_exporter.env << EOF
DATA_SOURCE_NAME="postgresql://$PG_USER:$PG_PASSWORD@$PG_HOST:$PG_PORT/postgres?sslmode=disable"
EOF

chown -R postgres_exporter:postgres_exporter /etc/postgres_exporter

# 创建systemd服务
cat > /etc/systemd/system/postgres_exporter.service << EOF
[Unit]
Description=Prometheus PostgreSQL Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=postgres_exporter
Group=postgres_exporter
Type=simple
EnvironmentFile=/etc/postgres_exporter/postgres_exporter.env
ExecStart=/usr/local/bin/postgres_exporter
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
systemctl daemon-reload
systemctl enable postgres_exporter
systemctl start postgres_exporter
systemctl status postgres_exporter

# 清理下载文件
rm -rf postgres_exporter-$EXPORTER_VERSION.linux-amd64*

echo "PostgreSQL配置和PostgreSQL exporter安装完成!"
echo "Exporter端口: 9187"
echo "请确保防火墙允许访问此端口"

配置job

  - job_name: 'xx-xx-pgsql'
    static_configs:
    - targets: ['xxxx:9187']
    relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
      replacement: xx-xx-pgsql-aws

配置最基础的探活告警

# pgsql_rule.yml 
groups:
- name: PostgreSQLStatsAlert
  rules:
  
  # PostgreSQL 实例宕机
  - alert: PostgreSQL database is down
    expr: pg_up == 0
    for: 1m
    labels:
      severity: critical
      service: postgresql
    annotations:
      description: "Instance {{ $labels.instance }} PostgreSQL is down"
      summary: "PostgreSQL database is down. This requires immediate action!"

相关文章:

  • mysql增加字段操作以及关键字报错
  • MATLAB中regexpi函数用法
  • 想要追踪一个在传送带上运动的东西,该怎么选择工业相机呢,需要考虑哪些因素
  • 国产Linux OS:网络性能调优关键内核参数
  • 【医学影像AI】50个眼科影像数据集(1)分类任务
  • 软件测试技术之跨平台的移动端UI自动化测试(上)
  • VSCode 中使用 Snippets 设置常用代码块
  • 数据结构:顺序表(Sequence List)及其实现
  • Natural Language Processing NLP
  • Ubuntu轻松部署ToolJet低代码开发平台结合内网穿透远程访问
  • Blackbox.AI:高效智能的生产力工具新选择
  • 实用且美观,一款简单且模块化的UI组件库!
  • 【Linux】【网络】Libevent 内部实现简略版
  • CentOS 7.8 安装MongoDB 7 副本集(Replica Set)
  • Datablau产品全面接入DeepSeek
  • DeepSeek 服务器繁忙的全面解决方案
  • Firebase详解及使用方法
  • openGauss 3.0 数据库在线实训课程18:学习视图管理
  • SpringBoot3.x整合WebSocket
  • remix中为什么Dev -Ganache Provider没有了; remix中区块链常见的链接方式有哪些
  • 特写|银耳种植“北移”到沧州盐山,村民入伙可年增收4万元
  • 江南考古文脉探寻
  • 特朗普:将于19日分别与普京和泽连斯基通话
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 天算星座二期首批卫星成功发射,将助力6G空天信息基础设施建设
  • 网警打谣:传播涉刘国梁不实信息,2人被处罚