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.yaml
kind: 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)
vim mysql-config.yaml
apiVersion: 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.yaml
apiVersion: v1 kind: Secret metadata: name: mysql-user-pwd data: mysql-root-pwd: cGFzc3dvcmQ=
4.创建mysql部署文件
vim mysql-deploy.yaml
apiVersion: 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.yaml
apiVersion: 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.yaml
apiVersion: 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 <none> <none> pod/zabbix-server-75cdd8865-rnxhx 2/2 Running 0 3m24s 10.244.0.127 k8s-node-01 <none> <none> pod/zabbix-web-856989975-8k45c 1/1 Running 0 3m23s 10.244.0.128 k8s-node-01 <none> <none> pod/zabbix-web-856989975-hxdfl 1/1 Running 0 3m24s 10.244.1.118 k8s-node-02 <none> <none> NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 88d <none> service/mysql NodePort 10.0.0.15 <none> 3306:30006/TCP 15m app=mysql service/zabbix-web NodePort 10.0.0.189 <none> 80:30080/TCP 3m23s app=zabbix-web service/zabbixserver NodePort 10.0.0.234 <none> 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
输入用户名及密码访问
默认用户:Admin 默认密码:zabbix
至此k8s部署zabbix-server测试完成。
本文暂不展开说明k8s基础环境部署,后期再专门就k8s基础环境部署做专门说明。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/183314.html