Hướng dẫn chi tiết các bước thiết lập cấu hình Stream và Index Set trong Graylog giúp quản lý và tối ưu hóa hệ thống giám sát log của bạn với Graylog.
Bài viết này nhằm giúp bạn hiểu rõ hơn về hai khái niệm quan trọng trong Graylog: Stream và Index Set. Chúng ta sẽ đi sâu vào cách tạo, quản lý và ứng dụng của chúng trong việc quản lý log. Hiểu rõ về Stream và Index Set sẽ giúp bạn tối ưu hóa việc sử dụng Graylog và nâng cao hiệu quả quản lý dữ liệu log.
>>> Có thể bạn quan tâm:
1. Tổng quan Stream và Index Set trong Graylog
![Stream và Index Set trong Graylog Stream và Index Set trong Graylog](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog.png%3Fidentify%3DwOpEz51bsyMV5cmISgC0&w=1920&q=90)
Stream và Index Set trong Graylog đóng vai trò quan trọng trong việc quản lý log hiệu quả. Stream giúp phân loại và phân phối log theo các quy tắc cụ thể, giúp dễ dàng giám sát và phát hiện sự cố. Index Set quản lý việc lưu trữ log, tối ưu hóa hiệu suất truy vấn và đảm bảo log không vượt quá dung lượng cho phép. Sự tích hợp giữa Stream và Index Set giúp tối ưu hóa việc quản lý và truy xuất dữ liệu log, từ đó nâng cao hiệu quả và tuân thủ quy định bảo mật.
2. Stream trong Graylog
![Streams trong Graylog Streams trong Graylog](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25281%2529.png%3Fidentify%3DszuNngOE0A0nNpjhlnO9&w=1920&q=90)
Streams trong Graylog là cách bạn tổ chức và phân loại log dựa trên các tiêu chí cụ thể.
Mặc định các Input đi vào Default Stream và được lưu trữ ở Default index set. Nhưng khi ta muốn lọc log xác thực (authority and security) ra một luồng, log của http (nginx) ra một luồng thì ta cần đến stream.
Lý do tại sao ta cần phải dùng đến Stream là để lọc và phân chia ra các loại log thiết yếu. Ví dụ log xác thực thì cần có thời gian lưu trữ lâu và cần phải có cảnh báo nên ta cần tạo ra các luồng dữ liệu như thế để quản lý dễ dàng.
2.1 Cấu trúc hoạt động của Stream
- Đầu tiên từ các Input (hay Source) sẽ gửi các message (log). Lúc này gray log nhận được log thì nó sẽ đến việc lọc log.
- Extractor Filter: sẽ là trường lọc log đầu tiên, lúc này cấu trúc các biến trong log sẽ thay đổi.
- Tiếp đó đến Static Field Filter sẽ bắt đầu lọc tiếp trường này để phân loại log.
- Tiếp đến Stream Matcher Filter sẽ bắt đầu lọc ra các luồng mà chúng ta mong muốn. (Mỗi luồng sẽ có các tiêu chí phù hợp để lọc)
- Từ Stream lọc ra lúc này sẽ được duyệt qua các Stream rules từ đó sẽ cho ta biết các thức mà log đó được lưu trữ trong MongoDB (lưu bao nhiêu bản, dung lượng bao nhiêu, bao lâu thì xóa).
- Ngoài ra Stream cũng cung cấp các chức năng đến output trực tiếp và dựa vào Elastic Search để lập chỉ mục.
![Cấu trúc hoạt động của Stream Cấu trúc hoạt động của Stream](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25282%2529.png%3Fidentify%3DOfcGgFEv18sDbQd2ZN5t&w=1920&q=90)
2.2 Các thành phần có trong Stream
Stream Rules (Quy tắc của Stream):
- Field Content Alert: Kiểm tra xem một trường cụ thể có chứa một giá trị nhất định hay không.
- Field Presence: Kiểm tra xem một trường cụ thể có tồn tại trong thông điệp hay không.
- Field Value: Kiểm tra xem một trường cụ thể có giá trị lớn hơn, nhỏ hơn, bằng, hoặc không bằng một giá trị nhất định.
- Regex Match: Kiểm tra xem một trường cụ thể có khớp với một biểu thức chính quy hay không.
Stream Alerts (Cảnh báo của Stream): Thiết lập cảnh báo dựa trên các điều kiện của stream. Ví dụ, cảnh báo khi có một số lượng nhất định các thông điệp khớp với quy tắc của stream trong một khoảng thời gian nhất định.
Stream Outputs (Đầu ra của Stream): Định tuyến các thông điệp log khớp với quy tắc của stream đến các đầu ra cụ thể như một index khác, một hệ thống bên ngoài (qua HTTP, email, hoặc các plugin khác).
Permissions (Quyền hạn): Quản lý quyền truy cập vào stream cho các người dùng hoặc nhóm người dùng khác nhau. Bạn có thể thiết lập ai có quyền đọc, ghi, hoặc quản lý stream.
Associated Pipelines (Các Pipeline Liên quan): Áp dụng các pipeline rule cụ thể cho các thông điệp log khớp với stream để thực hiện các xử lý bổ sung như làm sạch dữ liệu, thêm hoặc sửa đổi các trường, hoặc định tuyến thêm.
3. Index Set trong Graylog
3.1 Indices là gì?
Indices là cách Graylog lưu trữ dữ liệu log trên backend. Mỗi index chứa một tập hợp các log và có các cài đặt cụ thể như kích thước tối đa, số lượng phân đoạn, và thời gian giữ lại dữ liệu.
Mục đích chính để sử dụng Indices:
- Quản lý lưu trữ: Khi bạn cần quản lý lưu trữ dữ liệu log và kiểm soát cách dữ liệu được lưu trữ, phân đoạn và giữ lại.
- Quản lý vòng đời dữ liệu: Khi bạn cần thiết lập chính sách vòng đời dữ liệu để tự động xóa hoặc lưu trữ dữ liệu cũ sau một khoảng thời gian nhất định.
3.2 Các thành phần chính của Indices
Index Set: Một tập hợp các chỉ mục được quản lý như một đơn vị logic duy nhất. Mỗi index set có các cấu hình cụ thể như pattern, retention, và rotation.
Index Rotation:
- Size-based rotation: Xoay vòng khi kích thước của index đạt đến một ngưỡng cụ thể.
- Time-based rotation: Xoay vòng theo chu kỳ thời gian (hàng giờ, hàng ngày, hàng tuần, hoặc hàng tháng).
- Message Count-based rotation: Xoay vòng khi số lượng thông điệp trong index đạt đến một ngưỡng cụ thể.
Index Retention:
- Delete: Xóa các index cũ sau một khoảng thời gian hoặc khi số lượng index đạt đến một ngưỡng cụ thể.
- Close: Đóng các index cũ nhưng giữ lại chúng trên hệ thống.
- Archive: Lưu trữ các index cũ để lưu trữ lâu dài nhưng không còn được truy cập thường xuyên.
Index Configuration:
- Shards: Số lượng phân đoạn mà index sẽ được chia nhỏ để tối ưu hóa hiệu suất truy vấn và lưu trữ.
- Replicas: Số lượng bản sao của mỗi phân đoạn để đảm bảo khả năng chịu lỗi và hiệu suất.
Index Mappings: Xác định cấu trúc của dữ liệu được lưu trữ trong index, bao gồm các loại dữ liệu và các trường cụ thể. Mappings giúp Elasticsearch hiểu cách lưu trữ và truy vấn dữ liệu.
Retention Strategy: Chiến lược để xác định khi nào các dữ liệu log cũ nên được xóa hoặc lưu trữ để quản lý không gian lưu trữ hiệu quả.
4. Thực hành cấu hình Stream và Index Set trong Graylog
Tiếp theo chúng tôi sẽ hướng dẫn bạn cấu hình stream và index set cho những log đăng nhập thành công hay thất bại vào vcenter.
![Đầu tiên ta cần tạo index set để lưu trữ các log về việc đăng nhập vào vcenter Đầu tiên ta cần tạo index set để lưu trữ các log về việc đăng nhập vào vcenter](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25283%2529.png%3Fidentify%3D2djIw0wWrmnDWhMfCdjp&w=1920&q=90)
![Đầu tiên ta cần tạo index set để lưu trữ các log về việc đăng nhập vào vcenter 2 Đầu tiên ta cần tạo index set để lưu trữ các log về việc đăng nhập vào vcenter 2](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25284%2529.png%3Fidentify%3DzAboY0WmcktCUK3sK7SS&w=1920&q=90)
![Tiếp theo ta cần tạo grok partern để phân loại ra những log đăng nhập của vcenter 1 Tiếp theo ta cần tạo grok partern để phân loại ra những log đăng nhập của vcenter 1](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25285%2529.png%3Fidentify%3DZ2g4xd9bcvH92HQNocNN&w=1920&q=90)
![Tiếp theo ta cần tạo grok partern để phân loại ra những log đăng nhập của vcenter 2 Tiếp theo ta cần tạo grok partern để phân loại ra những log đăng nhập của vcenter 2](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25286%2529.png%3Fidentify%3DstLOv8svbzAXf3m6TUEt&w=1920&q=90)
Event \[%{NUMBER}\] \[1-1] \[%{TIMESTAMP_ISO8601:time}\] \[vim.event.EventEx] \[%{LOGLEVEL:lever}] \[%{DATA:user_login}] \[] \[%{NUMBER}] \[%{GREEDYDATA:action} %{DATA} from %{IPV4:ip} at %{MONTHNUM}/%{MONTHDAY}/%{YEAR} %{HOUR}:%{MINUTE}:%{SECOND} %{WORD} in SSO |
![Tiếp theo ta cần tạo stream Tiếp theo ta cần tạo stream](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25287%2529.png%3Fidentify%3DYKkTdOPI3AvuC826QNao&w=1920&q=90)
![Stream và index set trong graylog 10 Stream và index set trong graylog 10](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25288%2529.png%3Fidentify%3DkfrZGwHROULKpBeLRnHP&w=1920&q=90)
![Cuối cùng ta sẽ tạo stream rule Cuối cùng ta sẽ tạo stream rule](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%25289%2529.png%3Fidentify%3DVPleL4MElKzlJQqTk1Zm&w=1920&q=90)
![Cuối cùng ta sẽ tạo stream rule 2 Cuối cùng ta sẽ tạo stream rule 2](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%252810%2529.png%3Fidentify%3Dvq9YmLPduRT9GpNGDgJM&w=1920&q=90)
![Nhớ tích chọn cho phép thỏa mãn điều kiện của 1 trong các rules nhé Stream và index set trong graylog 11](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%252811%2529.png%3Fidentify%3DECJLHSqPUFzX2i5vV59e&w=1920&q=90)
![Bây giờ ta sẽ tiến hành kiểm tra kết quả Stream và index set trong graylog 12](/_next/image?url=https%3A%2F%2Fsuncloud.vn%2Fcdn%2Fadmin%2F20242307%2FStream-index-set-trong-graylog_%252812%2529.png%3Fidentify%3DmTHcACoFPxxE58JzpBB0&w=1920&q=90)
Kết luận
Trong bài viết này, chúng ta đã tìm hiểu về hai khái niệm quan trọng trong Graylog: Stream và Index Set, cũng như khám phá cách tạo, quản lý và ứng dụng của chúng trong việc quản lý log. Hiểu rõ về Stream và Index Set sẽ giúp bạn tối ưu hóa việc sử dụng Graylog và nâng cao hiệu quả quản lý dữ liệu log. Nếu gặp phải vướng mắc cần giải đáp, hãy liên hệ với chúng tôi để được hỗ trợ sớm nhất nhé.