基于DM8构建ZBX3.4.15

1.1. 版本介绍

JDK:1.8.0_111

ORACLE:11g

DM:DM8.2,安装包为 dmdbms-8.2-1.x86_64.rpm

HTTPD:Apache/2.4.46

PHP:5.6.40

ZABBIX:3.4.15

OS:CentOS Linux release 7.3

1.2. 目录说明

DM8:/opt/dmdbms

ORACLE:/opt/oracle/product/11g

其他:/home

1.3. 前置条件

(1)安装JDK,并设置JAVA_HOME和PATH

(2)安装oracle数据库 或者 oracle client(本例安装为oracle 11g,可在产品发布系统进行下载安装)

(3)安装DM8

1.4. 涉及修改环境变量

JAVA_HOME

PATH

LD_LIBRARY_PATH

1.5. 构建步骤

1.5.1. 安装系统依赖包

yum install -y libxml2 libxml2-devel curl curl-devel libjpeg libpng freetype libjpeg-devel libpng-devel freetype-devel

yum install -y libssh2-devel net-snmp-devel OpenIPMI-devel

yum install -y apr apr-devel apr-uti apr-util-devel

yum install libevent-devel -y

1.5.2. 安装httpd(已安装可跳过)

(1)下载httpd源码(http://httpd.apache.org/download.cgi),并解压

(2)编译

./configure --prefix=/home/httpd --enable-module=so

(3)安装

make install

1.5.3. 安装php

(1)下载PHP源码(https://www.php.net/releases/),并解压

(2)编译

./configure --prefix=/home/php --with-config-file-path=/home/php/etc --enable-fpm --with-fpm-user=php-fpm --with-fpm-group=php-fpm --with-oci8=/opt/oracle/product/11g --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --enable-soap --enable-gd-native-ttf --enable-ftp --enable-mbstring --enable-exif --disable-ipv6 --with-pear --with-curl --enable-bcmath --enable-sockets --with-gettext --with-apxs2=/home/httpd/bin/apxs

(3)安装

make install

1.5.4. 导入dmdriver

(1)PHP版本查看,确定驱动版本

【1】创建php.php文件,放置在httpd的htdocs下,内容如下,完成后,浏览器访问改文件

<?php phpinfo(); ?>

【2】版本以及线程安全查看

在【1】步骤的页面中,可查看php version 以及 Thread Safety,即确定php版本和是否线程安全,本例php版本为5.6且Thread Safety为enabled

【3】驱动确认

驱动位于DM数据库安装位置下drivers目录,本例为/opt/dmdbms/bin/drivers/php_pdo,查看后可发现存在如下两个驱动 libphp56_dm.solibphp56ts_dm.so

根据【2】步骤查看的结果,我们需要选择的是php56且线程安全的驱动包,即选择 libphp56ts_dm.so

(2)导入dmdriver

【1】拷贝php源码中的ext包到php安装位置,本例为 cp /home/php-5.6.40/ext/ /home/php/ -r

【2】拷贝dmdriver到php安装位置下ext文件夹,本例为 cp /opt/dmdbms/bin/drivers/php_pdo/libphp56ts_dm.so /home/php/ext

(3)配置php.ini

【1】定位php.ini文件,locate php.ini,如下结果

/home/php-5.6.40/php.ini-development

/home/php-5.6.40/php.ini-production

【2】文件创立

拷贝配置文件到安装位置

cp /home/php-5.6.40/php.ini-development /home/php/etc/php.ini

【3】修改/home/php/etc/php.ini

extension_dir=/home/php/ext //注意路径为绝对路径

extension=libphp56ts_dm.so

注:这部分添加到最后,以免被开启的默认值覆盖掉

post_max_size = 16M

max_execution_time = 300

max_input_time = 300

date.timezone = Asia/Shanghai

always_populate_raw_post_data = -1

添加dm模块:

[dm]

dm.allow_persistent = 1

dm.max_persistent = -1

dm.max_links = -1

dm.default_host = localhost

dm.default_user = SYSDBA

dm.default_pw = SYSDBA

dm.connect_timeout = 10

dm.defaultlrl = 4096

dm.defaultbinmode = 1

dm.check_persistent = ON

(4)检查驱动加载

访问步骤(1)中的php.php文件,查看dm驱动是否加载成功

(5)数据库连接检查

创建testdm.php文件,放置在httpd的htdocs下,内容如下,完成后,浏览器访问改文件

<?php

$link = dm_connect("DM IP 地址", "用户名", "密码")

or die("Could not connect : " . dm_error());

print "Connected successfully";

dm_close($link);

?>

1.5.5. 安装zabbix

(1)下载zabbix3.4.15版本源码(下载地址为:https://www.zabbix.com/cn/download_sources#tab:unsupported),并解压

(2)修改源码(版本一致,可利用附件进行替换,详见附录,版本不一致时,请手动修改)

【1】src/libs/zbxdb/db.c 共三处:

image.png
image.png

【2】db.inc.php 修改所有的驱动连接为dm

(3)编译

./configure --prefix=/home/zabbix --with-oracle=/opt/oracle/product/11g --with-net-snmp --with-libcurl --with-libxml2 --enable-server --enable-agent --enable-proxy --with-ssh2 --with-openipmi --enable-java

(4)安装

make install

(5)修改DM关键字设置(屏蔽关键字),并重启

DM 初始化文件dm.ini 中 EXCLUDE_RESERVED_WORDS = function,object,value

/opt/dmdbms/bin/bin/DmServiceDMSERVER start

/opt/dmdbms/bin/bin/DmServiceDMSERVER stop

/opt/dmdbms/bin/bin/DmServiceDMSERVER restart

(6)修改SQL脚本

初始化脚本位于 zabbix源码zabbix-3.4.15/database目录下

初始化脚本使用database/oracle/下schema.sql 和 data.sql,以及database/mysql/images.sql

在database目录下新建dm文件夹,将上述三个sql脚本拷贝到该文件夹下

其中,images.sql插入语句中,需要去掉表名称和字段的单引号,

即:INSERT INTO images (imageid,imagetype,name,image) 替换为 INSERT INTO images (imageid,imagetype,name,image)

(7)导入数据

登录disql,创建dba用户XXX,并修改其密码限制,并以XXX登录,执行以下脚本

【1】初始化

start /home/zabbix-3.4.15/database/dm/schema.sql

start /home/zabbix-3.4.15/database/dm/data.sql

start /home/zabbix-3.4.15/database/dm/images.sql

【2】视图

create or replace view tab as select table_name tname, 'TABLE' tabtype from USER_TABLES;

create or replace view col as select table_name tname, column_name cname from USER_TAB_COLUMNS;

(8)修改ZABBIX配置zabbix_server.conf

DBHost=DM8 IP

DBName=步骤7中创建的用户名称

DBUser=步骤7中创建的用户名称

DBPassword=步骤7中创建的用户密码

DBPort=5236(DM8默认端口)

AllowRoot=1

(9)共享库

安装时依赖的是oracle的客户端库文件libclntsh.so.11.1,启动时需替换成达梦的,方式是:将附件中的 libclntsh.so.11.1.dm_debug (记得改为和oracle同名)拷进dm的bin文件夹下,然后设置环境变量:

export LD_LIBRARY_PATH=/opt/dmdbms/bin/[bin:/opt/oracle/product/11g/lib:LD_LIBRARY_PATH](http://bin/opt/oracle/product/11g/lib:LD_LIBRARY_PATH)

并通过 ldd /home/zabbix/sbin/zabbix_server查看是否已指向dm的库

image.png

(10)启动

/home/zabbix/sbin/zabbix_server -c /home/zabbix/etc/zabbix_server.conf

停止

ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9

(11)zabbix setup.php配置,访问httpd中zabbix配置setup.php

【1】数据库类型选择oracle即可

【2】需手动放置配置文件 httpd/htdocs/conf/zabbix.conf.php

1.6. 验证

(1)项目db配置

db.type=dm

helper.dialect=com.yoyosys.console.dialect.DMDialect # extends MySqlDialect

db.driver=dm.jdbc.driver.DmDriver

db.url=jdbc:dm://IP:PORT/DmServiceDMSERVER?DAMENG&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8

db.username=

db.password=

(2)业务操作

(3)ZABBIX进行指标项查看

1.7. 问题

为支持ZABBIX,DM需要屏蔽关键字,但是在这种情况下,会导致DM web管理端不可用

1.8. 文件附录

(1)libclntsh.so.11.1.dm_debug

(2)db.c

(3)db.inc.php

1.9. 参考链接

https://weibo.com/ttarticle/p/show?id=2309404167508440529002

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容