docker部署PostgreSQL数据库的监控和管理工具

1、temboard简介

temBoard是一款开源的、基于Web的PostgreSQL数据库监控和管理工具。它的核心价值在于为数据库管理员和运维团队提供一个集中式的统一界面,用于监控、优化和管理多达数百个 PostgreSQL 数据库实例。

github地址:https://github.com/dalibo/temboard

2、主要特点

统一管理:简化了大规模PostgreSQL实例集群的日常运维。

功能全面:覆盖了监控、优化、配置、维护等数据库管理核心需求。

开源开放:代码托管于GitHub,允许自定义和二次开发。

3、架构与部署

temBoard采用"代理-服务器"架构,包含三个部分:

存储库(Repository): 一个专用的PostgreSQL数据库,用于存储配置和监控数据。

Web应用 (UI): 中央服务器,提供操作界面和API。

代理 (Agent): 轻量级组件,需安装在被监控的每个PostgreSQL实例主机上,负责收集数据并执行操作。

4、创建数据目录

bash 复制代码
mkdir -p /data/temboard
chmod 777 /data/temboard

5、拉取temboard镜像

bash 复制代码
docker pull dalibo/temboard:latest
docker pull postgres:18-alpine
docker pull dalibo/temboard-agent:latest
docker pull postgres:16-alpine
docker pull postgres:14-alpine
docker pull postgres:13-alpine

6、编辑docker-compose.yaml文件

bash 复制代码
i /data/temboard/docker-compose.yaml
volumes:
  home18:
  run18:
 
  data16:
  run16:
 
  data14:
  run14:
 
  data13:
  run13:
 
 
