오늘은 Fluentd를 사용해서 Newrelic에다가 log를 쌓는 것을 적용했다.
회사에서 이번에 Fluentd와 Newrelic을 이용해서 로그 수집을 하라고 하여 실제 QA 서버를 하나 복사한 것을 받아서 새로운 host로 회사 프로젝트 구조와 똑같이 했다.
환경 : Linux(CentOS 6.10 amazon linux 2)
Fluentd 설치
fluentd에 관한 설치에 대해서는 fluentd 공식 홈페이지에 나와있으니 자기 자신의 버전에 맞게 설치하면 된다.
참조 : https://docs.fluentd.org/installation/install-by-rpm
command
$ curl -L https://toolbelt.treasuredata.com/sh/install-amazon2-td-agent4.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
104 838 104 838 0 0 1196 0 --:--:-- --:--:-- --:--:-- 1682
==============================
td-agent Installation Script
==============================
This script requires superuser access to install rpm packages.
You will be prompted for your password by sudo.
[sudo] password for happytuk:
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* epel: archivefedora.mirror.angkasa.id
treasuredata | 3.0 kB 00:00
treasuredata/primary_db | 21 kB 00:00
WALinuxAgent.noarch 2.2.45-1.el6 openlogic
adcli.x86_64 0.8.1-3.el6_10 updates
autofs.x86_64 1:5.0.5-140.el6_10.1 updates
bind-libs.x86_64 32:9.8.2-0.68.rc1.el6_10.8 updates
bind-utils.x86_64 32:9.8.2-0.68.rc1.el6_10.8 updates
binutils.x86_64 2.20.51.0.2-5.48.el6_10.1 updates
ca-certificates.noarch 2020.2.41-65.1.el6_10 updates
cups.x86_64 1:1.4.2-81.el6_10 updates
cups-libs.x86_64 1:1.4.2-81.el6_10 updates
curl.x86_64 7.19.7-54.el6_10 updates
dbus.x86_64 1:1.2.24-11.el6_10 updates
dbus-libs.x86_64 1:1.2.24-11.el6_10 updates
freetype.x86_64 2.3.11-19.el6_10 updates
ghostscript.x86_64 8.70-24.el6_10.2 updates
java-1.7.0-openjdk.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-demo.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-devel.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-javadoc.noarch 1:1.7.0.261-2.6.22.1.el6_10 updates
java-1.7.0-openjdk-src.x86_64 1:1.7.0.261-2.6.22.1.el6_10 updates
kernel.x86_64 2.6.32-754.35.1.el6 updates
kernel-firmware.noarch 2.6.32-754.35.1.el6 updates
kernel-headers.x86_64 2.6.32-754.35.1.el6 updates
libX11.x86_64 1.6.4-4.el6_10 updates
libX11-common.noarch 1.6.4-4.el6_10 updates
libcurl.x86_64 7.19.7-54.el6_10 updates
libcurl-devel.x86_64 7.19.7-54.el6_10 updates
libgudev1.x86_64 147-2.74.el6_10 updates
libipa_hbac.x86_64 1.13.3-60.el6_10.2 updates
libssh2.x86_64 1.4.2-3.el6_10.1 updates
libsss_idmap.x86_64 1.13.3-60.el6_10.2 updates
libudev.x86_64 147-2.74.el6_10 updates
microcode_ctl.x86_64 2:1.17-33.31.el6_10 updates
nfs-utils.x86_64 1:1.2.3-78.el6_10.2 updates
ntp.x86_64 4.2.6p5-15.el6.centos updates
ntpdate.x86_64 4.2.6p5-15.el6.centos updates
openssh.x86_64 5.3p1-124.el6_10 updates
openssh-clients.x86_64 5.3p1-124.el6_10 updates
openssh-server.x86_64 5.3p1-124.el6_10 updates
openssl.x86_64 1.0.1e-58.el6_10 updates
openssl-devel.x86_64 1.0.1e-58.el6_10 updates
perf.x86_64 2.6.32-754.35.1.el6 updates
polkit.x86_64 0.96-11.el6_10.1 updates
poppler.x86_64 0.12.4-12.el6_10.1 updates
poppler-utils.x86_64 0.12.4-12.el6_10.1 updates
python.x86_64 2.6.6-68.el6_10 updates
python-libipa_hbac.x86_64 1.13.3-60.el6_10.2 updates
python-libs.x86_64 2.6.6-68.el6_10 updates
python-paramiko.noarch 1.7.5-5.el6_10 updates
python-sss-murmur.x86_64 1.13.3-60.el6_10.2 updates
python-sssdconfig.noarch 1.13.3-60.el6_10.2 updates
samba-client.x86_64 3.6.23-53.el6_10 updates
samba-common.x86_64 3.6.23-53.el6_10 updates
samba-winbind.x86_64 3.6.23-53.el6_10 updates
samba-winbind-clients.x86_64 3.6.23-53.el6_10 updates
sos.noarch 3.2-63.el6.centos.4 updates
sssd.x86_64 1.13.3-60.el6_10.2 updates
sssd-ad.x86_64 1.13.3-60.el6_10.2 updates
sssd-client.x86_64 1.13.3-60.el6_10.2 updates
sssd-common.x86_64 1.13.3-60.el6_10.2 updates
sssd-common-pac.x86_64 1.13.3-60.el6_10.2 updates
sssd-ipa.x86_64 1.13.3-60.el6_10.2 updates
sssd-krb5.x86_64 1.13.3-60.el6_10.2 updates
sssd-krb5-common.x86_64 1.13.3-60.el6_10.2 updates
sssd-ldap.x86_64 1.13.3-60.el6_10.2 updates
sssd-proxy.x86_64 1.13.3-60.el6_10.2 updates
sudo.x86_64 1.8.6p3-29.el6_10.3 updates
td-agent.x86_64 4.3.0-1.amzn2 treasuredata
telnet.x86_64 1:0.17-49.el6_10 updates
tomcat-el-2.2-api.noarch 7.0.106-1.el6 epel
tomcat-jsp-2.2-api.noarch 7.0.106-1.el6 epel
tomcat-lib.noarch 7.0.106-1.el6 epel
tomcat-servlet-3.0-api.noarch 7.0.106-1.el6 epel
tzdata.noarch 2020d-1.el6 updates
udev.x86_64 147-2.74.el6_10 updates
vim-common.x86_64 2:7.4.629-5.el6_10.2 updates
vim-enhanced.x86_64 2:7.4.629-5.el6_10.2 updates
vim-filesystem.x86_64 2:7.4.629-5.el6_10.2 updates
vim-minimal.x86_64 2:7.4.629-5.el6_10.2 updates
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
* epel: archivefedora.mirror.angkasa.id
Resolving Dependencies
--> Running transaction check
---> Package td-agent.x86_64 0:3.8.0-0.el6 will be updated
---> Package td-agent.x86_64 0:4.3.0-1.amzn2 will be an update
--> Processing Dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: systemd for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: systemd for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.25)(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libsasl2.so.3()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libyaml-0.so.2()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Running transaction check
---> Package libyaml.x86_64 0:0.1.3-4.el6_6 will be installed
---> Package td-agent.x86_64 0:4.3.0-1.amzn2 will be an update
--> Processing Dependency: libcrypto.so.10(OPENSSL_1.0.2)(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: systemd for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: systemd for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libc.so.6(GLIBC_2.25)(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libncurses.so.6()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libsasl2.so.3()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Processing Dependency: libtinfo.so.6()(64bit) for package: td-agent-4.3.0-1.amzn2.x86_64
--> Finished Dependency Resolution
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: libtinfo.so.6()(64bit)
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: systemd
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: libcrypto.so.10(OPENSSL_1.0.2)(64bit)
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: libsasl2.so.3()(64bit)
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: libc.so.6(GLIBC_2.25)(64bit)
Error: Package: td-agent-4.3.0-1.amzn2.x86_64 (treasuredata)
Requires: libncurses.so.6()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
Installation completed. Happy Logging!
start & stop & status command
[asdf@asdf /]$ cd /etc/ini.d
[asdf@asdf init.d]$ sudo ./td-agent start
[sudo] password for <> :
td-agent td-agent: [ OK ]
[asdfa@asdf init.d]$ sudo ./td-agent start
td-agent is running [ OK ]
설치 완료
이제 Newrelic 이라는 녀석을 사용해야 되는데 그럴려면 plugin을 받아야 한다.
command
[asdf@asddf /]$ sudo td-agent-gem install fluent-plugin-newrelic
이제 Fluentd에서 Newrelic을 사용할 준비는 끝났다.
이제 Newrelic 공식 홈페이지로 가서 회원가입을 한다.
Newrelic은 유료이긴 하지만 무료 기간이 있기 때문에 공부 목적으로 회원가입을 해서 설정을 해도 된다.
무료 버전 기간이 지나도 유료로 자동전환이 되지 않으므로 걱정하지 말자.
이제 회원가입을 하면 New Relic One으로 옮겨지는데 여기서 봐야 할 것은 여기이다.
API Keys를 클릭 하여 들어가면
Name 부분에 INGEST - LICENSE 라는 녀석이 라이선스 키 이므로 동그라미 친 부분을 클릭하여 Copy Key를 눌러 라이선스 키를 복사해둔다.
이제 Linux로 돌아와서 conf 파일을 수정해주면 된다.
$ sudo vi /etc/td-agent/td-agent.conf
<source>
@type tail
@log_level warn
<parse>
@type none
</parse>
path /<pathName>/%Y-%m-%d.txt
pos_file /tmp/td-agent/log_file.pos
tag tag.A
</source>
<source>
@type tail
@log_level warn
<parse>
@type none
</parse>
path /<pathName>/%Y-%m-%d.txt
pos_file /tmp/td-agent/log_file2.pos
tag tag.B
</source>
<source>
@type tail
@log_level warn
<parse>
@type none
</parse>
path /<pathName>/%Y-%m-%d.txt
pos_file /tmp/td-agent/log_file3.pos
tag <tagName3>
</source>
<match tag.*>
@type newrelic
license_key <라이선스 키>
base_uri https://log-api.newrelic.com/log/v1
</match>
<match tagName3>
@type newrelic
license_key <라이선스 키>
base_uri https://log-api.newrelic.com/log/v1
</match>
회사에서는 로그를 좀 많이 남겨서 로그가 들어가 있는 폴더들이 많다 그래서 3개 정도로 일단 뽑아서 놔뒀다.
저 tag.A, tag.B는 두개가 연관 있는 로그여서 그룹으로 묶어 줬다.
이렇게 한 다음 test를 위한 명령어를 날려준다.
$ echo "이것은 로그이다 그러니까 newrelic으로 들어가라" | sudo tee -a /<pathName>/<test message 넣고 싶은 log파일 이름>.txt
$ echo "이것은 로그이asdfasdfasdf다 그러니까 newrelic으로 들어가라" | sudo tee -a /<pathName>/<test message 넣고 싶은 log파일 이름>.txt
그리고 다시 New Relic 으로 돌아와서 Logs를 보면 ?
넣었던 로그가 들어온 것을 확인 할 수 있다.
끝!
'Fluentd > 적용' 카테고리의 다른 글
Fluentd + Azure Loganalytics (0) | 2022.07.25 |
---|---|
Fluentd Installation ( ruby gem ) (0) | 2022.07.25 |
Fluentd access log 500 에러만 남기기 (0) | 2022.06.23 |
Fluentd + MongoDB (0) | 2022.05.10 |
Fluentd Test (0) | 2022.05.06 |
Comment