首页
统计信息
友情链接
壁纸
Search
1
【更新】CommentToMail typecho2017&v4.1& Mailer三版本,支持php5.6/7,插件详解
158,152 阅读
2
【90APT开源免费】第三代哈弗H6、哈弗大狗、H6经典版车机开启无线ADB、升级地图、安装软件全流程
16,656 阅读
3
CentOS 7安装bbr教程
12,898 阅读
4
纯小白10分钟变身linux建站高手?宝塔linux面板全体验
12,494 阅读
5
深信服超融合架构测试介绍
11,897 阅读
技术相关
ACG相关
胡言乱语
数码杂烩
登录
Search
标签搜索
进击的巨人
漫画
宝塔
php
typecho
diy
vps
折腾
动漫
优酷路由宝
ubuntu
路由器
QQ
KMS
王忘杰
累计撰写
282
篇文章
累计收到
179
条评论
首页
栏目
技术相关
ACG相关
胡言乱语
数码杂烩
页面
统计信息
友情链接
壁纸
搜索到
6
篇与
的结果
2025-05-08
OceanBase OB原生分布式数据库V4社区版高可用部署、OCP云平台、OMS迁移服务部署zabbix6数据迁移、1Panel面板adminer web数据库管理工具、minio S3备份还原计划、集群扩容缩容、租户扩容缩容、ODC开发者中心、OBProxy集群keepalived高可用主备VIP部署、故障处理、不停机滚动升级
{alert type="info"}本文使用vSAN集群进行真实安装,密码均为随机生成,试验结束后销毁网段和集群;虽为模拟实验,但完全适用于真实生产环境;因为使用的虚拟机,所以硬盘分区无意义,仅一个根分区500G。{/alert}本文已加入 《OceanBase 4.x DBA 进阶教程》用户共建计划https://ask.oceanbase.com/t/topic/35617370/所有参与共建的用户,都会出现在 OceanBase 进阶教程电子书的致谢名单中,欢迎大家加入~一、OceanBase 社区版为现代数据架构打造的开源分布式数据库。兼容 MySQL 的单机分布式一体化国产开源数据库,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户;面向未来携手生态伙伴,共建开源开放的数据库内核和生态。文档:https://www.oceanbase.com/docs{lamp/}二、OCP云平台部署OceanBase 云平台(OceanBase Cloud Platform,OCP)是一款为 OceanBase 集群量身打造的企业级管理平台,兼容 OceanBase 所有主流版本。OCP 提供对 OceanBase 图形化管理能力,包括数据库及相关资源的全生命周期管理、监控告警、性能诊断、故障恢复、备份恢复等,旨在协助客户更加高效地管理 OceanBase 数据库,降低企业的IT运维成本和用户的学习成本。https://www.oceanbase.com/docs/ocp1、主机规划本教程部署简化版集群 1ocp 1oms 2proxy 3zone6server 共10台主机,另外独立安装zabbix6和minioocp配置 16C 64G 500G其他主机配置 8C 32G 500G操作系统为anolis8,全部关闭防火墙tntocp 192.168.4.100 tntoms 192.168.4.101 tntproxy1 192.168.4.102 tntproxy2 192.168.4.103 tntob1-1 192.168.4.104 tntob1-2 192.168.4.105 tntob2-1 192.168.4.106 tntob2-2 192.168.4.107 tntob3-1 192.168.4.108 tntob3-2 192.168.4.109 tntzabbix6 192.168.4.110 tntminio 192.168.4.111 tntproxy 192.168.4.99 keepalived虚拟IP2、安装准备下载OceanBase社区版一键安装包 (OceanBase All in One)OceanBase 数据库一键离线安装包,包括 OceanBase 数据库和 OCP(自 V4.3.3 起包含)、obd、OBProxy、OBClient、OCP Express、Prometheus、Grafana,以及诊断和测试工具。https://www.oceanbase.com/softwarecenterOCP依赖仅支持 JDK1.8 版本,下载并安装 jre-8u441-linux-x64.rpmhttps://www.java.com/en/download/manual.jsp3、图形化部署OCP所有主机关闭防火墙systemctl stop firewalld && systemctl disable firewalld上传一键安装包至OCP主机、解压安装解压 tar zxf oceanbase-all-in-one-4.3.5_bp1_20250320.el8.x86_64.tar.gz启动obdcd oceanbase-all-in-one/bin source ~/.oceanbase-all-in-one/bin/env.sh obd web install生成网页安装URL进入 OCP 部署向导页面部署OCP云平台并创建全新数据库设置集群名称创建metaDB,我这里使用ocp主机单机部署metaDB,即OCP、数据库节点、OBProxy都是一台服务器OCP 资源规划为20台主机预检查无异常部署中,等待部署完成,记好账号密码{lamp/}三、OCP云平台使用1、登录OCP云平台http://192.168.4.100:8080看到OCP平台初始化失败查看异常为netstat: 未找到命令{message type="info" content="注意,所有OB主机都需要netstat,通过yum安装"/}yum install net-tools -y所有OB主机都需要netstat!全部安装一遍点击重启,执行成功OCP部署成功2、OCP操作流程添加主机-新建集群-创建租户-创建用户-创建OBProxy集群3、添加作为OBProxy集群和OBserver的主机192.168.4.102-109主机标准化分为OBProxy和OceanBase,等待标准化完成OBProxy标准化无异常但也需要修复一下,OceanBase标准化有8个异常,都需要修复修复检查透明大页 echo never > /sys/kernel/mm/transparent_hugepage/enabled 生效 chmod +x /etc/rc.d/rc.local 添加到开机启动 vi /etc/rc.d/rc.local echo never > /sys/kernel/mm/transparent_hugepage/enabled 安装python2.7 yum install python2 -y 禁用swap分区 swapoff -a 删除swap分区 /etc/fstab 安装软件 yum -y install net-tools mtr tar binutils bind-utils curl nc iproute 添加admin用户 groupadd -g 500 admin useradd -m -u 500 -g 500 -s /bin/bash admin id admin 关闭selinux 检查ulimit信息 /etc/security/limits.d/99-oceanbase_limits.conf root soft nofile 655350 root hard nofile 655350 admin soft nofile 655350 admin hard nofile 655350 admin soft stack 10240 admin hard stack 10240 admin soft nproc 655360 admin hard nproc 655360 admin soft core unlimited admin hard core unlimited 检查 clocksource 信息 echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource 时间同步 调整端口范围,保留端口 sudo sysctl net.ipv4.ip_local_port_range vi /etc/sysctl.conf net.ipv4.ip_local_port_range = 3500 65535 net.ipv4.ip_local_reserved_ports = 62881-63881 生效 sudo sysctl -p python2软连接到python sudo ln -sf /usr/bin/python2 /usr/bin/python 创建软件目录 mkdir /data/log1 -p mkdir /data/1 -p 重新检查,修复完成4、新建集群新建tntob集群,3zone,每zone 2台主机,由于是实验集群,我没有开启cgroup创建中安装完成5、创建租户创建zabbix6租户Unit规格选择S1并允许所有IP访问创建完成6、创建用户在zabbix6租户中创建用户zabbixdb,先不用创建数据库,一会直接导入一个数据库7、创建OBProxy集群创建tntproxy集群,加入102、103两台主机{message type="info" content="注意:102、103都可以访问集群,而访问地址,一般指的是负载均衡设备的VIP地址,暂不讨论,这里访问地址先填写102"/}创建完成连接到tntob集群8、连接测试使用adminer登陆测试一下连接参数 mysql -h192.168.4.102 -P2883 -uroot@zabbix6#tntob -p登录成功OceanBase分布式数据库集群部署完毕{lamp/}四、OMS迁移服务部署zabbix6数据迁移OMS文档https://www.oceanbase.com/docs/oms-cn1、创建oms租户创建oms租户作为OMS迁移服务的元数据库,需要使用租户的root用户2、安装OMS迁移服务下载软件包 oms_4.2.8-ce.tar.gz 上传到tntoms主机https://www.oceanbase.com/softwarecenter安装dockeryum install -y yum-utils #阿里云加速源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io启动dockersystemctl enable --now docker导入镜像docker load -i oms_4.2.8-ce.tar.gz查看镜像名docker images REPOSITORY TAG IMAGE ID CREATED SIZE reg.docker.alibaba-inc.com/oceanbase/oms feature_4.2.8_ce d56598287295 7 weeks ago 10.9GB 获取部署脚本sudo docker run -d --net host --name oms-config-tool reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce bash && sudo docker cp oms-config-tool:/root/docker_remote_deploy.sh . && sudo docker rm -f oms-config-tool 启动部署mkdir /oms bash docker_remote_deploy.sh -o /oms -i 192.168.4.101 -d reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce 安装中 ****CPU**** CPU_Name(System_Name): Intel(R) Xeon(R) Silver 4309Y CPU @ 2.80GHz Total_physical_CPU: 8 Total_core_num: 8 *****Memory****** Total_Mem: 32915048 KB Total_Mem: 31 G *****Disk****** Total_disk_avail: 954 G 提示:输入 <Control-C> 可退出部署 请选择部署模式: ●单地域单节点 单地域多节点 多地域 您选择的部署模式是:单地域单节点部署模式 请选择您所需要进行的任务: ●无配置文件,全新部署 OMS,从生成配置文件开始 已通过脚本[-c]选项传入参考配置文件,基于参考配置文件开始配置 开始配置元信息库,可以是 MySQL 或 OceanBase 数据库 MySQL 租户 (元信息库用于存储 OMS 运行时元数据信息) 请输入元信息数据库 IP:192.168.4.102 请输入元信息数据库端口:2883 请输入元信息数据库用户名:root@oms#tntob 请输入元信息数据库密码:*********************** 请为 OMS 元数据库设置前缀 (示例:当前缀设置为 oms 时,最终库名分别为 oms_rm/oms_cm/oms_cm_hb): 您的元信息库配置如下: { "drc_cm_db": "_cm", "drc_cm_heartbeat_db": "_cm_hb", "drc_rm_db": "_rm", "init_db": "true", "oms_meta_host": "192.168.4.102", "oms_meta_password": "9cb;CcrN1C3f,Xlub)rx{(#", "oms_meta_port": "2883", "oms_meta_user": "root@oms#tntob" } [y/n] 请确认配置信息[y]y 您选择的部署模式为单地域单节点部署模式 [y/n] 是否自定义组件端口号,并配置相关参数?[n]n [y/n] 获取到您的默认 IP 地址:192.168.4.101,请确认是否需要更改?[n]n 您的 OMS 集群配置如下: { "cm_is_default": true, "cm_location": 0, "cm_nodes": [ "192.168.4.101" ], "cm_region": "default", "cm_region_cn": "默认地域", "cm_server_port": "8088", "cm_url": "http://192.168.4.101:8088", "ghana_server_port": "8090", "nginx_server_port": "8089", "sshd_server_port": "2023", "supervisor_server_port": "9000" } [y/n] 请确认配置信息[y]y [y/n] 您是否需要对 OMS 历史数据进行监控?[n]n [y/n] 是否需要开启 OMS 审计日志功能,并将审计日志写入 SLS 服务?[n]n 已加载您的所有配置项,并校验通过。 您的配置如下: { "apsara_audit_enable": "false", "apsara_audit_sls_access_key": "", "apsara_audit_sls_access_secret": "", "apsara_audit_sls_endpoint": "", "apsara_audit_sls_ops_site_topic": "", "apsara_audit_sls_user_site_topic": "", "cm_is_default": true, "cm_location": "0", "cm_nodes": [ "192.168.4.101" ], "cm_region": "default", "cm_region_cn": "默认地域", "cm_server_port": "8088", "cm_url": "http://192.168.4.101:8088", "drc_cm_db": "_cm", "drc_cm_heartbeat_db": "_cm_hb", "drc_rm_db": "_rm", "ghana_server_port": "8090", "init_db": "true", "nginx_server_port": "8089", "oms_meta_host": "192.168.4.102", "oms_meta_password": "9cb;CcrN1C3f,Xlub)rx{(#", "oms_meta_port": "2883", "oms_meta_user": "root@oms#tntob", "sshd_server_port": "2023", "supervisor_server_port": "9000", "tsdb_enabled": "false", "tsdb_password": "", "tsdb_service": "", "tsdb_url": "", "tsdb_username": "" } [y/n] 您是否需要重新配置?[n]n 您是需要在当前执行的机器上 接下来 OMS 需要在节点 ['192.168.4.101'] 上依次执行部署脚本。 请输入节点 192.168.4.101 上预备部署 OMS 的挂载目录:[/oms/]/oms/ 请您确认以下内容: [y/n] 部署 OMS 的 [镜像名/IMAGE-ID] 是:reg.docker.alibaba-inc.com/oceanbase/oms:feature_4.2.8_ce ,请确认是否正确。[y]y [y/n] 是否需要在 OMS 容器中挂载 HTTPS 证书?[n]n [y/n] 192.168.4.101 节点下的配置文件 config.yaml 将写在这个路径:/oms/ 下可以吗?[y]y ....... -------------------------------------------------------------------------------- # 【结束】全部初始化步骤执行成功 -------------------------------------------------------------------------------- 登录控制台,首次登陆设置密码http://192.168.4.101:8089/3、zabbix6安装查看王工zabbix6文章快速部署,部署完成后迁移到OceanBase集群https://90apt.com/2982安装完成4、导出zabbix6数据库结构使用adminer导出数据库结构,不包括数据adminer安装见后面1Panel部分使用adminer导入到zabbix租户中5、OMS全量迁移在OCP中给zabbixuser用户赋予zabbix数据库全部权限添加双方数据源配置迁移任务启动任务迁移完成,进行切换6、zabbix6切换数据库,重启服务、查看日志配置文件修改/etc/zabbix/web/zabbix.conf.php<?php // Zabbix GUI configuration file. $DB['TYPE'] = 'MYSQL'; $DB['SERVER'] = '192.168.4.102'; $DB['PORT'] = '2883'; $DB['DATABASE'] = 'zabbix'; $DB['USER'] = 'zabbixuser@zabbix6#tntob'; $DB['PASSWORD'] = 'r*h(c^rLst8F'; /etc/zabbix/zabbix_server.confDBHost=192.168.4.102 DBName=zabbix DBUser=zabbixuser@zabbix6#tntob DBPassword=r*h(c^rLst8F DBPort=2883重启zabbix服务 systemctl restart zabbix-server查看日志是否有异常/var/log/zabbix/zabbix_server.logUnable to start Zabbix server due to unsupported MySQL database version (5.06.25).修改OBPorxy数据版本,修改为8.0.0再次重启zabbix服务查看日志,无异常zabbix功能正常,采集正常{lamp/}五、1Panel面板minio S3备份还原计划1、安装docker安装dockeryum install -y yum-utils #阿里云加速源 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install docker-ce docker-ce-cli containerd.io启动dockersystemctl enable --now docker2、安装1Panel面板curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sh quick_start.sh安装adminer web数据库管理工具支持MySQL、MariaDB、 SQLite、PostgreSQL、Oracle (beta)、MS SQL3、安装minio,配置S3存储登录1Panel面板安装minio登录minio创建Bucket创建Access Keys4、配置备份计划创建zabbix6租户备份策略存储目录为Bucket名称访问域名为API的URL http://192.168.4.111:9000在填入AK、SK,点击测试即可立即备份备份完成5、进行还原测试误删数据库由于王工上年纪老眼昏花,不小心删除了zabbix数据库,不稳啦!zabbix崩溃进行租户恢复恢复完成创建了新的租户,将原租户改名,新租户改为原来的名,这样业务就不用动了业务恢复了,王工又稳啦!{lamp/}六、集群、租户扩缩容1、集群扩容添加主机-集群管理-添加OBServer、新增Zone添加主机OCP云平台-主机-添加主机主机还是要按之前标准化进行环境修复,修复好再添加再次进行标准化OCP云平台-集群-概览-添加OBServer一段时间后部署模式变为集群 (3-3-3)新增Zone与之相同2、集群缩容https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013120删除OBServer时自动进行Unit迁出完成缩容我这边删除114 115 116三台主机批量删除删除中缩容完成3、租户扩容进入租户修改UnitOCP云平台-租户-概览-修改Unit如,将配置修改为S2,Unit修改为2扩容成功4、租户缩容如,将配置修改为S1,Unit修改为1缩容完成{lamp/}七、ODC开发者中心OceanBase 开发者中心(OceanBase Developer Center,ODC)是开源的企业级数据库协同开发工具,有桌面版、Web 版两种产品形态。 ODC Web 版提供了个人空间和团队空间两种工作模式。个人空间适合个人开发者使用,为您在浏览器端提供桌面版的体验;团队空间适合开发者和 DBA 协同使用,既是开发工具也是管控协同平台。 ODC 的代码维护在 Github,单击查看详情,加入 ODC 开源社区,一起创造 开发者和 DBA 喜爱的数据库协同开发工具。https://www.oceanbase.com/docs/odc{message type="info" content="注意:按官方教程你很可能装不上,还是看我的吧"/}1、下载OceanBase 开发者中心web镜像上传到OMS主机,我将ODC安装在OMS主机,ODC为docker镜像https://www.oceanbase.com/softwarecenter2、为ODC创建一个mysql租户并创建一个数据库创建tntodc租户 tntodc数据库 root用户{message type="info" content="注意:数据库用户我测试用普通用户无法部署ODC,需要root用户"/}3、加载镜像gunzip -c obodc4.3.3-bp2.tar.gz | docker load查看镜像docker images REPOSITORY TAG IMAGE ID CREATED SIZE reg.docker.alibaba-inc.com/oceanbase/oms feature_4.2.8_ce d56598287295 7 weeks ago 10.9GB oceanbase/odc 4.3.3_bp2 98a74ab3fbe1 7 weeks ago 1.75GB 4、创建安装脚本odcinstall.sh#!/usr/bin/env bash mkdir -p /tntodc/log/odc mkdir -p /tntodc/data/odc docker run -v /tntodc/log/odc:/opt/odc/log -v /tntodc/data/odc:/opt/odc/data \ -d -i -p 8989:8989 --cpu-period 100000 --cpu-quota 400000 --memory 8G --name "obodc" \ -e "DATABASE_HOST=192.168.4.102" \ -e "DATABASE_PORT=2883" \ -e "DATABASE_USERNAME=root@tntodc#tntob" \ -e "DATABASE_PASSWORD=78ABcd##123" \ -e "DATABASE_NAME=tntodc" \ -e "ODC_ADMIN_INITIAL_PASSWORD=78ABcd##123" \ oceanbase/odc:4.3.3_bp2 注意Shell 环境下,字符串中包含 !、$ 等特殊字符时,变量值需要使用单引号。例如:DATABASE_PASSWORD='11111!'。参数 ODC_ADMIN_INITIAL_PASSWORD 用于指定 ODC 管理员账号的初始密码。设置的初始密码需要须满足以下条件:至少 2 个数字。至少 2 个大写字母。至少 2 个小写字母。至少 2 个特殊字符,特殊字符的范围为 ._+@#$%。不包含空格和其他特殊字符,长度为 8-32。{lamp/}5、安装bash odcinstall.sh6、登录成功八、OBProxy集群keepalived高可用主备VIP部署keepalived介绍请看王工其他文章1、安装keepalived两台OBProxy主机分别安装keepalivedyum install -y keepalived2、配置keepalived两台OBProxy主机分别创建Proxy存活检测脚本vi /etc/keepalived/check_obproxy.sh#!/bin/bash # 检查2883端口是否有监听 if ss -tuln | grep -q ':2883\b'; then exit 0 # 检测成功,返回0 else exit 1 # 检测失败,返回1 fitntproxy1配置执行权限chmod +x /etc/keepalived/check_obproxy.sh配置文件vi /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs { router_id keepalived1 #只是名字而已,辅节点改为keepalived2(两个名字一定不能一样) } vrrp_script check_obproxy { script "/etc/keepalived/check_obproxy.sh" interval 2 #每2秒执行一次 } vrrp_instance VI_1 { state MASTER #定义主还是备,备用的话写backup interface ens192 #VIP绑定接口 virtual_router_id 66 #整个集群的调度器一致(在同一个集群) priority 100 #(优先权)back改为50(50一间隔) advert_int 1 #发包 authentication { auth_type PASS #主备节点认证 auth_pass 1111 } unicast_src_ip 192.168.4.102 #本机ip unicast_peer { 192.168.4.103 #其他机器ip,可多个 } virtual_ipaddress { 192.168.4.99/24 #VIP(自己网段的) } track_script { check_obproxy } }tntproxy2配置执行权限chmod +x /etc/keepalived/check_obproxy.sh配置文件vi /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs { router_id keepalived2 } vrrp_script check_obproxy { script "/etc/keepalived/check_obproxy.sh" interval 2 #每2秒执行一次 } vrrp_instance VI_1 { state BACKUP #设置为backup interface ens192 nopreempt #设置到back上面,不抢占资源 virtual_router_id 66 priority 50 #辅助改为50 advert_int 1 #检测间隔1s authentication { auth_type PASS auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证 } unicast_src_ip 192.168.4.103 #本机ip unicast_peer { 192.168.4.102 #其他机器ip,可多个 } virtual_ipaddress { 192.168.4.99/24 #抢占的VIP也一样 } track_script { check_obproxy } }3、启动服务systemctl enable --now keepalived4、高可用测试将zabbix数据库指向VIP,连续ping 192.168.4.99,并查看zabbix服务状态obproxy1关机,查看ping和zabbix状态正常,业务几乎无感来自 192.168.4.99 的回复: 字节=32 时间=15ms TTL=63 来自 192.168.4.99 的回复: 字节=32 时间=21ms TTL=63 来自 192.168.4.99 的回复: 字节=32 时间=28ms TTL=63 来自 192.168.4.99 的回复: 字节=32 时间=2ms TTL=63 来自 192.168.4.99 的回复: 字节=32 时间=49ms TTL=63 来自 192.168.4.99 的回复: 字节=32 时间=1ms TTL=63obproxy2获得VIPinet 192.168.4.103/24 brd 192.168.4.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet 192.168.4.99/24 scope global secondary ens192 valid_lft forever preferred_lft forever obproxy1开机,obproxy服务启动成功后,自动抢回VIP inet 192.168.4.102/24 brd 192.168.4.255 scope global noprefixroute ens192 valid_lft forever preferred_lft forever inet 192.168.4.99/24 scope global secondary ens192 valid_lft forever preferred_lft forever 5、测试结论高可用正常,VIP正常九、故障处理1、任意一台OBServer主机故障关机1台OBServer主机,集群无影响,一段时间后Zone内另一台主机接管此OBServer功能开机此OBServer,一段时间后集群自动修复此主机并上线2、{lamp/}十、不停机滚动升级V4.3.5_CE_BP1_HF1版本信息发布时间:2025 年 04 月 30 日下载数据库rpm安装包oceanbase-ce-4.3.5.1-101010042025042417.el8.x86_64.rpmhttps://www.oceanbase.com/softwarecenter登录OCP平台,进入集群,升级版本上传安装包升级路经确认提示 集群升级缺少社区版依赖包:[oceanbase-ce-utils-4.3.5.1-101010042025042417.x86_64, oceanbase-ce-libs-4.3.5.1-101010042025042417.x86_64]下载并上传oceanbase-ce-libs-4.3.5.1-101010042025042417.el8.x86_64.rpmoceanbase-ce-utils-4.3.5.1-101010042025042417.el8.x86_64.rpm升级中升级前版本升级中如果出现任务失败,根据情况可点击重试,我点了四五次就完成了升级后版本,升级完成,升级过程中业务无感知{lamp/}十一、总结太强了
2025年05月08日
272 阅读
0 评论
4 点赞
2025-05-07
Zabbix7 keepalived VIP高可用部署 对接 OceanBase高可用集群
{alert type="info"}文中密码均为随机生成,网段和主机实验完成后删除{/alert}一、方案规划Anolis8系统192.168.4.50 tntzabbix7虚拟地址 192.168.4.51 tntzabbix7-01 192.168.4.52 tntzabbix7-02 192.168.4.99 oceanbase高可用VIP数据库oceanbase高可用数据库集群见其他文章,为zabbix7创建数据库https://90apt.com/5580二、数据库准备创建zabbix7租户,创建zabbix7用户和数据库,utf8mb4_bin编码mysql -h192.168.4.99 -P2883 -uzabbix7@zabbix7#tntob -p Aq1[R!KM3%,|{sJ?UJ5;u]数据库具备VIP高可用能力三、安装zabbix1、准备主机准备两台主机,关闭防火墙systemctl stop firewalld && systemctl disable firewalld2、安装zabbix两台主机均安装rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/8/x86_64/zabbix-release-latest-7.0.el8.noarch.rpm dnf clean all dnf module list php dnf module reset php dnf module install php:8.0 dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent2 dnf install zabbix-agent2-plugin-mongodb zabbix-agent2-plugin-mssql zabbix-agent2-plugin-postgresql01主机导入数据库先给予zabbix7用户权限,主要是为了给他触发器权限登录zabbix7租户的root用户 yum install mysql mysql -h192.168.4.99 -P2883 -uroot@zabbix7#tntob -p mysql> grant all privileges on zabbix7.* to zabbix7@"%"; Query OK, 0 rows affected (0.15 sec)修改租户的ob_query_timeout参数,防止导入超时ob_query_timeout 100000000再导入数据库zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -h192.168.4.99 -P2883 -uzabbix7@zabbix7#tntob -p zabbix7无报错就是导入成功为Zabbix server配置数据库编辑配置文件 /etc/zabbix/zabbix_server.confDBHost=192.168.4.99 DBName=zabbix7 DBUser=zabbix7@zabbix7#tntob DBPassword=Aq1[R!KM3%,|{sJ?UJ5;u] DBPort=2883 HANodeName=tntzabbix7-01 NodeAddress=192.168.4.51:10051配置默认端口和主机名/etc/nginx/conf.d/zabbix.conflisten 8080;启动Zabbix server和agent进程,并为它们设置开机自启systemctl restart zabbix-server zabbix-agent2 nginx php-fpm systemctl enable zabbix-server zabbix-agent2 nginx php-fpm查看日志是否有异常cat /var/log/zabbix/zabbix_server.log数据库提示 Unable to start Zabbix server due to unsupported MySQL database version (8.00.00). Must be at least (8.00.30).修改Oceanbase数据库将版本改为8.0.30 重启服务再次查看日志正常systemctl restart zabbix-server zabbix-agent2 nginx php-fpm cat /var/log/zabbix/zabbix_server.log02主机为Zabbix server配置数据库编辑配置文件 /etc/zabbix/zabbix_server.confDBHost=192.168.4.99 DBName=zabbix7 DBUser=zabbix7@zabbix7#tntob DBPassword=Aq1[R!KM3%,|{sJ?UJ5;u] DBPort=2883 HANodeName=tntzabbix7-02 NodeAddress=192.168.4.52:10051配置默认端口和主机名/etc/nginx/conf.d/zabbix.conflisten 8080;启动Zabbix server和agent进程,并为它们设置开机自启systemctl restart zabbix-server zabbix-agent2 nginx php-fpm systemctl enable zabbix-server zabbix-agent2 nginx php-fpm查看日志是否有异常cat /var/log/zabbix/zabbix_server.log无异常"tntzabbix7-02" node started in "standby" mode3、配置zabbix配置01主机http://192.168.4.51:8080/数据库连接主机名和时区默认账号密码为Admin zabbix配置02主机http://192.168.4.52:8080/与01主机相同,只有主机名不同两台主机的状态四、keepalived高可用部署zabbix高可用切换时,备用主机10051端口关闭,可以利用此端口配置keepalived配置01主机安装keealivedyum install -y keepalived编写zabbix高可用检测脚本vi /etc/keepalived/check_zabbix.sh#!/bin/bash # 检查10051端口是否有监听 if ss -tuln | grep -q ':10051\b'; then exit 0 # 检测成功,返回0 else exit 1 # 检测失败,返回1 fi执行权限chmod +x /etc/keepalived/check_zabbix.sh编辑配置文件vi /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs { router_id keepalived1 #只是名字而已,辅节点改为keepalived2(两个名字一定不能一样) } vrrp_script check_zabbix { script "/etc/keepalived/check_zabbix.sh" interval 2 #每2秒执行一次 } vrrp_instance VI_1 { state MASTER #定义主还是备,备用的话写backup interface ens192 #VIP绑定接口 virtual_router_id 66 #整个集群的调度器一致(在同一个集群) priority 100 #(优先权)back改为50(50一间隔) advert_int 1 #发包 authentication { auth_type PASS #主备节点认证 auth_pass 1111 } unicast_src_ip 192.168.4.51 #本机ip unicast_peer { 192.168.4.52 #其他机器ip,可多个 } virtual_ipaddress { 192.168.4.50/24 #VIP(自己网段的) } track_script { check_zabbix } }启动服务systemctl enable --now keepalived配置02主机安装keealivedyum install -y keepalived编写zabbix高可用检测脚本vi /etc/keepalived/check_zabbix.sh#!/bin/bash # 检查10051端口是否有监听 if ss -tuln | grep -q ':10051\b'; then exit 0 # 检测成功,返回0 else exit 1 # 检测失败,返回1 fi执行权限chmod +x /etc/keepalived/check_zabbix.sh编辑配置文件vi /etc/keepalived/keepalived.conf! Configuration File for keepalived global_defs { router_id keepalived2 } vrrp_script check_zabbix { script "/etc/keepalived/check_zabbix.sh" interval 2 #每2秒执行一次 } vrrp_instance VI_1 { state BACKUP #设置为backup interface ens192 nopreempt #设置到back上面,不抢占资源 virtual_router_id 66 priority 50 #辅助改为50 advert_int 1 #检测间隔1s authentication { auth_type PASS auth_pass 1111 #认证类型和密码主备一样,要不然无法互相认证 } unicast_src_ip 192.168.4.52 #本机ip unicast_peer { 192.168.4.51 #其他机器ip,可多个 } virtual_ipaddress { 192.168.4.50/24 #抢占的VIP也一样 } track_script { check_zabbix } }启动服务systemctl enable --now keepalived五、高可用测试登录http://192.168.4.50:8080/显示为tntzabbix7-02tntzabbix7-02重启,刷新网页,切换为zabbix7-01zabbix7-01关闭zabbix服务[root@tntzabbix7-01 ~]# systemctl stop zabbix-server刷新网页,切换为tntzabbix7-02启动zabbix7-01服务后并不会主动切回01[root@tntzabbix7-01 ~]# systemctl start zabbix-serverzabbix7-02关闭zabbix服务[root@tntzabbix7-02 ~]# systemctl stop zabbix-server 刷新网页,切换为tntzabbix7-01测试结论高可用能力正常,满足需求。六、其他其他配置可查看我的zabbix6文章https://90apt.com/search/zabbix6/七、小结爽
2025年05月07日
120 阅读
0 评论
1 点赞
2025-04-23
ALMA Linux 8飞速搭建zabbix6LTS、微信邮箱短信报警、windows、linux、交换机、vCenter监控、grafana面板、modbus动环采集、ZbxTable分析系统、Mysql、MSsql数据库监控、分组报警、对接oceanbase数据库
一、环境 zabbix所在服务器系统为alma8,zabbix6要求的mariadb版本为10.5-10.6,同时zabbix提供了zabbix-selinux-policy来配置selinux,所以安装中也不再要求关闭selinux。二、安装zabbix 官方安装帮助页面,安装方法随版本更新,官方更新更快https://www.zabbix.com/cn/download1、配置zabbix 软件源rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm dnf clean all2、安装zabbix-server和zabbix-agent2dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent23、安装数据库配置mariabd源 /etc/yum.repos.d/MariaDB.repo# MariaDB 10.6 CentOS repository list - created 2023-02-02 03:14 UTC # https://mariadb.org/download/ [mariadb] name = MariaDB baseurl = https://mirrors.aliyun.com/mariadb/yum/10.6/centos8-amd64 module_hotfixes=1 gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1安装数据库、启动、并设置开机启动dnf clean all dnf install mariadb-server systemctl enable --now mariadb4、进行MariaDB数据库初始化mariadb-secure-installation首先是设置密码,会提示先输入密码 Enter current password for root (enter for none):<–初次运行直接回车 Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 Remove anonymous users? [Y/n] <– 是否删除匿名用户 Disallow root login remotely? [Y/n] <–是否禁止root远程登录 Remove test database and access to it? [Y/n] <– 是否删除test数据库 Reload privilege tables now? [Y/n] <– 是否重新加载权限表5、初始化并导入zabbix数据库 mysql -uroot -p登录mariadb> create database zabbix character set utf8mb4 collate utf8mb4_bin; mariadb> create user zabbix@localhost identified by 'password123'; mariadb> grant all privileges on zabbix.* to zabbix@localhost; mariadb> set global log_bin_trust_function_creators = 1; mariadb> quit;导入初始架构和数据,系统将提示您输入新创建的密码zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix导入数据库架构后禁用log_bin_trust_function_creators选项mysql -uroot -p mariadb> set global log_bin_trust_function_creators = 0; mariadb> quit;6、配置数据库密码编辑配置文件 /etc/zabbix/zabbix_server.confDBPassword=password1237、配置PHP时区编辑配置文件 /etc/php-fpm.d/zabbix.confphp_value[date.timezone] = Asia/Shanghai8、启动并设置开机启动systemctl enable --now zabbix-server zabbix-agent2 httpd php-fpm9、查看是否有错误信息 cat /var/log/zabbix/zabbix_server.log10、防火墙开放端口firewall-cmd --add-port=80/tcp --permanent firewall-cmd --permanent --add-port=10050-10051/tcp firewall-cmd --reload firewall-cmd --list-ports firewall-cmd --list-services11、替换zabbix自带字体,解决中文乱码百度下载Noto Sans S Chinese字体替换掉默认使用的DejaVuSanscp NotoSansSC-Regular.otf /usr/share/fonts/dejavu/DejaVuSans.ttf12、调整zabbix缓存/etc/zabbix/zabbix_server.confCacheSize=1G13、调整ping进程数/etc/zabbix/zabbix_server.confStartPingers=16三、服务端配置 1、连接到新安装的Zabbix前端: http://server_ip/zabbix注意,mariadb也属于mysql数据库类型2、登录zabbix账号Admin 密码zabbix前端配置完成请务必修改密码四、企业微信消息推送 注意:为了企业的数据安全,从2022年6月20号20点之后,新开启的通讯录同步助手与新创建的自建应用必须在管理端配置可信IP,仅配置的可信IP能调用接口。当前时间2023年6月,企业微信应用验证必须与企业名相同,请考虑使用企业微信机器人推送。1、在企业微信 - 我的企业 - 企业信息 - 企业ID 2、创建zabbix机器人应用企业微信后台 - 应用管理 - 应用 - 创建应用 先进行网页授权及JS-SDK可信域名下的网页可使用网页授权及JS-SDK可信IP位于自行创建的应用-开发接口-企业可信IP 可信IP即服务器所在网络的外网IP,可打开https://ifconfig.me/快速查看,如果企业机房接入多条外网宽带,把外网宽带的IP全都写上3、查看Agentld和Secret 4、准备zabbix机器人脚本环境dnf -y install epel-release dnf -y install python2-pip pip2 install requests查询脚本存放位置cat /etc/zabbix/zabbix_server.conf | grep AlertScript可以看到脚本存放在/usr/lib/zabbix/alertscripts目录中编写脚本 weixin.py并放入上面的目录 ,填入上面获得的三个值#!/usr/bin/env python2 #-*- coding: utf-8 -*- import requests import sys import os import json import logging logging . basicConfig ( level = logging . DEBUG , format = ' %(asctime)s , %(filename)s , %(levelname)s , %(message)s ' , datefmt = ' %a , %d %b %Y %H:%M:%S' , filename = os . path . join ( '/tmp' , 'weixin.log' ), filemode = 'a' ) corpid = 'ww36e' appsecret = '5yFNqeTjrr3I' agentid = 1000002 token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req = requests . get ( token_url ) accesstoken = req . json ()[ 'access_token' ] msgsend_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser = sys . argv [ 1 ] subject = sys . argv [ 2 ] #toparty='3|4|5|6' message = sys . argv [ 2 ] + " \n\n " + sys . argv [ 3 ] params ={ "touser" : touser , # "toparty": toparty, "msgtype" : "text" , "agentid" : agentid , "text" : { "content" : message }, "safe" : 0 } req = requests . post ( msgsend_url , data = json . dumps ( params )) logging . info ( 'sendto:' + touser + ';;subject:' + subject + ';;message:' + message )赋予执行权限chmod +x /usr/lib/zabbix/alertscripts/weixin.py创建日志文件touch /tmp/weixin.log chown zabbix:zabbix /tmp/weixin.log测试脚本,用户名为企业微信通讯录中的用户名,一般为拼音全拼,严格区分大小写!/usr/lib/zabbix/alertscripts/weixin.py 用户名 '标题' '测试成功'此时企业微信可以收到zaabix应用发来的信息。5、添加报警媒介zabbix后台 - 管理 - 报警媒介类型名称 weixin类型 脚本脚本名称 weixin.py脚本参数:{ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} 6、配置Trigger actions触发动作,启用消息推送管理员,填写要发送的信息配置 - 动作 Trigger actions - 创建动作 在 动作 中填写名称在 操作 中编辑操作和恢复操作操作发送消息zabbix管理员组仅发送到微信custom message主题:服务器报警消息:告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}恢复操作通知所有参与者custom message主题:服务器已恢复消息:告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} 7、配置Autoregistration actions自动注册,填写要发送的信息在Autoregistration actions自动注册中注意:自动注册的其他内容在下方linux、windows部分发送消息zabbix管理员组仅送到weixinCustom message主题:Linux主机自动注册到zabbix服务器消息:主机名:{HOST.HOST} 主机IP:{HOST.IP} Agent端口:{HOST.PORT} 8、接收微信推送人员管理-用户-报警媒介邮箱推送、微信推送 可以理解为仅配置脚本不同,其他配置参数基本一致邮箱 1、安装mailxyum install mailx -y2、修改mailx配置vim /etc/mail.rc最后添加 set from=xx@qq.com set smtp=smtp.qq.com set smtp-auth-user=xx@qq.com set smtp-auth-password=邮箱密码 set smtp-auth=login3、测试邮箱echo “hello world” | mail -s “testmail” xx@qq.com4、编写邮箱脚本cd /usr/lib/zabbix/alertscripts/vim mailx.sh#!/bin/bash #send mail messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&15、创建日志,添加权限touch /tmp/mailx.logchown -R zabbix.zabbix /tmp/mailx.logchmod +x /usr/lib/zabbix/alertscripts/mailx.shchown -R zabbix.zabbix /usr/lib/zabbix/6、添加使用其他添加过程与微信相同微信推送 1、查看短信平台文档编写短信脚本,注意不通用我用的短信平台采用http get通讯cd /usr/lib/zabbix/alertscripts/cat sendSMS.sh#!/bin/bash #手机号码 MOBILE_NUMBER=$1 #短信主题 MESSAGE_SUBJECT=$2 #短信内容 MESSAGE_UTF8=$3 #调用短信接口 /usr/bin/curl -s -G --data-urlencode userid=用户ID --data-urlencode account=用户名 --data-urlencode password=用户密码 --data-urlencode mobile=${MOBILE_NUMBER} --data-urlencode content="${MESSAGE_SUBJECT}-${MESSAGE_UTF8}" http://www.短信平台接口.com/xx?action=send >> /tmp/sendSMS.log2、添加使用其他添加过程与微信相同五、自动注册windows主机 平台 - 配置 - 动作 - Autoregistration actions自动注册 创建动作元数据中的 Linux 为下方脚本里的 HostMetadata=windows 严格区分大小写操作添加主机添加主机群组关联模板下载安装agent2客户端https://www.zabbix.com/cn/download_agents最新版本为 Zabbix agent 2 v6.0.5修改配置 HostMetadata=windowsC:\Program Files\Zabbix Agent 2\zabbix_agent2.conf重启服务收到自动注册提示六、自动注册linux主机 zabbix平台自动注册linux与windows方法基本相同,元数据修改为linux在linux客户端上可以使用自动化脚本安装zabbix agent2客户端我这里仅放一个centos7/8的安装脚本,内容为卸载agent1安装agent2#/bin/bash echo "关闭selinux" sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 echo "下载zabbix-agent2,卸载agent1" OSVERSION=`cat /etc/redhat-release |awk -F "release " '{print $2}'|awk -F "." '{print $1}'` rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/$OSVERSION/x86_64/zabbix-release-6.0-1.el$OSVERSION.noarch.rpm yum clean all yum remove zabbix-agent -y yum install zabbix-agent2 -y echo "修改zabbix-agent2配置文件" ipaddr=$(ip a show |grep ens|grep inet |awk '{print $2}'|awk -F '/' '{print $1}') zabbix_server='192.168.1.110' hostname=$(hostname) sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agent2.conf sed -i "s/^ServerActive=127.0.0.1/ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agent2.conf sed -i "s/Hostname=Zabbix server/Hostname=${hostname}/g" /etc/zabbix/zabbix_agent2.conf sed -i "s/# HostMetadata=/HostMetadata=linux/g" /etc/zabbix/zabbix_agent2.conf echo "防火墙放行zabbix-agent端口" firewall-cmd --permanent --add-port=10050-10051/tcp firewall-cmd --reload echo "启动zabbix-agent服务" systemctl enable --now zabbix-agent2 zabbixagentpid=`ps -ef |grep zabbix_agent2|grep -w 'zabbix_agent2'|grep -v 'grep'|awk '{print $2}'` if [ "$zabbixagentpid" ];then echo "zabbix agent2 正在运行 " else echo "zabbix agent2 安装失败!!!" fi七、通过SNMP监控交换机 1、为zabbix添加SNMPv2模板SNMPv2模板下载https://share.zabbix.com/templates/network-devices-fortigate-template-fortinet-all-discovery/#body2、交换机配置snmpv2snmp-agent sys-info version v2c snmp-agent community read public snmp-agent community write private snmp-agent trap enable snmp-agent target-host trap address udp-domain 192.168.1.110 params securityname public v2c snmp-agent3、查找MIBH3C常用MIBhttps://www.h3c.com/cn/Service/Document_Software/TechnicalInfo/PorductMaintanInfo/Switches/DailyMainten/MIBList/4、安装snmp调试工具并进行测试dnf -y install net-snmp-utilssnmpwalk为模糊测试snmpwalk -v 2c -c public 192.168.237.50 .1.3.6.1.4.1.2021.10.1.3snmpget是zabbix的精准获取方式snmpget -v 2c -c public 192.168.237.50 .1.3.6.1.4.1.2021.10.1.35、举例如S5130 CPU使用率,查询H3C手册为 1.3.6.1.4.1.25506.8.35.18.1.3使用snmpwalk -v 2c -c public 192.168.237.50 1.3.6.1.4.1.25506.8.35.18.1.3后返回SNMPv2-SMI::enterprises.25506.8.35.18.1.3.0 = INTEGER: 16得知最后多一位.0使用snmpget -v 2c -c public 192.168.237.50 1.3.6.1.4.1.25506.8.35.18.1.3.0得到结果相同,则此项为s5130型号的CPU使用率在zabbix新建监控项,即可实现CPU使用率记录新建触发器,即可实现CPU使用率报警前5次报警值均超过80时进行CPU使用率过高报警最终效果其他参数:CPU使用率 1.3.6.1.4.1.25506.8.35.18.4.3.1.4.0.1 内存使用率 1.3.6.1.4.1.25506.8.35.18.1.16.0 固件版本 1.3.6.1.2.1.1.1.0 开机时间 1.3.6.1.2.1.1.3.0 SN 1.3.6.1.4.1.25506.2.6.1.2.1.1.2.2 温度 1.3.6.1.4.1.25506.2.6.1.1.1.1.12.212八、添加vsphere vCenter监控 1、开启VMware支持并重启zabbix-server服务/etc/zabbix/zabbix_server.conf ### Option: StartVMwareCollectors StartVMwareCollectors=52、检查vCenter sdk接口返回500代码代表接口在工作curl -i -k --data "" https://172.16.0.1/sdk HTTP/2 500 cache-control: no-cache content-type: text/xml; charset=utf-8 date: Tue, 28 Jun 2022 01:36:00 GMT x-envoy-upstream-service-time: 0 server: envoy3、登录每台ESXi主机开启MOB服务系统高级设置,搜索Config.HostAgent.plugins.solo.enableMob,确定值改为true4、zabbix创建主机注意是修改继承的宏 https://172.16.0.1/sdk5、查看数据一段时间后,zabbix可以获取到所有的vCenter、ESXi和虚拟机的信息九、grafana面板 1、安装当前最新版本grafana-10.0.1sudo yum install -y https://dl.grafana.com/oss/release/grafana-10.0.1-1.x86_64.rpm注意配置开机启动并配置防火墙,默认使用3000端口2、安装grafana zabbix插件grafana-cli plugins list-remote grafana-cli plugins install alexanderzobnin-zabbix-app systemctl restart grafana-server3、登录grafana接入zabbix源http://IP:3000/ 打开grafana界面,打开后输入admin/admin登录,登陆后按提示更改admin密码。启用zabbix插件配置数据源http://ip/zabbix/api_jsonrpc.php保存并测试成功新建面板即可十、首页图表监控 首页添加构件十一、modbus动环采集 https://90apt.com/3387十二、ZbxTable分析系统 十三、数据库监控 (一)微软MSSQL数据库监控安装完SQLServer数据库,开启数据库远程访问配置对IP的监听配置防火墙端口开放测试端口RHEL8系统安装ODBC驱动https://learn.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver16&tabs=redhat18-install%2Calpine17-install%2Cdebian8-install%2Credhat7-13-install%2Crhel7-offlinesudo su #Download appropriate package for the OS version #Choose only ONE of the following, corresponding to your OS version #RHEL 7 and Oracle Linux 7 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo #RHEL 8 and Oracle Linux 8 curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo #RHEL 9 curl https://packages.microsoft.com/config/rhel/9.0/prod.repo > /etc/yum.repos.d/mssql-release.repo exit sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts sudo ACCEPT_EULA=Y yum install -y msodbcsql18 # optional: for bcp and sqlcmd sudo ACCEPT_EULA=Y yum install -y mssql-tools18 echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc source ~/.bashrc # optional: for unixODBC development headers sudo yum install -y unixODBC-devel配置/etc/odbc.inihttps://learn.microsoft.com/zh-cn/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql-server-ver16[TEST] Driver = ODBC Driver 18 for SQL Server # Server = [protocol:]server[,port] Server = tcp:172.16.10.102,1433 TrustServerCertificate=YES # # Note: # Port isn't a valid keyword in the odbc.ini file # for the Microsoft ODBC driver on Linux or macOS 测试,连接成功isql -v TEST user passwd +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | echo [string] | | quit | | | +---------------------------------------+ SQL> 配置zabbix模板,为目标主机配置一个MSSQL by ODBC在继承以及主机 宏中修改值{$MSSQL.DSN}即上方odbc.ini中定义的[TEST]{$MSSQL.USER}和{$MSSQL.PASSWORD}是自定义的账号密码注意右侧可以选择密文模式保存(二)MYSQL数据库监控为目标主机关联MySQL by Zabbix agent 2模板为MYSQL创建监控专用用户并配置宏mysql -uroot -p use mysql; CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>'; GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';{$MYSQL.USER}和{$MYSQL.PASSWORD}是自定义的账号密码注意右侧可以选择密文模式保存十三、分组报警 1、将不同主机的告警发送给不同用户创建主机群组,并将主机添加至主机组,如动环告警 2、为主机添加群组3、创建用户群组动环报警组4、创建用户加入群组创建用户donghuanyonghu,加入动环报警组5、为用户创建报警媒介我这里用企业微信报警6、触发器操作发送报告的触发器7、操作发送群组配置完成十四、总结 对接oceanbase数据库见oceanbase文章十五、总结 功能强大、简单方便、干净卫生
2025年04月23日
1,609 阅读
0 评论
24 点赞
2025-02-19
Zabbix运维监控系统对接ollama deepseek 本地AI大模型进行故障告警分析企业微信机器人webhook推送
前言 大家好,我是王忘杰,刷到社区一篇zabbix与AI结合的文章,感觉与AI结合的方向对了 Zabbix运维监控系统与AI大模型交互实践分享 随后整理思路,考虑如何以合理的方式来进行故障告警AI分析故障AI分析发送到企业微信可能存在以下问题:1、不能使用企业微信应用的方式发送,企业微信应用是对用户一对一发送,每发送一次就要调用一次AI,应当使用企业微信机器人的方式,发送到群里,这样仅发送一次就行了。2、AI服务器可能存在故障,脚本必须能够处理故障,防止因为服务器故障导致告警无法接收3、AI问答速度必须足够快,并且要限制字数,如果AI响应缓慢并且长篇大论,则会失去时效性。aiwebhook脚本设计思路实际效果展示一、前提准备 首先,你应当本地部署了zabbix告警系统,如果你还不会,可以查看王工相关教程 ALMA Linux 8飞速搭建zabbix6LTS、微信邮箱短信报警、windows、linux、交换机、vCenter监控、grafana面板、modbus动环采集、ZbxTable分析系统、Mysql、MSsql数据库监控、分组报警 https://90apt.com/2982其次,你应当本地部署了ollama开源大模型,如果你还不会,可以查看王工相关教程 个人电脑 服务器 快速部署深度求索DeepSeek-R1本地大模型 https://90apt.com/5370你的zabbix服务器上,必须使用python3.8及以上版本,安装ollama库和requests库 ollama python库 https://github.com/ollama/ollama-python ollama python库Python: 安装 Python 3.8 或更高版本。pip: 确保已安装 pip,Python 的包管理工具。ollama 库: 用于更方便地与 Ollama API 交互。安装命令如下:pip install ollama pip install requests可以使用ollama-python示例代码进行测试from ollama import Client client = Client( host='http://localhost:11434', headers={'x-some-header': 'some-value'} ) response = client.chat(model='qwen2.5:1.5b', messages=[ { 'role': 'user', 'content': '王忘杰是谁?', }, ]) print(response) 以上准备好,我们继续二、软件开发 企业微信webhook代码我从百度搜索,找篇文章 zabbix基于webhook发送到企业微信 https://blog.csdn.net/u010533742/article/details/109068187结合ollama-python示例代码,进行组合开发aiwebhook.py#!/bin/python3.8 import requests import sys import json from ollama import Client class WechatImage(object): # 发送消息 def send_news_message(self, qwurl, subject, content, strairesponse): url = qwurl data = { "msgtype": "markdown", "markdown": { "content": subject + '\n' + content + '\nAI分析\n' + strairesponse } } headers = {'content-type': 'application/json'} reponse = requests.post(url, json.dumps(data), headers=headers) return reponse if __name__ == '__main__': qwurl = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=00000000000000000000000' #替换为企微的专用地址 subject = str(sys.argv[2]) content = str(sys.argv[3]) try: client = Client( host='http://locahost:11434', #ollama地址 headers={'x-some-header': 'some-value'}, timeout = 10 #超时时间 ) airesponse = client.chat(model='qwen2.5:1.5b', messages=[ #选择的模型 { 'role': 'user', 'content': "你是一个专业的IT工程师,简短简洁的告诉我下面信息的原因和处理措施,字数控制在100字以内" + content}, #提示词 ]) strairesponse = str(airesponse['message']['content']) #print(strairesponse) except: strairesponse = "\nAI超时,请检查AI后端" #超时处理 wechat_img = WechatImage() wechat_img.send_news_message(qwurl, subject, content, strairesponse) print("执行完毕") 代码中model='qwen2.5:1.5b'为模型,如果使用deepseek,可以根据显卡配置改为deepseek-r1:1.5b提示词可以自己编辑三、部署测试 1、在企业微信群中创建机器人,获取webhook地址2、将脚本放置到zabbix脚本目录中 /usr/lib/zabbix/alertscripts/aiwebhook.py并给予执行权限 chmod +x aiwebhook.py3、配置zabbix服务器3.1 新建报警媒介管理-媒介-创建媒介类型名称 aiwebhook 类型 脚本 脚本名称 aiwebhook.py 脚本参数 {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE} 描述 企业微信ai报警3.2 消息模板消息类型 问题 主题 告警通知 消息 主机:{HOST.NAME} 地址:{HOST.IP} 项目:{ITEM.NAME} 取值:{ITEM.LASTVALUE} 等级:<font color="warning">{TRIGGER.SEVERITY}</font> 状态:<font color="warning">{TRIGGER.STATUS}</font> 信息:{TRIGGER.NAME} 时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}消息类型 问题恢复 主题 恢复通知 消息 主机:{HOST.NAME} 地址:{HOST.IP} 项目:{ITEM.NAME} 取值:{ITEM.LASTVALUE} 等级:<font color="info">{TRIGGER.SEVERITY}</font> 状态:<font color="info">{TRIGGER.STATUS}</font> 信息:{TRIGGER.NAME} 时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}3.3 触发器动作配置-动作-触发器动作-创建动作发送给管理员操作添加 操作和恢复操作操作恢复操作4、重启一台闲置业务,触发告警完成四、小结 王工666
2025年02月19日
555 阅读
0 评论
4 点赞
2024-06-19
ALMA Linux 9部署 Zabbix7.0 LTS 单服务器架构 PostgreSQL Nginx
Zabbix7.0 LTS 已于2024年6月4日正式发布。zabbix6.0安装教程请看这里https://90apt.com/2982一、架构选型 我这里使用单服务器架构ALMA9 Zabbix7.0 PostgreSQL Nginx二、系统准备 我这里部署的系统是ALMA Linux 9系统查看系统版本 cat /etc/redhat-release AlmaLinux release 9.4 (Seafoam Ocelot) 关闭SELINUX setenforce 0 setenforce: SELinux is disabled /etc/selinux/config SELINUX=disabled getenforce Disabled 防火墙,开放zabbix平台和zabbix监听端口,我nginx配置8080,zabbix默认监听10051 firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=10050-10051/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports三、环境准备 1、部署数据库部署postgresql数据库yum install postgresql-server查看数据库版本psql --version psql (PostgreSQL) 13.14初始化数据库postgresql-setup initdb开启数据库密码验证,取消postgresql.conf配置文件中的注释/var/lib/pgsql/data/postgresql.conf password_encryption = md5 # md5 or scram-sha-256如果数据库不在本地,要通过网络访问,则需修改监听地址和防火墙开放对应端口/var/lib/pgsql/data/postgresql.conf listen_addresses = '*' # what IP address(es) to listen on; port = 5432配置数据库访问策略,允许本地网络使用密码访问数据库/var/lib/pgsql/data/pg_hba.conf # TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5 如果要允许所有外部IP访问,地址要写all host all all all md5 启动数据库systemctl start postgresql systemctl enable postgresql2、安装中文语言dnf install langpacks-zh_CN.noarch四、安装zabbix7.0 1、安装zabbix yum 源rpm -Uvh https://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm2、安装Zabbix Server、前端、agent等dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent3、创建zabbix数据库su - postgres 新建用户,回车后输入密码 createuser --pwprompt zabbix createdb -O zabbix zabbix4、root用户下导入初始数据库zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix5、配置Zabbix配置文件/etc/zabbix/zabbix_server.conf DBPassword=密码上面新建的数据库zabbix的密码6、配置nginx虚拟主机/etc/nginx/conf.d/zabbix.conf 配置默认端口和主机名 listen 8080; server_name example.com;7、启动Zabbix server和agent进程,并为它们设置开机自启systemctl restart zabbix-server zabbix-agent nginx php-fpm systemctl enable zabbix-server zabbix-agent nginx php-fpm五、进行zabbix安装向导 http://ip 验证nginx访问http://ip:8080 进入zabbix向导验证数据库配置主机名、时区最后检查安装完成六、登录Zabbix 1、登录默认账号 Admin 密码zabbix2、修改用户名密码我这里把Admin改为admin,密码自定义七、其他配置 八、故障排错 1、若出现 Zabbix服务器端运行中 否,请排查日志,根据日志处理/var/log/zabbix/zabbix_server.log
2024年06月19日
562 阅读
0 评论
3 点赞
2022-04-09
centos7飞速搭建zabbix5.0并添加windows、linux监控、企业微信报警
{lamp/}已弃用,请查看最新alma8+zabbix6 https://90apt.com/2982{lamp/}一、环境zabbix所在服务器系统为centos7,监控的客户端为windows2016和centos7。二、安装zabbix官方安装帮助页面https://www.zabbix.com/cn/download1、关闭selinux临时 setenforce 0 永久 /etc/selinux/configSELINUX=disabled2、配置zabbix yum源rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all3、安装zabbix服务端和zabbix监控端yum install zabbix-server-mysql zabbix-agent4、安装zabbix前端启用scl软件源yum install centos-release-scl编辑文件 /etc/yum.repos.d/zabbix.repo 启用源[zabbix-frontend] ... enabled=1 ...5、安装zabbix前端yum install zabbix-web-mysql-scl zabbix-apache-conf-scl6、安装数据库配置mariabd源/etc/yum.repos.d/MariaDB.repo[mariadb] name = MariaDB baseurl=https://mirrors.aliyun.com/mariadb/yum/10.2/centos7-amd64 gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1yum -y install MariaDB-server MariaDB-client systemctl start mariadb #启动服务 systemctl enable mariadb #设置开机启动7、进行MariaDB的相关简单配置mysql_secure_installation首先是设置密码,会提示先输入密码Enter current password for root (enter for none):<–初次运行直接回车 设置密码 Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车 New password: <– 设置root用户的密码 Re-enter new password: <– 再输入一次你设置的密码 其他配置 Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车 Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车, Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车 Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车8、创建数据库mysql -uroot -pmariadb> create database zabbix character set utf8 collate utf8_bin; mariadb> create user zabbix@localhost identified by 'password123'; mariadb> grant all privileges on zabbix.* to zabbix@localhost; mariadb> quit;导入初始架构和数据,系统将提示您输入新创建的密码zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix9、配置数据库密码编辑配置文件 /etc/zabbix/zabbix_server.confDBPassword=password12310、配置PHP时区编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.confphp_value[date.timezone] = Asia/Shanghai11、启动并设置开机启动systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm12、防火墙开放端口 firewall-cmd --add-port=80/tcp --permanent firewall-cmd --permanent --add-port=10050-10051/tcp firewall-cmd --reload firewall-cmd --list-ports firewall-cmd --list-services三、前端配置1、连接到新安装的Zabbix前端: http://server_ip/zabbix环境检查连接数据库zabbix服务器监听端口确认信息安装完成2、登录默认账号密码 Admin zabbix软件首页设置中文 Administration - Users - Admin修改为中文,别忘了修改密码四、安装windows agenthttps://www.zabbix.com/cn/download_agents在客户机中安装填入服务器地址,安装完成在zabbix平台添加主机监控创建主机 配置 - 主机 - 创建主机选择群组,输入客户端IP,添加关联监控模板zabbix官方windows监控模板,点击更新稍等一分钟,就会显示zbx在线查看主机最新数据 监测 - 主机 - 最新数据五、安装centos7 linux agent1、关闭selinux关闭selinux临时 setenforce 0永久 /etc/selinux/configSELINUX=disabled2、打开防火墙端口,agent端口为10050firewall-cmd --add-port=10050/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports firewall-cmd --list-services3.安装zabbixrpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.21-1.el7.x86_64.rpm4.修改zabbix agent配置/etc/zabbix/zabbix_agentd.confServer=zabbixIP ServerActive=zabbixIP Hostname=本机名字5.启动并开机启动systemctl start zabbix-agent systemctl enable zabbix-agent6.在zabbix平台添加主机并关联linux模板,查看数据六、linux批量自动上线zabbix-agent1、zabbix配置自动注册注意,自动注册即客户端主动连接服务器,所以服务器除了web平台的80端口外,还需要开放TCP10051端口firewall-cmd --permanent --add-port=10050-10051/tcp firewall-cmd --reload firewall-cmd --list-ports平台 - 配置 - 动作 - Autoregistration actions自动注册创建动作元数据中的 Linux 为下方脚本里的 HostMetadata=Linux 严格区分大小写操作添加主机添加主机群组关联模板启用动作即可2、客户主机修改主机名使用自动注册,那么客户端的名字就非常重要了,更改可以方便识别的主机名hostnamectl set-hostname 新主机名3、客户端放置并执行自动脚本,也可配置批量远程执行,大规模上线客户端,此脚本支持centos7/8上传服务器,添加执行权限,执行chmod +x ./centos-zabbix-agent-install.sh./centos-zabbix-agent-install.sh脚本报 zabbix agent正在运行 即为正常 #/bin/bash echo "关闭selinux" sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config setenforce 0 #yum clean all echo "下载zabbix-agent" OSVERSION=`cat /etc/redhat-release |awk -F "release " '{print $2}'|awk -F "." '{print $1}'` #rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/$OSVERSION/x86_64/zabbix-agent-5.0.21-1.el$OSVERSION.x86_64.rpm rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/$OSVERSION/x86_64/zabbix-release-5.0-1.el$OSVERSION.noarch.rpm yum clean all yum install zabbix-agent -y echo "修改zabbix-agent配置文件" ipaddr=$(ip a show |grep ens|grep inet |awk '{print $2}'|awk -F '/' '{print $1}') zabbix_server='192.168.30.130' hostname=$(hostname) sed -i "s/^Server=127.0.0.1/Server=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf sed -i "s/^ServerActive=127.0.0.1/ServerActive=${zabbix_server}/g" /etc/zabbix/zabbix_agentd.conf sed -i "s/Hostname=Zabbix server/Hostname=${hostname}/g" /etc/zabbix/zabbix_agentd.conf sed -i "s/# HostMetadata=/HostMetadata=Linux/g" /etc/zabbix/zabbix_agentd.conf echo "防火墙放行zabbix-agent端口" firewall-cmd --permanent --add-port=10050-10051/tcp firewall-cmd --reload echo "启动zabbix-agent服务" systemctl start zabbix-agent && systemctl enable zabbix-agent zabbixagentpid=`ps -ef |grep zabbix_agentd|grep -w 'zabbix_agentd'|grep -v 'grep'|awk '{print $2}'` if [ "$zabbixagentpid" ];then echo "zabbix agent 正在运行 " else echo "zabbix agent 安装失败!!!" fi 4、平台查看上线情况已自动上线七、总结快速简单,你学会了吗前言:通过企业微信小程序,实现zabbix自动注册和zabbix告警的微信消息推送。一、整体架构1、企业微信 - 创建zabbix机器人应用 - 取得企业微信ID、应用Agentld和Secret2、编写zabbix机器人推送脚本,测试脚本3、添加报警媒介4、配置Trigger actions触发动作,启用消息推送管理员,填写要发送的信息5、配置Autoregistration actions自动注册,填写要发送的信息6、进行测试二、注册或使用已有的企业微信,查询企业微信ID1、在企业微信 - 我的企业 - 企业信息 - 企业ID2、创建zabbix机器人应用企业微信后台 - 应用管理 - 应用 - 创建应用3、查看Agentld和Secret三、编写zabbix机器人脚本准备 工作yum -y install epel-release yum -y install python-pip pip install requests查询脚本存放位置cat /etc/zabbix/zabbix_server.conf | grep AlertScript可以看到脚本存放在/usr/lib/zabbix/alertscripts目录中编写脚本 weixin.py并放入上面的目录 ,填入上面获得的三个值 #!/usr/bin/env python #-*- coding: utf-8 -*- import requests import sys import os import json import logging logging . basicConfig ( level = logging . DEBUG , format = ' %(asctime)s , %(filename)s , %(levelname)s , %(message)s ' , datefmt = ' %a , %d %b %Y %H:%M:%S' , filename = os . path . join ( '/tmp' , 'weixin.log' ), filemode = 'a' ) corpid = 'ww36e' appsecret = '5yFNqeTjrr3I' agentid = 1000002 token_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret req = requests . get ( token_url ) accesstoken = req . json ()[ 'access_token' ] msgsend_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken touser = sys . argv [ 1 ] subject = sys . argv [ 2 ] #toparty='3|4|5|6' message = sys . argv [ 2 ] + " \n\n " + sys . argv [ 3 ] params ={ "touser" : touser , # "toparty": toparty, "msgtype" : "text" , "agentid" : agentid , "text" : { "content" : message }, "safe" : 0 } req = requests . post ( msgsend_url , data = json . dumps ( params )) logging . info ( 'sendto:' + touser + ';;subject:' + subject + ';;message:' + message ) 赋予执行权限chmod +x /usr/lib/zabbix/alertscripts/weixin.py创建日志文件touch /tmp/weixin.logchown zabbix:zabbix /tmp/weixin.log测试脚本,用户名为企业微信通讯录中的用户名,一般为拼音全拼,严格区分大小写!/usr/lib/zabbix/alertscripts/weixin.py 用户名 '标题' '测试成功'此时企业微信可以收到zaabix应用发来的信息。四、添加报警媒介,测试媒介zabbix后台 - 管理 - 报警媒介类型名称 weixin类型 脚本脚本名称 weixin.py脚本参数:{ALERT.SENDTO}{ALERT.SUBJECT}{ALERT.MESSAGE}五、配置Trigger actions触发动作,启用消息推送管理员,填写要发送的信息配置 - 动作 Trigger actions - 创建动作在 动作 中填写名称在 操作 中编辑操作和恢复操作1、操作发送消息zabbix管理员组仅发送到微信custom message主题:服务器报警消息:告警主机:{HOST.NAME}告警地址:{HOST.IP}监控项目:{ITEM.NAME}监控取值:{ITEM.LASTVALUE}告警等级:{TRIGGER.SEVERITY}当前状态:{TRIGGER.STATUS}告警信息:{TRIGGER.NAME}告警时间:{EVENT.DATE} {EVENT.TIME}事件ID:{EVENT.ID}2、恢复操作通知所有参与者custom message主题:服务器已恢复消息:告警主机:{HOST.NAME}告警地址:{HOST.IP}监控项目:{ITEM.NAME}监控取值:{ITEM.LASTVALUE}告警等级:{TRIGGER.SEVERITY}当前状态:{TRIGGER.STATUS}告警信息:{TRIGGER.NAME}告警时间:{EVENT.DATE} {EVENT.TIME}事件ID:{EVENT.ID}六、配置Autoregistration actions自动注册,填写要发送的信息在Autoregistration actions自动注册中发送消息zabbix管理员组仅送到weixinCustom message主题:Linux主机自动注册到zabbix服务器消息:主机名:{HOST.HOST}主机IP:{HOST.IP}Agent端口:{HOST.PORT}七、进行测试新linux上线微信收到提示linux重启微信收到提示八、解决zabbix网页中文乱码问题,替换字体yum -y install google-noto-sans-simplified-chinese-fonts.noarch cp /usr/share/fonts/google-noto/NotoSansSC-Regular.otf /usr/share/fonts/dejavu/DejaVuSans.ttf九、总结很简单的啦
2022年04月09日
448 阅读
0 评论
0 点赞