services:
  ui:
    image: dalibo/temboard:latest
    environment:
      # These PG* vars are for auto_configure.sh
      PGHOST: repository
      PGUSER: postgres
      PGPASSWORD: postgres
      TEMBOARD_LOGGING_LEVEL: DEBUG
    links:
      - repository
    ports:
      - "8888:8888"
 
  repository:
    image: postgres:18-alpine
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    command: [
      postgres,
      -c, log_connections=on,
      -c, log_statement=all,
      -c, "log_line_prefix=%m [%p]: [%l-1] app=%a,db=%d,client=%h,user=%u ",
      -c, cluster_name=repository,
    ]
 
  instance18:
      image: postgres:18-alpine
      command: [
        postgres,
        -c, shared_preload_libraries=pg_stat_statements,
        -c, log_connections=on,
        -c, log_statement=all,
        -c, "log_line_prefix=%m [%p]: [%l-1] app=%a,db=%d,client=%h,user=%u ",
        -c, cluster_name=instance18,
      ]
      ports:
        - 5432:5432
      volumes:
      - home18:/var/lib/postgresql
      - run18:/var/run/postgresql
      environment:
        POSTGRES_PASSWORD: postgres
 
  agent18:
    image: dalibo/temboard-agent:latest
    volumes:
    - home18:/var/lib/postgresql
    - run18:/var/run/postgresql/
    links:
    - instance18:instance18.acme.tld
    - ui
    environment: &agent-env
      TEMBOARD_HOSTNAME: instance18.acme.tld
      TEMBOARD_REGISTER_HOST: agent18
      TEMBOARD_UI_URL: https://ui:8888/
      TEMBOARD_UI_USER: admin
      TEMBOARD_UI_PASSWORD: admin
      TEMBOARD_LOGGING_LEVEL: DEBUG
      PGPASSWORD: postgres
 
  instance16:
    image: postgres:16-alpine
    command: [
      postgres,
      -c, shared_preload_libraries=pg_stat_statements,
      -c, log_connections=on,
      -c, log_statement=all,
      -c, "log_line_prefix=%m [%p]: [%l-1] app=%a,db=%d,client=%h,user=%u ",
      -c, cluster_name=instance16,
    ]
    ports:
      - 5436:5432
    volumes:
    - data16:/var/lib/postgresql/data
    - run16:/var/run/postgresql
    environment:
      POSTGRES_PASSWORD: postgres
 
  agent16:
    image: dalibo/temboard-agent:latest
    volumes:
    - data16:/var/lib/postgresql/data
    - run16:/var/run/postgresql/
    links:
    - instance16:instance16.acme.tld
    - ui
    environment:
      <<: *agent-env
      TEMBOARD_HOSTNAME: instance16.acme.tld
      TEMBOARD_REGISTER_HOST: agent16
 
  instance14:
    image: postgres:14-alpine
    ports:
      - 5433:5432
    volumes:
      - data14:/var/lib/postgresql/data
      - run14:/var/run/postgresql
    environment:
      POSTGRES_PASSWORD: postgres
    command: [
      postgres,
      -c, shared_preload_libraries=pg_stat_statements,
      -c, log_connections=on,
      -c, log_statement=all,
      -c, "log_line_prefix=%m [%p]: [%l-1] app=%a,db=%d,client=%h,user=%u ",
      -c, cluster_name=instance14,
    ]
 
  agent14:
    image: dalibo/temboard-agent:latest
    volumes:
      - data14:/var/lib/postgresql/data
      - run14:/var/run/postgresql/
    links:
      - instance14:instance14.acme.tld
      - ui
    environment:
      <<: *agent-env
      TEMBOARD_HOSTNAME: instance14.acme.tld
      TEMBOARD_REGISTER_HOST: agent14
 
  instance13:
    image: postgres:13-alpine
    ports:
      - 5434:5432
    volumes:
      - data13:/var/lib/postgresql/data
      - run13:/var/run/postgresql
    environment:
      POSTGRES_PASSWORD: postgres
    command: [
      postgres,
      -c, shared_preload_libraries=pg_stat_statements,
      -c, log_connections=on,
      -c, log_statement=all,
      -c, "log_line_prefix=%m [%p]: [%l-1] app=%a,db=%d,client=%h,user=%u ",
      -c, cluster_name=instance13,
    ]
 
  agent13:
    image: dalibo/temboard-agent:latest
    volumes:
      - data13:/var/lib/postgresql/data
      - run13:/var/run/postgresql/
    links:
      - instance13:instance13.acme.tld
      - ui
    environment:
      <<: *agent-env
      TEMBOARD_HOSTNAME: instance13.acme.tld
      TEMBOARD_REGISTER_HOST: agent13

7、启动temboard容器

bash 复制代码
cd /data/temboard/
docker-compose up -d
docker-compose ps

8、访问temboard服务

bash 复制代码
浏览器访问: https://192.168.112.115:8888
用户名/密码: admin/admin

temBoard是一款功能全面的专业PostgreSQL管理面板,非常适合需要管理多个PostgreSQL实例的运维团队和DBA使用。

相关推荐
huangdong_12 分钟前
京东商品图片视频批量下载与m3u8视频合并技术完整实现方案
大数据·前端·数据库
倒流时光三十年21 分钟前
PostgreSQL CASE 条件表达式详解
数据库·postgresql
烁34726 分钟前
Docker
运维·docker·容器
字节跳动数据平台44 分钟前
营销视频进入工业化时代,火山引擎多模态数据湖如何助力多米实现内容生产提效 100+ 倍
数据库
健康平安的活着1 小时前
mysql中数据库脚本太大,通过脚本命令修改db名称
数据库·mysql
网络中的夜鹰1 小时前
轩辕镜像一键安装Docker和Docker Compose脚本
运维·docker·容器
倒流时光三十年1 小时前
PostgreSQL COALESCE 条件表达式函数详解
数据库·postgresql
让我上个超影吧2 小时前
Claude code:Hooks
java·数据库·ai编程
RH2312112 小时前
2026.6.8Linux
java·数据库·中间件
其实防守也摸鱼2 小时前
软件安全与漏洞--Windows底层原理与软件逆向工程基础
linux·网络·数据库·算法·安全·安全架构·软件安全与漏洞