k8s部署zabbix 6.0并添加监控(监控k8s资源)

分类:笔记 日期:2024-03-01 作者:caocaofff 浏览:162

1、了解zabbix

1.1 Zabbix概述

zabbix是一个基于Web界而的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。通过C/S模式采集数据,通过B/S 模式在Web端展示和配置。
zabbix server 可以通过SNMP,zabbix agent, ping, 端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。
zabbixagent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

1.2 Zabbix 监控原理

zabbix agent安装在被监控的主机上,zabbix agent 负责定期收集客户端本地各项数据,并发送至zabbix server 端,zabbix server收到数据后,将数据存储到数据库中,用户基于Zabbix web可以看到数据在前端展现图像。当zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行–些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(shell 命令、reboot、restart、 install 等)。

1.3 zabbix 功能组件

2024-03-01T04:39:38.png

Zabbix Server
zabbix 服务端守护进程,其中zabbix_ agent、zabbix_ proxy的数据最终都提交给zabbix server;

  • Zabbix server是Zabbix软件的核心组件;
  • Zabbix Agent向其报告可用性、系统完整性信息和统计信息。
  • Zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。
  • Zabbix server也是zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。
  • 基本的Zabbix Server的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
  • Zabbix的所有配置信息都存储在Server和Web前端进行交互的数据库中。例如,当你通过Web前端(或者APl)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server以每分钟一次的频率查询监控项表中的有效项,接着将它存储在Zabbix server中的缓存里。这就是为什么Zabbix前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

数据库

  • 所有配置信息以及Zabbix采集到的数据都被持久存储在数据库中
  • 可以支持MySQL、PostgreSQL、SQLite、Oracle等多种数据库

Web界面

  • WEB界面是Zabbix server的一部分,用于实现展示和配置的界面
  • 通常(但不一定)和Zabbix server运行在同一台物理机器上
  • 基于Apache(Nginx)+PHP实现,早期只支持LAMP架构,从Zabbix5.0开始支持LNMP

Agent
客户端守护进程,负责收集客户端数据,例如:收集CPU负载、内存、硬盘使用情况等;

  • Zabbix agents部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给Zabbix server。
  • 从Zabbix 5.0开始支持Zabbix Agent 2

Proxy
zabbix 分布式代理守护进程,通常大于500 台主机,需要进行分布式监控架构部署;

  • Zabbix Proxy可以代替Zabbix Server采集性能和可用性数据
  • Zabbix Proxy在Zabbix的部署是可选部分
  • Zabbix Proxy的部署可以很好的分担单个Zabbix server的负载

Java网关

  • Zabbix要监控tomcat服务器和其它JAVA程序,需要使用Java gateway做为代理,才能从JAVA程序中获取数据

1.4 Zabbix 6.0新特性

官方说明

Zabbix server高可用防止硬件故障或计划维护期的停机:

  • 原生选择加入HA群集配置
  • 定义一个或多个备用节点
  • 实时监控Zabbix server群集节点的状态
  • 不需要外部工具即可将Zabbix server配置为HA群集模式

Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集指标:

  • Kubernetes节点和pods的自动发现和监控
  • 无代理方式采集Kubernetespods和节点的信息
  • 获取Kubernetes节点主机高水平信息

2、安装方法

ZabbixServer提供了三种安装方法

  • 二进制包安装:官方提供了二进制包安装的方法,可以支持CentOS和Debian/Ubuntu的安装
  • 源码编译安装:部署繁琐,生产环境定制安装可以使用
  • 基于容器安装:测试环境使用,参考链接

2.1 环境要求

要实现zabbix监控K8S,官方说明zabbix必须需要使用6.x以上,kubernetes必须需要使用v1.18.x以上。

本次操作环境如下:

名称版本信息操作系统IP备注信息
K8S集群1.23.0Centos7.9192.168.1.130
192.168.1.124
192.168.1.130:k8s-master
192.168.1.124:k8s-node
Zabbix6.0.25Centos7.9容器内所有zabbix容器都在monitoring名称空间
MySQL8.0.35Centos7.9192.168.1.130:23306MySQL数据挂载到/opt/mysql8下,my.cnf挂载到/opt/my8.cnf
NFSCentos7.9 192.168.1.130共享目录为/opt/nfs

2.2 监控架构

