最近部署了一套zabbix用来监控服务器,然后因为服务器都在内网,只有一个oracle数据库可以通过触发器来发短信,跟我们这边数据库运维聊了下除非zabbix用oracle否则没办法,为了能发短信就花了几天时间研究了下,因为网上几乎没有教程,官方文档说的也不是很清楚,想想可能、大概、也许会有人能用上,还是记录一下发出来。
首先是系统,建议用rocky linux8.9,因为只在这个系统上验证过,redhat、centos等同类系统应该都可以,当然ubuntu之类的系统应该也行,不过编译和安装用的软件包就需要自己研究下了。
然后是oracle,zabbix6.0版本要求19c-21c,怎么装就不写了,放个教程链接,按照教程来就行。
RockyLinux8.x图形化安装Oracle19c - 吴昊博客 (whsir.com)https://blog.whsir.com/post-7447.html
安装好数据库后切换oracle用户
su – oracle
sqlplus / as sysdba
登录后开始创建表空间和oracle的zabbix用户,一步步来
create tablespace zabbix datafile '/u01/app/oracle/oradata/ORCL/zabbix01.dbf' size 500M; //500M为表空间大小,根据硬盘大小自行修改
create user zabbix identified by password default tablespace zabbix; //password是密码,记得自己修改
grant connect,resource,unlimited tablespace to zabbix;
grant create any directory to zabbix;
grant drop any directory to zabbix;
完成后切换回root用户
下载zabbix源码包
cd /media
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.26.tar.gz
解压
tar -zxvf zabbix-6.0.26.tar.gz
cd zabbix-6.0.26/database/oracle/
sed -i 's/2048/2000/g' schema.sql #这一步必须执行,否则后面运行时会报错
再次切换oracle用户
su – oracle
cd /media/zabbix-6.0.26/database/oracle/
使用zabbix用户登录oracle
sqlplus zabbix/password
sqlplus> @schema.sql
sqlplus> @images.sql
sqlplus> @data.sql //中间有一些报错,但似乎不影响安装完成后的使用,还待观察
sqlplus>commit;//最后一定要执行此命令,不要问我为什么,这一步官方文档都没说,折磨了我两晚上
切换回root用户开始安装编译用的依赖
dnf install epel-release -y
dnf --enablerepo=powertools install OpenIPMI-devel
dnf install -y libxml2-devel libxml2 net-snmp-devel libevent-devel curl-devel pcre* libssh2 libssh2-devel openldap openldap-devel go java-devel php-devel
rpm -i https://download.oracle.com/otn_software/linux/instantclient/1921000/oracle-instantclient19.21-devel-19.21.0.0.0-1.x86_64.rpm
rpm -i https://download.oracle.com/otn_software/linux/instantclient/1921000/oracle-instantclient19.21-basiclite-19.21.0.0.0-1.x86_64.rpm
先编译安装zabbix
cd /media/zabbix-6.0.26/
./configure --sysconfdir=/etc/zabbix --enable-server --enable-webservice --enable-java --with-oracle=/u01/app/oracle/product/19c/db_1 --with-net-snmp --with-libxml2 --with-ssh2 --with-openipmi --with-zlib --with-libpthread --with-libevent --with-openssl --with-ldap --with-libcurl --with-libpcre
make install
等待结束即可,若有报错自行百度缺失的依赖
安装nginx和php
dnf install nginx php-fpm
给php添加oracle连接支持
cd /media
wget http://pecl.php.net/get/oci8-2.2.0.tgz
tar -zxvf oci8-2.2.0.tgz
cd oci8-2.2.0/
./configure --with-oci8=shared,instantclient,/usr/lib/oracle/19.21/client64/lib
phpize
make install
vim /etc/php.ini
末尾添加:
extension="oci8.so"
安装zabbix前端、配置文件及客户端
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf clean all
dnf install -y zabbix-nginx-conf zabbix-agent2
修改nginx配置文件
vim /etc/nginx/conf/zabbix.conf
listen 80;
server_name 192.168.1.52;
修改zabbix-server配置文件
vim /etc/zabbix/zabbix_server.conf
找到以下几项取消注释并修改
DBHost=192.168.1.52
DBPort=1521
DBUser=zabbix
DBName=ORCL
DBPassword=password
保存后开启zabbix-server、nginx、php-fpm、zabbix-agent2服务
zabbix_server
systemctl start nginx php-fpm zabbix-agent2
systemctl enable nginx php-fpm zabbix-agent2
查看日志是否有报错
tail -f /tmp/zabbix_server.log
若有数据库连接失败的问题通过ora代码百度解决
若习惯使用systemctl命令进行管理可以编辑配置文件放到/usr/lib/systemd/system/目录下
配置文件参考
cat /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0
[Install]
WantedBy=multi-user.target
先杀死zabbix进程再使用systemctl管理
pkill zabbix_server
systemctl daemon-reload
systemctl start zabbix_server&& systemctl enable zabbix_server
浏览器输入ip登录网页
连接数据库这步按照自己的IP用户名密码进行填写,若有连接数据库失败问题,同样同过ora代码百度解决