zabbix簡介
十多年的噶爾網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整噶爾建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“噶爾網(wǎng)站設(shè)計(jì)”,“噶爾網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
Zabbix 是一種網(wǎng)絡(luò)監(jiān)視、管理系統(tǒng),基于 Server-Client 架構(gòu)。可用于監(jiān)視各種網(wǎng)絡(luò)服務(wù)、服務(wù)器和網(wǎng)絡(luò)機(jī)器等狀態(tài)。Zabbix 使用 MySQL、PostgreSQL、SQLite、Oracle 或 IBM DB2 儲(chǔ)存資料。Server 端基于 C語言、Web 前端則是基于 PHP 所制作的。Zabbix 可以使用多種方式監(jiān)視??梢灾皇褂?Simple Check 不需要安裝 Client 端,亦可基于 SMTP 或 HTTP 等各種協(xié)定做死活監(jiān)視。在客戶端如 UNIX、Windows 中安裝 Zabbix Agent 之后,可監(jiān)視 CPU 負(fù)荷、網(wǎng)絡(luò)使用狀況、硬盤容量等各種狀態(tài)。而就算沒有安裝 Agent 在監(jiān)視對(duì)象中,Zabbix 也可以經(jīng)由 SNMP、TCP、ICMP檢查,以及利用 IPMI、SSH、telnet 對(duì)目標(biāo)進(jìn)行監(jiān)視。另外,Zabbix 包含 XMPP 等各種 Item 警示功能。
zabbix特性
安裝部署簡單
web可視化管理界面
開源
分布式
實(shí)時(shí)繪圖
實(shí)驗(yàn)環(huán)境
Kubernetes版本1.16.0
zabbix版本4.4.5(官方鏡像)
mysql版本8.0.19(官方鏡像)
zabbix k8s部署
部署mysql(采用hostpath做數(shù)據(jù)持久化)
1.創(chuàng)建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.創(chuàng)建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.創(chuàng)建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.創(chuàng)建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
查看部署的組件狀態(tài)
[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-01pod/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節(jié)點(diǎn)的ip:30080
輸入用戶名及密碼訪問
默認(rèn)用戶:Admin 默認(rèn)密碼:zabbix
至此k8s部署zabbix-server測試完成。
本文暫不展開說明k8s基礎(chǔ)環(huán)境部署,后期再專門就k8s基礎(chǔ)環(huán)境部署做專門說明。