Sunday, October 6, 2024

Zabbix và kube-state-metrics: Giải pháp Giám sát Toàn diện cho Kubernetes

-

Tại sao chọn Zabbix để giám sát Kubernetes?

Trước khi quyết định sử dụng Zabbix làm công cụ giám sát cho Kubernetes, chúng ta đã đặt ra câu hỏi, “tại sao chúng ta nên chọn sử dụng Zabbix thay vì Prometheus, Grafana và alertmanager?” Sau cùng, các công cụ này đã trở thành công cụ giám sát tiêu chuẩn trong hệ sinh thái cloud. Mình quyết định tiêu chí tối thiểu cho việc sử dụng Zabbix là nó phải hiệu quả ít nhất bằng Prometheus trong việc giám sát cả Kubernetes và các ứng dụng native cho cloud.

Qua quá trình tìm hiểu, mình kết luận rằng Zabbix đáp ứng và vượt qua tiêu chí tối thiểu này. Zabbix cung cấp các metric và cảnh báo tương tự như Prometheus, alert manager và Grafana cho Kubernetes, vì cả ba đều sử dụng các công cụ cơ sở dữ liệu giống nhau để thực hiện điều này. Tuy nhiên, Zabbix có thể thực hiện điều này trong một sản phẩm duy nhất trong khi vẫn duy trì tính linh hoạt và cho phép bạn giám sát gần như bất kỳ thứ gì bạn có thể viết script để thu thập. Đối với giám sát ứng dụng, Zabbix có thể biến đổi các metric từ Prometheus được cung cấp bởi Prometheus exporters và endpoints. Hơn nữa, do Zabbix có thể gọi các HTTP endpoint bất kỳ, nó có thể giám sát các ứng dụng không có endpoint Prometheus riêng, khác với Prometheus.

Helm Chart của Zabbix

Zabbix giám sát Kubernetes bằng cách thu thập các metric thông qua API Kubernetes và kube-state-metrics. Các thành phần cần thiết để giám sát một cluster được cài đặt trong cluster bằng Helm được cung cấp bởi Zabbix. Helm Chart bao gồm Zabbix agent được cài đặt dưới dạng một daemon set và được sử dụng để giám sát tài nguyên cục bộ và các ứng dụng trên mỗi node. Một proxy Zabbix cũng được cài đặt để thu thập dữ liệu giám sát và chuyển nó đến máy chủ Zabbix bên ngoài.

Một vai trò của cluster cho phép Zabbix truy cập tài nguyên trong cluster thông qua API Kubernetes. Mặc dù vai trò của cluster có thể được sửa đổi để hạn chế quyền được cấp cho Zabbix, điều này sẽ dẫn đến một số mục trở thành không được hỗ trợ. Nên mình khuyên bạn nên giữ nguyên nếu bạn muốn tận dụng tối đa việc giám sát Kubernetes bằng Zabbix.

Trong hướng dẫn này, chúng ta sẽ cài đặt kube-state-metrics thông qua Helm Chart của Zabbix.

Thêm Helm Repo của Zabbix.

Sử dụng terminal và chạy lệnh sau để chuyển sang cluster mà bạn sẽ triển khai.

kubectl config use-context <cluster context name>

Sau đó thêm repo Helm Chart Zabbix vào thư viện Helm của mình:

helm repo add zabbix-chart-6.0 https://cdn.zabbix.com/zabbix/integrations/kubernetes-helm/6.0/

Cập nhật lại Helm Chart Repo của bạn.

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "zabbix-chart-6.0" chart repository
Update Complete. ⎈Happy Helming!⎈

Giờ bạn có thể xác nhận Repo đã thêm thành công nhé.

$ helm search repo zabbix
NAME                                    CHART VERSION   APP VERSION     DESCRIPTION                                      
zabbix-chart-6.0/zabbix-helm-chrt       1.3.4           6.0.21          A Helm chart for deploying Zabbix agent and proxy

Nếu bạn đang chạy Zabbix phiên bản mới hơn ví dụ 6.0, hãy thay đổi các tham chiếu từ “6.0” trong lệnh này thành “6.2”.

Chỉnh sửa giá trị trong value.yaml.

Dùng helm fetch để tải Helm Chart về máy.

helm fetch zabbix-chart-6.0/zabbix-helm-chrt --version=1.3.4

Giải nén file đã tải về.

tar -zxvf zabbix-helm-chrt-1.3.4.tgz

Bạn sẽ có các file và thư mục như dưới.

zabbix-helm-chrt
├── Chart.lock
├── charts
│   └── kube-state-metrics
│       ├── Chart.yaml
│       ├── README.md
│       ├── templates
│       │   ├── ciliumnetworkpolicy.yaml
│       │   ├── clusterrolebinding.yaml
│       │   ├── deployment.yaml
│       │   ├── _helpers.tpl
│       │   ├── kubeconfig-secret.yaml
│       │   ├── networkpolicy.yaml
│       │   ├── NOTES.txt
│       │   ├── pdb.yaml
│       │   ├── podsecuritypolicy.yaml
│       │   ├── psp-clusterrolebinding.yaml
│       │   ├── psp-clusterrole.yaml
│       │   ├── rbac-configmap.yaml
│       │   ├── rolebinding.yaml
│       │   ├── role.yaml
│       │   ├── serviceaccount.yaml
│       │   ├── servicemonitor.yaml
│       │   ├── service.yaml
│       │   ├── stsdiscovery-rolebinding.yaml
│       │   ├── stsdiscovery-role.yaml
│       │   └── verticalpodautoscaler.yaml
│       └── values.yaml
├── Chart.yaml
├── images
│   └── architecture.png
├── LICENSE
├── README.md
├── templates
│   ├── agent-psp-clusterrolebinding.yaml
│   ├── agent-psp-clusterrole.yaml
│   ├── agent-psp.yaml
│   ├── agent-service-account.yaml
│   ├── agent-service.yaml
│   ├── clusterrole-binding.yaml
│   ├── cluster-role.yaml
│   ├── _helpers.tpl
│   ├── NOTES.txt
│   ├── secret.yaml
│   ├── service-account.yaml
│   ├── service.yaml
│   ├── zabbix-agent.yaml
│   └── zabbix-proxy.yaml
└── values.yaml

Tùy thuộc vào tình hình của bạn, bạn sẽ cần thiết lập một số giá trị cho quá trình cài đặt. Trong hầu hết các trường hợp, bạn chỉ cần thiết lập một số biến môi trường cho agent Zabbix. Danh sách đầy đủ các giá trị và biến môi trường có sẵn trong thư viện Helm Chart, cùng với các image của agent và proxy trên Docker Hub.

Dưới đây là các chỉnh sửa của mình, mình không sử dụng zabbixProxy nên giá trị enabled mình để là false. Trong trường hợp này, mình đang thiết lập biến môi trường ZBX_PASSIVESERVERS cho agent Zabbix để cho phép bất kỳ địa chỉ IP nào kết nối và ZBX_SERVER_HOST mình trỏ tới domain của Zabbix Server.

zabbixAgent:
  enabled: true
  env:
    - name: ZBX_SERVER_HOST
      value: zabbix.hoanghd.com
    - name: ZBX_PASSIVESERVERS
      value: 0.0.0.0/0

zabbixProxy:
  enabled: false

Tạo namespace.

Bạn cũng có thể thêm tùy chọn tạo một namespace để cách ly với các dịch vụ khác trong cụm.

kubectl create namespace monitoring

Triển khai

Bây giờ khi mình đã chỉnh sửa xong file values, mình đã sẵn sàng cài đặt Helm Chart. Vì vậy, chúng ta sẽ sử dụng lệnh sau. Tất nhiên, đường dẫn đến Helm Chart có thể thay đổi tùy thuộc vào phiên bản của Helm Chart mà bạn đang sử dụng.

Sử dụng lệnh helm upgrade với tham số -i như dưới.

