概述
- Zabbix 在5.0版本以上,新增了一个特性,那就是zabbix-agent2,这个是zabbix公司使用go语言重写的一个代理,可以完全替代原来的zabbix-agent。这个代理功能比原来的要强大的多。
- YashanDB数据库同Oracle数据库的兼容度很高,因此参考Oracle的监控代码和监控配置模板(zabbix-agent2的6.4.8版本),自己开发了一个针对YashanDB的插件zabbix-agent2-plugins-yashandb,也正常添加到zabbix监控。
- 插件项目地址:https://gitee.com/kalimba888/zabbix-agent2-plugins-yashandb。大家感兴趣的可以下载使用,有问题和建议欢迎随时交流。
环境拓扑信息:
服务器 | 角色 | 版本 | 备注 |
---|---|---|---|
192.168.4.60 | zabbix Server | 6.4.8 | zabbix 服务端 |
192.168.4.238 | zabbix-agent2 | 6.4.8 | 因为zabbix-agent2是通过数据库驱动远程连接数据库, 所以它可以跟zabbix Server或数据库服务器部署在一起, 也可以单独部署,这里选择的是和数据库同一台服务器,这样可以同时监控主机和崖山数据库 |
192.168.4.238 | YashanDB | 23.1 | 崖山数据库服务端 |
安装前提
当前环境使用的是zabbix-release-6.4.8服务端版本。zabbix-agent2的6.4.8标准官方版本。
一、zabbix-release-6.4.8的服务端版本安装,参考下面是zabbix的标准安装过程。(服务器:192.168.4.60)
https://www.zabbix.com/cn/download?zabbix=6.4&os_distribution=alma_linux&os_version=8&components=server_frontend_agent&db=pgsql&ws=nginx
a.Install Zabbix repository
# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm# dnf clean all
b.Switch DNF module version for PHP
# dnf module switch-to php:7.4
c. 安装Zabbix server,Web前端,agent
# dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
d. 创建初始数据库
Make sure you have database server up and running.
在数据库主机上运行以下代码。
# sudo -u postgres createuser --pwprompt zabbix# sudo -u postgres createdb -O zabbix zabbix
导入初始架构和数据,系统将提示您输入新创建的密码。
# zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
e. 为Zabbix server配置数据库
编辑配置文件 /etc/zabbix/zabbix_server.conf
DBPassword=password
f. 为Zabbix前端配置PHP
编辑配置文件 /etc/nginx/conf.d/zabbix.conf uncomment and set ‘listen’ and ‘server_name’ directives.
# listen 8080;# server_name example.com;
g. 启动Zabbix server和agent进程
启动Zabbix server和agent进程,并为它们设置开机自启:
# systemctl restart zabbix-server zabbix-agent nginx php-fpm# systemctl enable zabbix-server zabbix-agent nginx php-fpm
二、zabbix-agent2的6.4.8版本服务端版本安装,参考下面zabbix的标准安装过程。(服务器:192.168.4.238)
https://www.zabbix.com/cn/download?zabbix=6.4&os_distribution=alma_linux&os_version=8&components=agent_2&db=&ws=
a. Install Zabbix repository
# rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/8/x86_64/zabbix-release-6.4-1.el8.noarch.rpm
# dnf clean all
b. Install Zabbix agent2
# dnf install zabbix-agent2 zabbix-agent2-plugin-*
c. Start Zabbix agent2 process
# systemctl restart zabbix-agent2
# systemctl enable zabbix-agent2
三、YashanDB的23.1个人版版本安装,参考下面YashanDB的标准安装过程。(服务器:192.168.4.238)
https://doc.yashandb.com/yashandb/23.1
安装比较容易,参考文档即可。
过程略…
需创建zabbix监控用户,并进行授权。
一般情况下有create session和select_catalog_role角色权限就够监控使用了。实际情况下,还有部分监控sql报错“表或视图不存在”,因此为了方便,直接授权dba角色给了监控账号,后续再改进吧。
SQL> create user zabbix identified by zabbix321;
Succeed.
SQL> grant create session to zabbix;
Succeed.
SQL> grant select_catalog_role to zabbix;
Succeed.
SQL> grant dba to ZABBIX;
Succeed.
四、下载崖山监控模板和改造后的zabbix-agent2程序文件
下载文件zabbix-agent2-pluages-YashanDB.zip
https://gitee.com/kalimba888/zabbix-agent2-plugins-yashandb/releases/tag/1.0
- lib为依赖的库文件
- zabbix_agent2是适配了崖山后的执行文件
- YashanDB-by-Zabbix-agent-2.json为崖山的监控模板
zabbix-agent2环境配置(服务器:192.168.4.238)
1、调整zabbix-agent2的配置文件。
vim /etc/zabbix/zabbix_agent2.conf Server=192.168.4.60 ServerActive=192.168.4.60 Hostname=192.168.4.238
2、调整后配置内容如下:
[root@huarun01 ~]# grep -v "^#" /etc/zabbix/zabbix_agent2.conf|grep -v "^$" PidFile=/run/zabbix/zabbix_agent2.pid LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=0 Server=192.168.4.60 ServerActive=192.168.4.60 Hostname=192.168.4.238 Include=/etc/zabbix/zabbix_agent2.d/*.conf PluginSocket=/run/zabbix/agent.plugin.sock ControlSocket=/run/zabbix/agent.sock Include=./zabbix_agent2.d/plugins.d/*.conf
3、备份并替换适配崖山后的zabbix_agent2程序
# systemctl stop zabbix-agent2
# mv /usr/sbin/zabbix_agent2 /usr/sbin/zabbix_agent2-6.4.8
下载适配了崖山的zabbix_agent2。放在/usr/sbin目录,并授权执行权限
# wget https://gitee.com/kalimba888/zabbix-agent2-plugins-yashandb/releases/download/1.0/zabbix-agent2-pluages-YashanDB.zip
# unzip zabbix-agent2-pluages-YashanDB.zip
# cd zabbix-agent2-pluages-YashanDB
# cp zabbix_agent2 /usr/sbin/
# chmod 755 /usr/sbin/zabbix_agent2
# cp lib/libyas_infra.so.0 /usr/lib64/
# cp lib/libyascli.so.0 /usr/lib64/
# cp lib/libcrypto.so.1.1 /usr/lib64/
4、启动zabbix_agent2
zabbix_agent2需要依赖崖山客户端的3个lib库。因此将这3个lib文件复制到/usr/lib64/目录下
# systemctl start zabbix-agent2
5、通过监控端口检查zabbix_agent2启动情况
# netstat -na|grep 10050
tcp6 0 0 :::10050 :::* LISTEN
tcp6 0 0 192.168.4.238:10050 192.168.4.60:48314 TIME_WAIT
配置服务器和崖山数据库监控
1、配置服务器监控
界面选择数据采集–>主机–>添加主机
主机名称192.168.4.238。对应前面 /etc/zabbix/zabbix_agent2.conf 配置文件中的Hostname=192.168.4.238
模板选择zabbix自带的服务器监控模板Linux by Zabbix agent
主机组选择zabbix自带的主机组Linux servers
接口点击添加,ip地址输入192.168.4.238,端口为默认的10050
观察数据采集
数据采集:
CPU使用率:
2、配置崖山数据库监控
a、配置崖山监控模板
界面选择数据采集–>模板–>导入–>选择模板文件
导入前面安装前提第四点下载到文件里面的模板文件YashanDB-by-Zabbix-agent-2.json
b、创建主机(崖山数据库)
界面选择数据采集–>主机–>添加主机
主机名称192.168.4.238-1688,说明要监控192.168.4.238上面1688端口的崖山数据库。
模板选择zabbix刚刚创建的监控模板YashanDB by Zabbix agent 2
主机组选择zabbix自带的主机组Databases
接口点击添加,ip地址输入192.168.4.238,端口为默认的10050
接着在宏的里面输入崖山数据库的连接信息,账号密码为前面在崖山数据库创建的zabbix用户。
{$YASHANDB.CONNSTRING} 的值为:tcp://192.168.4.238:1688/yasdb
{$YASHANDB.PASSWORD}的值为:zabbix321
{$YASHANDB.USER}的值为:zabbix
然后选择添加按钮,主机就添加成功了。
3、观测监控数据
可以看到数据已经采集进来了
观察表空间使用率
4、配置监控阈值
监控模板已经自带了92项监控数据,54个监控触发器。
5、观察问题告警
现在将数据库关闭,观察是否有告警出现。
$ yasboot cluster stop -c yashandb
type | uuid | name | hostid | index | status | return_code | progress | cost
----------------------------------------------------------------------------------------------------------
task | 799e5e9041146e29 | StopYasdbCluster | - | yashandb | SUCCESS | 0 | 100 | 3
------+------------------+------------------+--------+----------+---------+-------------+----------+------
task completed, status: SUCCESS
可以看到数据库不可用告警已经出现
重启数据库及监控代理后,告警恢复
6、配置告警通知
配置用户,触发器动作,告警通知渠道,这些都是zabbix的基本通用管理能力,可以参考官网或其他文章,这里就不展开了。
至此崖山数据库的Zabbix监控就基本配置完成了。
使用注意事项:
1、替换新的zabbix_agent2的时候,要给zabbix_agent2赋权执行权限,另外记得把对应的lib文件复制到/usr/lib64目录里面,这里有连接崖山所需的库文件
2、如果通过systemctl start zabbix-agent2启动不了监控代理,可以通过直接执行/usr/sbin/zabbix_agent2 看看哪里出了问题
3、现在如果数据库关机后,再次开机。当前没有配置监控自己重新,监控无法自动恢复,需要手动重启一下监控代理(systemctl restart zabbix-agent2)恢复。
崖山个人使用感受:
-
作为一个老Oracle DBA,我觉得崖山数据库在兼容性上接近Oracle,在我用zabbix监控来适配的过程中都已经感受到了,掌握起来很容易,这是一项很重要的优势。特别是崖山产品发布中也推出了share everything的架构,对于替换当前使用Oracle RAC的核心业务场景来说,似乎非常合适。崖山数据库在性能方面也表现出色,尤其是事务性能,具备良好的核心处理能力。
-
此外,崖山产品在文档、产品功能和易用性方面还有提升空间。作为崖山数据库的第一个对外发布版本,已经取得了令人惊讶的进展。这也意味着崖山数据库未来有很大的潜力在数据库市场占据一席之地,前景非常可观。
-
作为不收费的首发版本,整体感觉挺不错的,虽然需要改进的地方也有,但是不妨碍未来会成为一款成功的国产数据库。道阻且长,行则将至;行而不辍,未来可期。期待YashanDB越做越好!