kubernetes集群部署Zabbix监控平台

news2024/9/22 1:28:39

一、zabbix介绍

1.zabbix简介

Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营。

2.zabbix特点

(1)安装与配置简单。
(2)可视化web管理界面。
(3)免费开源。
(4)支持中文。
(5)自动发现。
(6)分布式监控。
(7)实时绘图。

3.zabbix的主要功能

1.硬件监控。如交换机、路由器、打印机等。
2.系统监控。如CPU,内存,磁盘。硬盘IO,系统负载等。
3.服务监控。如apache,nginx,tomcat,redis,TCP连接数等。
4.性能监控。如网站性能,服务器性能,数据库性能。
5.日志监控。如访问日志,错误日志。
6.安全监控。如用户登录数,本地文件改动,passwd文件变化。
7.网络监控。如端口,SMTP,网络使用率,网络入流量,网络出流量。

4.zabbix架构图

二、检查本地k8s环境

1.检查系统pod运行状态

[root@k8s-master01 k8s]# kubectl get pod -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
kube-system   calico-kube-controllers-66df9cd554-c5vwx   1/1     Running   2 (13h ago)     13h
kube-system   calico-node-2vjdd                          1/1     Running   1 (13h ago)     13h
kube-system   calico-node-qfrx8                          1/1     Running   0               13h
kube-system   calico-node-wbg8l                          1/1     Running   1 (13h ago)     13h
kube-system   calico-typha-5c7749d78b-79wcb              1/1     Running   0               13h
kube-system   coredns-6d86b45487-9cpdc                   1/1     Running   5 (14h ago)     9d
kube-system   metrics-server-6d9df85947-c65n6            1/1     Running   31 (14h ago)    9d
zabbix        zabbix-agent-9q2qw                         1/1     Running   0               10h
zabbix        zabbix-agent-mpb49                         1/1     Running   0               10h
zabbix        zabbix-agent-qzf6w                         0/1     Evicted   0               30s
zabbix        zabbix-server-85b4c47d86-79c8c             1/1     Running   0               7h47m
zabbix        zabbix-web-7bc588854c-t98kt                1/1     Running   0               10h
zabbix        zabbixdb-549c997ff4-dcd5d                  1/1     Running   3 (7h47m ago)   10h
 

2.检查node节点状态

[root@k8s-master01 k8s]# kubectl get node
NAME           STATUS   ROLES    AGE   VERSION
k8s-master01   Ready    <none>   14d   v1.24.2
k8s-worker01   Ready    <none>   14d   v1.24.2
k8s-worker02   Ready    <none>   14d   v1.24.2
 

三、配置nfs共享存储

1.安装nfs

1

yum install -y nfs-utils

2.创建共享目录

1

mkdir -p /nfs/data

3.配置共享目录

1

echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports

4.启动相关服务

1

2

3

systemctl enable rpcbind

systemctl enable nfs-server

systemctl start rpcbind nfs

5.使配置生效

1

exportfs -r

6.查看nfs

[root@k8s-master01 k8s]# exportfs
 

7.其他节点检查nfs共享

[root@k8s-worker01 zabbix]# showmount -e 192.168.204.129

四、安装zabbix-mysql

1.编写zabbix-mysql的yaml文件

[root@k8s-worker01 zabbix]# cat zabbix_mysql.yaml
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zabbixdb-pv
spec:
  capacity:   #创建存储的大小
    storage: 10Gi
  volumeMode: Filesystem  #存储的类型
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  nfs:
    path: /nfs/data/zabbix
    server: 192.168.204.130
  mountOptions:
    - hard
    - nfsvers=4.1
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: zabbixdb-pvc
  namespace: zabbix
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem   #存储类型 ,块存储Block
  resources:
    requests:
      storage: 8Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: zabbixdb
  name: zabbixdb
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbixdb
  strategy: {}
  template:
    metadata:
      labels:
        app: zabbixdb
    spec:
      volumes:
      - name: zabbixdb-data
        persistentVolumeClaim:
          claimName: zabbixdb-pvc
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/qingyuannan/mysql:8.0
        name: mysql
        imagePullPolicy: IfNotPresent
        ports:
        - name: mysql
          containerPort: 3306
          protocol: TCP
        volumeMounts:
        - name: zabbixdb-data
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_DATABASE
          value: 'zabbix'
        - name: MYSQL_USER
          value: 'zabbix'
        - name: MYSQL_PASSWORD
          value: 'zabbix'
        - name: MYSQL_ROOT_PASSWORD
          value: 'zabbix'
        resources: 
          requests:
             cpu: 0.1
             memory: 128Mi
          limits:
             cpu: 0.3
             memory:  512Mi