$ helm upgrade -i zabbix-monitor-k8s -f zabbix-helm-chrt/values.yaml -n monitoring zabbix-helm-chrt
Release "zabbix-monitor-k8s" does not exist. Installing it now.
NAME: zabbix-monitor-k8s
LAST DEPLOYED: Tue Sep 26 16:52:19 2023
NAMESPACE: monitoring
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing zabbix-helm-chrt.

Your release is named zabbix-monitor-k8s.
Zabbix agent installed:  "zabbix/zabbix-agent2:alpine-6.0.21"

Annotations:
app.kubernetes.io/name: zabbix-monitor-k8s-zabbix-helm-chrt
helm.sh/chart: zabbix-helm-chrt-1.3.4
app.kubernetes.io/version: "6.0.21"
app.kubernetes.io/managed-by: Helm


Service account created: 
    zabbix-service-account

To learn more about the release, try:

  $ helm status zabbix-monitor-k8s -n monitoring
  $ helm get all zabbix-monitor-k8s -n monitoring

Sau đó, bạn phải đợi cho đến khi mọi thứ hoạt động. Bạn có thể kiểm tra tình trạng này bằng lệnh sau:

$ kubectl get pods -n monitoring    
NAME                                                     READY   STATUS    RESTARTS   AGE
zabbix-agent-2scp9                                       1/1     Running   0          41s
zabbix-agent-5zb8n                                       1/1     Running   0          41s
zabbix-agent-mlgf7                                       1/1     Running   0          41s
zabbix-agent-qx45k                                       1/1     Running   0          41s
zabbix-agent-z8cbb                                       1/1     Running   0          41s
zabbix-monitor-k8s-kube-state-metrics-697fd558c8-pnpwq   1/1     Running   0          41s

Lấy thông tin secret.

Bây giờ sau khi đã cài đặt xong, chúng ta cần thiết lập các máy chủ trong Zabbix mà sẽ được liên kết với cluster Kubernetes của chúng ta. Bước cuối cùng trước khi có đủ thông tin là lấy token được tạo thông qua tài khoản dịch vụ được cài đặt bằng Helm Chart. Để làm điều này, chúng ta sử dụng lệnh sau, trong đó “zabbix service-account” là tên của tài khoản dịch vụ đã được tạo:

kubectl get secret -o jsonpath={.data.token} zabbix-service-account -n monitoring | base64 -d

Ví dụ.

$ kubectl get secret -o jsonpath={.data.token} zabbix-service-account -n monitoring | base64 -d
eyJhbGciOiJSUzI1NiIsImtpZCI6InRfR2JNaWlMX2IwcmN6V2I1M1diTWpvNEFoVU9UVUtOZ0o5eXAyTDJxLVEifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtb25pdG9yaW5nIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InphYmJpeC1zZXJ2aWNlLWFjY291bnQiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiemFiYml4LXNlcnZpY2UtYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImUzODAyZTRlLTAyNjYtNDZkZC1iMWMyLWE1MjE2NzNkN2U4YiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptb25pdG9yaW5nOnphYmJpeC1zZXJ2aWNlLWFjY291bnQifQ.ClHRd77qI4V09YhgRYkg55QZ3GWCp3jk_IIN-epyDlWF7l8DlirQYCqVE7h1ppBkDXSfeRmYx4yY6Y0a4M25G8uTMWTd-JBFhQ_YDlc6qW2hpxhKjRriacbLC1qjSkBnDGbjeAG0i_VmTfr1cAoBrO4cybX94lxfEEx32o088IzCG10UOxXjAc27t29iw3QCNHR1y0gWqYgw4CFwCFolpMxd2hdjm6wCLB_h8hsk7YbYtvLdNujKnT2nncqGxdLudJBjpKb3TwbU_DzsSwJpf6s_cqX5J9ShBBYN3GTle9lNUcqFEwejIqJlPkc5ocKHfaz96Pl3aZGmapX0ErWdIw

Lệnh này sẽ lấy thông tin token được tạo cho tài khoản dịch vụ, sau đó sử dụng base64 để giải mã nó. Đảm bảo bạn sao chép giá trị token này vào nơi nào đó vì bạn sẽ cần nó sau này.

Lấy thông tin API.

Bạn cũng cần biết endpoint của API Kubernetes. Trong hầu hết các trường hợp, bạn sẽ sử dụng proxy được cài đặt trong cluster thay vì truy cập trực tiếp vào máy chủ hoặc sử dụng proxy bên ngoài cluster. Trong trường hợp này, bạn có thể sử dụng DNS dịch vụ cho API. Thường, bạn có thể lấy nó thông qua lệnh kubectl cluster-info.

$ kubectl cluster-info
Kubernetes control plane is running at https://192.168.13.221:6443
CoreDNS is running at https://192.168.13.221:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

https://192.168.13.221:6443 chính là API của bạn.

Bây giờ, hãy truy cập giao diện người dùng Zabbix. Tất cả các templates cần thiết đã được tích hợp trong Zabbix phiên bản 6.0 trở lên.

Triển khai Zabbix Server (Nếu bạn đã có Zabbix Server thì bỏ qua bước này).

Bạn có thể tham khảo file yaml để triển khai một Zabbix Server nếu chưa có, hãy mở file zabbix6.4-kubernetes.yaml chỉnh sửa thông tin phù hợp với mong muốn của bạn trước khi triển khai nó.

kubectl create namespace monitoring
curl -o zabbix6.4-kubernetes.yaml https://wiki.hoanghd.com/wp-content/uploads/codes/zabbix6.4-kubernetes.yaml
kubectl apply -f zabbix6.4-kubernetes.yaml

Tạo Host Group.

Tạo một Host Group để chứa các máy chủ liên quan đến Kubernetes. Trong ví dụ này, chúng ta sẽ tạo một Host Group tên là Kubernetes.

Kết quả.

Trường hợp không sử dụng Zabbix Proxy.

Sử dụng template Kubernetes cluster state by HTTP.

Khi bạn giám sát Kubernetes cluster state bằng HTTP thông qua kube-state-metrics, bạn đang theo dõi các thông tin về trạng thái và hiệu suất của các tài nguyên Kubernetes trong cluster. Kube-state-metrics là một dự án mã nguồn mở giúp bạn thu thập các metric và dữ liệu từ các tài nguyên như Pods, Nodes, Services, ConfigMaps, và nhiều tài nguyên khác.

Dưới đây là một số ví dụ về điều bạn có thể giám sát thông qua kube-state-metrics:

  • Pod Metrics: Bạn có thể xem các metric như CPU và memory usage của các Pods trong cluster. Điều này giúp bạn theo dõi hiệu suất của các ứng dụng.
  • Node Metrics: Bạn có thể biết được thông tin về tình trạng của các Nodes, bao gồm CPU usage, memory usage, số lượng Pods đang chạy trên mỗi Node, và các thông tin liên quan khác.
  • Service Metrics: Bạn có thể theo dõi tình trạng của các Kubernetes Services, ví dụ như số lượng requests được gửi đến các Service và thời gian đáp ứng của chúng.
  • StatefulSet Metrics: Đối với các ứng dụng StatefulSet, bạn có thể xem trạng thái của từng replica và theo dõi sự khớp giữa tình trạng mong muốn và tình trạng thực tế.
  • ConfigMap Metrics: Bạn có thể kiểm tra sự thay đổi trong các ConfigMaps và cập nhật tương ứng trong ứng dụng của bạn.

Thông qua kube-state-metrics, bạn có khả năng tạo các truy vấn và Helm Chart để theo dõi và phân tích các metric này để đảm bảo rằng ứng dụng Kubernetes của bạn hoạt động một cách hiệu quả và không gặp sự cố. Nó giúp bạn nắm bắt trạng thái của hệ thống và hỗ trợ trong việc phát hiện và giải quyết vấn đề một cách nhanh chóng.

Điều hướng đến Hosts và mình đặt tên cho nó là Kubernetes Cluster State lựa chọn template là Kubernetes cluster state by HTTP thuộc Group Kubernetes đã tạo trước đó.

