1、相关资源导航
https://blog.csdn.net/zyj81092211/article/details/122917786
2、环境介绍
zabbix版本:6.0
kubernetes版本:v1.23.4
rancher版本:v2.6.3
容器相关环境配置可参考如下
https://blog.csdn.net/zyj81092211/article/details/123068347
3、创建zabbix命名空间
4、安装mysql数据库
创建StatefulSets工作负载之前要建立headless服务
(1)创建headless服务
(2)创建mysql配置文件ConfigMaps
[mysqld]
character-set-server=utf8
collation-server=utf8_bin
default-authentication-plugin=mysql_native_password
环境变量
pod标签
配置映射
数据存储pvc
验证
存储挂载
报错处理:(在完成后面步骤时,出现问题)
上面设置的参数在初始化数据库时候不生效,会报如下错误
Unsupported charset or collation for tables
CREATE DATABASE `zabbix` CHARACTER SET 'utf8' COLLATE 'utf8_bin';
5、安装zabbix-java-gateway
镜像:
zabbix/zabbix-java-gateway:latest
6、安装zabbix-server-mysql
环境变量设置
注意:headless直接解析到具体pod,没有集群ip地址(重新部署pod ip会变不能直接使用pod ip)
可以通过从coreDNS(在kube-system下可以获得dns地址)获取解析
命名规则:
pod名.服务名.命名空间.svc.cluster.local
- name: DB_SERVER_HOST
value: headless-zabbix.zabbix.svc.cluster.local
- name: MYSQL_DATABASE
value: zabbix
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: Smtgbk_123
- name: MYSQL_ROOT_PASSWORD
value: Smtgbk_123
- name: ZBX_JAVAGATEWAY
value: zabbix-java-gateway.zabbix.svc.cluster.local
- name: ZBX_SERVER_HOST
value: zabbix-server-mysql.zabbix.svc.cluster.local
- name: DB_SERVER_HOST
value: headless-zabbix.zabbix.svc.cluster.local
- name: MYSQL_DATABASE
value: zabbix
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: Smtgbk_123
- name: MYSQL_ROOT_PASSWORD
value: Smtgbk_123
pod标签
8、zabbix-proxy-mysql部署(可选,机器多可以部署)
注:Zabbix 代理是一个可以从一个或多个被监控设备收集监控数据并将信息发送到 Zabbix 服务器的进程,本质上是代表服务器工作。所有收集到的数据都在本地缓存,然后传输到代理所属的 Zabbix 服务器
工作过程是:proxy去zabbix server获取配置信息(或者zabbix 推送信息到proxy),proxy去agent收集信息,再推送信息到zabbix server
(1)代理程序需要单独的数据库,建立数据库
a、创建headless service
选择器
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: Smtgbk_123
- name: MYSQL_ROOT_PASSWORD
value: Smtgbk_123
CREATE DATABASE `zabbix_proxy` CHARACTER SET 'utf8' COLLATE 'utf8_bin';
GRANT Alter, Alter Routine, Create, Create Routine, Create Temporary Tables, Create View, Delete, Drop, Event, Execute, Grant Option, Index, Insert, Lock Tables, References, Select, Show View, Trigger, Update ON `zabbix\_proxy`.* TO `zabbix`@`%`;
- name: ZBX_HOSTNAME
value: zabbix-proxy-host
- name: ZBX_SERVER_HOST
value: zabbix-server-mysql.zabbix.svc.cluster.local
- name: DB_SERVER_HOST
value: zabbixproxy01.zabbix.svc.cluster.local
- name: MYSQL_USER
value: zabbix
- name: MYSQL_PASSWORD
value: Smtgbk_123
- name: MYSQL_DATABASE
value: zabbix_proxy
- name: ZBX_JAVAGATEWAY_ENABLE
value: 'true'
pod标签
9、建立ingress 外部访问zabbix web
ingress控制器部署参考
https://blog.csdn.net/zyj81092211/article/details/123457197
10、创建外部代理服务器,代理到ingress控制器
nginx代理创建参考
https://blog.csdn.net/zyj81092211/article/details/123293236
配置文件zabbix.wtown.com.conf参考,创建完成后在dns服务器解析即可
upstream zabbix{
#保持会话连接,开启调度算法ip_hash,url_hash(加载三方模块),sticky(cookie方式,加载nginx-sticky-module-ng模块)
ip_hash;
server 10.99.24.31:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.32:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.33:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.34:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.35:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.36:30080 weight=1 max_fails=2 fail_timeout=10;
server 10.99.24.37:30080 weight=1 max_fails=2 fail_timeout=10;
#server 192.168.2.101 down;#标记为down 剔除负载均衡队列
}
server
{
listen 80;
#include agent_deny.conf; #加载防止爬虫的配置文件
server_name zabbix.wtown.com;
#access_log logs/test.com.access.log main;
#error_log logs/test.comerror.log error;
proxy_buffering on; #开启buffer缓存,异步应答客户端请求,效率高
proxy_buffer_size 4k;
proxy_buffers 2 4k;
proxy_busy_buffers_size 4k;
proxy_temp_path /tmp/nginx_proxy_tmp 1 2;
proxy_max_temp_file_size 20M;
proxy_temp_file_write_size 8k;
location /
{
proxy_pass http://zabbix;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
11、访问zabbix.wtown.com,默认用户名密码是Admin/zabbix
12、连接代理服务器到zabbix-server(可选)
13、zabbix agent 被动模式部署
(1)linux下安装配置
https://repo.zabbix.com/zabbix/6.0/
安装软件源
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-1.el7.noarch.rpm
安装agent
yum install zabbix-agent2 -y
编辑配置文件
vi /etc/zabbix/zabbix_agent2.conf
被动模式需要更改的参数
注:客户端被动模式是zabbix server或者zabbix proxy主动去agent请求数据
上面server处使用的域名在dns服务器上已经解析,解析到所有kubernetes节点
启动
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
不在server里添加域名或者ip会报如下错误
tail -f /var/log/zabbix/zabbix_agent2.log
在zabbix server页面添加主机
去zabbix proxy代理上执行
zabbix_proxy -R config_cache_reload
这个操作会去server端拉取信息
查看主机状态为绿色客户端上线
(2)windows客户端
客户端下载地址
开始安装
安装完成会在服务中出现对应的zabbix服务
防火墙出现对应规则
server上添加对应主机
14、zabbix agent 主动模式(可选)
注:主动模式zabbix agent会主动请求zabbix server服务器,因为zabbix server部署在kubernetes集群上,不能直接访问,且有多个节点,所以设置通过代理访问
设置nodeport svc映射外网端口
获得端口号31865
tcp代理搭建设置参考:
https://blog.csdn.net/zyj81092211/article/details/123293236
配置文件参考
upstream zabbixhost{
server 10.99.24.31:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.32:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.33:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.35:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.35:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.36:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
server 10.99.24.37:31865 weight=1 max_fails=2 fail_timeout=10;#被代理的服务器
}
server {
listen 10051;#代理服务器端口
proxy_connect_timeout 8s;#连接超时
proxy_timeout 24h;#代理服务器超时
proxy_pass zabbixhost;#明确指定被代理服务器
}
dns添加解析到代理服务器,保证通讯正常
zabbix agent安装方法同13步:
配置文件中需要修改的
server端添加主机
添加完成后,查看已经出数
问题:
主机这里的状态并不会变:
15、中文图形乱码解决
下面方框是因为,中文字体的原因造成的,更换字体后就能解决
zabbix web端容器路径里有字体
从windows 里找中文字体,替换这个字体
重命名一下传到nfs共享服务器里:
mount -t nfs vdfs01.wtown.com:/Kubernetes/zabbix-fonts /mnt
/usr/share/zabbix/assets/fonts