Skip to main content

Cài đặt và cấu hình Fluentd kết hợp Graylog Server - Phần 2

20,October 2017
Cài đặt cấu hình fluentd kết hợp graylog phần 2

Thực hiện bài lab cài đặt fluentd kết hợp với graylog để lưu trữ logs tập trung tại graylog server. Fluentd sẽ được cài trên các remote server đóng vai trò fluentd agent, và cài fluentd trên graylog server đóng vai trò là fluentd aggregate. Sau đó logs sẽ được đẩy vào input của graylog server 

1. Cài đặt fluentd trên remote server & graylog server 

+ Trên CentOS

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh
# /etc/init.d/td-agent start 
# systemctl enable td-agent

+ Trên Ubuntu

# curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh
# /etc/init.d/td-agent start
# systemctl enable td-agent

 

2. Cấu hình fluentd trên remote server ( 10.1.10.103 )

- Các bạn tham khảo các input plugin của fluentd để sử dụng trong hệ thống của mình tại https://docs.fluentd.org/v0.12/articles/input-plugin-overview

- Tại đây mình sử dụng "tail Input Plugin" để lấy log của dịch vụ apache , mysql trên Ubuntu 16

# sudo apt-get update
# sudo apt-get install apache2
# sudo apache2ctl configtest
# systemctl start/enable/status apache2

# sudo apt-get install mysql-server
# vim /etc/mysql/mysql.conf.d/mysqld.cnf

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
log_error = /var/log/mysql/error.log

# systemctl restart mysql 

Note: Khi gặp lỗi như sau "tail -f /var/log/td-agent/*log  => [error]: Permission denied @ rb_sysopen - /var/log/apache2/access.log"

=>  Add "td-agent" user vào "adm" group hoặc change permission cho log file để fluentd có thể đọc logs

sudo usermod -aG adm td-agent

- Cấu hình fluentd config file

# vim /etc/td-agent/td-agent.conf

<source>
  @type forward
</source>
<source>
  @type tail
  format apache2
  tag td.apache.access
  path /var/log/apache2/access.log
</source>
<source>
  @type tail
  format /^\[[^ ]* (?<time>[^\]]*)\] \[(?<level>[^\]]*)\] \[pid (?<pid>[^\]]*)\] \[client (?<client>[^\]]*)\] (?<message>.*)$/
  tag td.apache.error
  path /var/log/apache2/error.log
</source>
<source>
  @type tail
  format none
  path /var/log/mysql/mysql.log
  tag td.mysql.access
</source>
<source>
  @type tail
  format none
  path /var/log/mysql/error.log
  tag td.mysql.error
</source>

## Forwarding
## match tag=system.** and forward to another td-agent server
<match td.**>
  @type forward
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td.*.buffer
  flush_interval 3
  <server>
    host 10.1.10.104
    port 24224
  </server>
</match>

 

3. Cấu hình fluentd trên graylog server (10.1.10.104 )

- Tạo input gelf udp với port 9010 trên dịch vụ graylog . Truy cập graylog http://10.1.10.104:9000  -> system -> inputs, chọn GELF UDP -> Launch new input 

gelf udp input graylog

 

 

- Cài đặt gelf output plugin để forward log từ fluentd trên graylog server vào input của graylog service

# /usr/sbin/td-agent-gem install gelf
# cd /etc/td-agent/plugin/
# wget https://raw.githubusercontent.com/emsearcy/fluent-plugin-gelf/master/lib/fluent/plugin/out_gelf.rb

- Cấu hình fluentd đóng vai tập hợp các logs bắn về từ các remote server và forward vào input của graylog service

# vim /etc/td-agent/td-agent.conf

<source>
  @type forward
  port 24224
</source>

<match td.**>
  @type gelf
  host 127.0.0.1
  port 9010
  protocol udp
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td.*.buffer
  flush_interval 1s
</match>

- Khởi động lại fluentd service 

# systemctl restart td-agent 
# tail -n100 /var/log/td-agent/td-agent.log

 

4. Kiểm tra 

- Trên fluentd remote server thự hiện truy cập apache service và tạo database mysql 

# http://10.1.10.101
# mysql -uroot -p -e "create database itlabvn";

- Chuyển sang graylog server kiểm tra 

fluentd log on graloy server