Tại Interface mình chọn Agent và sử dụng DNS để kết nối đến Zabbix Agent.

  • Nhấp vào tab Macros và chọn Inherited and host macros. Bạn sẽ thấy danh sách các biến môi trường có thể được thiết lập để ảnh hưởng đến việc giám sát trong cluster của bạn. Trong trường hợp này, chúng ta cần thay đổi hai biến môi trường đầu tiên.
    • Biến môi trường đầu tiên, {KUBE.API.ENDPOINT.URL} chính là endpoint của Kubernetes API. Trong trường hợp của chúng ta, chúng ta có thể đặt nó thành giá trị mình đã đề cập trước đó là https://192.168.13.221:6443.
    • Biến môi trường thứ hai, token là giá trị đã trích xuất từ lệnh dòng lệnh trước đó.
  • Nhấp vào Add. Sau một vài phút, bạn sẽ bắt đầu thấy dữ liệu trên trang dữ liệu mới nhất và các host mới trên trang host đại diện cho từng node.

Bạn sẽ có kết quả như dưới.

Và đây là kết quả của Latest data.

Sử dụng template Kubernetes nodes by HTTP.

Sử dụng template “Kubernetes nodes by HTTP” trong Zabbix có tác dụng giám sát các node của một môi trường Kubernetes thông qua giao thức HTTP. Dưới đây là một số tác dụng chính của việc sử dụng template này:

  • Thu thập Metrics từ Nodes: Template này sẽ cấu hình Zabbix để truy xuất các metrics quan trọng từ các node trong môi trường Kubernetes. Điều này bao gồm thông tin về tình trạng, tài nguyên hệ thống, tình trạng sức khỏe của node, và nhiều thông số khác.
  • Tự Động Khám Phá Node: Sử dụng Zabbix Low-Level Discovery (LLD), template này có thể tự động phát hiện các node mới khi chúng được thêm vào cluster Kubernetes. Điều này giúp đảm bảo rằng bạn có thể giám sát mọi node trong cluster mà không cần cấu hình thủ công.
  • Theo Dõi Hiệu Suất và Tình Trạng Sức Khỏe: Template này giúp bạn theo dõi hiệu suất của các node và xác định các vấn đề tiềm ẩn hoặc tình trạng sức khỏe không ổn định. Bạn có thể cài đặt cảnh báo để được thông báo khi có sự cố xảy ra trên các node.
  • Phân Tích Tải: Bằng cách thu thập thông tin về tài nguyên và khả năng chịu tải của các node, bạn có thể phân tích tải làm việc của hệ thống và đảm bảo rằng các node không bị quá tải.
  • Theo Dõi Quản Lý Kubernetes: Template này cũng có thể giúp bạn theo dõi tình trạng của các quản lý Kubernetes như API server, etcd, và các thành phần quản lý khác thông qua giao thức HTTP.

Đặt tên cho host này là Kubernetes Nodes. Chúng ta cũng sẽ gán host này vào nhóm host Kubernetes mà chúng ta đã tạo và đính kèm template Kubernetes nodes by HTTP vào host này.

Giống ở trên, bạn phải khai báo thông tin API và Token cho nó.

Nhấp vào Add và sau một vài phút, bạn sẽ bắt đầu thấy dữ liệu trên trang dữ liệu mới nhất và các host mới trên trang host đại diện cho từng node.

Trường hợp sử dụng Zabbix Proxy mode Passive.

Tham khảo values.yaml củam mình, ở đây minh chỉ thay đổi các giá trị

ZBX_CONFIGFREQUENCY, ZBX_CACHESIZE, ZBX_SERVER_HOST, ZBX_HOSTNAME và ZBX_PROXYMODE.

