Zabbix 是一种企业级的分布式开源监控解决方案,能够提供对众多服务器及软件的监控,并允许用户基于监控产生的事件配置告警。
Zabbix主要由Server端,数据库,WEB界面,PROXY和AGENT几部分组成。具体信息可以参考ZABBIX官网www.zabbix.com。这里主要介绍通过ODBC和AGENT这2种方式添加自定义监控项,实现对DM数据库进行监控。(ZABBIX支持配置SNMP监控项,通过这种方式可以获取DEM的SNMP AGENT接口数据,配置比较简单,具体可以传递的数据项配置可以参考DEM手册中SNMP AGENT一章,在ZABBIX中填写对应值配置监控。)
- 通过ODBC添加监控项
Zabbix支持通过ODBC直接连接数据库进行监控,通过这种方式,我们可以直接将监控指标写成SQL进行配置,方便、简单。
首先,在ZABBIX服务端配置ODBC连接DM数据库成功。
ODBC配置步骤:
- 下载安装 unixODBC 和 unixODBC-devel 。
- odbcinst -j 查看安装结果
- 配置 /etc/odbcinst.ini 文件,在 odbcinst.ini 文件中添加以下信息:
[DM8 ODBC DRIVER]
Description = DM ODBC DRIVER FOR DM8
Driver = /opt/dm8/bin
- 配置 /etc/odbc.ini 文件,在 odbc.ini 文件中添加以下信息:
[DM]
DRIVER = DM8 ODBC DRIVER
SERVER = 127.0.0.1
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
- 测试连通
然后通过浏览器访问ZABBIX WEB端(如需自行搭建ZABBIX可以依照具体环境,在ZABBIX网站选择对应版本后参考下面的说明进行搭建)配置监控项,可以新建一个DM的监控模板,在模板中添加监控项。例如:
名称自定义;类型选择数据库监控;键值一项输入db.odbc.select[<unique short description>,<dsn>,<connection string>] 第一个参数为描述符,第二个参数选填DSN或连接串(使用db.odbc.get[<unique short description>,<dsn>,<connection string>]可以以 JSON 格式返回多列);用户名和密码可以选填;SQL查询填写监控的脚本SQL,如这里添加了一条查询当前session使用率的sql;信息类型选择SQL返回值的类型。
最后,在监控主机中添加对应模板,就可以看到监控的数据了。
2.通过AGENT添加监控项
Zabbix agent 部署在被监控的目标端,收集本地信息并将数据报送给 Zabbix server,使用本地agent向服务端进行信息发送,这样做收集信息更加高效,稳定。
agent端可以使用多种形式脚本进行数据收集,这里直接进行添加监控信息语句为例。
在zabbix_agentd.d(默认为/etc/zabbix/zabbix_agentd.d可在zabbix_agentd.conf里配置)下,新增dm_session.conf,添加UserParameter参数例如UserParameter=dm.sessionnum,/opt/dmdbms/bin/disql SYSDBA/SYSDBA@127.0.0.1:5236 -E "select 'sessionnum'USID ,count(1) session_num from V\$SESSIONS"|grep sessionnum|awk '{print $2}'
第一个参数为标识,第二个参数为值,也可以是执行脚本文件返回。conf文件中设置的dm.sessionnum
之后将监控模板添加到主机中,就可以收集到监控数据了。
3. 通过prometheus接口传递dem监控数据
Zabbix可以通过http接口直接获取Prometheus的metrics数据,在部署了DEM的地方,可以使用DEM传递Prometheus的metrics数据。这样可以避免两套系统重复监控对于数据库的压力影响。
(1)首先,在dem中开启prometheus接口:
在DEM中,“系统配置”→“其他功能”中,prometheus_metric_nodes设置要传递的监控资源,如:
之后访问http://<dem_ip>:<dem_port>/dem/metrics就可以获取metrics的数据:
(2)在zabbix端创建http监控项,地址为DEM中promethus接口地址:http://<dem_ip>:<dem_port>/dem/metrics
接着,在监控项的进程中,配置Prometheus pattern,在参数中输入对应的标签就可以得到相应监控项的结果。
就可以监控到对应的数据了
最后,我们再来总结一下,使用ODBC方式,配置简单,易于实现,但是对ZABBIX SERVER端压力较大,只能使用SQL监控,适用于小规模使用;使用AGENT方式,部署灵活,可实现多种指标监控,不过需要一定的脚本开发能力;使用DEM传递数据,可以减少重复监控对于数据库的压力,不过只能传递特定数据,往往和AGENT监控方式搭配使用。
ODBC方式 | AGENT方式 | DEM传递 | |
优势 | 配置简单 | 部署灵活,通过脚本可实现多种指标监控 | 通过DEM传递,减少数据库压力;配置较简单。 |
劣势 | 对ZABBIX SERVER端压力较大;只能使用SQL监控。 | 需要一定的脚本及开发能力 | 只能传递特定数据,无法个性化定制。 |
Zabbix作为一个被广泛使用的开源工具,提供多种的监控方式和良好的开发扩展能力,被许多公司所选择,用以开发实现对多种数据库、操作系统、中间件、包括一些硬件设备的统一监控。通过脚本等方式,可以轻松实现各种产品的监控和告警。能够满足统一监控,统一运维的场景。
DEM作为达梦数据产品配套的WEB企业管理平台,提供了全面的数据库监控、部署、巡检、数据迁移、运维能力,用以实现对DM数据库统一管理的需求,增加数据库的易维护性。
在实际使用中,更多的将DEM和Zabbix搭配使用,通过DEM来进行达梦数据库的部署、巡检等运维管理。同时通过Zabbix平台来实现多种产品(包括达梦数据库)的统一监控。
附:ZABBIX监控DM数据库模板,可直接导入使用。
监控效果: