Graylog là một công cụ quản lý và phân tích log được dựa trên Elasticsearch, Java và MongoDB cho phép lưu trữ và tìm kiếm log với tốc độ và khả năng mở rộng cao. Mỗi component đóng vai trò quan trọng để đảm bảo việc thu thập và lưu trữ log hiệu quả và tiện lợi. Bài viết sẽ hướng dẫn cài đặt Graylog 1.x trên CentOS 7 chi tiết nhất.
Giới thiệu về Graylog 1.x trên CentOS 7
Trong bài hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt Graylog v1.3.x (thường được gọi là Graylog2) trên CentOS 7 và cấu hình để thu thập các syslog của hệ thống.
Graylog có 4 thành phần chính đó là:
- Graylog Server nodes: Tiếp nhận và xử lí messages, giao tiếp với các thành phần non-server khác. Hiệu suất của thành phần này sẽ phụ thuộc vào CPU.
- Elasticsearch nodes: Lưu trữ tất cả logs/messages. Hiệu suất sẽ phụ thuộc vào RAM và đĩa I/O.
- MongoDB: Lưu trữ metadata và không nên để quá tải.
- Web Interface: giao diện người dùng.
Dưới đây sẽ là sơ đồ của các Graylog component (lưu ý rằng các message được gửi từ server khác):
Ở bài viết này sẽ hướng dẫn cài đặt cơ bản Graylog, với tất cả các component được cài đặt trên cùng một server. Đối với các cài đặt nâng cao, thì bạn nên thiết lập các component trên các server riêng biệt để đảm bảo hiệu suất.
Yêu cầu để cài đặt Graylog 1.x trên CentOS 7
Để thực hiện bài hướng dẫn này bạn cần đáp ứng những yêu cầu sau:
- Cần có ít nhất 2GB RAM ở CentOS 7 server của bạn.
- Đồng thời cần truy cập với tài khoản root hoặc super user.
- Nếu bạn còn ít hơn 2GB RAM, bạn sẽ không thể sử dụng được tất cả các thành phần.
Cài đặt MongoDB
Việc cài đặt MongoDB rất đơn giản và nhanh chóng. Bạn hãy thực thi lệnh sau để đưa public GPG key từ MongoDB vào rpm
:
sudo rpm --import https://www.mongodb.org/static/pgp/server-3.2.asc
Sau đó hãy tạo danh sách MongoDB source:
echo '[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1' | sudo tee /etc/yum.repos.d/mongodb-org-3.2.repo
Tiếp theo, bạn sẽ dùng lệnh dưới đây để cài đặt phiên bản mới nhất của MongoDB:
sudo yum install -y mongodb-org
Bây giờ bạn hãy khởi động MongoDB:
sudo systemctl restart mongod
Sau khi hoàn tất cài đặt MongoDB, tiếp theo bạn sẽ cài đặt Java.
Xem thêm: Hướng dẫn cài đặt MongoDB trên CentOS 7
Cài đặt Java
Do cả Elasticsearch và Logstash đều cần Java, nên bạn sẽ cần cài đặt ngay. Elasticsearch khuyến khích bạn nên cài đặt Oracle Java 8 ở phiên bản mới nhất. Tuy nhiên bạn cũng có thể cài đặt OpenJDK vì Java cũng tương thích với phiên bản này. Khi bạn thực hiện theo các bước trong bài hướng dẫn này, thì bạn đã chấp thuận Oracle Binary License Agreement cho JavaSE.
Đi đến thư mục home của bạn và tải RPM JDK Java 8 của Oracle (bản Update 73 là phiên bản mới nhất ở thời điểm của viết bài này) bằng lệnh này:
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"
Sau đó, sử dụng yum
để cài đặt RPM (nếu bạn đã tải xuống một phiên bản khác, hãy thay thế bản đó vào tên tệp ở đây):
sudo yum -y localinstall jdk-8u73-linux-x64.rpm
Bây giờ, Java đã được cài đặt ở /usr/java/jdk1.8.0_73/jre/bin/java
, và được liên kết từ /usr/bin/java
.
Bạn có thể xóa file lưu trữ mà bạn đã cài đặt trước đó:
rm ~/jdk-8u*-linux-x64.rpm
Tiếp theo, bạn sẽ cài đặt Elasticsearch.
Cài đặt Elasticsearch
Graylog 1.x chỉ hoạt động với các phiên bản Elasticsearch 2.0 trở xuống, do đó chúng ta sẽ cài đặt Elasticsearch 1.7.x. Elasticsearch được cài đặt bằng trình quản lý gói bằng cách thêm danh sách source package của Elastic.
Bạn hãy thực thi lệnh sau để import public GPG key từ Elasticsearch vào rpm:
sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
Tạo một file yum repository mới cho Elasticsearch bằng cách:
echo '[elasticsearch-1.7]
name=Elasticsearch repository for 1.7.x packages
baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1' | sudo tee /etc/yum.repos.d/elasticsearch.repo
Sau đó, sử dụng lệnh dưới đây để cài đặt Elasticsearch:
sudo yum -y install elasticsearch
Hiện tại, Elasticsearch đã được cài đặt, tiếp theo hãy chỉnh sửa cấu hình như sau:
sudo vi /etc/elasticsearch/elasticsearch.yml
Tìm đến phần hiển thị cluster.name
. Sau đó bạn hãy bỏ comment và thay thế bằng giá trị mặc định “graylog-development” như sau:
cluster.name: graylog-development
Nếu bạn muốn hạn chế truy cập từ bên ngoài vào Elasticsearch của mình (port 9200), để người khác không thể đọc dữ liệu của bạn hoặc tắt Elasticsearch cluster thông qua API HTTP. Hãy tìm dòng chứa network.host
, bỏ comment và thay giá trị bằng “localhost” như sau:
network.host: localhost
Sau đó hãy lưu và thoát tệp elasticsearch.yml
.
Bây giờ bạn hãy khởi động Elasticsearch:
sudo systemctl restart elasticsearch
Thực thi lệnh sau để Elasticsearch khởi động đồng thời với hệ thống:
sudo systemctl enable elasticsearch
Bạn có thể chạy lệnh sau để kiểm tra Elasticsearch có đang hoạt động hay không:
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
Bây giờ Elaticsearch đã hoạt động, hãy cài đặt Graylog Server.
Cài đặt Graylog Server
Ở bước này, bạn sẽ thực hiện cài đặt server component của Graylog Server, graylog-server
.
Đầu tiên, tải gói Graylog RPM bằng lệnh sau:
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-1.3-repository-el7_latest.rpm
Sau đó, thực thi lệnh dưới đây để cài đặt gói graylog-server
:
sudo yum -y install graylog-server
Tiếp theo bạn hãy tải pwgen để tạo các password secret keys:
sudo yum -y install epel-release
sudo yum -y install pwgen
Bây giờ, bạn cần cài đặt mật khẩu admin và secret key. Password secret keys được cấu hình thông qua tham số password_secret
trong file server.conf
. Sau đó, bạn có thể tạo một key ngẫu nhiên và chèn nó vào cấu hình của Graylog bằng hai lệnh sau:
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog/server/server.conf
Mật khẩu admin được chỉ định bằng cách tạo một shasum
từ mật khẩu mà bạn muốn đặt, sau đó gán cho root_password_sha2
trong file cấu hình Graylog. Bạn sẽ dùng lệnh dưới đây để tạo shasum, và hãy nhớ thay cụm “password” bằng mật khẩu của bạn. Lệnh sed
sẽ chèn giá trị shasum vào file cấu hình Graylog:
PASSWORD=$(echo -n password | sha256sum | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf
Hiện tại, mật khẩu admin đã được thiết lập. Tiếp theo, bạn mở file cấu hình Graylog để thực hiện một số thay đổi:
sudo vi /etc/graylog/server/server.conf
Lúc này, hai giá trị của password_secret
và root_password_sha2
sẽ là một chuỗi ngẫu nhiên do bạn đã thực thi các lệnh ở trên.
Sau đó, bạn sẽ cấu hình rest_transport_uri
, để Graylog web interface (giao diện web Graylog) có thể giao tiếp với server. Tìm và uncomment dòng rest_transport_uri
, và thay đổi giá trị thành 127.0.0.1
hoặc localhost
vì các component đều cài đặt trên một server:
rest_transport_uri = http://127.0.0.1:12900/
Tiếp theo, đổi giá trị của elasticsearch_shards
thành 1, vì bạn chỉ có một Elasticsearch shard đang chạy trên server:
elasticsearch_shards = 1
Kế đó, đổi giá trị của elasticsearch_cluster_name
thành “graylog-development” ( giống với Elasticsearch cluster.name
):
elasticsearch_cluster_name = graylog-development
Tiến hành uncomment hai dòng sau để tìm kiếm các trường hợp Elasticsearch bằng cách sử dụng unicast thay vì multicast:
elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
Sau khi hoàn tất, hãy lưu và thoát tệp. graylog-server
hiện đã được cấu hình đầy đủ và sẵn sàng để sử dụng.
Chạy dòng lệnh sau để khởi động Graylog server:
sudo systemctl start graylog-server
Sang bước tiếp theo, bạn sẽ cài đặt Graylog web interface.
Cài đặt Graylog Web
Sử dụng lệnh sau để cài đặt Graylog Web:
sudo yum -y install graylog-web
Tiếp theo, bạn sẽ cấu hình secret key của web interface (giao diện web), là tham số application.secret
trong file web.conf. Bạn sẽ tạo một secret key khác, như những gì đã làm với cấu hình Graylog server, sau đó dùng sed để chèn vào, như sau:
SECRET=$(pwgen -s 96 1)
sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /etc/graylog/web/web.conf
Bạn hãy mở file cấu hình web interface bằng lệnh dưới đây:
sudo vi /etc/graylog/web/web.conf
Bây giờ, bạn cần cập nhật cấu hình web interface để chỉ định tham số graylog2-server.uris
. Đây là danh sách chứa REST URI của server và được cách nhau bởi dấu phẩy. Vì bạn chỉ có một Graylog server node, do đó giá trị của tham số này phải khớp với giá trị của rest_listen_uri
trong cấu hình Graylog server (ví dụ: “http://127.0.0.1:12900/”).
graylog2-server.uris="http://127.0.0.1:12900/"
Sau đó, bạn sẽ khởi động web interface của Graylog như sau:
sudo systemctl restart graylog-web
Đến đây, bạn đã hoàn tất việc cài đặt và cấu hình Graylog Web. Hãy cùng sang phần tiếp theo để tìm hiểu về cách sử dụng của Graylog Web Interface.
Cấu hình Graylog để nhận các syslog messages
Đăng nhập vào Graylog Web Interface
Bạn hãy truy cập vào port 9000
của địa chỉ public IP ở server bằng trình duyệt web của mình:
In a web browser:
http://graylog_public_IP:9000/
Màn hình đăng nhập sẽ được hiển thị. Nhập admin
vào cả hai trường username và password để có thể đăng nhập vào trang web.
Sau khi đăng nhập thành công, bạn sẽ nhìn thấy giao diện như sau:
Chữ số màu trắng nền đỏ ở trên cùng là một thông báo. Nếu click vào số này, bạn sẽ được thông báo rằng bạn có một node mà không có bất kỳ running input (đầu vào đang hoạt động) nào. Vì vậy hãy thêm một input để nhận syslog messages thông qua UDP.
Tạo Syslog UDP Input
Bạn hãy click vào drop-down của System ở phía trên cùng ngay cạnh chữ số ban nãy để thêm input cho việc nhận các syslog messages .
Sau đó, từ bảng menu drop-down này, hãy chọn Inputs.
Tiếp tục chọn Syslog UDP từ menu drop-down kế tiếp và click chuột vào nút Launch new input.
Một màn hình giao diện “Launch a new input: Syslog UDP ” được hiển thị. Nhập vào các thông tin sau (ở mục bind address bạn sẽ điền địa chỉ private IP ở server của bạn):
- Title:
syslog
- Port:
8514
- Bind address:
graylog_private_IP
Sau đó click vào Launch.
Lúc này bạn sẽ thấy một input có tên là “syslog” trong phần Local inputs (và kèm theo là chữ “running” được đặt trong nền xanh lá ngay bên cạnh), như sau:
Bây giờ, Graylog serve đã có thể nhận các syslog messages ở port 8514
từ servers của bạn. Sau đây, bạn sẽ cấu hình các server để gửi syslog messages đến Graylog.
Cấu hình Rsyslog để gửi Syslogs đến Graylog Server
Hãy thực hiện các bước sau đây trên tất cả các client servers mà bạn muốn gửi syslog messages đến Graylog.
Tạo file cấu hình rsyslog trong /etc/rsyslog.d
. Bạn có thể đặt tên là 90-graylog.conf
:
sudo vi /etc/rsyslog.d/90-graylog.conf
Tại file này, thêm các dòng lệnh sau để cấu hình rsylog gửi các syslog messages đến Graylog server(thay đổi graylog_private_IP
thành địa chỉ private IP của Graylog server):
$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @graylog_private_IP:8514;GRAYLOGRFC5424
Sau đó lưu và thoát file. Từ bây giờ, file này sẽ được tải vào cấu hình rsyslog. Bạn cần khởi động lại rsyslog để áp dụng các thay đổi vừa rồi của mình.
sudo systemctl restart rsyslog
Sau khi bạn hoàn tất cấu hình rsylog trên tất cả server mà bạn muốn theo dõi, bạn hãy quay lại web interface của Graylog.
Xem các nguồn trong Graylog
Bạn hãy truy cập vào port 9000
của địa chỉ public IP ở server bằng trình duyệt web của mình:
In a web browser:
http://graylog_public_IP:9000/
Click vào mục Sources ở thanh trên cùng. Bạn sẽ thấy danh sách các server mà bạn đã cấu hình rsyslog.
Hostname của các sources (nguồn ) sẽ được hiển thị ở bên trái, còn ở bên phải sẽ là số lượng của messages được nhận bởi Graylog.
Tìm kiếm Graylog Data
Sau khi Graylog nhận các message, bạn có thể tìm kiếm thông qua các message. Ví dụ, khi tìm kiếm “sshd” để xem các hoạt động của SSH đang diễn ra trên server. Dưới đây là kết quả của ví dụ được đề cập như sau:
Từ kết quả trên, bạn có thể thấy các sshd log được hiển thị cho các server khác nhau và các lần đăng nhập root không thành công. Ở kết quả trên thiết bị của bạn có thể hiển thị khác, tuy nhiên việc này có thể giúp bạn trong rất nhiều tình huống, bao gồm cách mà người dùng không xác định cố gắng truy cập trái phép vào server của bạn.
Ngoài chức năng tìm kết trên tất cả các source, bạn cũng có thể tìm kiếm các log của một host cụ thể hoặc ở một khung giờ cụ thể
Việc tìm kiếm data trong Graylog rất hữu ích, chẳng hạn như sau khi sự cố nào đó xảy ra, bạn có thể xem log của một hoặc một số server để kiểm tra. Bạn cũng không cần phải đăng nhập vào nhiều server để xem tất cả các events đã diễn ra vì các thông tin từ log ở các server đều được gửi về một vị trí tập trung để dễ quản lý và phân tích.
Bên cạnh đó, nếu bạn đang có nhu cầu sử dụng VPS để phát triển ứng dụng, website,… có thể liên hệ với Vietnix để được tư vấn gói VPS tốc độ cao phù hợp. Hiện tại Vietnix đang cung cấp các gói VPS tốc độ cao, đa dạng cấu hình, tính năng hiện đại, bảo mật cao gồm: VPS NVMe, VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS GPU với nhiều mức giá khác nhau.
Vietnix với hơn 10 năm hoạt động đã đồng hành với hơn 50.000 khách hàng cá nhân và doanh nghiệp. Đến năm 2022 Vietnix vinh dự được nhận giải Thương hiệu Việt Nam xuất sắc. Đồng thời, với tỷ lệ 97% khách hàng sau khi sử dụng dịch vụ tại Vietnix đã giới thiệu đến bạn bè, đồng nghiệp cũng là một minh chứng cho chất lượng dịch vụ luôn đáp ứng được mọi nhu cầu của khách hàng.
Đăng ký VPS Vietnix ngay và trải nghiệm dịch vụ ổn định, tốc độ cao, hỗ trợ nhanh chóng với nhiều ưu đãi hấp dẫn nhất.
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Hotline: 1800 1093
- Email: sales@vietnix.com.vn
Lời kết
Đến đây, bạn đã cài đặt thành công Graylog, hãy tìm hiểu các chức năng khác mà Graylog cung cấp. Bạn có thể gửi các loại log khác đến Graylog và thiết lập các trích xuất (extractor) (hoặc định dạng lại log với các phần mềm khác như logstash) để các log trở nên có cấu trúc và dễ dàng tìm kiếm hơn. Chia sẻ bài viết đến mọi người để cùng nhau trau dồi thêm kiến thức nhé. Chúc bạn thành công.