zabbixProxy:
  enabled: true
  containerSecurityContext: {}
  resources: {}
  image:
    repository: zabbix/zabbix-proxy-sqlite3
    tag: alpine-6.0.21
    pullPolicy: IfNotPresent
    pullSecrets: []

  env:
    - name: ZBX_PROXYMODE
      value: 1
    - name: ZBX_HOSTNAME
      value: k8s-zabbix-proxy
    - name: ZBX_SERVER_HOST
      value: zabbix-monitor-k8s-zabbix-helm-chrt-proxy
    - name: ZBX_DEBUGLEVEL
      value: 3
    - name: ZBX_CACHESIZE
      value: 265M
    - name: ZBX_JAVAGATEWAY_ENABLE
      value: false
    - name: ZBX_CONFIGFREQUENCY
      value: 60

Dưới đây là giải thích ý nghĩa của các giá trị cấu hình trong manifest này:

  • zabbixProxy: Đây là tên định danh, là phần bắt đầu cho các cấu hình của Zabbix Proxy.
  • enabled: true: Xác định liệu Zabbix Proxy có được kích hoạt hay không. Trong trường hợp này, nó đã được kích hoạt (true).
  • containerSecurityContext: Đây là một phần của cấu hình bảo mật cho container.
  • resources: Khai báo tài nguyên máy chủ (CPU, RAM) được cấp phát cho container Zabbix Proxy.
  • image: Đây là image Docker của Zabbix Proxy.
    • repository: Tên repository của image Docker Zabbix Proxy (zabbix/zabbix-proxy-sqlite3).
    • tag: Phiên bản cụ thể của image Docker được sử dụng (alpine-6.0.21).
    • pullPolicy: Chính sách tải image Docker nếu image không tồn tại trên Kubernetes. Ở đây, nếu image không tồn tại, nó sẽ không tải image mới (IfNotPresent).
    • pullSecrets: Danh sách tên các secrets được sử dụng để tải image từ các private registry.
  • env: Đây là danh sách các biến môi trường (environment variables) được định nghĩa cho Zabbix Proxy.
    • ZBX_PROXYMODE: Chế độ hoạt động của Zabbix Proxy. Ở đây, nó đang được đặt thành chế độ “passive” với giá trị 1. Nếu đặt là 0 thì sử dụng chế độ Active.
    • ZBX_HOSTNAME: Tên máy chủ Zabbix Proxy (k8s-zabbix-proxy). Tên này bạn sẽ khai báo ở phần Proxy name trong phần tạo mới Proxy.
    • ZBX_SERVER_HOST: Địa chỉ máy chủ Zabbix Server mà Zabbix Proxy sẽ gửi và nhận dữ liệu từ. Điều này sẽ phụ thuộc vào chế độ Proxy (active hoặc passive). Trong trường hợp này, nó là zabbix-monitor-k8s-zabbix-helm-chrt-proxy. Bạn sử dụng lệnh kubectl get svc -n <namespace> để lấy tên service của Zabbix Proxy.
    • ZBX_DEBUGLEVEL: Cấp độ debug. Ở đây, nó đã được đặt thành 3.
    • ZBX_CACHESIZE: Kích thước bộ nhớ cache sử dụng bởi Zabbix Proxy.
    • ZBX_JAVAGATEWAY_ENABLE: Xác định liệu Zabbix Proxy sẽ giao tiếp với Zabbix Java Gateway để thu thập dữ liệu liên quan đến Java không. Ở đây, nó đã được tắt (false).
    • ZBX_CONFIGFREQUENCY: Thời gian tần suất mà Zabbix Proxy sẽ truy vấn cấu hình từ máy chủ Zabbix Server (trong giây).

Điều này là một phần của việc cấu hình Zabbix Proxy để hoạt động trong môi trường Kubernetes, và các giá trị này sẽ ảnh hưởng đến cách Zabbix Proxy hoạt động và giao tiếp với Zabbix Server và các thành phần khác.

Chạy lại lệnh helm upgrade -i zabbix-monitor-k8s -f zabbix-helm-chrt/values.yaml -n monitoring zabbix-helm-chrt để upgrade lại thay đổi.

helm upgrade -i zabbix-monitor-k8s -f zabbix-helm-chrt/values.yaml -n monitoring zabbix-helm-chrt

Logs service của Zabbix Proxy như dưới cho thấy bạn không gặp lỗi gì nhé.

