ArcGIS Monitor配置监控数据库

Posted by Keling Ma on 2018-02-13

数据库作为ArcGIS Enterprise平台中用于存储空间数据的组件,是整个平台非常重要的组成部分,它的稳定性,健康状态是整个平台健壮性的基础。ArcGIS Monitor 作为Enterprise全平台监控软件,也提供了针对数据库的监控能力。

在Enterprise平台组件中包含Portal,Server,Datastore三个重要软件,其中Datstore中包含了关系型数据库PostgreSql,用来存储hosting feature service的数据。我们可以使用Monitor来监控PostgreSQL库中存储的数据变化来判断它的健康状态。

另外,在GIS平台建设中,还会涉及大量保存到SDE中的空间数据,最常用的应用场景是将空间数据保存到基于Oracle的SDE数据库。

针对上面两个应用场景。这篇文章的重点是如何配置ArcGIS Monitor 实现对传统oracle sde 数据库和新型ArcGIS Datastore中PostgreSQL数据库的监控。

配置过程

配置监控DB计数器,相比其它的计数器要复杂一些,需要我们预配置操作系统ODBC连接。

配置并连接ODBC

Oracle 11g ODBC驱动下载及安装

  • 下载驱动

    下载地址:http://www.oracle.com/technetwork/topics/winx64soft-089540.html

    在下载列表中,可以根据oracle服务器端选择相应的下载包,为了和我的oracle服务器端版本匹配,我下载了oracle11.2.0.4.0 版本下的:

    instantclient-basic-windows.x64-11.2.0.4.0.zip (54,956,947 bytes)

    instantclient-odbc-windows.x64-11.2.0.4.0.zip (1,358,385 bytes)

  • 安装驱动

    — 首先解压缩instantclient-basic-windows.x64-11.2.0.4.0.zip包到E:\instantclient_11_2目录;
    — 继续解压缩instantclient-odbc-windows.x64-11.2.0.4.0.zip包,并将解压缩后的所有文件,合并到E:\instantclient_11_2目录;
    — 创建新目录及文件E:\instantclient_11_2\Network\Admin\tnsnames.ora, 用记事本打开这个空文件添加连接信息,host 中的IP对应oracle服务器地址。

    — 在系统环境变量中为path追加值E:\instantclient_11_2;
    — 运行E:\instantclient_11_2\odbc_install.exe

PostgreSQL ODBC驱动下载及安装

  • 驱动下载

下载地址:https://www.postgresql.org/ftp/odbc/versions/msi/
下载版本:psqlodbc_10_01_0000-x64.zip

  • 驱动安装

将下载的zip包解压缩,直接运行压缩包中的psqlodbc_x64.msi安装文件即可。

配置Windows DSN连接

  • 打开: 开始->所有程序-> 管理工具-> 数据源(ODBC)工具;
  • 切换到驱动程序选项卡,查看驱动是否安装成功,如果看到下图中的项目,就说明驱动安装成功了;
  • 切换到系统DSN选项卡,添加oracle数据源连接

在创建数据源窗口中,选择"Oracle in instant client_11_2“驱动,点击完成按钮。在Oracle ODBC Driver Configuration窗口中,参照下图配置:

​ — Data Source Name中为这个连接起一个名字,这里我用orcl作为标识。TNS Service Name 正常会显示在下拉列表中,选择即可。User ID输入数据库用户名。
​ — 配置后点击TestConnection按钮,测试连接,输入密码,然后点击OK。如果你看到连接成功的提示窗口,就OK啦。

  • 继续添加arcgis datastore 关系型postgresql 库的DSN连接

在创建连接之前,需要登陆ArcGIS Datastore 所在的服务器,通过datastore 的内置命令工具,预先查出要连接的datastore 数据库、连接用户和密码。

— 以管理员身份打开命令行窗口,参照如下窗口中执行的命令查询:

— 修改pg的pg_hba.conf文件,允许monitor服务器连接。通过记事本打开位于datastore配置库目录下的pg_hba.conf文件,我的测试环境中,完整路径是“D:\arcgisdatastore\pgdata\pg_hba.conf”。在最后一行添加一条新规则,IP地址替换为monitor所在服务器的IP。

— 再回到monitor所在服务器的ODBC数据源管理器窗口中,切换到系统DSN选项卡,点击“添加“按钮,在创建新数据源窗口中,选择"PostgreSQL Unicode(x64)“驱动程序,点击完成按钮。在PostgreSQL Unicode ODBC Driver Setup窗口中,参照下图配置:

