Monitor Greenplum

2018-02-09

简介

GP指挥中心(Greenplum Command Center, GPCC),能够在GP环境下,监视系统表现,分析系统健康,允许管理员执行一定的管理任务
GP指挥中心控制台是一个可视化的交互式网页应用,其通常安装在web服务器上(通常是master)
GPCC由运行在master和segment主机上的代理组成
GPCC收集数据库查询信息和系统使用状况,并周期性地将信息存储到一个GP数据库中(指挥中心数据库,名为gpperform)
GPCC结构如下GPCC-architecture

用户可以通过客户端程序,例如psql连接到GPCC数据库,也可以通过应用程序接口,比如JDBC和ODBC连接。管理员也可以通过GPCC控制台查看当前和历史记录,执行其他管理任务。
GPCC数据库由三组表构成:now, history, tail。
now表保存当前的系统任务,比如激活的查询,history表保存过去的系统任务,tail表用于数据转移
tail表只用于内部查询,不能被外部用户查询
nowtail表都以文本形式存放在master。GPCC数据库只能通过外部表访问他们
history表是常规的数据表,存于GPCC数据库中

GPCC提供可视化的HTML5控制台用于查看GP数据库系统的使用状况以及执行一定的管理任务

GPCCk控制台功能

  • 实时系统状态查看
  • 集群实时的统计信息
  • Query Monitor可以查看所有正在执行和等待执行的查询
  • 四个不同的权限等级,允许用户查看或取消自己的或他人的查询,以及查看或管理管理员信息
  • Cluster Metrics视图同步显示系统历史状态
  • History视图列出已完成的查询,以及指定时间段内的系统状态
  • Segment Status查看segment的概览和详细信息
  • Storage Status查看segment的数据存储状况
  • Admin > Permissions可以查看以及管理权限等级
  • Admin > Authentication可以查看、编辑pg_hba.con权限配置文件

如果由多个GP环境,可以分别为其创建GPCC实例。每个控制台实例分别使用不同的端口,并且有不同的配置选项。详细查看Creating Greenplum Command Center Console Instances

安装GPCC

通常GPCC安装子GP数据库的masterz主机上。通常这样做能获得最好的表现和安全性,尤其是GPCC控制台的请求不通过网络传输的时候。

如果要在远程系统上安装GPCC控制台(即不与GP数据库在同一个集群系统中),远程系统上必须要先安装GP数据库。远程系统的数据库不必初始化。

安装运行GPCC

重要: gpadmin用户拥有并使用默认安装在/usr/local目录下的GPCC软件。安装前,确保确保gpadmin用户具有目标安装目录的写入权限。standby master也要具有同样的权限。或者也可以以root用户执行安装,在安装结束后更改安装目录及其内容的所有者为gpadmin用户。

首先要从Pivotal下载所需的安装器。解压后执行.bin文件来执行安装。按照提示进行配置。默认的安装目录为/usr/local/greenplum-cc-web-X.X.X,用户必须有在/usr/local下的写入权限。也可以通过写入绝对路径来选择不同的安装目录。如果有standby master可以选择同时在standby master上安装GPCC。

如果以任何其他用户安装GPCC,请在安装后修改所有者以及访问权限:

1
2
chown -R gpadmin:gpadmin greenplum-cc-web-X.X.X
chmod -R 755 greenplum-cc-web-X.X.X

在其他主机上安装GPCC

  • 确保目标主机能够免密登陆GP集群(查看gpssh-exkeys了解免密登陆方法)
  • 目标主机的gpadmin用户具有目标安装目录的写入权限。默认路径为/usr/local。如果以其他用户安装,在安装完成后要修改相应的所有者以及访问权限。
  • ~gpadmin/.pgpass要被拷贝到目标主机。并且目标主机的gpadmin用户具有读写权限:

    1
    chmod 600 ~gpadmin/.pgpass
  • GP数据库授权文件$MASTER_DATA_DIRECTORY/pg_hba.conf必须包含被授权允许访问GPCC的用户的信息。

安装

Create a text file containing the names of the standby master host or other hosts where the software is to be installed, one name per line. Do not include the name of the host where you ran the installer. Hostnames must be resolvable in DNS. For example:
创建包含其他要安装GPCC的主机别名的文件,每行一个,不可以有空格。不要包含运行安装器的主机。主机别名要可以被DNS解析,例如:

1
2
smdw
gpcc

gpadmin用户,执行gpccinstall在要安装的服务器上安装GPCC:

1
gpccinstall -f /path/to/hostfile

设置GPCC环境

GPPERFMONHOME变量添加到shell环境中:

1
2
GPPERFMONHOME=/usr/local/greenplum-cc-web
source $GPPERFMONHOME/gpcc_path.sh

同样的,保证~/.bashrc文件中包含MASTER_DATA_DIRECTORY变量和greenplum_path.sh的访问入口

然后保存并sourceshell环境文件

创建GPCC数据库gpperfmon

当数据收集代理启用时,他们随着GP数据库服务的进程而启动或关闭(通过gpstartgpstop指令)。

GP提供了gpperfmon_install来执行下列任务:

  • 创建指挥中心数据库gpperfmon
  • 创建指挥中心超级用户gpmon
  • 配置GP数据库服务以允许来自gpmon的连接(通过编辑pg_hba.conf.pgpass文件。)
  • 在GP数据库服务的postgresql.conf文件中设置指挥中心服务器配置参数。

gpperfmon_install和代理是GP数据库软件的一部分。本节的操作可以在GPCC安装之前或安装之后执行。

启用收集代理

  1. 首先登陆到gpadmin用户

  2. 执行gpperfmon_install,附带--enable选项。要提供GP数据库master端口,以及要创建的gpmon超级用户的密码。如下:

    1
    gpperfmon_install --enable --password changeme --port 5432

