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

相关推荐
a187927218312 小时前
MySQL 事务
数据库·mysql·事务·mvcc·acid·readview·可见性判断算法
梨落秋霜2 小时前
Python入门篇【元组】
android·数据库·python
Caarlossss2 小时前
mybatis
java·数据库·tomcat·maven·mybatis·mybatis-spring
AI Echoes3 小时前
自定义 LangChain 文档加载器使用技巧
数据库·人工智能·python·langchain·prompt·agent
在风中的意志3 小时前
[数据库SQL] [leetcode] 578. 查询回答率最高的问题
数据库·sql
liuc03173 小时前
AI下调用redis并调用deepseek
数据库·redis·mybatis
遇见火星3 小时前
Redis主从复制深度解析:数据高可用与负载均衡的核心方案
数据库·redis·缓存·负载均衡
酸菜牛肉汤面3 小时前
22、数据库的乐观锁和悲观锁是什么?怎么实现的?
数据库
陌路203 小时前
MYSQL事务篇--事务隔离机制
数据库·mysql