ArcGIS Datastore默认的连接端口是9876,添加好后,单击Test按钮测试连接,连接成功后点击Save按钮保存配置。

上述步骤完成后,在ODBC 数据源管理器中,我们会看到两个数据源连接,这两个数据源的名称将被用于拼接DSN连接串:

创建数据库连接

创建数据库连接是在ArcGIS Monitor Administrator中来配置的,具体操作过程如下:

1) 打开开始-> 所有程序-> ArcGIS Monitor -> ArcGIS Monitor Administrator

2)在连接窗口中,点击Open,进入收集器管理窗口,找到之前配置好的Collector,定位到DB, 右键选择Add,展开节点,选中新增的数据库计数器节点。在Database窗口中可以看到绿色的大按钮"Add Credential",点击进入创建数据库连接的弹出窗口:

在help说明中可以看到monitor支持两种方式的数据库连接。一种是通过DSN,另外一种是通过连接串的方式。为了保密,当我们在Connection中填入连接信息时会自动转换为加密点,所以最好的做法是在记事本中先将连接串拼好,然后拷贝创建,以免输入错误。名称只是一个标识,起一个自己觉得最好记的名字即可。

3)拼接数据库连接串

这个环节,可以打开一个空记事本来编辑连接字符串

  • DSN连接串

for Oracle:

1
DSN=orcl;UID=sde;PWD=sde

for postgresql:

1
DSN=PostgreSQL35W;UID=sde;PWD=sde
  • 长连接字符串

for Oracle 连接串:

1
DRIVER={Oracle in instantclient_11_2};Dbq=orcl;UID=sde;PWD=sde

for postgresql:

1
DRIVER={PostgreSQL35W};Server=192.168.100.95;Port=9876;Database=db_lbaul;Uid=sde;Pwd=sde;

4)在Monitor中添加数据库连接

有了之前生成的这些数据库连接串,我们就可以动手在Monitor中配置添加数据库连接认证了。我在这里分别为两种数据库的两种连接方式创建了四个连接:pg_dsn, pg_driver,ora_dsn,ora_driver。

在实际的监控中,我们在DSN或者直接连接中选择一种方式即可。

删除数据库连接(可选)

如果在测试过程中,建了很多并不实际需要的数据库连接,那可以在数据库连接管理器中删除这些连接。

点击之前建立的monitor service节点-> 选择Database Connections选项卡,点击删除按钮即可删除连接。

添加DB 计数器

准备测试用的sql

我只是为了测试ArcGIS Monitor配置DB计数器的过程,因此使用了简单的sql语句,在实际监控中,应该使用有意义的sql,监控某个关键表的连通性,或是查询结果是否符合预期值。

  • for Oracle
1
select * from dual;
  • for Postgresql
1
select * from hsu_5nyxi.permitted_wells_permitted_wells where objectid>10;

修改DB计数器配置

在创建好数据库连接认证后,我们就可以回到数据库配置页面:

— 为监控数据库起个名字;

— 在认证下拉列表中选择对应的数据库连接项;

— 采样间隔可以采用推荐设置的5分钟,Monitor会按照这个时间间隔向数据库发送sql请求,间隔过小会给数据库带来压力;

— 另外还要设置查询的Query, 给查询串起个名字,输入查询sql,点击添加按钮,加入查询列表。

配置后,一定要点击Test测试,如果配置成功,那会看到下面的结果:

按照同样的过程,再为ArcGIS DataStore内置的pg库创建一个DB counter。

配置告警

针对DB的监控,Monitor并没有配置好的默认告警项。但是可以自己创建。

告警项创建需要针对之前配置DB时创建的Sql, 可以通过比较结果的阈值来触发告警。具体需要在什么条件下告警需要结合业务场景来设置。我在这儿给出的只是添加Alert的演示,并无实际意义。

查看监控报告

配置好监控后,我们就可以到Monitor Server的监控台查看Monitor收集的数据,是否存在告警等等信息。

  • 通过在浏览器中输入https://localhost:9443, 9443是安装Monitor时为Monitor Server配置的端口。
  • 展开Categories下拉列表 -> 选择Database -> 展开左侧的目录树,一直到sql层级,选中某一个sql,我们就可以看到Monitor按照采样间隔收集的数据。