Cài đặt Graylog trên VPS: Xây dựng hệ thống quản lý log tập trung chuẩn Enterprise (2026)

Tác giả: Trần Thảo 09 tháng 02, 2026

Trong kỷ nguyên của Microservices và Cloud VPS, việc quản trị hệ thống không còn đơn thuần là đảm bảo máy chủ “luôn hoạt động”. Thách thức lớn nhất nằm ở khả năng quan sát (Observability). Khi hệ thống của bạn mở rộng từ 1 máy chủ lên 10, 20 hay 50 VPS, phương pháp debug truyền thống – SSH vào từng máy và kiểm tra log thủ công – trở thành một vấn đề nan giải. Bạn không thể biết lỗi 500 vừa xảy ra nằm ở Database Server, API Gateway hay Worker Node.

Đó là lúc bạn cần một hệ thống Centralized Log Management (CLM).

Trong khi ELK Stack (Elasticsearch, Logstash, Kibana) là một cái tên phổ biến, nó thường bị đánh giá là khá cồng kềnh, tiêu tốn tài nguyên và phức tạp trong cấu hình. Graylog nổi lên như một giải pháp thay thế tối ưu: Mạnh mẽ, giao diện trực quan, hỗ trợ phân quyền chi tiết và quan trọng nhất – hiệu quả về tài nguyên.

Bài viết này sẽ là tài liệu hướng dẫn kỹ thuật chi tiết (Definitive Guide) để bạn tự tay cài đặt Graylog trên VPS, sử dụng kiến trúc Data Node trên nền tảng Ubuntu 22.04/24.04 LTS.

Hoạch định tài nguyên khi cài đặt Graylog trên VPS 8GB

Thách thức lớn nhất khi triển khai Graylog cho các doanh nghiệp vừa và nhỏ (SMB) là chi phí hạ tầng. Chúng ta thường muốn vận hành tất cả các thành phần trên một VPS duy nhất để tối ưu chi phí. Tuy nhiên, Graylog là một hệ thống xử lý dữ liệu lớn (Big Data), yêu cầu tài nguyên RAM đáng kể.

Để vận hành ổn định trên một VPS 8GB RAM, chúng ta không thể sử dụng cấu hình mặc định. Cần áp dụng các kỹ thuật tối ưu VPS và kỷ luật “ngân sách bộ nhớ” (Memory Budgeting) nghiêm ngặt.

Kiến trúc thành phần và phân bổ RAM

Hệ thống Graylog 7.0 bao gồm 3 thành phần chính.

Kiến trúc triển khai Graylog 7.0 bao gồm Graylog Server và Data Node.

Kiến trúc logic các thành phần trong Graylog 7.0. Lưu ý: Thông số phần cứng trong ảnh là mức khuyến nghị cho hệ thống lớn (Large Production). Với hướng dẫn này, chúng ta sẽ thực hiện các bước tối ưu hóa chuyên sâu (Memory Budgeting) để vận hành ổn định cấu trúc trên chỉ với 8GB RAM.

Dưới đây là bảng phân bổ RAM giới hạn cứng (Hard Limit) mà chúng ta sẽ cấu hình:

Thành phần Vai trò RAM cấp phát (Heap) Giải thích kỹ thuật
Graylog Data Node Lưu trữ & Tìm kiếm (Core OpenSearch) 2.5 GB Đây là thành phần trung tâm của hệ thống. Chúng ta cấp vừa đủ để index log nhưng không ảnh hưởng đến tài nguyên OS.
Graylog Server Xử lý Pipeline & Web Interface 1.5 GB Chịu trách nhiệm nhận log, xử lý luật (rules) và hiển thị dashboard.
MongoDB Lưu trữ Metadata (Users, Alerts) ~1.5 GB MongoDB sử dụng WiredTiger engine, nó sẽ tự động dùng RAM khả dụng làm cache.
Hệ điều hành Kernel & Filesystem Cache ~2.5 GB Phần RAM còn lại dành cho cache ổ cứng và buffer mạng – yếu tố quan trọng cho hiệu năng I/O.

Yêu cầu phần cứng chi tiết

  • CPU: Tối thiểu 4 Cores (Xử lý các luồng Java và Indexing song song).
  • Disk: 100GB SSD trở lên. Khuyến nghị định dạng XFS thay vì EXT4 để tối ưu hóa hiệu năng ghi của MongoDB và Data Node.
  • Network: Mở các port 80, 443 (Web) và port nội bộ (nếu cần).