zabbix通信方式

  • Agent:通过专用的代理程序进行监控与常见的master/agent模型类似,如果被监控对象支持对应的agent(推荐方式)
  • SSH/telnet:通过远程控制协议进行通讯
  • SNMP:通过SNMP协议(“简单网络管理协议)与被监控对象进行通讯,常使用在路由器、交换机网络硬件设备上安装,其实SNMP协议的工作方式也可以理解为master/agent的工作方,只不过是在这些设备中内置了SNMP的agent而已,所以大部分网络设备都支持这种协议。
  • IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
  • JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展)监控JVM虚拟机时,使用这种方法也是非常不错的选择(业务推荐方式)

2024-03-01T05:05:08.png

当监控规模变得庞大时我们是否需要部署多套zabbix系统进行监控呢?
答案肯定是不用的,因为zabbix支持分布式监控,可以把成千上万台的被监控对象分成不同的区域,每个区域中设置一台代理主机

  • 当监控规模庞大,需要使用zabbix proxy
  • 区域内的每个被监控对象的信息被agent采集提交给代理主机(zabbix proxy),其作用与zabbix server类似
  • zabbix proxy再将收集到的信息统一提交给真正的zabbix server处理,这样使得zabbix proxy分摊了zabbix server的压力
  • 通过建立统一的监控入口监控所有的对象

zabbix proxy的架构图

2024-03-01T05:06:36.png

2.3 部署MySQL数据库

在master节点192.168.1.130新建/opt/my8.cnf文件和/opt/mysql8目录,确保/opt/mysql8目录内容为空。

/opt/my8.cnf写入内容:

[mysqld]
default_authentication_plugin = mysql_native_password
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock

!includedir /etc/mysql/conf.d/

只有default_authentication_plugin = mysql_native_password是自己加的,其他的照搬MySQL

然后执行以下命令创建一个MySQL8的容器:

docker run -d --name=mysql8 -p 23306:3306 --restart=always -v /opt/my8.cnf:/etc/my.cnf -v /opt/mysql8:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=P@ssw0rd mysql:8.0.35

截图

2024-03-01T05:09:10.png

确认能在其他主机连接:

2024-03-01T05:09:34.png

root用户应该是可以被任意主机远程连接的,下面这张图是已经有zabbix连接数据库了,所以有zabbix用户:

2024-03-01T05:10:12.png

2.4 安装NFS服务

k8s-master节点192.168.1.130安装nfs服务

mkdir -p /opt/nfs
#创建nfs挂载目录
yum -y install nfs-utils rpcbind
#安装nfs和rpc
echo "/opt/nfs *(rw,sync,no_root_squash,no_subtree_check)" >> /etc/exports
systemctl start nfs && systemctl start rpcbind
systemctl enable nfs-server && systemctl enable rpcbind
showmount -e   
#查看到NFS共享目录

2024-03-01T05:13:08.png

使用helm部署nfs-client

helm search repo nfs-client
helm pull stable/nfs-client-provisioner
tar xf nfs-client-provisioner-1.2.11.tgz
cd nfs-client-provisioner/
vim values.yaml 

2024-03-01T05:14:24.png

helm install nfs-client-provisioner .
helm list

2024-03-01T05:15:06.png

2.5 部署zabbix

zabbix-server和zabbix-web直接使用yaml进行部署,zabbix-proxy和zabbix-agent通过helm部署。
需要先创建命名空间monitoring

kubectl create namespace monitoring

2.5.1 zabbix server

创建zabbix-server.yaml

apiVersion: v1
kind: Service
metadata:
  name: zabbix-server
  namespace: monitoring
  labels:
    app: zabbix-server
spec:
  selector:
    app: zabbix-server
  ports:
  - name: zabbix-server
    port: 10051
  type: ClusterIP
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zabbix-scripts
  namespace: monitoring