设置的gpmon密码将被保存在gpadmin用户根目录下的.pgpass文件中。

  1. 执行完gpperfmon_install后,重启GP数据库服务:
    1
    gpstop -r

数据收集代理在重启之后才会启动。

  1. 使用ps命令查看数据收集进程是否已经在master上运行:

    1
    ps -ef | grep gpmmon
  2. 执行以下命令来验证gpmon用户可以被认证,并且数据收集进程能够写入GPCC数据库。如果所有的segment数据收集代理都在运行,将能看见所有的segment主机被一行一行列出:

    1
    psql -U gpmon gpperfmon -c 'SELECT * FROM system_now;'

用户也可以通过使用psql gpperfmon命令,连接到gpperfmon数据库来查看信息。

gpmon用户授权

gperfmon_install指令会将gpmon用户添加到pg_hba.conf授权配置文件中,并允许从本地连接到GP集群上的所有数据库。GPCC要求gpmon用户拥有gpperfmon以及所有需要监视的数据库的访问权限。gpmon作为GP数据库的超级用户,我们也可以限制其访问其他的数据库。通过编辑$MASTER_DATA_DIRECTORY/pg_hba.conf来限制其权限:

1
2
3
local    gpperfmon   gpmon         md5
host all gpmon 127.0.0.1/28 md5
host all gpmon ::1/128 md5

修改为:

1
2
3
local    gpperfmon,userdb1,userdb2   gpmon                         md5
host gpperfmon,userdb1,userdb2 gpmon 127.0.0.1/28 md5
host gpperfmon,userdb1,userdb2 gpmon ::1/128 md5

这样,gpmon用户就只能访问gpperfmonuserdb1userdb2三个数据库。

创建GPCC控制台实例

GPCC控制台实例是一个能提供HTML5图形化控制台应用的网页服务器,用于监控系统状态,为某个GP数据库集群执行某些管理任务。

GPCC控制台在gpmonws网页服务器上运行。默认的服务器端口为28080。每个GPCC实例的配置文件,日志文件,运行时文件都在$GPPERFMONHOME/instances目录中进行管理。

可以为不同的GP数据库实例分别创建GPCC控制台实例。每个控制台实例通过不同的端口操控,并且使用单独的配置选项。查看多集群支持

开始之前

  • 确认GPCC已经安装
  • gpperfmon数据库已经被创建,并且数据收集代理正常运行。
  • gpmon用户已经创建,并且能正常登陆到gpperfmon数据库:

    1
    psql -U gpmon gpperfmon
  • 所有需要用来加密、认证的证书、Kerberos密匙文件已经安装。查看Securing a Greenplum Command Center Console Instance

gpcmdr --setup指令可以y用来建立GPCC实例。该命令可以交互式地运行,也可以通过创建一个配置文件非交互式地运行。如果使用了配置文件,那么就可以一次创建多个GPCC实例。

交互式创建

按以下步骤将创建一个心得GPCC控制台实例。

  1. gpadmin用户登陆
  2. 执行gpcmdr --setup命令(GP数据库需要处于运行状态)。
  3. 首先将提示输入实例名称,可以包含字母,数字以及下划线。然后会提示输入显示的名称,直接按会车则默认使用实例名称。
  4. 设置会询问master是否是远程服务器。如果选择y,则按照提示输入master主机名(如果要使用GPCC负载管理则不能用IP地址)以及端口号。
  5. 设置将询问是否启用Kerberos验证。如果选择否,可以之后使用gpcmdr --krbenable指令来启动Kerberos验证。详细请查看 Enabling Kerberos Authentication with Greenplum Command Center
  6. 设置将询问是否为GPCC控制台启用SSL连接。启用SSL将同时启用WebSockets。由于数据库登陆信息会通过网络传输,建议启用SSL来加密GPCC通信。输入y之后,设置将要求指定X509证书文件的 完整路径。证书文件必须可以被运行GPCC网页服务的用户访问和读取。输入的路径将被添加到GPCC实例的app.conf文件中。
  7. 设置将询问是否将配置拷贝到standby master上。不支持远程安装。选择是,用户将被要求提供standby master的主机名。设置GPCC实例网页服务的端口。不同的实例必须使用不同的端口号。默认端口号为28080。
  8. 设置将询问是否为Web API启用SSL。其将确保GPCC REST API上的请求和应答都被加密。如果选择y,用户需要输入证书文件的完整路径。

设置将在$GPPERFMONHOME/instances路径下按实例名称创建一个实例。

通过指令gpcmdr --start instance_name启动GPCC控制台实例。

非交互式创建

首先要创建一个配置文件以供gpcmdr --setup读取。

配置文件可能包含多个section,在[DEFAULT]section的参数将被应用到所有子section,同时它们也可以被覆盖。

除了[DEFAULT]之外的所有section都将定义一个要被创建的GPCC实例。

所有的参数以键值对表示,以等号(=)或冒号(:)分隔。以井号(#)或分号(;)开始的命令将被跳过。

以下是一个范例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[DEFAULT]
# defaults apply to all instances
remote_db: false
enable_copy_standby: true
standby_master_host: smdw
enable_kerberos: false
enable_ssl: true
ssl_cert_file: /etc/ssl/certs/cert.pem

[production]
master_hostname: mdw
instance_name: prod
display_name: Production
master_port: 5432
web_port: 28080

[development]
master_hostname: mdw
instance_name: dev
enable_copy_standby: false ; override
display_name: Development
master_port: 5532
web_port: 28090

启动GPCC控制台实例

通过gpcmdr --start instance_name命令,启动GPCC控制台。

如果未指定GPCC控制台实例的名字,所有的控制台实例都将启动。

官方文档

+Little Mermaid - The Land and The Sea+

..-. . -.