Graylog là một trong những công cụ quản lý log mã nguồn mở, phân tích các bản ghi đến, trích xuất dữ liệu quan trọng từ chúng, cung cấp tính năng tìm kiếm và trực quan hóa nhật ký trên giao diện web. Graylog được viết bằng Java và sử dụng một vài công cụ mã nguồn mở như Elasticsearch, MongoDB. Hai công cụ này kết hợp với Graylog và Graylog UI tạo thành một giải pháp quản lý log mạnh mẽ.
Mỗi hệ thống Graylog tối thiểu bao gồm Graylog Server, MongoDB và Elasticsearch. Mỗi thành phần này đều yêu cầu bắt buộc và không thể thay thế bằng bất kỳ công cụ nào khác.
Trong một mô hình triển khai Graylog tối giản, tất cả ba thành phần được cài đặt trên một máy chủ duy nhất. Một thiết lập Graylog tối giản có thể được sử dụng cho các hệ thống nhỏ, ít quan trọng hoặc để thử nghiệm. Hình 3.1 thể hiện kiến trúc Graylog tối giản [11], không có thành phần nào thừa và có thể thiết lập một cách dễ dàng, nhanh chóng.
Trong một hệ thống multi-node đơn giản, các thành phần Graylog và Elasticsearch đều nằm trên các máy chủ riêng của chúng. Hầu hết, MongoDB đều được cài đặt trên cùng một máy chủ với Graylog vì nó được sử dụng chủ yếu cho thông tin cấu hình ứng dụng. Tải trên MongoDB thấp nên nó thường không cần đến máy chủ riêng.
Đối với môi trường lớn hơn, hoặc khi yêu cầu tính khả dụng cao, Graylog có thể được triển khai với cấu hình multi-node phức tạp. Cả Graylog và Elasticsearch đều có thể được nhóm lại để cung cấp khả năng phục hồi trong trường hợp lỗi nút. Hệ thống multi-node thường được triển khai để xử lý một khối lượng lớn các bản ghi log. Hình 3.2 thể hiện mô hình triển khai hệ thống multi-node của Graylog [11].
Hình 3.2: Kiến trúc Multi-Node Graylog
Thiết kế multi-node phức tạp sẽ được triển khai cho các môi trường hoạt động lớn hơn. Nó bao gồm hai hoặc nhiều nút Graylog phía sau bộ cân bằng tải có nhiệm vụ phân phối tải xử lý. Bộ cân bằng tải có thể ping các nút Graylog qua HTTP trên
Graylog REST API để kiểm tra xem chúng còn sống hay không và loại các nút chết ra khỏi cụm.
Có một vài quy tắc chung khi mở rộng tài nguyên cho Graylog như sau:
Các nút Graylog nên tập trung vào CPU. Chúng cũng phục vụ giao diện web cho người dùng.
Các nút Elasticsearch nên có càng nhiều RAM càng tốt và các ổ đĩa cứng nhanh nhất có thể. Tất cả mọi thứ phụ thuộc vào tốc độ I/O ở đây.
MongoDB lưu trữ metadata và thông tin về cấu hình nên không cần nhiều tài nguyên.
Các bản tin được nhập vào chỉ được lưu trữ trong Elasticsearch. Nếu bị mất dữ liệu trong cụm Elasticsearch thì các bản tin sẽ bị mất, trừ khi đã tạo bản sao lưu trước đó.