$ kubectl logs -n monitoring service/zabbix-monitor-k8s-zabbix-helm-chrt-proxy                                                                                          k8s-loadbalancer2: Thu Sep 28 04:34:29 2023

Preparing Zabbix proxy
** Preparing Zabbix proxy configuration file
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "ProxyMode": '1'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "Server": 'zabbix-monitor-k8s-zabbix-helm-chrt-proxy'...updated
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "Hostname": 'k8s-zabbix-proxy'...updated

<đã lược bỏ một số dòng logs>

** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLCertLocation": '/var/lib/zabbix/ssl/certs/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLKeyLocation": '/var/lib/zabbix/ssl/keys/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLCALocation": '/var/lib/zabbix/ssl/ssl_ca/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "LoadModulePath": '/var/lib/zabbix/modules/'...added

Vào Administration -> Proxies -> Create proxy.

  • Tại Proxy name chính là thông tin của env ZBX_HOSTNAME với giá trị là k8s-zabbix-proxy đã khai báo ở trong values.yaml ở trên.
  • Tại Proxy mode mình chọn Passive vì tại ZBX_PROXYMODE mình để giá trị là 1 (với 0 là Active và 1 là Passive)

Kết quả

Giờ mình tạo 1 host mới vào Group Kubernetes luôn nhưng lần này mình không dùng Zabbix Agent nữa mà dùng Zabbix Proxy.

Kết quả.

Kết quả khi vào Lastest data nhé.

Trường hợp sử dụng Zabbix Proxy mode Active.

Chỉnh sử manifest values.yaml tham số ZBX_PROXYMODE từ 1 thành 0 với 0 là Active và 1 là Passive.

- name: ZBX_PROXYMODE
  value: 0

Upgrade lại Helm Chart.

helm upgrade -i zabbix-monitor-k8s -f zabbix-helm-chrt/values.yaml -n monitoring zabbix-helm-chrt

Logs của Zabbix Proxy khi upgrade lại Helm Chart.

$ kubectl logs -n monitoring service/zabbix-monitor-k8s-zabbix-helm-chrt-proxy                                                                                          k8s-loadbalancer2: Thu Sep 28 05:49:20 2023

Preparing Zabbix proxy
** Preparing Zabbix proxy configuration file
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "ProxyMode": '0'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "Server": 'zabbix-monitor-k8s-zabbix-helm-chrt-proxy'...updated
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "Hostname": 'k8s-zabbix-proxy-active'...updated
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "HostnameItem": ''...removed

<đã lược bỏ một số dòng logs>

** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLCertLocation": '/var/lib/zabbix/ssl/certs/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLKeyLocation": '/var/lib/zabbix/ssl/keys/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "SSLCALocation": '/var/lib/zabbix/ssl/ssl_ca/'...added
** Updating '/etc/zabbix/zabbix_proxy.conf' parameter "LoadModulePath": '/var/lib/zabbix/modules/'...added

Mình sẽ xóa bỏ Proxy k8s-zabbix-proxy mode passive đã tạo ở trên và tạo mới Proxy k8s-zabbix-proxy-active với mode Active, bạn không cần khai báo gì thêm, hãy bấm Add.

Vào phần config Host và mình dùng luôn Kubernetes Get Metric From Zabbix Proxy đã tạo trước đó cho mode Passive chỉnh sửa lại thông tin Monitored by proxyk8s-zabbix-proxy-active

Hãy bấm Update để cập nhật thay đổi và bạn có kết quả như dưới.

Đây là kết quả khi show bằng Latest data nhé.

Bây giờ bạn đã sẵn sàng để bắt đầu giám sát cluster Kubernetes của bạn trong Zabbix! Hãy thử nó và chia sẻ ý kiến của bạn trong phần bình luận.

Trong bài viết tiếp theo, chúng ta sẽ xem xét những gì bạn có thể làm với cluster được giám sát mới của bạn và cách tận dụng tối đa nó.

Tài liệu tham khảo https://blog.zabbix.com/monitoring-kubernetes-with-zabbix/25055/

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories