Skip to content

Latest commit

 

History

History
617 lines (276 loc) · 19.6 KB

README.md

File metadata and controls

617 lines (276 loc) · 19.6 KB

Mục lục



1 Giới thiệ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 Centos7, đồng thời thiết lập một đầu vào đơn giản dùng để ghi system log.

1.1 Thành Phần.

  • 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

2 Cài đặt

  • Tắt vào firewalld

      systemctl stop firewalld
      
      systemctl disable firewalld
      
      sudo setenforce 0
     
      reboot  
    

2.1 Cài đặt Packet.

    yum -y install epel-release
  • Install java

    • Elasticsearch dựa trên nên java nên cần cài đặt JDK

        yum install java
      

    image

2.2 Cài đặt Elasticsearch

  • 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.

    image

    • 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

    image

  • Restart elasticsearch

     systemctl restart elasticsearch.service   
    
  • Check lại thông tin elasticsearch

     curl -X GET http://localhost:9200
    

    image

  • Kiểm tra tình trạng "sức khỏe" của elasticsearch

     curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
    
    • Nếu bạn thấy dòng "status" : "green" là ngon rồi.

      image

2.3 Cài đặt Mongodb

  • 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
    

2.4 Cài đặt Graylog

  • 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

    image

  • 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

    image

    • Chú ý bỏ cài dấu - ở cuối dùng đi nhé

    image

2.5 Cấu hình Graylog web interface

    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ý.

    image

    image

  • 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

2.6 Cấu hình 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
    

2.7 Web GUI

  • Truy cập

    http://your_ip_server:9000

    image

    • 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

    image

    • Đâ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

    image

    • Đâ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.

    image

    • 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 ở đó.

    image

    • Phần Field và phần value sẽ là điều kiện để ghi nhận log vào stream

    image

    • Như trong VD dưới đây Field mình chọn message và Value mình chọn WowzaError

    image

    • 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

    image

    • 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.

    image

    image

    image

    • Tab Alert này sẽ liên quan để phần cấu hình mail, mình sẽ nói cuối cùng

    image

    • Tab System -> input

    image

    • Tab này là nơi cấu hình để client gửi log lên.

    image

    • 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.

    Syslog UDP

    image

    • 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.

    Raw/plantext UDP:

    image

    • 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.

2.8 Cấu hình Alert mail
  • 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 = you@example.com

    505 #transport_email_auth_password = secret

    506 #transport_email_subject_prefix = [graylog]

    507 #transport_email_from_email = graylog@example.com

  • 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é).

image

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

    image

    • Add New Conditions Alert on streamCondition Type -> Add Alert Condition

    image image

    • 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

    image image

    • Mục Notification -> Add Alert notification

    image

    • 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

    image

    • 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 = you@example.com)
    • 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).

    image

    Cuối cùng là Save

  • Giờ chúng ta cùng test alert mail.

image

  • 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.

image

  • Giờ ngồi đợi mail.

image

  • 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.

3. Tài liệu tham khảo.

  1. Cài đặt Graylog http://docs.graylog.org/en/3.0/pages/installation/os/centos.html

  2. Cài đặt Mongodb https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

  3. Cài đặt Elasticsearch https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-centos-7

  4. Cài đặt Graylog server https://www.vultr.com/docs/how-to-install-graylog-server-on-centos-7

Facebook