基于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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容