Tối ưu hóa hệ điều hành (OS tuning)

Trước khi cài đặt bất kỳ phần mềm nào, chúng ta cần chuẩn bị một nền tảng hệ điều hành ổn định. Đảm bảo bạn đã nắm vững các lệnh Linux cơ bản để thao tác chính xác trên Terminal.

Thiết lập múi giờ (Timezone)

Log sẽ giảm giá trị nếu sai lệch thời gian. Hãy đảm bảo Server chạy đúng giờ Việt Nam để việc đối soát sự cố chính xác.

sudo timedatectl set-timezone Asia/Ho_Chi_Minh

Kiểm tra lại bằng lệnh date để xác nhận.

Vô hiệu hóa Swap (Bắt buộc)

Đây là bước tối ưu hiệu năng quan trọng. Graylog Data Node sử dụng bộ nhớ RAM để map các file index. Nếu OS đẩy các trang nhớ này xuống ổ cứng (Swap), hiệu năng tìm kiếm và ghi log sẽ giảm đáng kể, có thể gây treo hệ thống.

Tắt Swap tạm thời:

sudo swapoff -a

Để tắt vĩnh viễn (ngăn tự bật lại sau khi khởi động lại), bạn cần chỉnh sửa file cấu hình /etc/fstab. Tìm dòng chứa chữ swap và thêm dấu # vào đầu dòng để vô hiệu hóa nó:

sudo nano /etc/fstab

Tối ưu hóa Kernel cho OpenSearch

Data Node yêu cầu tăng giới hạn bộ nhớ ảo (Virtual Memory Areas) để quản lý các index lớn. Nếu bỏ qua bước này, Data Node sẽ không thể khởi động.

Thực hiện lệnh sau để thêm cấu hình:

echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf

Áp dụng cấu hình ngay lập tức:

sudo sysctl -p

Cài đặt cơ sở dữ liệu MongoDB

Graylog 7.0 yêu cầu phiên bản MongoDB hiện đại (7.x hoặc 8.x). Chúng ta sẽ cài đặt phiên bản mới nhất từ Repository chính thức để đảm bảo tính ổn định và bảo mật.

Bước 1: Cài đặt các công cụ hỗ trợ

sudo apt update && sudo apt upgrade -y
sudo apt install -y gnupg curl wget pwgen apt-transport-https

Bước 2: Thêm GPG Key của MongoDB

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor

Bước 3: Thêm Repository (Tự động nhận diện phiên bản OS)

Lệnh dưới đây sử dụng biến $(lsb_release -sc) để tự động chọn đúng phiên bản jammy (22.04) hoặc noble (24.04), tránh lỗi sai đường dẫn nguồn.

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu $(lsb_release -sc)/mongodb-org/8.0 multiverse" | \
   sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Bước 4: Cài đặt và kích hoạt dịch vụ

sudo apt update
sudo apt install -y mongodb-org
sudo systemctl daemon-reload
sudo systemctl enable --now mongod

Kiểm tra: Sử dụng lệnh systemctl status mongod và đảm bảo trạng thái là Active (running).

Cài đặt Graylog Data Node & tối ưu JVM

Đây là bước thay đổi lớn nhất so với các phiên bản cũ. Data Node giúp bạn không phải cấu hình phức tạp với Elasticsearch/OpenSearch.

Bước 1: Tải và cài đặt Repository Graylog

wget https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb
sudo dpkg -i graylog-7.0-repository_latest.deb
sudo apt update

Bước 2: Cài đặt gói Data Node

sudo apt install graylog-datanode -y

Bước 3: Cấu hình bảo mật (Password Secret)

Graylog yêu cầu một chuỗi bí mật để mã hóa dữ liệu session và password. Hãy tạo một chuỗi ngẫu nhiên mạnh:

openssl rand -hex 32

Lưu ý: Sao chép chuỗi ký tự đầu ra (Ví dụ: a1b2c3d4e5...) ra notepad. Bạn sẽ cần dùng nó cho cả Data Node và Server.

Sửa file cấu hình chính:

sudo nano /etc/graylog/datanode/datanode.conf

Tìm tham số password_secret và dán chuỗi vừa tạo vào:

password_secret = a1b2c3d4e5...

Ngoài việc đặt password mạnh, bạn cũng nên cân nhắc sử dụng SSH Key thay vì mật khẩu truyền thống để tăng cường bảo mật cho phiên làm việc.

