Cách quản lí log bằng GrayLog 2 trên Ubuntu 16.04
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.
- Một Cloud Server chạy Ubuntu 16.04 với ít nhất 2 GB RAM, với private network được kích hoạt, cùng một non-root user. Tham khảo Thiết lập ban đầu cho server dùng Ubuntu 16.04.
- Oracle JDK ( Java Development Toolkit) 8.
- Elasticsearch 2.x. Lưu ý rằng những phiên bản Graylog khác nhau chỉ tương thích với một vài phiên bản Elasticsearch nhất định. Bài viết này sử dụng Elasticsearch 2.4.4 và Graylog 2.2.
- Cuối cùng là MongoDB. Xem Cách cài đặt và bảo mật MongoDB cho Ubuntu 16.04.
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:
cluster.name:
Đổi giá trị của cluster.name
thành graylog
:
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.
...
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:
- Với Node,chọn server của bạn.
- Ở Title, chọn một title phù hợp, chẳng hạn
Linux Server Logs
. - Ở 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
- Với Port, nhập
8514
. Lưu ý rằng ta dùng cổng8514
vì cổng0
đến1024
chỉ có thể được dùng bởi root user. Dùng bất cứ cổng nào trên1024
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:
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.
*.* @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.
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.