本页内容

  • 准备工作
  • 开始之前
  • 安装 PostgreSQL 服务器
  • 创建 PostgreSQL 数据库和用户
  • 安装并配置 PgHero
  • 将 Nginx 配置为 PgHero 的反向代理
  • 访问 PgHero 仪表盘
  • 总结

PgHero 是一款开源的、基于 Web 的工具,旨在通过 Web 浏览器监控 PostgreSQL。它适合不熟悉命令行的用户,提供了一个简洁、用户友好的控制面板来监控 PostgreSQL,并展示资源使用率、健康检查等系统指标。它提供一目了然的状态概览——绿色表示正常,非绿色则需要引起注意。PgHero 可快速呈现数据库的整体状态,查看正在运行的查询、表索引和表空间,并让你无需切换到 psql 控制台即可获取查询的执行计划说明。

本文将向你展示如何在 Ubuntu 22.04 上安装 PgHero 这款 PostgreSQL 监控软件。

准备工作

  • 一台运行 Ubuntu 22.04 的服务器。
  • 一个已指向你服务器 IP 的有效域名。
  • 服务器上已配置 root 密码。

开始之前

在开始之前,请使用以下命令将所有系统软件包更新并升级到最新版本:

apt update -y
apt upgrade -y

所有软件包更新完成后,你可以使用以下命令安装其他所需的依赖项:

apt-get install wget curl gnupg2 -y

完成后,你可以进入下一步。

安装 PostgreSQL 服务器

在撰写本教程时,PostgreSQL 的最新版本为 14。你可以使用以下命令进行安装:

apt-get install postgresql-14 -y

安装成功后,你可以使用以下命令启动并启用 PostgreSQL 服务:

systemctl start postgresql
systemctl enable postgresql

要检查 PostgreSQL 的状态,请运行以下命令:

systemctl status postgresql

你将看到类似以下的输出:

? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Mon 2022-11-28 16:29:36 UTC; 17s ago
    Process: 20245 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 20245 (code=exited, status=0/SUCCESS)

Nov 28 16:29:36 ubuntu22041 systemd[1]: Starting PostgreSQL RDBMS...
Nov 28 16:29:36 ubuntu22041 systemd[1]: Finished PostgreSQL RDBMS.

至此,PostgreSQL 服务已安装并正在运行。你可以进入下一步。

创建 PostgreSQL 数据库和用户

接下来,你需要创建一个 PostgreSQL 数据库和用户。首先,使用以下命令连接到 PostgreSQL 控制台:

su - postgres

接下来,使用以下命令创建一个名为 pghero 的用户:

createuser pghero

接下来,使用以下命令连接到 PostgreSQL shell:

psql

接下来,为 pghero 用户设置密码:

ALTER USER pghero WITH ENCRYPTED password 'password';

接下来,使用以下命令创建一个名为 pgdb 的数据库:

CREATE DATABASE pgdb OWNER pghero;

接下来,使用以下命令将 pgdb 的所有权限授予 pghero:

GRANT ALL PRIVILEGES ON DATABASE pgdb to pghero;

接下来,使用以下命令退出 PostgreSQL shell:

\q
exit

安装并配置 PgHero

默认情况下,PgHero 软件包并未包含在 Ubuntu 的默认软件源中。因此,你需要将 PgHero 软件源添加到服务器上。

首先,使用以下命令下载并导入 GPG 密钥:

wget -qO- https://dl.packager.io/srv/pghero/pghero/key | apt-key add -

接下来,使用以下命令将 PgHero 软件源添加到 APT:

wget -O /etc/apt/sources.list.d/pghero.list https://dl.packager.io/srv/pghero/pghero/master/installer/ubuntu/$(. /etc/os-release && echo $VERSION_ID).repo

接下来,使用以下命令更新软件源缓存并安装 PgHero:

apt-get update -y
apt-get install pghero -y

安装 PgHero 后,你需要为 PgHero 指定所使用的 PostgreSQL 数据库。可以使用以下命令进行设置:

pghero config:set DATABASE_URL=postgres://pghero:password@localhost:5432/pgdb

接下来,使用以下命令设置 PgHero 的 Web 服务器:

