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

相关推荐
为什么要做囚徒13 小时前
Docker实战系列之Root目录迁移指南:单机环境下的完整实践
运维·docker·容器
人道领域13 小时前
javaWeb从入门到进阶(MYSQL)
数据库·mysql·oracle
liux352813 小时前
MySQL读写分离全面解析:ProxySQL配置指南(十)
数据库·mysql
人工干智能13 小时前
LlamaIndex:使用向量数据库进行检索,loaded_query_engine.query(“..........?“)
数据库·llm
南梦浅13 小时前
[特殊字符]️ Docker 镜像加速器完整配置流程下面是在 CentOS 7 系统上配置 Docker 镜像加速器的完整步骤
linux·docker·centos
咸鱼翻身小阿橙13 小时前
SQL上半部分
服务器·数据库·sql
weixin_4624462313 小时前
使用 Docker / Docker Compose 部署 PdfDing —— 个人 PDF笔记
笔记·docker·pdf
Elastic 中国社区官方博客13 小时前
Elasticsearch:监控 LLM 推理和 Agent Builder 使用 OpenRouter
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
知识分享小能手13 小时前
Oracle 19c入门学习教程,从入门到精通,Oracle 数据表对象 —— 语法知识点详解与案例实践(10)
数据库·学习·oracle
2301_7679026413 小时前
第 4 章 docker容器
运维·docker·容器