Bước 4: Giới hạn RAM (JVM Heap) – Cực kỳ quan trọng

Mặc định, Data Node sẽ cố gắng sử dụng 50% RAM hệ thống (tức 4GB trên VPS 8GB). Điều này sẽ gây áp lực lớn lên OS và các dịch vụ khác. Chúng ta cần can thiệp thủ công.

Mở file cấu hình JVM (khác với file .conf):

sudo nano /etc/graylog/datanode/jvm.options

Thêm hoặc sửa 2 dòng sau để khóa RAM ở mức 2.5GB:

-Xms2500m
-Xmx2500m

Bước 5: Khởi động Data Node

sudo systemctl enable --now graylog-datanode

Cài đặt Graylog Server & kết nối thành phần

Thành phần cuối cùng là Graylog Server – bộ não của hệ thống.

Bước 1: Cài đặt gói Server

sudo apt install graylog-server -y

Bước 2: Tạo mật khẩu Admin (SHA256)

Graylog không lưu mật khẩu dạng text mà lưu dạng Hash. Bạn cần tạo hash cho mật khẩu quản trị (Ví dụ: AdminPass123).

echo -n "AdminPass123" | sha256sum

Sao chép chuỗi Hash đầu ra (64 ký tự).

Bước 3: Cấu hình server.conf

Đây là file cấu hình quan trọng nhất. Hãy chỉnh sửa cẩn thận.

sudo nano /etc/graylog/server/server.conf

Bạn cần tìm và sửa 5 tham số sau:

  1. password_secret: Dán chuỗi bí mật (Phải GIỐNG HỆT bên Data Node).
  2. root_password_sha2: Dán chuỗi Hash mật khẩu admin vừa tạo.
  3. mongodb_uri: Cấu hình tường minh kết nối DB.
    mongodb_uri = mongodb://localhost:27017/graylog
  4. http_bind_address: Chỉ lắng nghe trên localhost để bảo mật.
    http_bind_address = 127.0.0.1:9000
  5. http_external_uri: (Bắt buộc) Đường dẫn công khai mà trình duyệt dùng để gọi API. Nếu thiếu dòng này, bạn sẽ gặp lỗi khi đăng nhập hoặc tải dashboard.
    http_external_uri = https://log.yourdomain.com/

Bước 4: Giới hạn RAM cho Server

Tương tự Data Node, chúng ta giới hạn Server ở mức 1.5GB.

sudo nano /etc/default/graylog-server

Sửa dòng GRAYLOG_SERVER_JAVA_OPTS:

GRAYLOG_SERVER_JAVA_OPTS="-Xms1500m -Xmx1500m -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow"

Bước 5: Khởi động Server

sudo systemctl daemon-reload
sudo systemctl enable --now graylog-server

Thiết lập bảo mật: Nginx Reverse Proxy & HTTPS

Chúng ta tuyệt đối không mở port 9000 trực tiếp ra Internet. Sử dụng Nginx giúp chúng ta có SSL (HTTPS) miễn phí và ẩn giấu hạ tầng bên trong.

Bước 1: Cài đặt Nginx

sudo apt install nginx -y

Bước 2: Cấu hình Virtual Host

Tạo file cấu hình mới:

sudo nano /etc/nginx/sites-available/graylog

Dán nội dung sau (Thay log.yourdomain.com bằng tên miền của bạn):

server {
    listen 80;
    server_name log.yourdomain.com;
    # Chuyển hướng toàn bộ HTTP sang HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name log.yourdomain.com;

    # (Certbot sẽ tự động chèn đường dẫn SSL vào đây sau)

    location / {
      proxy_set_header Host $http_host;
      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      
      # Header cực kỳ quan trọng: Báo cho Graylog biết client đang dùng HTTPS
      proxy_set_header X-Graylog-Server-URL https://$server_name/;
      
      proxy_pass        http://127.0.0.1:9000;
    }
}

Bước 3: Kích hoạt site và cài SSL (Let’s Encrypt)

sudo ln -s /etc/nginx/sites-available/graylog /etc/nginx/sites-enabled/
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d log.yourdomain.com

Bước 4: Cấu hình tường lửa (UFW)

Chỉ cho phép truy cập Web và SSH.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp
sudo ufw enable

Việc cấu hình tường lửa là bắt buộc. Bạn có thể tham khảo hướng dẫn chi tiết về cấu hình UFW Ubuntu để kiểm soát chặt chẽ các cổng vào ra.

Kiểm tra sức khỏe hệ thống (Health check)

Sau khi hoàn tất, hãy dành thời gian kiểm tra log trước khi đăng nhập.

Sử dụng lệnh:

tail -f /var/log/graylog-server/server.log | grep "Data Node"

Nếu bạn thấy dòng: INFO [DataNodeService] Data Node is available, xin chúc mừng! Hệ thống đã kết nối thành công. Nếu hệ thống không kết nối được, hãy kiểm tra xem VPS có bị mất kết nối mạng hoặc bị chặn bởi Firewall hay không.

Bây giờ, hãy truy cập https://log.yourdomain.com và đăng nhập bằng tài khoản admin.

Quản lý log tập trung với Sidecar (Centralized management)

Đây là tính năng giá trị nhất của hệ thống. Thay vì cài Filebeat thủ công và sửa file config trên từng máy client (cách làm thủ công), chúng ta sẽ dùng Graylog Sidecar.

Sidecar là một agent quản lý. Nó nhận cấu hình từ Graylog Server và tự động áp dụng xuống Filebeat trên máy con. Khi bạn muốn thay đổi log cần lấy, bạn chỉ cần thao tác trên Web Graylog.

Sơ đồ hoạt động của Graylog Sidecar quản lý Filebeat và Winlogbeat đẩy log về Server trung tâm.

Cơ chế Centralized Management: Graylog Sidecar (trên máy Client) nhận lệnh từ Server để tự động điều phối Filebeat thu thập log, thay vì phải cấu hình thủ công từng máy.

Tạo API Token cho Sidecar

  1. Trên Web Interface, vào System > Sidecars.
  2. Bấm dòng chữ “Create or manage a user for the Sidecar process”.
  3. Tạo user mới tên sidecar.
  4. Bấm Create Token, đặt tên là sidecar-token. Sao chép Token này ngay lập tức.

Chuẩn bị Input nhận Log

Để nhận log từ Filebeat, ta cần mở cổng nghe:

  1. Vào System > Inputs.
  2. Chọn Beats, bấm Launch new input.
  3. Cấu hình:
    • Title: Sidecar Beats Input
    • Port: 5044
    • Bind address: 0.0.0.0
  4. Bấm Save.

Cài đặt Sidecar trên VPS Client (Máy cần lấy log)

Thực hiện trên máy Client (Ubuntu/Debian):

# Tải và cài đặt Sidecar package
wget https://packages.graylog2.org/repo/packages/graylog-sidecar-repository_1-5_all.deb
sudo dpkg -i graylog-sidecar-repository_1-5_all.deb
sudo apt update && sudo apt install graylog-sidecar -y

# Cài đặt Filebeat (Core collector)
sudo apt install filebeat -y

Kết nối Sidecar về Server

Trên máy Client, sửa file cấu hình:

sudo nano /etc/graylog/sidecar/sidecar.yml

Sửa 2 dòng sau:

# Địa chỉ API của Graylog Server (Lưu ý phải có /api/ ở cuối)
server_url: "https://log.yourdomain.com/api/"

# Token bạn vừa copy ở Bước trên
server_api_token: "Dan_Token_Vao_Day"

# Tên định danh cho máy này
node_name: "vps-client-01"
update_interval: 10
send_status: true

Khởi động Sidecar:

sudo graylog-sidecar -service install
sudo systemctl start graylog-sidecar

Đẩy cấu hình từ Web Interface (Magic Step)

Quay lại Graylog Server, vào System > Sidecars, bạn sẽ thấy vps-client-01 hiện lên trạng thái màu xanh.

  1. Chuyển sang tab Configuration.
  2. Bấm Create Configuration.
  3. Chọn Filebeat on Linux.
  4. Đặt tên: Linux System Logs.
  5. Trong khung Configuration, dán nội dung sau (Đây là cấu hình chuẩn để lấy syslog và auth log):
# Cấu hình Sidecar chuẩn cho Linux
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
fields.gl2_source_collector: ${sidecar.nodeId}

filebeat.inputs:
- type: filestream
  id: system-logs
  enabled: true
  paths:
    - /var/log/syslog
    - /var/log/auth.log
    - /var/log/kern.log

output.logstash:
  # Trỏ về địa chỉ Graylog Server (Port 5044)
  hosts: ["log.yourdomain.com:5044"]
  1. Bấm Create.
  2. Vào tab Administration, tìm vps-client-01. Bấm vào ô filebeat, chọn Linux System Logs vừa tạo.
  3. Sau vài giây, trạng thái sẽ chuyển sang Running. Log sẽ bắt đầu đổ về Graylog!

