1.211.40.28 - - [11/Jun/2019:08:56:30 +0900] "GET /api/v4/users/me/teams/9kztki3nz7foi81je6cy9t1nqr/channels HTTP/1.1" 200 926 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) MTWORKS/4.1.4 Chrome/66.0.3359.181 Electron/3.0.13 Safari/537.36"
nginx 디폴트 경로
sudo cat /var/log/nginx/access.log
로그가 text로 쌓여서 분석하기가 쉽지가 않고 그래서 json 형식으로 변경을 한다.
nginx 설정 파일에 가서 수정을 한다.
log_format main '{"@time":"$time_iso8601",'
'"IP":"$remote_addr",'
'"Status":$status,'
'"Method":"$request_method",'
'"RequestTime":$request_time,'
'"FileName":"$request_filename",'
'"QueryString":"$query_string",'
'"SentSize":$bytes_sent,'
'"UA":"$http_user_agent",'
'"Referer":"$http_referer"}';
# 결과
{"@time":"2019-06-13T20:20:17+09:00","IP":"1.5.6.252","Status":200,"Method":"POST","RequestTime":0.000,"FileName":"/usr/share/nginx/html/api/v4/users/status/ids","QueryString":"-","SentSize":827,"UA":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36","Referer":"-"}
#
{
"@time": "2019-06-13T20:20:17+09:00",
"IP": "1.5.6.252",
"Status": 200,
"Method": "POST",
"RequestTime": 0.000,
"FileName": "/usr/share/nginx/html/api/v4/users/status/ids",
"QueryString": "-",
"SentSize": 827,
"UA": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36",
"Referer": "-"
}
sudo service nginx restart
fluentd 설치
개인적으로 블로그를 찾는 것도 있었지만 공식 홈페이지를 참고 하였고,
기타 설정부분이나 잘 안되는 부분은 블로그를 참고하였습니다.
Install by RPM Package (Red Hat Linux)
Amazon Linux 2:
# td-agent 4
$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent4.sh | sh
# td-agent 3
$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent3.sh | sh
실행
td-agent 는 두개의 데몬을 지원 합니다.
$ sudo systemctl start td-agent.service
$ sudo systemctl status td-agent.service
자주 쓰는 명령어
$ sudo /etc/init.d/td-agent start
$ sudo /etc/init.d/td-agent stop
$ sudo /etc/init.d/td-agent restart
$ sudo /etc/init.d/td-agent status
Fluentd 플러그인 설치
ubuntu@ip-10-10-101-43:/home/ubuntu# sudo td-agent-gem update
Updating installed gems
Updating aws-partitions
Fetching: aws-partitions-1.174.0.gem (100%)
Successfully installed aws-partitions-1.174.0
Parsing documentation for aws-partitions-1.174.0
Installing ri documentation for aws-partitions-1.174.0
Installing darkfish documentation for aws-partitions-1.174.0
Done installing documentation for aws-partitions after 0 seconds
Parsing documentation for aws-partitions-1.174.0
Done installing documentation for aws-partitions after 0 seconds
.
.
ubuntu@ip-10-10-101-43:/home/ubuntu# sudo td-agent-gem install fluent-plugin-config-expander
.
.
ubuntu@ip-10-10-101-43: sudo td-agent-gem install fluent-plugin-elasticsearch
접속해서
format은 json
<source>
@type config_expander
<config>
@type tail
path /var/log/nginx/access.log
pos_file /var/log/nginx/access.log.pos
format json
tag nginx-access-log
</config>
</source>
<match nginx-access-log>
@type elasticsearch
host 10.60.101.29
port 9200
logstash_format true
</match>
config 에서 pos_file 옵션은 마지막에 읽은 위치를 기록하는 파일이다.
@type tail - 저장할 file의 tail을 보면서 로그를 수집하겠다는 것이며, path와 pos_file, tag 등을 필수로 함께 작성해주어야 한다.
path - 로그를 수집할 file의 위치를 지정한다. 예시처럼 파일을 명시적으로 한 개 지정할 수 도 있고 wildcard 문자로 특정 폴더 내의 모든 파일 등을 지정할 수 도 있다. (/myserver/log/*)
pos - 모니터링 대상 파일 내용을 어디까지 읽었는지 기록해두는 파일이다. 해당 파일에 기록된 위치를 기반으로 파일에 새로운 내용이 쓰이거나 td-agent가 재시작되었을 때 중복되지 않게 로그를 읽을 수 있게 해 준다.
기본적으로 제가 설정한 source 는 input 값
match 는 Output 지점
설정 url
pos 파일을 만들고 Fluentd 를 시작하자.
ubuntu@ip-10-10-101-43:/home/ubuntu# touch /var/log/nginx/access.log.pos
ubuntu@ip-10-10-101-43:/home/ubuntu# sudo service td-agent configtest
* td-agent # 색상이 없으면 OK
ubuntu@ip-10-10-101-43:/home/ubuntu# sudo service td-agent start
td-agent 14620 1 0 Jun11 ? 00:00:11 /opt/td-agent/embedded/bin/ruby /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid
td-agent 14626 14620 0 Jun11 ? 00:00:21 /opt/td-agent/embedded/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid --under-supervisor

Management → Stack Management → Index Patterns →


참고 url
Fluentd 의 활용. ElasticSearch, Kibana 을 사용한 Nginx Log 수집 - GRIP.News