- 2.1 Cài đặt packet
- 2.2 Cài Elasticsrach
- 2.3 Cài đặt Mongodb
- 2.4 Cài đặt Graylog
- 2.5 Cầu hình web interface
- 2.6 Cầu hình Rsyslog
- 2.7 Web GUI
- 2.8 Alert Mail
-
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 Centos7, đồng thời thiết lập một đầu vào đơn giản dùng để ghi system log.
-
MongoDB: Lưu trữ các cấu hình và thông tin meta
-
Elasticsearch: Lữu trữ log và cung cấp dữ liệu tìm kiếm, phần chiếm nhiều tài nguyên các các hành động phần lớn sẽ được thự hiện tại đây.
-
GrayLog: Phân tích cú pháp log và thu thập log từ các client gửi lên.
-
GrayLog Web interface: Quản lý bằng giao diện web
-
Tắt vào firewalld
systemctl stop firewalld systemctl disable firewalld sudo setenforce 0 reboot
yum -y install epel-release
-
Import the GPG key
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
-
Tạo repo mới cho Elasticseach
vi /etc/yum.repos.d/elasticsearch.repo
-
Pates nội dung sau vào file
[elasticsearch-2.x] name=Elasticsearch repository for 2.x packages baseurl=https://packages.elastic.co/elasticsearch/2.x/centos gpgcheck=1 gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch enabled=1
-
Hiện tại Elasticseach phiên bản mới nhất là 6.7.
-
Tuy nhiên ở đây mình dùng bản 2.x, cụ thể hơn là 2.4. Vì đơn giản là bản 6.7 nó ngốn quá nhiều tài nguyện luôn.
- Với cấu hình như trên mình chạy bản 5.x mà được vài phút là Elasticseach lăn ra chết vì ko đủ RAM. nhưng với bản 2.4 thì chạy gần 1 năm nay ko bị sao cả.
-
-
Cài đặt elasticsearch
yum -y install elasticsearch
-
Cấu hình elasticsearch
systemctl daemon-reload systemctl enable elasticsearch.service
-
Cấu hình elasticsearch
vi /etc/elasticsearch/elasticsearch.yml
- Tìm đến dòng 17 sửa thành graylog
-
Restart elasticsearch
systemctl restart elasticsearch.service
-
Check lại thông tin elasticsearch
curl -X GET http://localhost:9200
-
Kiểm tra tình trạng "sức khỏe" của elasticsearch
curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
-
Creat repo
vi /etc/yum.repos.d/mongodb-org-3.6.repo
-
Pates nội dung sau vào file
[mongodb-org-3.0] name=MongoDB Repository baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=1
-
Cài đặt Mongodb
yum -y install mongodb-org
-
Nếu firewalldđang bật
yum -y install policycoreutils-python semanage port -a -t mongod_port_t -p tcp 27017
-
Nếu bạn ko muốn dùng firewalld
systemctl stop firewalld systemctl disable firewalld
-
Start và enable Mongodb
systemctl start mongod systemctl enable mongod
-
Tạo repo
vi /etc/yum.repos.d/graylog.repo
-
Pates nội dung sau vào file.
[graylog] name=graylog baseurl=https://packages.graylog2.org/repo/el/stable/2.4/$basearch/ gpgcheck=1 repo_gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-graylog
-
Cài đặt
yum -y install graylog-server
-
Cấu hình
vi /etc/graylog/server/server.conf
-
Tìm đến dòng 55 Thêm bất kì những ký tự nào đó trên bàn phím vào sau dâu = cũng được (có có ký tự đặc biệt)
VD: password_secret =fahiogbfaerogiboierahgowebgaw0eoigbwguoptgbobofrbwepiufbgierubgfwuipfbw
-
Nếu bạn muộn thể hiện sự chuyên nghiệp thì bạn dùng lệnh sau để gen ra 1 chuỗi ngẫu nhiên rồi pates sau dấu =
yum -y install pwgen pwgen -N 1 -s 96
-
Tìm tiếp đến dòng 66 thay đoạn code vào sau dâu =
echo -n yourpassword | sha256sum
- Thay yourpassword bằng password của bạn
- Chú ý bỏ cài dấu - ở cuối dùng đi nhé
vi /etc/graylog/server/server.conf
-
Tìm đến dòng 81 và 132 vào sửa lại ip cho hợp lý.
-
Restart và enable graylog-server
systemctl daemon-reload systemctl restart graylog-server systemctl enable graylog-server
-
Graylog hỗ trợ khá nhiều cách để có thể nhận được log từ client gửi lên. Tuy nhiên mình sẽ hướng dẫn mọi người các đơn giản nhất đó là dùng rsyslog
-
Install rsyslog
yum install rsyslog
-
Cấu hình.
vi /etc/rsyslog.conf
-
Để có thể gửi log lên server bạn cần chỉnh sửa lại file
-
Thêm đoạn code này vào file
$ModLoad imfile
-
Cú pháp gửi log lên server
$InputFileName /var/log/httpd/xxxx_access.log $InputFileTag xxxAccessLog: $InputFileStateFile xxxx_acc.log.statefile $InputFileFacility local3 $InputFileSeverity info $InputRunFileMonitor
-
InputFileName: Đường dẫn đến file log
-
InputFileTag: Thẻ tab (đặt tên gì cũng được cốt là để dễ nhớ)
-
InputFileFacility
Tham khảo thêm về $ModLoad imfile tại đây
Tham khảo về Facility và Severity level tại đây
-
Trỏ về server log
local3.* @10.0.1.129:9999
-
local3 là Facility ở trên
-
@10.0.1.129: là ip của server graylog
-
9999: là port của graylog
-
-
Chú ý: Nếu firewalld đang mở nhớ mở port nhé
-
Enable và start rsyslog
systemctl enable rsyslog && systemctl restart rsyslog
-
Truy cập
http://your_ip_server:9000
-
user mặc định là admin
-
pass bạn đã tạo ở bước trước "echo -n yourpassword | sha256sum "
-
-
Đăng nhập xong bạn vào tab SEARCH
- Đây là nơi hiển thị toàn bộ log mà server thư thập được từ client gửi lên.
-
Tab Stream
-
Đây là nơi các bạn phân loại logs(access, error, warning...) để dễ quản lý.
-
Tạo Stream mới, góc trên bên phải.
-
Tạo Rules cho Stream.
-
Nhìn lại tab Search 1 chút các bạn sẽ thấy nhưng thông tin này ở đó.
- Phần Field và phần value sẽ là điều kiện để ghi nhận log vào stream
- Như trong VD dưới đây Field mình chọn message và Value mình chọn WowzaError
- Tức là khi có log gửi lênh. Graylog sẽ check điều kiện để gắn message này vào stream nào
-
Như Các bạn thấy trong Stream này mình có 2 điều kiện
-
1 Field facility must match regular expression local4
-
2 Field message must match regular expression WowzaError
-
-
Nếu đủ 2 điều kiện này thì sẽ cho log này vào stream.
- Tab Alert này sẽ liên quan để phần cấu hình mail, mình sẽ nói cuối cùng
- Tab System -> input
- Tab này là nơi cấu hình để client gửi log lên.
-
Bạn chọn Raw/plantext UDP hoặc syslog UDP rồi LAUNCH NEW INPUT ngay bên cạnh
-
Điểm khác này của 2 cái này là gì.
-
Syslog UDP: đơn giản là gửi theo cấu trúc của Rsyslog thôi.
-
Raw/plantext UDP: Cài này các bạn chú ý này. nếu client và graylog ko cùng timelocal, thì các bạn phải dùng option này thì mới xem được log, nếu ko chọn cái này thì graylog vẫn ghi nhận có log nhưng nó ko hiện thị ra được vì giờ giữa client và nó ko đồng bộ được.
-
Global: nếu bạn có nhiều client gửi log lên server bằng cơ chế Rsyslog.
-
Title: Đặt tên thôi.
-
Bin Address: Các bạn để 0.0.0.0 là cho phép tất cả các client gửi log lên.
-
port: client sẽ gửi log qua port này. đã nói ở phần cấu hình Rsyslog
-
Store Full Message: lưu lại toàn bộ log ở dạng full message mà ko xóa.
- Khá giống với Syslog UDP
-
-
Nếu đơn giản chỉ là quản lý log tập trung thì có rất nhiều các tool khác, chả cần phải phục tạp thế này. Nhưng cái hay cảu Graylog là nó tích hợp sẵn mail cho người dùng, chỉ cần cấu hình là xong.
-
Cấu hình lại file config
vi /etc/graylog/server/server.conf
-
Tìm đến dòng 497 # Email transport Đây là phần cấu hình liên quan đến gửi mail
497 #Email transport
498 #transport_email_enabled = false
499 #transport_email_hostname = mail.example.com
500 #transport_email_port = 587
501 #transport_email_use_auth = true
502 #transport_email_use_tls = true
503 #transport_email_use_ssl = true
504 #transport_email_auth_username = [email protected]
505 #transport_email_auth_password = secret
506 #transport_email_subject_prefix = [graylog]
507 #transport_email_from_email = [email protected]
-
transport_email_enabled: cho phép gửi mail
-
transport_email_hostname: server mail
-
transport_email_port: port
-
transport_email_use_auth = true
-
transport_email_use_tls = true
-
transport_email_use_ssl = true bật xác thực
-
transport_email_auth_username: địa chỉ mail
-
transport_email_auth_password: password mail
-
transport_email_from_email: nhập lại địa chỉ mail.
-
transport_email_web_interface_url: nhập ip (ip public) và port của server (nếu các bạn public graylog ra ngoài thì phải có dòng này nhé).
Tham khảo thêm tại đây.
-
Restart lại graylog
systemctl daemon-reload systemctl restart graylog-server
-
Các bạn ko nên chỉnh sửa trực tiếp vào mẫu, mà nên copy ra để sửa tránh trường hợp cấu hình sai, lại ko biết sửa lại thể nào.
-
Chú ý: ko nếu dùng Gmail hoặc Gsuite phần cho phép tài khoản đăng nhập từ ứng dụng kém an toàn tại đây
-
Quay lại giao diện web
-
Alert -> Manage conditions
- Add New Conditions Alert on stream và Condition Type -> Add Alert Condition
-
Alert on stream: ở đây sẽ list ra toàn bộ các stream mà bạn đã tạo. bạn muốn nhận mail thông báo khi stream nào thì bạn chọn stream đó.
-
Condition Type: Điểu kiện để gửi mail
-
Alert -> Manage notification -> Add new notification
- Mục Notification -> Add Alert notification
-
notifi on stream: các bạn chọn đúng cái stream mà các bạn đã chọn ở mục Add Alert Condition
-
Notification Type: các bạn chọn kiểu Email Alert Callback để gọi đến hàm gửi mail
-
sau khi Add Alert notification bạn sẽ có 1 popup như hình dưới
- Title: Đặt tên cho notifications
- Sender: Nhập địa chỉ email đã cấu hình trong file config ở trên (transport_email_auth_username = [email protected])
- Email receivers: nhập email nhập mail thông báo (nhập xong 1 email các bạn tab 1 cái để nhập emmail tiếp theo).
Cuối cùng là Save
-
Giờ chúng ta cùng test alert mail.
-
Mình echo 1 chuỗi vào file log để server ghi nhận.
-
Kiểm tra lại trong phần Stream xem đã ghi nhận log chưa.
- Giờ ngồi đợi mail.
- Sau khoảng 1 phút thì đã nhận được mail của graylog rồi. Xử lý cũng khá nhanh.
Như vậy mình đã hướng dẫn xong Graylog server. Chúc các bạn thành công.
-
Cài đặt Graylog http://docs.graylog.org/en/3.0/pages/installation/os/centos.html
-
Cài đặt Mongodb https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/
-
Cài đặt Elasticsearch https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-centos-7
-
Cài đặt Graylog server https://www.vultr.com/docs/how-to-install-graylog-server-on-centos-7