---
          
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: zabbixdb
  name: zabbixdb
  namespace: zabbix
spec:
  clusterIP: 10.96.1.99
  ports:
  - name: 3306-3306
    port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: zabbixdb
  type: ClusterIP
  type: NodePort
status:
  loadBalancer: {}
 

2.创建命名空间

[root@k8s-master01 k8s]# kubectl create namespace zabbix
 

3.创建zabbix数据库

1

kubectl apply -f zabbix_mysql.yaml

[root@k8s-master01 k8s]# kubectl get pods -n zabbix

五、检查zabbix数据库的service域名

1.运行测试pod

[root@k8s-master01 k8s] 

kubectl run busybox --image=busybox:1.28 -- sleep 3600

2.进入busybox的pod 

[root@k8s-master01 k8s] kubectl exec -it busybox -- /bin/sh

3.查看域名解析

[root@k8s-master01 k8s] kubectl exec -it busybox -- /bin/sh

六、安装zabbix-server

1.编写zabbix_server.yaml文件

[root@k8s-worker01 zabbix]# cat zabbix_server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: zabbix-server
  name: zabbix-server
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-server
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: zabbix-server
    spec:
      volumes:
      - name: zabbix-scripts
        hostPath:
          path: /usr/lib/zabbix/
      - name: zabbix-file
        hostPath:
          path: /var/lib/zabbix 
      nodeSelector:
        zabbix-server: "true"
      hostNetwork: true
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/qingyuannan/zabbix-server-mysql:6.0-alpine-latest
        name: zabbix-server-mysql
        env:
        - name: DB_SERVER_HOST
          value:  10.96.1.99
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        resources: {}
status: {}
2.给master01节点打上标签

[root@k8s-master01 k8s] 

kubectl label nodes k8s-master01  zabbix-server=true

3.安装zabbix-server

[root@k8s-worker01 zabbix]kubectl apply -f zabbix_server.yaml

4.检查pod状态

[root@k8s-master01 k8s] kubectl get pods -n zabbix

七、部署zabbix-web

1.编写zabbix_web.yaml文件

[root@k8s-worker01 zabbix][root@k8s-worker01 zabbix]# cat zabbix_web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: zabbix-web
  name: zabbix-web
  namespace: zabbix
spec:
  replicas: 1
  selector:
    matchLabels:
      app: zabbix-web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: zabbix-web
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/qingyuannan/zabbix-web-nginx-mysql:6.0-alpine-latest
        name: zabbix-web-nginx-mysql
        env:
        - name: DB_SERVER_HOST
          value: zabbixdb.zabbix.svc.cluster.local
        - name: MYSQL_USER
          value: zabbix
        - name: MYSQL_PASSWORD
          value: zabbix
        - name: ZBX_SERVER_HOST
          value: 192.168.204.129
        - name: PHP_TZ
          value: Asia/shanghai
        resources: {}
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: zabbix-web
  name: zabbix-web
  namespace: zabbix
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: zabbix-web
  type: NodePort
status:
  loadBalancer: {}


2.安装zabbix-web

[root@k8s-worker01 zabbix]kubectl apply -f zabbix_web.yaml

3.查看pod状态

[root@k8s-master01 k8s]kubectl get pods -n zabbix

八、部署zabbix-agent

1.编辑zabbix_agent.yaml

[root@k8s-worker01 zabbix][root@k8s-worker01 zabbix]# cat zabbix_agent.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: zabbix-agent
  name: zabbix-agent
  namespace: zabbix
spec:
  selector:
    matchLabels:
      app: zabbix-agent
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: zabbix-agent
    spec:
      hostNetwork: true
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/qingyuannan/zabbix-agent:6.0-alpine-latest
        name: zabbix-agent
        env:
        - name: ZBX_SERVER_HOST
          value: 192.168.204.129
        resources: {}
 

2.安装zabbix-agent

1

kubectl apply -f zabbix_agent.yaml

3.查看pod状态

kubectl get pods -n zabbix

九、访问zabbix的web

1.查看svc

kubectl get svc -n zabbix

NAME         TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
zabbix-web   NodePort   10.111.44.46   <none>        8080:31681/TCP   6d9h
zabbixdb     NodePort   10.96.1.99     <none>        3306:30184/TCP   6d12h

2.登录web

http://192.168.204.131:31681

配置zabbix前端 遇到报错

MySQL数据库和zabbix服务都已准备就绪,在配置zabbix前端的时候,报错故障:没有可用的配置。查看日志,找出报错原因(Tip : cannot use database "zabbix": its "users" table is empty (is this the Zabbix proxy database?))

再次使用zcat 从新将create.sql.gz 导入到zabbix databases,还是没有效果,user表仍然为空

问题原因1:create.sql.gz 包有SQL语法错误,导致部分表格未导入成功,用户无法连接数据库,zabbix版本6.0 

问题原因2:在添加主机时,提示没有查询到主机库存,经过show tables;数据库没有此表,在数据库下执行单个表导入时依然报错:line 255 error; 字段太长。

解决方法:

问题原因1:

  1. 进入zabbixdb容器mysqladmin -uroot -p ,drop database zabbix;CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;GRANT ALL PRIVILEGES ON *.* TO 'zabbix'@'%';flush privileges;
  2. gzip -d create.sql
  3. mysql -uroot -p -e "use zabbix;source /usr/share/doc/zabbix-server-mysql/create.sql;"
  4. 或者通过navicatl连接数据库zabbix,执行create.sql,这样数据表中就有了原始数据

问题原因2:

  1. 通过查看create 的语法,将InnoDB改成Myisam成功导入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2115545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【超简单】1分钟解决ppt全文字体一键设置

省流 ppt的全部字体需要在“幻灯片母版”里面&#xff0c;“自定义字体”去设置好标题与正文的字体之后才算全部设置完毕 “视图”---“幻灯片母版” 找到“字体”---“自定义字体” 设置好中文和西文的字体&#xff0c;都可以按照自己的选择来&#xff0c;保存即可 吐槽 之…

【路径规划】一种用于控制约束高维非线性系统的神经路径规划算法

摘要 本研究提出了一种神经路径规划算法&#xff0c;用于解决高维非线性系统在约束条件下的控制问题。该方法结合了人工神经网络&#xff08;ANN&#xff09;和快速随机树&#xff08;RRT&#xff09;算法&#xff0c;通过神经网络对复杂系统的动态进行建模&#xff0c;并使用…

万物皆可“浮动”(补充)——WEB开发系列33

​​float​​ 属性最初的设计目的是在文本块内使图像浮动&#xff0c;从而让文字环绕在图像的左右两侧&#xff0c;这种效果在报纸版面中很常见。随着时间的推移&#xff0c;这一属性已成为网页设计中实现多列布局的常用工具。最开始&#xff0c;​​float​​ 主要用于在文本…

YOLOv8改进 | 检测头篇 | YOLOv8引入DynamicHead检测头

1. DynamicHead描述 1.1 摘要:在目标检测中,定位和分类相结合的复杂性导致了各种方法的蓬勃发展。以往的工作试图提高各种目标检测头的性能,但未能呈现出统一的观点。本文根据目标检测的特点,推导了一种新的动态头部框架,将目标检测头部与注意力统一起来。该方法通过在特…

物联网之ESP32开发板简介、Arduino

MENU ESP32开发板ESP32开发方式Arduino是什么 ESP32开发板 ESP32是一款国产芯片&#xff0c;芯片专为移动设备、可穿戴设备与物联网应用而设计&#xff0c;集成了低功耗蓝牙和Wi-Fi。这也是为什么ESP32在DIY爱好者中备受推崇的原因。 序号功能1复位按键2MicroUSB接口&#xff…

如何给3D人物换衣服CC4

1.导入人物 2.设置人物Apose 3.导入衣服 create -> accessory 选择fbx文件 设置衣服的大小和位置。 4.绑定衣服 设置衣服的权重 添加动作就可以看效果了。

神仙公司名单(北京)

神仙公司&#xff08;北京&#xff09; 接着奏乐接着舞&#xff0c;神仙公司系列。 这次写之前几期评论区呼声极高的城市&#xff1a;北京。 北京&#xff0c;是许多人外出打工的梦想之都&#xff0c;是年轻人逃离农村的终点站。 在近两年的就业蓝皮书「外省籍毕业生占比较高城…

移动互联网背景下营销模式的探索与分析

摘要&#xff1a;本文深入探讨在移动互联网蓬勃发展的背景下的营销理念变革。详细分析品牌对效果的承诺、转化周期的多元性以及品效合一的实现途径。同时重点引入“链动 2 1 模式 AI 智能名片 S2B2C 商城小程序源码”相关元素&#xff0c;深入挖掘其在营销领域的应用潜力与价值…

【原创】java+swing+mysql密码管理器系统设计与实现