pghero config:set PORT=3001
pghero config:set AILS_LOG_TO_STDOUT=disabled
pghero scale web=1

你将看到类似以下的输出:

Created symlink /etc/systemd/system/multi-user.target.wants/pghero.service → /etc/systemd/system/pghero.service.
Created symlink /etc/systemd/system/pghero.service.wants/pghero-web.service → /etc/systemd/system/pghero-web.service.
Scaling up...
Created symlink /etc/systemd/system/pghero-web.service.wants/pghero-web-1.service → /etc/systemd/system/pghero-web-1.service.
--> done.

现在,使用以下命令启动 PgHero 服务:

systemctl start pghero

你可以使用以下命令检查 PgHero 的状态:

systemctl status pghero

你将看到类似以下的输出:

? pghero.service
     Loaded: loaded (/etc/systemd/system/pghero.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-11-28 16:33:23 UTC; 19s ago
   Main PID: 21242 (sleep)
      Tasks: 1 (limit: 464122)
     Memory: 176.0K
     CGroup: /system.slice/pghero.service
             ??21242 /bin/sleep infinity

Nov 28 16:33:23 ubuntu22041 systemd[1]: Started pghero.service.

PgHero 现已运行,并监听 3001 端口。你可以使用以下命令进行确认:

ss -antpl | grep 3001

你应该会看到类似以下的输出:

LISTEN 0      1024         0.0.0.0:3001      0.0.0.0:*    users:(("ruby",pid=21278,fd=5),("ruby",pid=21277,fd=5),("ruby",pid=21276,fd=5),("ruby",pid=21245,fd=5))

至此,PgHero 已安装并配置完成。你可以进入下一步。

配置 Nginx 作为 PgHero 的反向代理

建议将 Nginx 安装并配置为 PgHero 的反向代理。首先,使用以下命令安装 Nginx Web 服务器:

apt-get install nginx -y

Nginx 安装完成后,使用以下命令创建一个 Nginx 配置文件:

nano /etc/nginx/conf.d/pghero.conf

添加以下内容:

server {
    listen 80;
    server_name pghero.example.com;

    location / {
        proxy_pass http://localhost:3001;
    }
}

保存并关闭文件,然后验证 Nginx 配置是否存在语法错误:

nginx -t

你将看到类似以下的输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

接下来,重启 Nginx 服务以使更改生效:

systemctl restart nginx

现在,你可以使用以下命令查看 Nginx 的状态:

systemctl status nginx

你将看到类似以下的输出:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-11-28 16:36:27 UTC; 7s ago
       Docs: man:nginx(8)
    Process: 21878 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 21879 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 21880 (nginx)
      Tasks: 3 (limit: 464122)
     Memory: 3.4M
     CGroup: /system.slice/nginx.service
             ??21880 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??21881 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??21882 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Nov 28 16:36:27 ubuntu22041 systemd[1]: Starting A high performance web server and a reverse proxy server...
Nov 28 16:36:27 ubuntu22041 systemd[1]: Started A high performance web server and a reverse proxy server.

访问 PgHero 仪表盘

现在,打开你的 Web 浏览器,使用 URL http://pghero.example.com 访问 PgHero Web 界面。你应该会在以下界面看到 PgHero 仪表盘:

在 Ubuntu 22.04 上安装 PgHero 数据库监控面板

在左侧面板中点击“空间(Space)”,你应该会在以下界面看到 PostgreSQL 的数据库大小:

在 Ubuntu 22.04 上安装 PgHero 数据库监控面板

点击“连接(Connections)”,你应该会在以下界面看到所有 PostgreSQL 连接请求:

在 Ubuntu 22.04 上安装 PgHero 数据库监控面板

点击“调优(Tune)”,你应该会在以下界面看到所有的默认设置:

在 Ubuntu 22.04 上安装 PgHero 数据库监控面板

总结

恭喜!你已成功在 Ubuntu 22.04 服务器上安装了 PgHero。现在,你可以在生产环境中部署 PgHero,以便通过 Web 浏览器轻松管理和监控你的 PostgreSQL 数据库。如果你有任何疑问,欢迎随时向我提问。