Zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。接下来,这篇文章将详细展开如何基于 YashanDB 进行 Zabbix 的部署
Zabbix 简介
Zabbix 由几部分构成,Zabbix server、Zabbix proxy、Zabbix agent、Zabbix UI 和 DB。
Zabbix 与 YashanDB
Zabbix 通过 oci 接口连接 YashanDB,简单架构如下图。
Web:监控管理页面,新增主机、监控项、触发器等(web 直接写入 db,从 db 直接获取数据)。
Server:负责数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。从 db 读取监控有效项,存储在缓存中。接收监控项数据,并写入 db。
DB:存储 Zabbix 表数据
Proxy:proxy 连接到 server,并请求配置数据。从 agent 收集数据,所有数据均在本地缓存,然后发送给 server。需要独立的数据库。
Agent:根据监控项,监控数据。
主动:agent 从 server/porxy 请求监控项,定期采集数据发送到 server/proxy。
被动:server/proxy 询求数据,agent 返回结果。
Zabbix 安装部署
1.安装 YashanDB
1、生成配置文件
./bin/yasboot package config gen --cluster yashandb -u yashan -p 123456 --ip 192.168.24.49 --port 22 --install-path /home/yashan/yasdb_home --data-path /home/yashan/yasdb_data --begin-port 1688 --db 1 --yas-type SE
2、安装yashandb
./bin/yasboot package install -t hosts.toml -i yashandb-23.2.3.100-linux-x86_64.tar.gz
3、部署启动数据库
./bin/yasboot cluster deploy -t yashandb.toml
4、修改sys用户密码
./bin/yasboot cluster password set -n yasdb_123 -c yashandb
5、设置环境变量
source /home/yashan/yasdb_home/yashandb/23.2.3.100/conf/yashandb.bash
复制代码
安装 yashandb-oci:
cd /data
tar -xzvf yashandb-oci-23.2.1.100-4-gecc0e02-linux-x86_64.tar.gz
mv yashandb-oci-23.2.1.100-4-gecc0e02-linux-x86_64 yashandb-oci
复制代码
安装 yashandb-client:
cd /data
mkdir yashandb-client
tar -xzvf yashandb-client-23.2.3.100-linux-x86_64.tar.gz
复制代码
设置环境变量:
export YASOCI_PATH=/data/yashandb-oci
export YASCLI_PATH=/data/yashandb-client/lib
export LD_LIBRARY_PATH=$YASOCI_PATH:$YASCLI_PATH:$LD_LIBRARY_PATH
复制代码
2.编译安装 zabbix server
zabbix 版本:zabbix-6.4.17
zabbix 下载:https://www.zabbix.com/download_sources
1)oci 依赖安装
下载路径:
https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
oci lib库:
rpm -ivh oracle-instantclient-basic-21.11.0.0.0-1.el8.x86_64.rpm
/usr/lib/oracle/21/client64/lib/
oci头文件:
rpm -ivh oracle-instantclient-devel-21.11.0.0.0-1.el8.x86_64.rpm
/usr/include/oracle/21/client64/
复制代码
2)编译安装 zabbix server
tar -xzvf zabbix-6.4.17.tar.gz
cd zabbix-6.4.17/
./configure --prefix=/data/zabbix/ --enable-server --enable-agent --enable-proxy --enable-java --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc=yes --with-oracle=yes
make
make install
复制代码
3 )创建用户及导入数据
a. 创建 zabbix 用户和表空间
create tablespace ZABBIX datafile '?/dbfiles/ZABBIX_DATA' size 2G autoextend on next 128M maxsize unlimited databucket '?/local_fs/ZABBIX_DATA';
create user ZABBIX IDENTIFIED BY 123456 default TABLESPACE ZABBIX;
grant dba to ZABBIX;
-- drop user ZABBIX cascade;
-- drop tablespace ZABBIX including contents and datafiles CASCADE CONSTRAINTS;
-- 如果需要用zabbix proxy,则创建zabbix_proxy用户和表空间
create tablespace ZABBIX_PROXY datafile '?/dbfiles/ZABBIX_PROXY_DATA' size 2G autoextend on next 128M maxsize unlimited databucket '?/local_fs/ZABBIX_PROXY_DATA';
create user ZABBIX_PROXY IDENTIFIED BY 123456 default TABLESPACE ZABBIX_PROXY;
grant dba to ZABBIX_PROXY;
复制代码
b.导入数据到 yashandb
数据文件修改:
yasql 默认 autocommit=false,所以 data.sql 与 images.sql 文件末尾后面添加 "commit;"
schema.sql:
hosts 表,字段 description 类型长度改为 nvarchar2(4000)
data.sql 插入数据时,数据长度超过了 2048 个字符,适当改大。
images.sql:
yashandb SQL 语句中常量字符串输入长度规格暂时是 16000,而 images.sql 中的数据大部分超过了 16000。 用 "||" 连接符连接 lob 数据。参考:images.sql
末尾添加"commit;"
data.sql:
yashandb 暂时不支持 TO_NCLOB 函数,去掉 TO_NCLOB,不影响数据准确性。
末尾添加"commit;"
-- zabbix用户数据迁移
cd /home/yashan/zabbix/zabbix-6.4.17/database/oracle
yasql zabbix/123456 -f -e schema.sql
yasql zabbix/123456 -f -e images.sql
yasql zabbix/123456 -f -e data.sql
-- 如有proxy代理用户,建表即可
yasql zabbix_proxy/123456 -f -e schema.sql
复制代码
3.php 安装
本次 zabbix 版本是 zabbix-6.4.17,需要 php 7.4 以上。
下载地址:https://rpmfind.net/linux/remi/enterprise/7/modular/x86_64/
1)安装包
php-json-7.4.33-15.el7.remi.x86_64
php-fpm-7.4.33-15.el7.remi.x86_64
php-ldap-7.4.33-15.el7.remi.x86_64
php-cli-7.4.33-15.el7.remi.x86_64
php-bcmath-7.4.33-15.el7.remi.x86_64
php-mbstring-7.4.33-15.el7.remi.x86_64
php-common-7.4.33-15.el7.remi.x86_64
php-odbc-7.4.33-15.el7.remi.x86_64
php-embedded-7.4.33-15.el7.remi.x86_64
php-sodium-7.4.33-15.el7.remi.x86_64
php-mysqlnd-7.4.33-15.el7.remi.x86_64
php-devel-7.4.33-15.el7.remi.x86_64
php-gd-7.4.33-15.el7.remi.x86_64
php-pdo-7.4.33-15.el7.remi.x86_64
php-opcache-7.4.33-15.el7.remi.x86_64
gd3php-2.3.3-7.el7.remi.x86_64
php-imap-7.4.33-15.el7.remi.x86_64
oniguruma5php-6.9.9-1.el7.remi.x86_64
php-7.4.33-15.el7.remi.x86_64
php-xml-7.4.33-15.el7.remi.x86_64
复制代码
2)php 配置
#参数配置:
vim /etc/php.ini
post_max_size = 64M
max_execution_time = 300
max_input_time = 600
date.timezone = Asia/Shanghai
#php,web中环境变量无法识别
vim /etc/php-fpm.d/www.conf
clear_env=no
#环境变量配置:
vim /etc/sysconfig/php-fpm
YASOCI_PATH=/data/yashandb-oci
YASCLI_PATH=/data/yashandb-client/lib
LD_LIBRARY_PATH=$YASOCI_PATH:$YASCLI_PATH:$LD_LIBRARY_PATH
export YASOCI_PATH
export YASOCI_PATH
export LD_LIBRARY_PATH
#重启php
sudo systemctl restart php-fpm
复制代码
3) php oci8.so 安装
下载地址:https://pecl.php.net/package/oci8
wget http://pecl.php.net/get/oci8-2.2.0.tgz
下载 oci8-2.2.0,3.0 之后版本需要 php 更高版本才能支持。PHP 7.4.33,oci8-2.2.0 够了。
安装配置步骤:https://www.php.net/manual/zh/oci8.installation.php
编译环境修改:
a. 用 php 自带的 php-oci8-7.4.33-15.el7.remi.x86_64.rpm
yashandb 有一些 oci 接口暂时未曾实现,暂时用不了。后续版本会逐步完善 oci 接口。
b. 用 oracle 的库编译的 oci8.so,php -v 会报错:
undefined symbol: _object_init_ex
复制代码
基于以上两个原因,oci8.so 决定基于 libyas_oci.so 编译安装。编译前做如下框中修改:
cd /usr/lib/oracle/21/client64/
mv lib lib-org
mkdir lib
cd lib
ln -s /data/yashandb-oci/libyas_oci.so libclntsh.so
ln -s /data/yashandb-oci/libyas_oci.so libclntsh.so.21.1
ln -s /data/yashandb-oci/libyas_oci.so libnnz21.so
复制代码
编译安装:
phpize
./configure -with-oci8=shared,instantclient,/usr/lib/oracle/21/client64/lib/
make
make install
复制代码
php 添加 oci8 扩展库配置:
vim /etc/php.d/oci8.ini
; Enable pdo extension module
extension=oci8.so
复制代码
4. zabbix web、zabbix server、zabbix agent 配置
1)zabbix web 配置
nginx 配置:
vi /etc/nginx/conf.d/zbx.conf
server {
listen 80;
server_name 192.168.24.49;
root /var/www/zbx;
location / {
index index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/zbx$fastcgi_script_name;
include fastcgi_params;
}
}
复制代码
web 配置:
cp /home/yashan/zabbix/zabbix-6.4.17/ui/* /var/www/zbx -rf
cp /var/www/zbx/conf/zabbix.conf.php.example /var/www/zbx/conf/zabbix.conf.php
vim /var/www/zbx/conf/zabbix.conf.php
$DB['TYPE'] = 'ORACLE';
$DB['SERVER'] = '';
$DB['PORT'] = '1688';
$DB['DATABASE'] = '192.168.24.49:1688';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '123456';
复制代码
2)zabbix server 配置
vi /data/zabbix/etc/zabbix_server.conf
LogFile=/data/zabbix/zabbix_server.log
DBHost=
#DBName=192.xx.xx.xx:6688,192.xx.xx.xx:6688 主备多个yashandb情况
DBName=192.168.24.49:1688
DBUser=zabbix
DBPort=1688
复制代码
3)zabbix agent 配置
vi /data/zabbix/etc/zabbix_agentd.conf
Server=192.168.24.49
ListenPort=10080 //agent port
ServerActive=192.168.24.49 //Zabbix server/proxy address
复制代码
5. 启动 zabbix 服务
1)启动 zabbix 和 agent
systemctl restart php-fpm nginx
/data/zabbix/sbin/zabbix_server [-f]
/data/zabbix/sbin/zabbix_agentd -c /data/zabbix/etc/zabbix_agentd.conf
复制代码
2)如需要,可以把 zabbix server 的启停功能放入到 systemctl
--如下,添加zabbix server启动到systemctl中,agentd也可用同样的方法添加上去
vi /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server with YaShanDB
After=
[Service]
Type=simple
ExecStart=/data/zabbix/zabbix/sbin/zabbix_server -f
ExecStop=/bin/killall -9 zabbix_server
User=zabbix
[Install]
WantedBy=multi-user.target
复制代码
6. 效果展示
路由:192.168.24.49/index.php
1)初始用户和密码
2)配置主机 agent IP 和端口
3)查看主机监控项图形
评论