Cách quản lí log bằng GrayLog 2 trên Ubuntu 16.04

2 năm trước

 

Mở đầu

Graylog là một nền tảng quản lí log mã nguồn mở với nhiều tính năng mạnh mẽ. Nó có khả năng gộp chung và giải nén các dữ liệu quan trọng từ server log, thứ thường được gửi sử dụng giao thức Syslog. Bên cạnh đó Graylog cũng hỗ trợ việc tìm kiếm và giúp bạn hình dung cấu trúc của log thông qua một giao diện web.

Bài viết này sẽ hướng dẫn bạn cài đặt và cấu hình Graylog trên server Ubuntu 16.04, đồng thời thiết lập một đầu vào đơn giản dùng để ghi system log.

 

Yêu cầu.

 

 

Bước 1 — Cấu hình Elasticsearch

Ta cần thay đổi file cấu hình của Elasticsearch để cluster name khớp với cluster name trong file cấu hình của Graylog. Để cho đơn giản, ta sẽ đạt cluster name của Elasticsearch giống với của Graylog là graylog. Nếu muốn bạn có thể thay nó bằng bất cứ thứ gì, nhưng hãy đảm bảo rằng cluster name trong 2 file cấu hình phải giống nhau.

Mở file cấu hình của Elasticsearch:

sudo nano /etc/elasticsearch/elasticsearch.yml

 

Tìm dòng:

/etc/elasticsearch/elasticsearch.yml
cluster.name: 

Đổi giá trị của cluster.name thành graylog:

/etc/elasticsearch/elasticsearch.yml
cluster.name: graylog

Lưu và đóng file.

Restart Elasticsearch:

sudo systemctl restart elasticsearch
 

Bước 2 — Cài Graylog

 

Đầu tiên, download kho chứa file cấu hình Graylog. Vào trang dowload này của Graylog để tìm phiên bản phù hợp. Ở đây ta dùng bàn 2.2

wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb

 

Tiếp theo cài kho vừa tải về, thay thế 2.2 bằng phiên bản mà bạn chọn.

sudo dpkg -i graylog-2.2-repository_latest.deb

 

Update lại danh sách các gói cần cài để đảm bảo bạn sẽ cài những gói mới nhất:

sudo apt-get update

 

Cài gói graylog-server :

sudo apt-get install graylog-server

 

Cuối cùng, cho phép Graylog khởi động cùng hệ thống:

sudo systemctl enable graylog-server.service

 

 

Bước 3 — Cấu hình Graylog

Sau khi cài Graylog và Elasticsearch, ta cần thay đổi một vài cài đặt trong file cấu hình của Graylog để sử dụng. Mặc định các file cấu hình của Graylog là /etc/graylog/server/server.conf 

Đầu tiên ta sẽ đặt giá trị cho password_secret. Graylog dùng giá trị này để bảo mật các mật khẩu khác của người dùng. Ở đây ta sẽ dùng một dãy mặc định gồm 128 kí tự.

Ta sẽ dùng tiện ích pwgen để tạo một mật khẩu mặc định. Cài đặt nó nếu bạn chưa cài từ trước

sudo apt install pwgen

 

Dùng phần mềm sed để đưa giá trị của password_secret vào trong file cấu hình của Graylog:

sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf

 

Tiếp theo ta sẽ đặt giá trị cho root_password_sha2. Đây là một Hashcode theo chuẩn SHA-256 của password. Ta sẽ tiếp tục dùng lệnh sed để thay đổi file cấu hình của Graylog. Bạn cũng có thể tạo mã hash bằng shasum rồi paste vào file cấu hình, nhưng làm thế rất mất thời gian.

Dùng lệnh, thay password thành administrator password mặc định của bạn:

Note: Có một khoảng trắng ở đầu dòng lệnh để tránh cho password của bạn được lưu như một đoạn text thường trong Bash history.

 sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'password' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf

 

Giờ hãy mở file cấu hình của Graylog:

 

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

Tìm và sửa những dòng sau, uncomment chúng bằng cách xóa dấu "#" ở đầu dòng và thay thế graylog_public_ip bằng địa chỉ IP công cộng của server, hoặc domain name của server.

/etc/graylog/server/server.conf
...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/
...
web_listen_uri = http://your_server_ip_or_domain:9000/
...

Lưu và đóng file.

Khởi động lại dịch vụ graylog-server 

sudo systemctl restart graylog-server

 

Kiểm tra trạng thái của server:

sudo systemctl status graylog-server

 

Output sẽ như sau:

