数据库作为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按照采样间隔收集的数据。