Nội dung bài viết
1. Cài đặt Graylog
Hướng dẫn cài đặt ở trang chủ: http://docs.graylog.org/en/latest/pages/installation/os/centos.html#
Theo đó chúng ta sẽ cài đặt:
1.1. Cài java
sudo yum install java-1.8.0-openjdk-headless.x86_64
1.2. Cài MongoDB 4.0
vi /etc/yum.repos.d/mongodb-org.repo
Thêm vào
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
sudo yum install mongodb-org
Start dịch vụ & kiểm tra:
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl start mongod.service
sudo systemctl --type=service --state=active | grep mongod
1.3 Cài Elasticsearch 6.x
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/oss-6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
sudo yum install elasticsearch-oss
Edit file config
vi /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
action.auto_create_index: false
Start dịch vụ & kiểm tra
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl --type=service --state=active | grep elasticsearch
1.4 Cài Graylog & cấu hình graylog
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-3.2-repository_latest.rpm
sudo yum update && sudo yum install graylog-server graylog-enterprise-plugins graylog-integrations-plugins graylog-enterprise-integrations-plugins
Hoặc chỉ cài Graylog server thì chạy lệnh:
sudo yum install graylog-server
Để cấu hình graylog cần edit file /etc/graylog/server/server.conf
Chuẩn bị password_secret
& root_password_sha2
để lưu vào file. Graylog sẽ không khởi động nếu không có 2 thông tin này
Install epel-release
& pwgen
:
sudo yum install epel-release -y
sudo yum install pwgen -y
Tạo password_secret
:
pwgen -N 1 -s 96
Tạo root_password_sha2
:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
-> Nhập vào mật khẩu và nhớ mật khẩu này ( dùng để đăng nhập giao diện web Graylog admin)
-> Nhớ 2 thông tin vừa tạo để điền vào file config /etc/graylog/server/server.conf
Update thông tin /etc/graylog/server/server.conf như sau:
password_secret
= thông tin tạo phía trên
root_password_sha2
= thông tin tạo phía trên, nhớ mật khẩu & điền vào thông tin đã mã hoá
root_username = abcadmin
#mặc định là admin
Restart lại dịch vụ & truy cập vào theo http://ip:9000. Hoặc cài nginx làm Proxy ( bên dưới)
systemctl start nginx.service
systemctl enable nginx.service
Sửa file cấu hình nginx:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name 52.221.184.212;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;
proxy_set_header X-Graylog-Server-URL http://$server_name/;
proxy_pass http://127.0.0.1:9000;
}
}
Truy cập http://xxx.xxx.xxx.xxx & đăng nhập vào graylog
2. Cấu hình cho Graylog nhận access.log, error.log từ nginx
Đăng nhập Graylog & Chọn menu System/Content Packs. Content Packs là tập hợp những Input, Search,… đã được xây dựng sẳn. Bạn nên cài gói Content Packs này trước để thấy được những cài đặt tổng thể của Input, Stream, Dashboard và áp dụng cho trường hợp riêng của mình.
Download Content Packs từ link này: https://github.com/paulbarfuss/graylog3-content-pack-nginx-json
Sau đó Tiến hành Upload Content Packs đã download về & chỉnh lại theo cách dùng
Nginx cầu hình như sau:
- Thêm log_format vào trong thẻ http{
log_format graylog2_json escape=json '{ "timestamp": "$time_iso8601", '
'"remote_addr": "$remote_addr", '
'"body_bytes_sent": $body_bytes_sent, '
'"request_time": $request_time, '
'"response_status": $status, '
'"request": "$request", '
'"request_method": "$request_method", '
'"host": "$host",'
'"upstream_cache_status": "$upstream_cache_status",'
'"upstream_addr": "$upstream_addr",'
'"http_x_forwarded_for": "$http_x_forwarded_for",'
'"http_referrer": "$http_referer", '
'"http_user_agent": "$http_user_agent" }';
- Cho access_log, & error_log gởi về server graylog
# replace the hostnames with the IP or hostname of your Graylog2 server
access_log syslog:server=graylog.server.org:12304 graylog2_json;
error_log syslog:server=graylog.server.org:12305;
3. Cấu hình Server gửi syslog về cho graylog
->trong /etc/rsyslog.d tạo file graylog_syslog.conf
Gửi về UDP input: ( Bạn cần tạo UDP input tương ứng trên graylog serrver nhé)
*.* @graylog.example.org:514;RSYSLOG_SyslogProtocol23Format
Restart dịch vụ
sudo service rsyslog restart
4. Cấu hình SideCar để gửi những log khác về ( php-slow log,…)
Cài Graylog Side Car trên Centos
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-sidecar-repository-1-2.noarch.rpm
sudo yum update && sudo yum install graylog-sidecargraylog-sidecar -service install
Cài FileBeat
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
Tạo elastic.repo trong /etc/yum.repos.d/
vi /etc/yum.repos.d/elastic.repo
Thêm đoạn bên dưới vào
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
sudo yum install filebeat
sudo systemctl enable filebeat
Hoặc
sudo chkconfig --add filebeat
Cấu hình SideCar trong /etc/graylog/sidecar/sidecar.yml .
- Đầu tiên tạo Beat Input trên Graylog Server
- Click vào
System / Sidecars
, ClickConfiguration
- Tạo
Configuration
Mới, - Chọn Collector là “filebeat on Linux”,
- Host là ip của Graylog server
- Tạo
- Click vào
System / Sidecars
- Chọn Create or reuse a token for the graylog-sidecar user.
- Điền tên và bấm Create Token. Coppy token để điền vào trong file cấu hình sidecar.yml
- server_api_token=”token”
- server_url: “update lại public ip của graylog. Chú ý nếu dùng nginx làm proxy thì k có cổng 9000”
tls_skip_verify: true
- Bỏ comment chỗ log_path
- Khởi động dịch vụ graylog-sidecar :
systemctl start graylog-sidecar.service
systemctl enable graylog-sidecar.service
- Quay về System/Sidecars Chọn nút
Overview
- chọn Manage sidecar
- Tích chọn filebeat và chọn cấu hình configuration mới tạo.
- Chọn
Confim
để tiếp tục - Vậy là xong
5. Log lỗi của Magento Hiện tại đang sử dụng Sentry, Tuy nhiên vẫn có thể cấu hình để gửi về Graylog thông qua SideCar hoặc FireGento Logger Extension
6. Chú ý SELINUX
If you’re using SELinux on your system, you need to take care of the following settings:
- Allow the web server to access the network:
sudo setsebool -P httpd_can_network_connect 1
- If the policy above does not comply with your security policy, you can also allow access to each port individually:
- Graylog REST API and web interface:
sudo semanage port -a -t http_port_t -p tcp 9000
- Elasticsearch (only if the HTTP API is being used):
sudo semanage port -a -t http_port_t -p tcp 9200
- Graylog REST API and web interface:
- Allow using MongoDB’s default port (27017/tcp):
sudo semanage port -a -t mongod_port_t -p tcp 27017
If you run a single server environment with NGINX or Apache proxy, enabling the Graylog REST API is enough. All other rules are only required in a multi-node setup. Having SELinux disabled during installation and enabling it later, requires you to manually check the policies for MongoDB, Elasticsearch and Graylog.