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使用。

相关推荐
星辰员2 小时前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库
华仔啊15 小时前
千万别给数据库字段加默认值 null!真的会出问题
java·数据库·后端
Sheffield2 天前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
随风飘的云2 天前
MySQL的慢查询优化解决思路
数据库
IvorySQL2 天前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师2 天前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
stark张宇2 天前
构建第一个AI聊天机器人:Flask+DeepSeek+Postgres实战
人工智能·postgresql·flask
Sheffield2 天前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
随逸1772 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头2 天前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm