189 8069 5689

k8s部署zabbix监控系统-创新互联

zabbix简介

目前创新互联建站已为上千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、庄河网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

    Zabbix 是一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、服务器和网络机器等状态。Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 前端则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP 等各种协定做死活监视。在客户端如 UNIX、Windows 中安装 Zabbix Agent 之后,可监视 CPU 负荷、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、TCP、ICMP检查,以及利用 IPMI、SSH、telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。

zabbix特性

  • 安装部署简单

  • web可视化管理界面

  • 开源

  • 分布式

  • 实时绘图

实验环境

  • Kubernetes版本1.16.0

  • zabbix版本4.4.5(官方镜像)

  • mysql版本8.0.19(官方镜像)

  • (猜你喜欢:使用zabbix监控K8s出现异常POD的解决方法)

zabbix k8s部署

  • 部署mysql(采用hostpath做数据持久化)

   1.创建pv

vim mysql-pv.yamlkind: PersistentVolume apiVersion: v1 metadata:   name: mysql-pv-volume   labels:     type: local spec:   storageClassName: manual   capacity:     storage: 20Gi   accessModes:     - ReadWriteOnce   hostPath:     path: "/mnt/data" --- apiVersion: v1 kind: PersistentVolumeClaim metadata:   name: mysql-pv-claim spec:   storageClassName: manual   accessModes:     - ReadWriteOnce   resources:     requests:       storage: 20Gi

    2.创建mysql配置文件(configMap)

  • (猜你喜欢:zabbix监控k8s出现的pod error status的解决方法)

vim mysql-config.yamlapiVersion: v1 kind: ConfigMap metadata:   name: mysql-config data:   custom.cnf: |     [mysqld]     default_storage_engine=innodb     skip_external_locking     skip_host_cache     skip_name_resolve     default_authentication_plugin=mysql_native_password

    3.创建mysql密码(secret)

[root@k8s-master-01 mysql]# echo -n password|base64 cGFzc3dvcmQ= vim mysql-secret.yamlapiVersion: v1 kind: Secret metadata:   name: mysql-user-pwd data:   mysql-root-pwd: cGFzc3dvcmQ=

    4.创建mysql部署文件

vim mysql-deploy.yamlapiVersion: v1 kind: Service metadata:   name: mysql spec:   type: NodePort   ports:   - port: 3306     nodePort: 30006     protocol: TCP     targetPort: 3306    selector:     app: mysql --- apiVersion: apps/v1 kind: Deployment metadata:   name: mysql spec:   replicas: 1   selector:     matchLabels:       app: mysql   strategy:     type: Recreate   template:     metadata:       labels:         app: mysql     spec:       containers:       - image: mysql         name: mysql         imagePullPolicy: IfNotPresent         env:         - name: MYSQL_ROOT_PASSWORD           valueFrom:             secretKeyRef:               name: mysql-user-pwd               key: mysql-root-pwd         ports:         - containerPort: 3306           name: mysql         volumeMounts:         - name: mysql-config           mountPath: /etc/mysql/conf.d/         - name: mysql-persistent-storage           mountPath: /var/lib/mysql         - name: timezone           mountPath: /etc/localtime       volumes:       - name: mysql-config         configMap:           name: mysql-config       - name: timezone         hostPath:           path: /usr/share/zoneinfo/Asia/Shanghai       - name: mysql-persistent-storage         persistentVolumeClaim:           claimName: mysql-pv-claim

    5.使用kubectl命令及以上yaml文件部署mysql

[root@k8s-master-01 mysql]# kubectl apply -f ./       configmap/mysql-config created service/mysql created deployment.apps/mysql created persistentvolume/mysql-pv-volume created persistentvolumeclaim/mysql-pv-claim created secret/mysql-user-pwd created
  • 部署zabbix-server

vim zabbix-server-deploy.yamlapiVersion: v1 kind: Service metadata:   name: zabbixserver spec:   type: NodePort   ports:   - port:  10051     nodePort: 30051     protocol: TCP     targetPort: 10051   selector:     app: zabbix-server --- apiVersion: apps/v1 kind: Deployment metadata:   name: zabbix-server spec:   replicas: 1   selector:     matchLabels:       app: zabbix-server   template:     metadata:       labels:         app: zabbix-server     spec:       containers:         - name: zabbix-server           image: zabbix/zabbix-server-mysql           imagePullPolicy: IfNotPresent           ports:           - containerPort: 10051             name: server             protocol: TCP           readinessProbe:             tcpSocket:               port: server             initialDelaySeconds: 5             periodSeconds: 10           livenessProbe:             tcpSocket:               port: server             initialDelaySeconds: 15             periodSeconds: 20           env:           - name: DB_SERVER_HOST             value: "mysql"           - name: MYSQL_USER             value: "zabbix"           - name: MYSQL_PASSWORD             value: "zabbix"           - name: MYSQL_DATABASE             value: "zabbix"           - name: ZBX_CACHESIZE             value: "1024M"           - name: ZBX_TRENDCACHESIZE             value: "1024M"           - name: ZBX_HISTORYCACHESIZE             value: "2048M"           - name: ZBX_HISTORYINDEXCACHESIZE             value: "1024M"           - name: ZBX_STARTTRAPPERS             value: "5"           - name: ZBX_STARTPREPROCESSORS             value: "10"           - name: ZBX_STARTDBSYNCERS             value: "10"           - name: DB_SERVER_PORT             value: "3306"         - name: zabbix-agent           image: zabbix/zabbix-agent           imagePullPolicy: Always           ports:           - containerPort: 10050             name: zabbix-agent           env:           - name: ZBX_HOSTNAME             value: "Zabbix server"           - name: ZBX_SERVER_HOST             value: "127.0.0.1"           - name: ZBX_PASSIVE_ALLOW             value: "true"           - name: ZBX_STARTAGENTS             value: "3"           - name: ZBX_TIMEOUT             value: "10"           securityContext:             privileged: true
  • 部署zabbix-web

vim zabbix-web.yamlapiVersion: v1 kind: Service metadata:   name: zabbix-web spec:   type: NodePort   ports:   - port: 80     protocol: TCP     nodePort: 30080     targetPort: 80   selector:     app: zabbix-web --- apiVersion: apps/v1 kind: Deployment metadata:   name: zabbix-web spec:   replicas: 2   selector:     matchLabels:       app: zabbix-web   template:     metadata:       labels:         app: zabbix-web     spec:       containers:       - image: zabbix/zabbix-web-nginx-mysql         name: zabbix-web         imagePullPolicy: IfNotPresent         ports:         - containerPort: 80           name: web           protocol: TCP         env:         - name: DB_SERVER_HOST           value: "mysql"         - name:  ZBX_SERVER_HOST           value: "zabbixserver"         - name: MYSQL_USER           value: "zabbix"         - name: MYSQL_PASSWORD           value: "zabbix"         - name: TZ           value: "Asia/Shanghai"

   使用kubectl命令及以上yaml文件部署

[root@k8s-master-01 zabbix]# kubectl apply -f ./ service/zabbixserver created deployment.apps/zabbix-server created service/zabbix-web created deployment.apps/zabbix-web created
  • 查看部署的组件状态

[root@k8s-master-01 zabbix]# kubectl get deploy,pod,svc,cm,secret,pv,pvc -o wide NAME                            READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS                   IMAGES                                           SELECTOR deployment.apps/mysql           1/1     1            1           15m     mysql                        mysql                                            app=mysql deployment.apps/zabbix-server   1/1     1            1           3m23s   zabbix-server,zabbix-agent   zabbix/zabbix-server-mysql,zabbix/zabbix-agent   app=zabbix-server deployment.apps/zabbix-web      2/2     2            2           3m23s   zabbix-web                   zabbix/zabbix-web-nginx-mysql                    app=zabbix-web NAME                                READY   STATUS    RESTARTS   AGE     IP             NODE          NOMINATED NODE   READINESS GATES pod/mysql-ffcc44677-g2tlr           1/1     Running   0          15m     10.244.0.126   k8s-node-01               pod/zabbix-server-75cdd8865-rnxhx   2/2     Running   0          3m24s   10.244.0.127   k8s-node-01               pod/zabbix-web-856989975-8k45c      1/1     Running   0          3m23s   10.244.0.128   k8s-node-01               pod/zabbix-web-856989975-hxdfl      1/1     Running   0          3m24s   10.244.1.118   k8s-node-02               NAME                   TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)           AGE     SELECTOR service/kubernetes     ClusterIP   10.0.0.1             443/TCP           88d      service/mysql          NodePort    10.0.0.15            3306:30006/TCP    15m     app=mysql service/zabbix-web     NodePort    10.0.0.189           80:30080/TCP      3m23s   app=zabbix-web service/zabbixserver   NodePort    10.0.0.234           10051:30051/TCP   3m23s   app=zabbix-server NAME                     DATA   AGE configmap/mysql-config   1      15m NAME                         TYPE                                  DATA   AGE secret/default-token-7qhlz   kubernetes.io/service-account-token   3      88d secret/mysql-user-pwd        Opaque                                1      15m secret/tls-secret            kubernetes.io/tls                     2      61d NAME                               CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                    STORAGECLASS   REASON   AGE   VOLUMEMODE persistentvolume/mysql-pv-volume   20Gi       RWO            Retain           Bound    default/mysql-pv-claim   manual                  15m   Filesystem NAME                                   STATUS   VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE persistentvolumeclaim/mysql-pv-claim   Bound    mysql-pv-volume   20Gi       RWO            manual         15m   Filesystem
  • 通过浏览器访问测试

    浏览器地址栏输入任意node节点的ip:30080   k8s部署zabbix监控系统

   输入用户名及密码访问

默认用户:Admin 默认密码:zabbix

k8s部署zabbix监控系统

至此k8s部署zabbix-server测试完成。

本文暂不展开说明k8s基础环境部署,后期再专门就k8s基础环境部署做专门说明。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


标题名称:k8s部署zabbix监控系统-创新互联
文章出自:http://cdxtjz.com/article/ddcjge.html

其他资讯