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

相关推荐
橙露8 小时前
Spring Boot 核心原理:自动配置机制与自定义 Starter 开发
java·数据库·spring boot
冰暮流星8 小时前
sql语言之分组语句group by
java·数据库·sql
符哥20088 小时前
Ubuntu 常用指令集大全(附实操实例)
数据库·ubuntu·postgresql
C++ 老炮儿的技术栈9 小时前
Qt 编写 TcpClient 程序 详细步骤
c语言·开发语言·数据库·c++·qt·算法
怣509 小时前
MySQL子查询零基础入门教程:从小白到上手(零基础入门版)
数据库·mysql
码界调试侠9 小时前
MongoDB 常用查询语法
数据库·mongodb
江湖有缘9 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
静听山水9 小时前
StarRocks导入数据【Stream Load】
数据库
藦卡机器人9 小时前
国产机械臂做的比较好的品牌有哪些?
大数据·数据库·人工智能
jiunian_cn9 小时前
【Redis】数据库管理操作
数据库·redis·缓存