spec:
  storageClassName: "nfs-client"
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-server
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  template:
    metadata:
      labels:
        app: zabbix-server
    spec:
      containers:
      - name: zabbix-server
        image: zabbix/zabbix-server-mysql:alpine-6.0.25
        imagePullPolicy: IfNotPresent
        env:
        - name: DB_SERVER_HOST
          value: 192.168.1.130
        - name: DB_SERVER_PORT
          value: "23306"
        - name: MYSQL_DATABASE
          value: zabbix
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: MYSQL_ROOT_PASSWORD
          value: P@ssw0rd
        - name: ZBX_CACHESIZE
          value: "512M"
        - name: ZBX_HISTORYCACHESIZE
          value: "128M"
        - name: ZBX_HISTORYINDEXCACHESIZE
          value: "128M"
        - name: ZBX_TRENDCACHESIZE
          value: "128M"
        - name: ZBX_VALUECACHESIZE
          value: "256M"
        - name: ZBX_TIMEOUT
          value: "30"
        ports:
        - containerPort: 10051
          name: zabbix-server
          protocol: TCP
        resources:
          requests:
            cpu: 1000m
            memory: 1000Mi
          limits:
            cpu: 1000m
            memory: 1000Mi
        volumeMounts:
        - mountPath: /etc/localtime
          name: date-config
        - mountPath: /usr/lib/zabbix/alertscripts
          name: zabbix-scripts
      volumes:
      - name: zabbix-scripts
        persistentVolumeClaim:
          claimName: zabbix-scripts
      - hostPath:
          path: /etc/localtime
          type: ""
        name: date-config

创建资源

kubectl apply -f zabbix-server.yaml

2024-03-01T05:19:03.png

2024-03-01T05:19:14.png

volumes可以参考官方文档

这里把自定义告警脚本目录/usr/lib/zabbix/alertscripts挂载到nfs

Zabbix server
/usr/lib/zabbix/alertscripts这个 volume 用于自定义告警脚本。即 https://www.zabbix.com/documentation/6.0/zh/manual/appendix/config/zabbix_server 中的 AlertScriptsPath 参数。

2.5.2 zabbix-web

创建zabbix-web.yaml文件,内容如下:

apiVersion: v1
kind: Service
metadata:
  name: zabbix-web
  namespace: monitoring
  labels:
    app: zabbix-web
spec:
  selector:
    app: zabbix-web
  ports:
  - name: web
    nodePort: 30085
    port: 8080
    protocol: TCP
  type: NodePort

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: zabbix-web
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  template:
    metadata:
      labels:
        app: zabbix-web
    spec:
      containers:
      - name: zabbix-web
        image: zabbix/zabbix-web-nginx-mysql:alpine-6.0.25
        imagePullPolicy: IfNotPresent
        env:
        - name: DB_SERVER_HOST
          value: 192.168.1.130
        - name: DB_SERVER_PORT
          value: "23306"
        - name: MYSQL_DATABASE
          value: zabbix
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: MYSQL_ROOT_PASSWORD
          value: P@ssw0rd
        - name: ZBX_SERVER_HOST
          value: 'zabbix-server'
        - name: PHP_TZ
          value: "Asia/Shanghai"
        ports:
        - containerPort: 8080
          name: web
          protocol: TCP
        resources:
          requests:
            cpu: 500m
            memory: 500Mi
          limits:
            cpu: 500m
            memory: 500Mi

创建资源:

kubectl apply -f zabbix-web.yaml

2024-03-01T08:55:34.png

2.5.3 Helm部署zabbix-proxy&zabbix-agent
2.5.3.1 安装helm

wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz 
#安装Helm工具
tar zxvf helm-v3.13.2-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin/helm

2.5.3.2 添加Helm Chart Repository

helm repo add zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0/
helm repo list

2024-03-01T08:57:35.png

2.5.3.3 下载Zabbix Helm Chart 并修改values.yaml

此步骤参考官方文档

主要是修改镜像名称、环境变量

zabbixProxy:
  image:
    tag: alpine-6.0.25
  env:
    - name: ZBX_PROXYMODE
      value: 1
    - name: ZBX_HOSTNAME
      value: zabbix-proxy
    - name: ZBX_SERVER_HOST
    #此处填写的是zabbix-server的IP地址与端口
      value: "192.168.1.130,0.0.0.0/0"
    - name: ZBX_CACHESIZE
      value: 256M
    - name: ZBX_JAVAGATEWAY_ENABLE
      value: false
    - name: ZBX_CONFIGFREQUENCY
      value: 60
  service:
  #在zabbix-server的web界面创建proxy时,需要填写proxy的服务端口。必须通过NodePort对外暴露端口
    nodePort: 30051
    type: NodePort
      
