728x90
우분투에 fluentd를 설치하는 방법
로그 수집기 서버(Fluentd Aggregator)를 설치한 후 로그 전송 서버(Fluentd Agent)를 설치합니다.
운영체제 정보
root@node3:~$ lsb_release -d
Description: Ubuntu 22.04.2 LTS
시스템 구성 현황
Hostname | IP Address | Fluentd 구분 | 비고 |
node2 | 192.168.10.72 | Fluentd Collector | |
node3 | 192.168.10.73 | Fluentd Aggregator |
Fluentd 설치
Fluentd를 설치합니다.
curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-jammy-fluent-package5-lts.sh | sh
$ uname -a
Linux node2 5.15.0-94-generic #104-Ubuntu SMP Tue Jan 9 15:25:40 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
reboot
$ uname -a
Linux node2 5.15.0-97-generic #107-Ubuntu SMP Wed Feb 7 13:26:48 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$ curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-jammy-fluent-package5-lts.sh | sh
...
Installation completed. Happy Logging!
- fluentd 버전 정보 확인
fluentd --version
$ fluentd --version
fluent-package 5.0.2 fluentd 1.16.3 (d3cf2e0f95a0ad88b9897197db6c5152310f114f)
- fluentd 설정 파일
sudo vim /etc/fluent/fluentd.conf
더보기
---
####
## Output descriptions:
##
# Treasure Data (http://www.treasure-data.com/) provides cloud based data
# analytics platform, which easily stores and processes data from td-agent.
# FREE plan is also provided.
# @see http://docs.fluentd.org/articles/http-to-td
#
# This section matches events whose tag is td.DATABASE.TABLE
<match td.*.*>
@type tdlog
@id output_td
apikey YOUR_API_KEY
auto_create_table
<buffer>
@type file
path /var/log/fluent/buffer/td
</buffer>
<secondary>
@type secondary_file
directory /var/log/fluent/failed_records
</secondary>
</match>
## match tag=debug.** and dump to console
<match debug.**>
@type stdout
@id output_stdout
</match>
####
## Source descriptions:
##
## built-in TCP input
## @see http://docs.fluentd.org/articles/in_forward
<source>
@type forward
@id input_forward
</source>
## built-in UNIX socket input
#<source>
# type unix
#</source>
# HTTP input
# POST http://localhost:8888/<tag>?json=<json>
# POST http://localhost:8888/td.myapp.login?json={"user"%3A"me"}
# @see http://docs.fluentd.org/articles/in_http
<source>
@type http
@id input_http
port 8888
</source>
## live debugging agent
<source>
@type debug_agent
@id input_debug_agent
bind 127.0.0.1
port 24230
</source>
####
## Examples:
##
## File input
## read apache logs continuously and tags td.apache.access
#<source>
# @type tail
# @id input_tail
# <parse>
# @type apache2
# </parse>
# path /var/log/httpd-access.log
# tag td.apache.access
#</source>
## File output
## match tag=local.** and write to file
#<match local.**>
# @type file
# @id output_file
# path /var/log/fluent/access
#</match>
## Forwarding
## match tag=system.** and forward to another fluentd server
#<match system.**>
# @type forward
# @id output_system_forward
#
# <server>
# host 192.168.0.11
# </server>
# # secondary host is optional
# <secondary>
# <server>
# host 192.168.0.12
# </server>
# </secondary>
#</match>
## Multiple output
## match tag=td.*.* and output to Treasure Data AND file
#<match td.*.*>
# @type copy
# @id output_copy
# <store>
# @type tdlog
# apikey API_KEY
# auto_create_table
# <buffer>
# @type file
# path /var/log/fluent/buffer/td
# </buffer>
# </store>
# <store>
# @type file
# path /var/log/fluent/td-%Y-%m-%d/%H.log
# </store>
#</match>
---
- fluentd 구성 파일 검사
/usr/sbin/fluentd --dry-run -c /etc/fluent/fluentd.conf
더보기
---
$ /usr/sbin/fluentd --dry-run -c /etc/fluent/fluentd.conf
2024-03-01 19:35:41 +0900 [info]: init supervisor logger path=nil rotate_age=nil rotate_size=nil
2024-03-01 19:35:41 +0900 [info]: parsing config file is succeeded path="/etc/fluent/fluentd.conf"
2024-03-01 19:35:41 +0900 [info]: gem 'fluentd' version '1.16.3'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-calyptia-monitoring' version '0.1.3'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-elasticsearch' version '5.4.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-flowcounter-simple' version '0.1.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-kafka' version '0.19.2'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-metrics-cmetrics' version '0.1.2'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-opensearch' version '1.1.4'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-prometheus' version '2.1.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-prometheus_pushgateway' version '0.1.1'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-record-modifier' version '2.1.1'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '2.4.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-s3' version '1.7.2'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-sd-dns' version '0.1.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-systemd' version '1.0.5'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-td' version '1.2.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-utmpx' version '0.5.0'
2024-03-01 19:35:41 +0900 [info]: gem 'fluent-plugin-webhdfs' version '1.5.0'
2024-03-01 19:35:41 +0900 [info]: starting fluentd-1.16.3 as dry run mode ruby="3.2.2"
2024-03-01 19:35:41 +0900 [info]: using configuration file: <ROOT>
<match td.*.*>
@type tdlog
@id output_td
apikey xxxxxx
auto_create_table
<buffer>
@type "file"
path "/var/log/fluent/buffer/td"
</buffer>
<secondary>
@type "secondary_file"
directory "/var/log/fluent/failed_records"
</secondary>
</match>
<match debug.**>
@type stdout
@id output_stdout
</match>
<source>
@type forward
@id input_forward
</source>
<source>
@type http
@id input_http
port 8888
</source>
<source>
@type debug_agent
@id input_debug_agent
bind "127.0.0.1"
port 24230
</source>
</ROOT>
2024-03-01 19:35:41 +0900 [info]: finished dry run mode
---
- fluentd 서비스 실행
sudo systemctl start fluentd.service
- fluentd 서비스 상태 확인
sudo systemctl status fluentd.service
- HTTP를 통해 샘플 로그 게시
curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
- fluentd 로그 확인
tail -n 1 /var/log/fluent/fluentd.log
$ tail -n 1 /var/log/fluent/fluentd.log
2024-03-01 17:00:50.415554123 +0900 debug.test: {"json":"message"}
2. 로그 수집기 서버(Fluentd Aggregator) 설치
Fluentd 구성
- Fluentd 구성 파일을 편집하여 로그를 수집할 방법을 지정합니다. 기본적으로 구성 파일은 /etc/td-agent/td-agent.conf에 있습니다.
sudo vim /etc/td-agent/td-agent.conf
예를 들어, 로그를 수집하여 Elasticsearch로 전송하는 구성은 다음과 같을 수 있습니다.
<source>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/td-agent/nginx-access.log.pos
tag nginx.access
format none
</source>
<match nginx.access>
@type elasticsearch
host localhost
port 9200
logstash_format true
</match>
Fluentd 구성 파일 검사
/usr/sbin/fluentd --dry-run -c /etc/fluent/fluentd.conf
Fluentd 재시작
- 구성 파일을 저장하고 Fluentd를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart td-agent
3. 로그 전송 서버(Fluentd Agent) 설치
Fluentd 구성
- 로그를 전송할 대상 및 포맷을 지정하기 위해 로그 전송 서버(Fluentd Agent)의 구성 파일을 편집합니다.
sudo vim /etc/td-agent/td-agent.conf
예를 들어, 로그를 수집기 서버(Fluentd Aggregator)로 전송하는 구성은 다음과 같을 수 있습니다.
<source>
@type syslog
port 5140
bind 0.0.0.0
</source>
<match **>
@type forward
<server>
host 192.168.1.100
port 24224
</server>
</match>
Fluentd 구성 파일 검사
/usr/sbin/fluentd --dry-run -c /etc/fluent/fluentd.conf
Fluentd 재시작
- 구성 파일을 저장하고 Fluentd를 재시작하여 변경 사항을 적용합니다.
sudo systemctl restart td-agent
이제 로그 수집기 서버(Fluentd Aggregator)와 로그 전송 서버(Fluentd Agent)가 모두 설정되었습니다. 로그를 수집하고 전송하여 원하는 대상에 저장할 수 있습니다.
728x90
'리눅스' 카테고리의 다른 글
Fluentd 웹 UI를 설치하는 방법(fluentd-ui) (0) | 2024.03.04 |
---|---|
우분투에 플루언트 비트를 설치하고 기본 설정하는 방법(Fluent Bit) (0) | 2024.03.03 |
Kibana를 설치하는 방법 (0) | 2024.03.01 |
Elasticsearch에 Nori 분석기를 설치하는 방법 (0) | 2024.02.29 |
우분투에서 socat을 설치하고 사용하는 방법(포트 포워딩) (0) | 2024.02.29 |