---
id: monitoring-zabbix
title: "Zabbix"
shortTitle: "Zabbix"
track: monitoring
trackTitle: "Monitoring & Alerting"
order: 4
level: important
status: published
estimatedMinutes: 25
prerequisites:
  - monitoring-azure
next: monitoring-datadog
reviewedAgainst: 2026-10-12
sources:
  - title: "Zabbix documentation"
    url: https://www.zabbix.com/documentation/current/en/manual
  - title: "Triggers"
    url: https://www.zabbix.com/documentation/current/en/manual/config/triggers
---

# Zabbix

Zabbix theo dõi host qua các item và báo động khi một trigger thỏa điều kiện. Agent trên máy thu thập số liệu, còn server giữ cấu hình và lịch sử. Lab không dựng stack Zabbix, vì một bộ Zabbix hoàn chỉnh kéo theo cả database lẫn web frontend.

## Để làm gì

Trước khi sửa ngưỡng trên một server Zabbix đang chạy, bạn cần đọc được biểu thức trigger và nói rõ nó đang so sánh con số nào. Bài này luyện đúng việc đó.

## Gồm những gì

- Host, item, trigger, problem.
- Agent với hai chế độ active check và passive check, đủ để bạn đọc hiểu tài liệu cài đặt.
- Điểm khác Prometheus: Zabbix quản lý item ngay trên server của nó, thay vì khai báo `scrape` trong một file YAML do bạn tự viết.

Bài không hướng dẫn cài server và không import template lạ.

## Dùng khi nào

Phòng máy hoặc đội hạ tầng đã dùng Zabbix cho máy vật lý và VM. Nếu app đã export metric cho Prometheus, Zabbix không thay được phần đó. Hai hệ có thể chạy song song, nhưng đừng coi hệ này thay được hệ kia chỉ vì cả hai đều vẽ được biểu đồ CPU.

## Kiến thức cốt lõi

Item là một giá trị số hoặc chuỗi được lấy theo chu kỳ, ví dụ CPU. Trigger là biểu thức tính trên item. Problem là trạng thái khi trigger đang ở PROBLEM. Khi điều kiện hết đúng, trigger quay về OK, với điều kiện biểu thức recovery cho phép.

Biểu thức `last(/host/system.cpu.util)>80` có nghĩa là giá trị mới nhất của item đó trên host đó lớn hơn 80. Nếu bạn đổi `last` thành một hàm trung bình mà không đọc kỹ hàm đó làm gì, ý nghĩa của trigger sẽ đổi theo. Docs trigger có danh sách đầy đủ các hàm.

Template gói sẵn item và trigger cho một loại máy. Gắn nhầm template thì host vừa đầy item vô nghĩa, vừa thiếu item bạn thật sự cần. Khi gỡ template, các item do template tạo cũng bị gỡ theo; lịch sử còn hay mất tùy lựa chọn của bạn lúc unlink.

Ở chế độ passive, server chủ động kết nối tới agent. Ở chế độ active, agent kết nối tới server. Firewall phải mở đúng chiều tương ứng. Khi gặp timeout như trong bài firewall, nguyên nhân thường là mở nhầm chiều này.

## Lệnh và code mẫu

Không có lệnh cài đặt. Bạn chỉ cần đọc biểu thức sau:

```text
last(/web1/system.cpu.util)>80
```

| Phần | Ý nghĩa |
| --- | --- |
| host | `web1` |
| item | `system.cpu.util` |
| so sánh | giá trị mới nhất lớn hơn 80 |

## Thực hành

1. Điền bảng cho biểu thức trên.
2. Viết một câu mô tả điều sẽ xảy ra khi dùng hàm `last`, nếu CPU lên 90 một lần rồi xuống 10.
3. Không mở cổng agent và không import file XML template tải từ diễn đàn.

## Kết quả mong đợi

Bạn xác định được host `web1`, item CPU và ngưỡng 80. Hàm `last` chỉ nhìn một điểm dữ liệu, nên một điểm 90 làm trigger chuyển sang PROBLEM và giữ nguyên ở đó cho tới khi có một điểm mới không còn thỏa điều kiện.

## Checklist

- [ ] Khi đổi ngưỡng trên template, bạn biết mọi host đang gắn template đó đều bị đổi theo.
- [ ] Chiều kết nối của agent khớp với firewall.
- [ ] Không dựng Zabbix mới khi Prometheus đã theo dõi cùng host đó, trừ khi team đã chọn Zabbix làm nơi xem chính.

## Lỗi thường gặp

**Trigger không bao giờ về OK.** Biểu thức problem và recovery không tạo ra đường quay về. Hãy đọc cả hai biểu thức. Một ngưỡng chỉ có `>80` thì cần một giá trị mới `<=80` mới hết problem, và kết quả còn tùy cách bạn viết recovery.

**Sửa trigger trên một host trong khi trigger đó đến từ template.** Lần cập nhật template sau sẽ ghi đè, hoặc Zabbix không cho bạn sửa cho tới khi unlink. Nếu mọi host cùng loại cần chung một ngưỡng, hãy sửa trên template.

## Nguồn

1. [Zabbix manual](https://www.zabbix.com/documentation/current/en/manual) — host, item, agent.
2. [Triggers](https://www.zabbix.com/documentation/current/en/manual/config/triggers) — biểu thức và problem.

## Tiếp theo

[Datadog](./05-datadog.md)