zabbixAgent:
  image:
    repository: zabbix/zabbix-agent2
    tag: alpine-6.0.25
  env:
    - name: ZBX_SERVER_HOST
      value: 0.0.0.0/0
    - name: ZBX_PASSIVE_ALLOW     
    #整个proxy使用的是passive模式,此处的agent也改成passive模式,因此改为true
      value: true

修改完毕后部署到k8s

helm install zabbix zabbix-chart-6.0/zabbix-helm-chrt --dependency-update -f zabbix_values.yaml -n monitoring

执行上述命令后,等待资源部署完成。

2024-03-01T08:59:41.png

3、配置

3.1 检查Zabbix-server主机状态

登录zabbix-web,浏览器访问:http://192.168.1.130:30085/
输入默认用户名/密码:Admin/zabbix
首页
2024-03-01T09:00:24.png

可以在User settings设置语言为中文

2024-03-01T09:00:48.png

首页出现一个告警,这是因为默认情况下Zabbix-server主机的接口地址是127.0.0.1:10050,这样会提示连接agent失败

2024-03-01T09:01:12.png

2024-03-01T09:01:22.png

解决方法:
查看agent的endpoint地址,一般是节点的IP地址

2024-03-01T09:01:41.png

这里的接口地址填写endpoint的地址就行了

2024-03-01T09:02:06.png

等待两分钟,“可用性”这一列的图标就会变绿

2024-03-01T09:02:34.png

zabbix agent的工作模式

Zabbix Agent的工作模式可以分为主动模式(Active)和被动模式(Passive),主动模式和被动模式在同一个Zabbix Agent上,是可以共存的,比如让一部分被动模式,另一部分处于主动模式,处于主动模式的监控项由Zabbix Agent周期性采集数据传输给 Zabbix Server,处于被动模式的监控项,则由Zabbix Server周期性地从Zabbix Agent获取数据。

Zabbix Agent的工作模式分为主动和被动模式,默认情况下二种模式共存。

2024-03-01T09:04:11.png

二种模式对于数据的采集方式是所有不同的,简单可以概述为以下过程:
被动模式:Zabbix Server向Zabbix Agent的10050端口(默认)发起请求,获取监控数据。
主动模式:Zabbix Agent向Zabbix Server的10051端口(默认)发起请求,提交监控数据。
主被动模式在使用上有以下小区别:

模式Server压力远程命令日志监控
主动不支持支持
被动支持不支持

由于我们的agent配置的是被动模式,所以当前环境是zabbix-server向zabbix-agent发起请求。

3.2 添加zabbix proxy(按需)

在zabbix-server上创建zabbix-proxy配置时,需要K8S内的zabbix-proxy暴露服务。
这里使用了NotePort暴露端口30051(zabbix-server可以telnet 通 30051端口):

2024-03-01T09:10:03.png

添加步骤:管理——agent代理程序——创建代理
agent代理程序名称:填写deployment.apps/zabbix-proxy里的ZBX_HOSTNAME环境变量
系统代理程序模式:官方博客推荐使用主动式,但我们这里使用被动式
接口——IP地址:k8s-master节点IP地址192.168.1.130
接口——连接到:默认选择IP
接口——端口:zabbix-proxy的service对外暴露的端口30051

2024-03-01T09:10:32.png

添加完成之后等待两分钟,检查状态是否正常

2024-03-01T09:11:10.png

如果红框内始终没有秒数出现,请检查zabbix-server和zabbix-proxy的日志

4、添加监控

4.1 监控k8s集群

在 Zabbix 6.0 版本中默认带 Kubernetes 监控模板,如果是从低版本升级上来的,我们也可以通过下载官方模板进行导入。

模板名称解释
Kubernetes API server by HTTPK8S ApiServer组件指标模板
Kubernetes cluster state by HTTPK8S 集群指标模板
Kubernetes Controller manager by HTTPK8S ControllerManager组件指标模板
Kubernetes kubelet by HTTPK8S Kubelet组件指标模板
Kubernetes nodes by HTTPK8S 集群节点发现以及状态指标模板
Kubernetes Scheduler by HTTPK8S Scheduler组件指标模板

4.1.1 创建k8s主机群组

配置——主机群组——创建主机群组——组名,填写一个组名,例如:k8s server

2024-03-01T09:39:38.png

4.1.2 创建k8s-node主机,用于自动发现K8S节点主机

配置——主机——创建主机

2024-03-01T09:40:12.png

主机名称:k8s-nodes
模板:Templates/Applications——Kubernetes nodes by HTTP
主机组:K8S Server
由agent代理程序监测(可选):zabbix-proxy
已启用: true

配置宏变量,参考官方文档

2024-03-01T09:41:52.png

释义:

{$KUBE.API.ENDPOINT.URL} : https://xxx:6443/api
#ip为master的ip

{$KUBE.API.TOKEN}: XXXXXXXX
#kubectl get secret zabbix-service-account -n monitoring -o jsonpath={.data.token} | base64 -d

{$KUBE.NODES.ENDPOINT.NAME}: zabbix-zabbix-helm-chrt-agent
#kubectl get ep -n monitoring |grep agent

添加成功后,可以获得k8s集群主机列表相关数据

2024-03-01T09:42:55.png

请注意,发现的节点将在Zabbix中创建为单独的主机,并自动为其分配Linux模板。

4.1.3 创建k8s-cluster主机,用于自动发现服务组件

配置——主机——创建主机

2024-03-01T09:43:29.png

主机名称:k8s-cluster
模板:Templates下的Kubernetes cluster state by HTTP
主机组:K8S Server
由agent代理程序监测(可选):zabbix-proxy
已启用: true

配置宏变量

{$KUBE.API.HOST} 192.168.1.130
{$KUBE.API.PORT} 6443
{$KUBE.API.TOKEN} xxxxxxxxxx
{$KUBE.API_SERVER.PORT} 6443
{$KUBE.API_SERVER.SCHEME} https
{$KUBE.CONTROLLER_MANAGER.PORT} 10252(10257)
{$KUBE.CONTROLLER_MANAGER.SCHEME} http
{$KUBE.KUBELET.PORT} 10250
{$KUBE.KUBELET.SCHEME} https
{$KUBE.SCHEDULER.PORT} 10251(10259)
{$KUBE.SCHEDULER.SCHEME} http
{$KUBE.STATE.ENDPOINT.NAME} zabbix-kube-state-metrics

注意:端口 10251 和 10252 已在版本 1.17 中被替换(CHANGELOG-1.17

Kubeadm: enable the usage of the secure kube-scheduler and kube-controller-manager ports for health checks. For kube-scheduler was 10251, becomes 10259. For kube-controller-manager was 10252, becomes 10257.

2024-03-01T09:46:05.png

或者

2024-03-01T09:46:23.png

创建了k8s-cluster之后,自动发现各服务组件的数据:

2024-03-01T09:46:44.png

4.2 监控Linux

Zabbix提供两种监控Linux主机的方法,一种是启用主机上的SNMP协议,另一种是在主机上安装Zabbix Agent服务,这里介绍Linux系统下Zabbix Agent的安装与使用。

环境:CentOS 7.9

4.2.1 安装Zabbix Agent

先从官网下载rpm包,这里下载 zabbix-agent2-6.0.25-release1.el7.x86_64.rpm

wget https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-agent2-6.0.25-release1.el7.x86_64.rpm

2024-03-01T09:49:14.png

#安装依赖
yum install pcre2
rpm -ivh zabbix-agent2-plugin-mongodb-6.0.25-release1.el7.x86_64.rpm
rpm -ivh zabbix-agent2-plugin-postgresql-6.0.25-release2.el7.x86_64.rpm
rpm -ivh zabbix-agent2-6.0.25-release1.el7.x86_64.rpm

2024-03-01T09:49:40.png

#编辑配置文件
vim /etc/zabbix/zabbix_agent2.conf

修改内容

#这里为类似ACL规则,可以控制哪些网络或者设备可以通过被动模式来访问zabbix agent,这里可以配置域名,多个网络地址等
Server=192.168.1.130,0.0.0.0/0

#主动模式下agent会把数据发送到此zabbix server或zabbix proxy,这里可以填写多个地址
ServerActive=192.168.1.130

#本机IP或者主机名不要用127.0.0.1,在Zabbix服务端添加主机时 主机名称 要和此相同
Hostname=harbor

注意该Linux时间要和zabbix server端一致。

启动agent2且开机⾃启

systemctl enable --now zabbix-agent2

检查端口

2024-03-01T09:51:38.png

4.2.2 添加监控项

配置——主机——创建主机

2024-03-01T09:52:09.png

在zabbix web页面上添加主机时,需要注意主机的interface IP以及端口,这里要配置为机器的实际ip及端口,zabbix server会访问此ip端口进行数据的获取

2024-03-01T09:52:29.png

需要确保zabbix server端能telnet 目标Linux服务器的10050端口,可以禁用目标服务器的防火墙服务

systemctl stop firewalld.service
systemctl disable firewalld.service

等待两分钟后状态可用

2024-03-01T09:55:08.png

查看最新数据

2024-03-01T09:55:26.png

5、自动发现与自动注册

5.1 Zabbix自动发现(被动)

Zabbix提供高效灵活的网络自动发现功能。(官方文档

网络发现的优势:

  • 加快部署速度
  • 简化管理
  • 在快速变化的环境中避免过度管理

Zabbix网络发现依赖于以下信息:

  • IP地址范围
  • 可用的外部服务 (FTP, SSH, WEB, POP3, IMAP, TCP等)
  • 来自Zabbix agent的信息(仅支持未加密模式)
  • 来自SNMP agent的信息

不支持:

  • 网络拓扑发现

网络发现主要包含两个步骤:发现和动作。

网络发现由两个阶段组成:发现(discovery)和动作(actions)。

5.1.1 配置->自动发现->启动默认的Local network

2024-03-01T09:57:26.png

5.1.2 配置规则

2024-03-01T09:57:46.png

5.1.3 配置->动作->事件源->自动发现->启用动作

2024-03-01T09:58:15.png

可修改动作规则和操作细节

2024-03-01T09:58:33.png

5.1.4 总结

1.网络发现速度较慢
2.轮询扫描网段
3.如果网段中存在不通的主机,会出现卡顿并且造成后续新增的服务器无法加入节点
4.影响server性能

5.2 Zabbix自动注册(主动)

Zabbix agent可以自动注册到服务器进行监控。这种方式无需在服务器上手动配置它们。

5.2.1 配置->动作->自动注册动作->创建动作

2024-03-01T10:01:05.png

5.2.2 配置动作

2024-03-01T10:01:29.png

5.2.3 配置操作

2024-03-01T10:01:54.png

最后等待自动注册

6、排错

1、proxy报错拒绝x.x.x.x连接,只允许x.x.x.x

199:20240111:132700.478 proxy data request from server "10.244.219.64" is not allowed: connection from "10.244.219.64" rejected, allowed hosts: "192.168.1.130"

解决:ZBX_SERVER_HOST添加0.0.0.0/0

  - name: ZBX_SERVER_HOST
     value: 192.168.1.130,0.0.0.0/0

2、server监控告警时间不同步

2024-03-01T10:03:04.png

Linux: System time is out of sync (diff with Zabbix server > 60s)

排查:
2024-03-01T10:03:38.png

server的时间慢了一分多钟,可以通过挂载主机时间配置的方式解决

spec:
  containers:
  - name: zabbix-server
    image: zabbix/zabbix-server-mysql:alpine-6.0.25
    imagePullPolicy: IfNotPresent
    #..............
    volumeMounts:
    - name: date-config
      mountPath: /etc/localtime
    #.............
  volumes:
  - name: date-config
    hostPath:
      path: /etc/localtime

如果宿主机时间不准也可以先同步:

ntpdate cn.pool.ntp.org

注意:如果主机 /etc/localtime 已存在且时区正确的话,可以直接挂载,如果本地 /etc/localtime 不存在或时区不正确的话,那么可以直接挂载/usr/share/zoneinfo/Asia/Shanghai 到容器内 /etc/localtime,都是可行的。

2024-03-01T10:04:50.png

告警消失

2024-03-01T10:05:06.png

3、server无法连接Linux agent

Get value from agent failed: ZBX_TCP_READ() failed: [104] Connection reset by peer

2024-03-01T10:05:54.png

修改/etc/zabbix/zabbix_agent2.conf,添加0.0.0.0/0

Server=192.168.1.130,0.0.0.0/0

CC版权: 本篇博文采用《CC 协议》,转载必须注明作者和本文链接

评论 (暂无评论)

发表评论

昵称:  
邮箱:  
网址:

验证码:captcha