Bắt đầu với BQL
BQL là gì?
BQL (BlackHole Query Language) là ngôn ngữ truy vấn dùng để tìm kiếm và phân tích dữ liệu nhật ký. Bạn gõ các lệnh kết nối bởi dấu pipe, và BQL truyền kết quả về trong quá trình xử lý. Hãy nghĩ nơi nó như một đường ống (pipeline) nơi mỗi bước chuyển hóa dữ liệu đang qua.
Cách pipeline hoạt động
Truy vấn BQL là một pipeline của các lệnh. Dữ liệu chạy từ trái sang phải, mỗi lệnh một lần:
from events-* | search status=error | stats count
| | | | |
v v v v v
data filter aggregate resultMỗi lệnh nhận hàng từ bước trước và tạo hàng cho bước tiếp theo. Bạn có thể liên kết bao nhiêu lệnh tuỳ yêu cầu.
Truy vấn đầu tiên của bạn
Gõ trực tiếp vào trình chỉnh sửa truy vấn. Mỗi ví dụ xây dựng trên cái trước.
Ví dụ 1: Xem dữ liệu của bạn
from events-* | head 10Lệnh này lấy 10 sự kiện đầu tiên từ chỉ mục events-*. Sử dụng lệnh này để kiểm tra trường nào có sẵn và dữ liệu trông như thế nào.
Ví dụ 2: Lọc theo trường
from events-* | search status=errorLệnh search chỉ giữ lại các hàng mà status bằng error. Mọi thứ khác sẽ bị loại bỏ.
Ví dụ 3: Đếm số lượng lỗi
from events-* | search status=error | stats countBây giờ chúng ta đếm xem có bao nhiêu sự kiện lỗi. Lệnh stats count thu gom mọi hàng thành một hàng đúng với tổng số.
Ví dụ 4: Tìm các lỗi mới nhất
from events-* | search status=error | sort ts desc | head 5Sắp xếp theo ts (thời điểm) giảm dần để đặt các sự kiện mới nhất đầu tiên. Sau đó head 5 chỉ lấy 5 phần tử đầu tiên.
Ví dụ 5: Đếm theo trường
from auth-* | search action=login_failure | stats count by userLệnh này đếm số lượng đăng nhập thất bại cho từng người dùng. Cụ thể by user nhóm số lượng theo từng tên người dùng duy nhất.
Các lệnh phổ biến
| Lệnh | Chức năng | Ví dụ |
|---|---|---|
from | Chọn nguồn dữ liệu | from events-* |
search | Lọc hàng | search status=error |
where | Lọc hàng (giống search) | where host=web-01 |
stats | Tổng hợp dữ liệu | stats count, stats avg(latency) |
sort | Sắp xếp kết quả | sort ts desc |
head / limit | Lấy N hàng đầu | head 10 |
tail | Lấy N hàng cuối | tail 10 |
dedup | Loại bỏ trùng lặp | dedup user |
rename | Đặt lại tên trường | rename old_name as new_name |
eval | Tạo hoặc ghi đè trường | eval x = lower(name) |
top | Giá trị phổ biến nhất | top 5 host |
rare | Giá trị hiếm gặp nhất | rare 5 host |
Mẹo
- AND ngầm: Bạn có thể viết
search status=error host=web-01thay vìsearch status=error and host=web-01. - Pipe hoặc xuống dòng: Dùng
|hoặc nhấp Enter để phân cách các lệnh. - Mẫu chỉ mục: Dùng ký hiệu dấu sao như
events-*để tìm kiếm nhiều chỉ mục cùng lúc. - Hàm trong eval: Dùng
lower(),upper(),len(),decode_url(),decode_hex(),base64_decode()vàmatch()để biến đổi giá trị trường. - Hướng sắp xếp: Dùng
sort field descđể sắp xếp giảm dần, hoặc chínhsort fieldđể sắp xếp tăng dần.
Khắc phục sự cố
- Không có kết quả: Kiểm tra mẫu chỉ mục của bạn có khıp với dữ liệu có sẵn. Thử
from events-* | head 10để xác nhận dữ liệu tồn tại. - Thiếu trường: Trường phải tồn tại trong dữ liệu. Chạy
head 1để xem trường nào có sẵn. - Không khıp loại: BQL so sánh chuỗi chính xác.
status=200vàstatus="200"là khác nhau nếu trường được lưu dạng số nguyên.
Các bước tiếp theo
- Tham khảo lệnh - Cú pháp đầy đủ cho mọi lệnh
- Tham khảo hàm - Tất cả hàm xây dựng sẵn với ví dụ
- Mô hình dữ liệu - Các chỉ mục và tên trường có sẵn
- Hạn chế - BQL làm được gì và chưa làm được gì
- Bộ sưu tập truy vấn - Các mẫu truy vấn phổ biến cho điều tra an ninh
Chủ đề liên quan
- Bắt đầu nhanh — Mới với BQL? Bắt đầu từ đây
- Tham khảo lệnh — Cú pháp đầy đủ của mỗi lệnh
- Bộ sưu tập truy vấn — Truy vấn sẵn sàng dùng
- Hạn chế đã biết — BQL chưa làm được gì