个人主页&#xff1a;程序员杨工 个人简介&#xff1a;从事软件开发多年&#xff0c;前后端均有涉猎&#xff0c;具有丰富的开发经验 博客内容&#xff1a;全栈开发&#xff0c;分享Java、Python、Php、小程序、前后端、数据库经验和实战 文末有本人名片&#xff0c;希望和大家…

vllm使用BitAndBytes量化模型失败

ValueError: BitAndBytes quantization with TP or PP is not supported yet 使用加载hf模型时&#xff0c;使用load_in_8bit来量化模型&#xff08;底层其实是调用bitsandbytes来量化&#xff09;&#xff1a; import argparse import os import torchdef parse_arguments()…

TCP Analysis Flags 之 TCP Port numbers reused

前言 默认情况下&#xff0c;Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态&#xff0c;并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时&#xff0c;会对每个 TCP 数据包进行一次分析&#xff0c;数据包按照它们在数据包列表中出现的顺序进行处理。可…

分库分表核心理念

文章目录 分库&#xff0c;分表&#xff0c;分库分表什么时候分库&#xff1f;什么时候分表&#xff1f;什么时候既分库又分表&#xff1f;横向拆分 & 纵向拆分 分表算法Range 范围Hash 取模一致性 Hash斐波那契散列 严格雪崩标准&#xff08;SAC&#xff09;订单分库分表实…

外卖会员卡项目骗局揭秘,你还在做梦吗?改醒醒了

大家好&#xff0c;我是鲸天科技千千&#xff0c;大家都知道我是做开发的&#xff0c;做互联网行业很多年了&#xff0c;平时会在这里给大家分享一些互联网相关的小技巧和小项目&#xff0c;感兴趣的给我点个关注。 关于外卖会员卡这个项目的一些骗局和套路&#xff0c;我真的…

DNS64/NAT64 Networks(解决苹果公司IPv6审核被拒)

本人亲测有效&#xff0c;参考下面文章&#xff1a; https://www.cnblogs.com/zhouyi-ios/p/6945471.html 摘抄文章中的DNS64/NAT64原理 1、蜂窝网络单独提供IPv4和IPv6连接。 2、DNS64/NAT64转换工作流 理想的是&#xff0c;提供商放弃支持IPv4网络&#xff0c;然而这样阻…

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下&#xff1a;小疑问&#xff1a;如何自动选择合适的坐标位置对柱状图的数值大小进行标注&#xff1f;&#x1f602; clear; close all; x 1:3; aa[28.6321521955954 26.2453660695847 21.6910234851208 6.93747104431360 6.25442246899816 3.342835958564…

开源链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序:打破行业界限的泛零售生态业态融合与创新

摘要&#xff1a;本文深入探讨了中国泛零售生态中线下业态融合的现象&#xff0c;阐述了多业融合在其中的意义。同时&#xff0c;分析了这种融合趋势的发展方向&#xff0c;并重点探讨了开源链动 2 1 模式、AI 智能名片以及 S2B2C 商城小程序在促进多业融合方面的作用&#xf…

c/c++面试100道

1.一道笔试题解析_哔哩哔哩_bilibili P20&#xff1a;#define offsetof(TYPE, MEMBER) ((size_t)&((TYPE*)0)->MEMBER) 1、 offsetof 宏是 C 语言中用于计算结构体成员相对于结构体起始地址的偏移量的宏定义。这个宏的定义如下&#xff1a; #define offsetof(TYPE, …

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中&#xff0c;软件工程师岗位会分前端工程师&#xff0c;后端工程师。这是由于互联网软件规模庞大&#xff0c;从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢&#xff1f;它规模小&#xff0c;通常一个人就能开发一个项目。它还有必要分前…

【微处理器系统原理与应用设计第九讲】GPIO之按键控灯功能——按键控制灯进行亮灭转换的应用设计与程序分析

一、基础知识与明确 1、GPIO的有效电平 由按键结构决定&#xff0c;按键按下时输入为低电平&#xff0c;按键悬空时为输入为高电平&#xff0c;按键的输入给到GPIO的引脚&#xff08;例如PC13&#xff09; 2、条件控制语句 if(a)&#xff1a;如果a为非0数字或字符那么就为真…

java使用jfreechart生成图表

java使用jfreechart生成图表 java使用jfreechart生成图表创建java项目创建图表类SerieCharts 测试效果柱状图折线图 java使用jfreechart生成图表 需求背景&#xff0c;公司有一个产品的外网体验地址&#xff0c;需要做一些数据监控&#xff0c;比如日活量、访问量等。因此需要生…