● graylog-server.service - Graylog server
Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago
Docs: http://docs.graylog.org/
Main PID: 1300 (graylog-server)
Tasks: 191 (limit: 9830)
Memory: 1.2G
CPU: 14h 57min 21.475s
CGroup: /system.slice/graylog-server.service
├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server
└─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon

Trạng thái của nó sẽ là active .

Nếu output hiển thị rằng hệ thoogns chưa được khởi đông, kiểm tra /var/log/syslog để sửa lỗi.Đảm bảo bạn đã cài Javakhi cài Elasticsearch, và bạn đã thực hiện đúng các lệnh trong Bước 3. Sau đó thử khởi động lại server.

Nếu bạn đã cấu hình firewall với ufw, cho phép kết nối qua TCP port 9000 để có thể truy cập giao diện web của Graylog

sudo ufw allow 9000/tcp

 

Khi Graylog đang chạy, bạn sẽ có thể truy cập vào http://your_server_ip:9000 . Bạn sẽ phải đợi một vài phút sau khi khởi động lại graylog-server ,và hãy chắc chắn rằng MongoDB đang chạy.

 

 

Bước 4 — Tạo một Input để test

Giờ hãy thêm một input cho Graylog để nhận log. Inputs này sẽ cho Graylog cổng nào đang nghe và giao thức nào sẽ được sử dụng. Ta sẽ thêm vào một input dùng giao thức Syslog UDP.

Khi vào trang http://your_server_ip:9000 bằng trình duyệt, bạn sẽ thấy một trang đăng nhập. Dùng admin cho username, và password đã tạo ở bước 3 để đăng nhập.

Khi đăng nhập thành công, bạn sẽ thấy một trang như sau:

Để xem những trang dùng làm input, click System và chọn Inputs.

Bạn sẽ thấy một hộp thoại chứa dòng Select Input. Bấm vào nó và chọn Syslog UDP sau đó click Launch new input.

Điền vào những giá trị sau:

  1. Với Node,chọn server của bạn.
  2. Ở Title, chọn một title phù hợp, chẳng hạn Linux Server Logs.
  3. Ở Bind address, nhập vào private IP adress của server. Nếu muốn nhận log từ những server khác (không nên vì Syslog không hỗ trợ xác thực bào mật),đặt nó là 0.0.0.0 
  4. Với Port, nhập 8514. Lưu ý rằng ta dùng cổng 8514 vì cổng 0 đến 1024 chỉ có thể được dùng bởi root user. Dùng bất cứ cổng nào trên 1024 miễn là nó không trùng với dịch vụ khác.

Click Save. Bạn sẽ nhận được một input mới như sau:

Screenshot of local inputs

 

 

Bước 5 — Cấu hình Server để gửi Logs cho Graylog

Ta đã có một input được cấu hình trên cổng 8514, nhưng vẫn chưa gửi dứ liệu cho nó nên không có log được hiển thị trên web. rsyslog là một phần mềm tiện ích dùng để điều hướng logvà được cài sẵn trên Ubuntu, nên ta sẽ dùng nó để gửi log cho Graylog. Ở đây ta sẽ cấu hình để Ubuntu server chạy Graylog để gửi những system log của chính nó cho input ta vừa tạo

Note: Nếu muốn gửi log từ server khác vào, ta cần những ngoại lệ UDP trên cổng 8514 để cho phép nhận dữ liệu từ những server khác.

  • sudo ufw allow 8514/udp

 

Tạo một file cấu hình rsyslog 

sudo nano /etc/rsyslog.d/60-graylog.conf

 

Thêm vào dòng sau, thay your_server_private_ip bằng private IP adress của Graylog server.

/etc/rsyslog.d/60-graylog.conf
*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format

Lưu và thoát.

Khởi đọng lại rsyslog 

sudo systemctl restart rsyslog

 

Thêm các dòng khác cho những server bạn muốn nhận log.

Giờ bạn đã có thể xem log của server trên Web. Click vào tab Sources trên thanh điều hướng để xem đồ thị biểu diễn các nguồn.

Screenshot of sources

Bạn cũng có thể vào tab Search để xem qua những log gần đây.

 

Tổng kết

Bạn đã cài đặt và cấu hình xong một Graylog server với một nguồn input để thu thập log từ nhiều server khác nhau.

Tiếp theo, bạn có thể cài đặt dashboard, cảnh báo, và các luồng( stream). Dashboard cung cấp thông tin cơ bản về các log. Các luồng phân loại các mẩu tin để bạn có thể dùng chúng cho các cảnh báo. Để biết thêm thông tin về các thao táo này, hãy thường xuyên ghé thăm ViCloud Community để cập nhật những bài viết mới nhất.