• kubernetes集群搭建Zabbix监控平台


    一、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-master ~]# kubectl get pods -A
    NAMESPACE     NAME                                       READY   STATUS    RESTARTS        AGE
    kube-system   calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   1 (9m28s ago)   2d16h
    kube-system   calico-node-8c4pn                          1/1     Running   1 (9m16s ago)   2d16h
    kube-system   calico-node-f28qq                          1/1     Running   1 (9m10s ago)   2d16h
    kube-system   calico-node-wmc2j                          1/1     Running   1 (9m29s ago)   2d16h
    kube-system   coredns-6d8c4cb4d-6gm4x                    1/1     Running   1 (9m28s ago)   2d16h
    kube-system   coredns-6d8c4cb4d-7vxlz                    1/1     Running   1 (9m29s ago)   2d16h
    kube-system   etcd-k8s-master                            1/1     Running   1 (9m30s ago)   2d16h
    kube-system   kube-apiserver-k8s-master                  1/1     Running   1 (9m29s ago)   2d16h
    kube-system   kube-controller-manager-k8s-master         1/1     Running   1 (9m30s ago)   2d16h
    kube-system   kube-proxy-8dfw8                           1/1     Running   1 (9m29s ago)   2d16h
    kube-system   kube-proxy-ghzrv                           1/1     Running   1 (9m9s ago)    2d16h
    kube-system   kube-proxy-j867z                           1/1     Running   1 (9m15s ago)   2d16h
    kube-system   kube-scheduler-k8s-master                  1/1     Running   1 (9m28s ago)   2d16h
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    2.检查node节点状态

    [root@k8s-master ~]# kubectl get nodes -owide
    NAME         STATUS   ROLES                  AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
    k8s-master   Ready    control-plane,master   2d16h   v1.23.1   192.168.3.201   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
    k8s-node01   Ready    <none>                 2d16h   v1.23.1   192.168.3.202   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
    k8s-node02   Ready    <none>                 2d16h   v1.23.1   192.168.3.203   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   containerd://1.6.6
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    三、配置nfs共享存储

    1.安装nfs

     yum install -y nfs-utils
    
    • 1

    2.创建共享目录

    mkdir -p /nfs/data
    
    • 1

    3.配置共享目录

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

    4…启动相关服务

    systemctl enable rpcbind
    systemctl enable nfs-server
    systemctl start rpcbind
    
    • 1
    • 2
    • 3

    5.使配置生效

    exportfs -r
    
    • 1

    1

    6.查看nfs

    [root@k8s-master ~]# exportfs
    /nfs/data     	<world>
    
    
    • 1
    • 2
    • 3

    7.其他节点检查nfs共享

    [root@k8s-node01 ~]#  showmount -e 192.168.3.201
    Export list for 192.168.3.201:
    /nfs/data *
    
    
    • 1
    • 2
    • 3
    • 4

    四、安装zabbix-mysql

    1.编写zabbix-mysql的yaml文件

    [root@k8s-master 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.3.201
      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: mysql:8.0
            name: mysql
            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
    status:
      loadBalancer: {}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104

    2.创建命名空间

    [root@k8s-master zabbix]# kubectl create namespace zabbix
    namespace/zabbix created
    
    
    • 1
    • 2
    • 3

    3.创建zabbix数据库

    kubectl apply -f zabbix_mysql.yaml
    
    • 1

    4.检查pod状态

    [root@k8s-master zabbix]# kubectl get pods -n zabbix 
    NAME                        READY   STATUS    RESTARTS   AGE
    zabbixdb-69b7cd8dff-jnpjd   1/1     Running   0          11m
    
    
    • 1
    • 2
    • 3
    • 4

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

    1.运行测试pod

    [root@k8s-master ~]# kubectl run busybox --image=busybox:1.28 -- sleep 3600
    pod/busybox created
    
    
    • 1
    • 2
    • 3

    2.进入busybox的pod

    [root@k8s-master ~]# kubectl exec -it busybox -- /bin/sh
    / # 
    
    
    • 1
    • 2
    • 3

    3.查看域名解析

    [root@k8s-master ~]# kubectl exec -it busybox -- /bin/sh
    / # nslookup zabbixdb.zabbix.svc.cluster.local
    Server:    10.96.0.10
    Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
    
    Name:      zabbixdb.zabbix.svc.cluster.local
    Address 1: 10.96.1.99 zabbixdb.zabbix.svc.cluster.local
    / # 
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    六、安装zabbix-server

    1.编写zabbix_server.yaml文件

    [root@k8s-master 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: zabbix/zabbix-server-mysql:6.0-ubuntu-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: {}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    2.给node02节点打上标签

    [root@k8s-master zabbix]# kubectl label nodes k8s-node02  zabbix-server=true
    node/k8s-node02 labeled
    
    
    • 1
    • 2
    • 3

    3.安装zabbix-server

    [root@k8s-master zabbix]# kubectl apply -f zabbix_server.yaml 
    deployment.apps/zabbix-server created
    
    
    • 1
    • 2
    • 3

    4.检查pod状态

    [root@k8s-master zabbix]# kubectl get pods -n zabbix
    NAME                             READY   STATUS    RESTARTS   AGE
    zabbix-server-5f48d9d57d-rkr5p   1/1     Running   0          66s
    zabbixdb-69b7cd8dff-krt2w        1/1     Running   0          4m22s
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    七、部署zabbix-web

    1.编写zabbix_web.yaml文件

    [root@k8s-master 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: zabbix/zabbix-web-nginx-mysql:6.0-ubuntu-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.3.201
            - 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: {}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    2.安装zabbix-web

    [root@k8s-master zabbix]# kubectl apply -f zabbix_web.yaml 
    deployment.apps/zabbix-web created
    service/zabbix-web created
    
    
    • 1
    • 2
    • 3
    • 4

    3.查看pod状态

    [root@k8s-master zabbix]# kubectl get pods -n zabbix
    NAME                             READY   STATUS    RESTARTS   AGE
    zabbix-server-5f48d9d57d-rkr5p   1/1     Running   0          2m36s
    zabbix-web-55cd66f74f-9f284      1/1     Running   0          18s
    zabbixdb-69b7cd8dff-krt2w        1/1     Running   0          5m52s
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    八、部署zabbix-agent

    1.编辑zabbix_agent.yaml

    [root@k8s-master 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: zabbix/zabbix-agent:6.0-ubuntu-latest
            name: zabbix-agent
            env:
            - name: ZBX_SERVER_HOST
              value: 192.168.3.201
            resources: {}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    2.安装zabbix-agent

     kubectl apply -f zabbix_agent.yaml
    
    • 1

    3.查看pod状态

    [root@k8s-master zabbix]# kubectl get pods -n zabbix
    NAME                             READY   STATUS    RESTARTS   AGE
    zabbix-agent-h2qwf               1/1     Running   0          3s
    zabbix-agent-plnbd               1/1     Running   0          3s
    zabbix-server-5f48d9d57d-rkr5p   1/1     Running   0          3m2s
    zabbix-web-55cd66f74f-9f284      1/1     Running   0          44s
    zabbixdb-69b7cd8dff-krt2w        1/1     Running   0          6m18s
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    九、访问zabbix的web

    1.查看svc

    [root@k8s-master zabbix]#  kubectl get svc -n zabbix 
    NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
    zabbix-web   NodePort    10.100.50.7   <none>        8080:30775/TCP   59s
    zabbixdb     ClusterIP   10.96.1.99    <none>        3306/TCP         6m33s
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.登录web

    http://192.168.3.202:30775
    在这里插入图片描述

    3.登录zabbix

    初始账号admin/zabbix

    在这里插入图片描述

    4.查询zabbix-server的监控项图表

    在这里插入图片描述

  • 相关阅读:
    一文揭开,测试外包公司的真 相
    java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码
    操作系统的基本特征
    狂刷《Java权威面试指南(阿里版)》,冲击“金九银十”有望了
    需要复制的demo
    基于人工智能(AI)的蛋白结构预测工具合集
    [强网杯 2022]factor有感
    Java抽象类与接口
    Spring 框架学习(八)——AOP 的认识与使用
    零基础学前端(二)用简单案例去理解 HTML 、CSS 、JavaScript 概念
  • 原文地址:https://blog.csdn.net/jks212454/article/details/125624373