Hậu mãi sau cài đặt: Quản lý vòng đời log (Log rotation)

Một vấn đề thường gặp của người mới là quên cấu hình xóa log cũ, dẫn đến việc ổ cứng VPS bị đầy sau một thời gian vận hành.

Hãy cấu hình ngay lập tức:

  1. Vào System > Indices.
  2. Tại Default Index Set, bấm Edit.
  3. Rotation Strategy: Chọn Index Size. Đặt là 5 GB (Mỗi khi log đủ 5GB sẽ đóng gói thành 1 file index).
  4. Retention Strategy: Chọn Delete.
  5. Max number of indices: Đặt là 10.

Ý nghĩa: Hệ thống sẽ giữ lại 10 file index, mỗi file 5GB. Tổng dung lượng log lưu trữ tối đa là 50GB. Khi vượt quá, nó sẽ xóa file cũ nhất. Điều này đảm bảo VPS của bạn không bao giờ bị đầy ổ cứng.

Câu hỏi thường gặp (FAQ)

1. Tại sao nên dùng Data Node thay vì OpenSearch thường?

Dễ cài đặt và quản lý. Data Node là gói OpenSearch được Graylog tinh chỉnh sẵn. Nó tự động thiết lập kết nối, quản lý SSL và Cluster mà không yêu cầu bạn phải chỉnh sửa thủ công các file cấu hình phức tạp như OpenSearch truyền thống.

2. Graylog Sidecar có tác dụng gì?

Quản lý cấu hình tập trung. Thay vì phải SSH vào từng VPS để sửa file filebeat.yml mỗi khi muốn lấy thêm log, Sidecar cho phép bạn tạo cấu hình trên Web Graylog và đẩy xuống hàng loạt máy con chỉ với 1 thao tác.

3. Tôi có thể cài Graylog trên VPS 4GB RAM không?

Không khuyến khích. Mô hình All-in-One chạy 3 dịch vụ nặng. 4GB RAM rất dễ gây treo (Crash). Nếu bắt buộc, hãy tạo Swap 4GB và chấp nhận hiệu năng thấp.

4. Tại sao cài xong không truy cập được Web Interface?

Thiếu http_external_uri hoặc bị chặn Port. Kiểm tra file server.conf xem đã có dòng http_external_uri chưa. Đồng thời kiểm tra Firewall (UFW/Security Group) đã mở port 80/443 (nếu qua Nginx) hoặc 9000 chưa.

5. Log hiển thị bị sai giờ (Lệch Timezone)?

Chưa đồng bộ Timezone. Cần chỉnh Timezone về Asia/Ho_Chi_Minh ở cả 3 nơi: Hệ điều hành VPS (timedatectl), file cấu hình server.conf, và trong Profile của User Admin trên giao diện Web.

6. Làm thế nào để lấy log từ Windows Server?

Dùng Sidecar cho Windows. Cài đặt Graylog Sidecar phiên bản Windows và Winlogbeat. Sau đó tạo cấu hình “Winlogbeat” trên giao diện Web để lấy Event Log.

7. Ổ cứng bị đầy, làm sao giới hạn dung lượng log?

Cấu hình Index Rotation. Vào System > Indices. Chuyển Rotation sang “Index Size” (VD: 5GB) và Retention sang “Delete” (VD: Giữ 10 file). Hệ thống sẽ tự xóa log cũ khi vượt quá 50GB.

Kết luận

Chúc mừng! Bạn vừa hoàn thành việc triển khai một hệ thống quản lý log tập trung chuẩn Enterprise. Với kiến trúc Graylog Data Node kết hợp với Sidecar, bạn có trong tay một công cụ mạnh mẽ để giám sát hạ tầng, phát hiện lỗi nhanh chóng và bảo mật dữ liệu.

Hệ thống này được thiết kế để vận hành ổn định trên VPS 8GB RAM nhờ chiến lược phân bổ bộ nhớ hợp lý, đồng thời sẵn sàng mở rộng lên nhiều Node vệ tinh nhờ cơ chế quản lý tập trung. Tuy nhiên, Graylog chỉ là một phần, hãy tìm hiểu thêm về tầm quan trọng của giám sát VPS để có cái nhìn toàn diện hơn về hạ tầng của mình.

Hãy bắt đầu khám phá sức mạnh của dữ liệu log ngay hôm nay!

Tài liệu tham khảo