kubernetes集群搭建Zabbix监控平台的详细过程
作者:江湖有缘
Zabbix是一个基于Web界面的分布式系统监控的企业级开源软件。可以监视各种系统与设备的参数,保障服务器及设备的安全运营,这篇文章主要介绍了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
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
三、配置nfs共享存储
1.安装nfs
yum install -y nfs-utils
2.创建共享目录
mkdir -p /nfs/data
3.配置共享目录
echo "/nfs/data/ *(insecure,rw,sync,no_root_squash)" > /etc/exports
4.启动相关服务
systemctl enable rpcbind systemctl enable nfs-server systemctl start rpcbind
5.使配置生效
exportfs -r
6.查看nfs
[root@k8s-master ~]# exportfs /nfs/data <world>
7.其他节点检查nfs共享
[root@k8s-node01 ~]# showmount -e 192.168.3.201 Export list for 192.168.3.201: /nfs/data *
四、安装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: {}
2.创建命名空间
[root@k8s-master zabbix]# kubectl create namespace zabbix namespace/zabbix created
3.创建zabbix数据库
kubectl apply -f zabbix_mysql.yaml
4.检查pod状态
[root@k8s-master zabbix]# kubectl get pods -n zabbix NAME READY STATUS RESTARTS AGE zabbixdb-69b7cd8dff-jnpjd 1/1 Running 0 11m
五、检查zabbix数据库的service域名
1.运行测试pod
[root@k8s-master ~]# kubectl run busybox --image=busybox:1.28 -- sleep 3600 pod/busybox created
2.进入busybox的pod
[root@k8s-master ~]# kubectl exec -it busybox -- /bin/sh / #
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 / #
六、安装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: {}
2.给node02节点打上标签
[root@k8s-master zabbix]# kubectl label nodes k8s-node02 zabbix-server=true node/k8s-node02 labeled
3.安装zabbix-server
[root@k8s-master zabbix]# kubectl apply -f zabbix_server.yaml deployment.apps/zabbix-server created
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
七、部署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: {}
2.安装zabbix-web
[root@k8s-master zabbix]# kubectl apply -f zabbix_web.yaml deployment.apps/zabbix-web created service/zabbix-web created
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
八、部署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: {}
2.安装zabbix-agent
kubectl apply -f zabbix_agent.yaml
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
九、访问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
2.登录web
http://192.168.3.202:30775

3.登录zabbix
初始账号admin/zabbix

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

到此这篇关于kubernetes集群搭建Zabbix监控平台的文章就介绍到这了,更多相关kubernetes集群搭建Zabbix监控内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
