備忘録/にわかエンジニアが好きなように書く

個人的にとりあえず仕組みを知るために、触りたように好きにとりあえず動くような構築してみる 個人用の備忘録となるので内容の保証はないのでその点はご了承ください。 ※変な内容や間違いを書いているなどありましたらコメントやご指摘いただけると幸いです。

ubuntu16.04にfluentdを導入

 

Fluentd

・手順は、1コマンドのみでインストールは可能

 公式のシェルスクリプトを作成しているのでリポジトリからインストールして。ということらしい

・細かいカーネルパラメータは調整出来たらしましょう。

・正しい時刻同期を行う環境設定は必須としたほうがいい。ログや分析では時刻が重要でずれていると信ぴょう性が薄れるかも。

 

■インストール参考サイト

https://docs.fluentd.org/v1.0/articles/before-install

※centosやwindowsなどのいろいろのOSでの導入方法も載っている。

インストール環境

VMware ESXi 6.5 ホストに仮想マシンを作成してインストール。

・Ubuntu 16.04.3 

Step1.事前準備

②と③のカーネルチューニングは仮想環境とオンプレ環境やクラウド環境で同じ設定として問題ないのかは不明ですが、ドキュメントベースで実施している。

①NTP設定

NTPサーバやクライアント設定を行い、正しい時刻が取得できる状態にする。

ことが望ましいらしい(必須)。

現状確認では初期のntp追加状態で動いている

user@sv001:~$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
+nipper.paina.ne 131.113.192.40 2 u 58 128 337 7.381 -1.601 1.953
+www6339uj.sakur 133.130.120.204 3 u 53 128 377 22.461 -3.150 3.747
*sv01.azsx.net 133.243.238.243 2 u 103 128 377 8.375 -1.714 3.101
+122x215x240x51. 10.84.87.146 2 u 98 128 377 7.664 -1.600 1.867
+117.102.176.202 131.113.192.40 2 u 116 128 377 9.205 -2.444 1.749
+y.ns.gin.ntt.ne 249.224.99.213 2 u 111 128 377 9.969 -2.071 5.544
+extendwings.com 133.243.238.163 2 u 101 128 337 7.079 -1.346 25.646
+time.platformni 157.7.235.92 3 u 49 128 377 7.590 -2.181 2.369
+133.130.120.204 133.243.238.243 2 u 51 128 377 6.530 -2.747 1.978
+mail.moe.cat 103.1.106.69 2 u 94 128 377 7.790 -0.473 3.664
+203-137-182-228 133.243.238.244 2 u 106 128 377 10.266 -1.274 2.964
+34nm.com 78.73.83.84 2 u 27 128 377 7.059 -0.414 4.399
+v.dyn.im 103.1.106.69 2 u 93 128 377 7.858 -0.868 2.512
user@sv001:~$
②File Descriptorsの最大値変更

現状確認

user@sv001:~$ ulimit -n
1024
user@sv001:~$

表示が "1024" の場合、それは不十分なので、/etc/security/limits.confを修正し再起動する。

設定修正

user@sv001:~$ sudo vi /etc/security/limits.conf
-- 以下を追加 --
root soft nofile 65536
* soft nofile 65536
root hard nofile 65536
* hard nofile 65536
----------------

 再起動

user@sv001:~$ sudo reboot

変更後の確認

user@sv001:~$ ulimit -n
65536
user@sv001:~$

であれば問題ないそうです。

③Network Kernel Parameters(カーネルのチューニング)

~ドキュメントからの抜粋~

For high load environments consisting of many Fluentd instances, please add these parameters to your /etc/sysctl.conf file. Please either type sysctl -p or reboot your node to have the changes take effect.

 

現状確認

# と空行 を除外して表示させて確認
user@sv001:~$ sudo more /etc/sysctl.conf | grep -v '^\s*#' |grep -v '^\s*$'
user@sv001:~$

現状の設定としては無い。(デフォルト値かな)

設定修正

user@sv001:~$ sudo vi /etc/sysctl.conf
-- 以下を追加 --
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
----------------

設定反映

user@sv001:~$ sudo sysctl -p
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
user@sv001:~$

Step2.Fluentd インストール(Package)

シェルスクリプトは、各バージョンのインストールプロセスを自動化するために提供されています。

シェルスクリプトは新しいaptリポジトリを登録/etc/apt/sources.list.d/treasure-data.listし、td-agentdebパッケージをインストールします。

なので、自動でtd-agentをインストールしてくれるみたいです。

Aptリポジトリからインストールする

ubuntu16.04の場合

user@sv001:~$ sudo curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-xenial-td-agent3.sh | sh
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 738 100 738 0 0 703 0 0:00:01 0:00:01 --:--:-- 704
==============================
td-agent Installation Script
==============================
This script requires superuser access to install apt packages.
You will be prompted for your password by sudo.
[sudo] user のパスワード:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 3157 100 3157 0 0 9974 0 --:--:-- --:--:-- --:--:-- 9990
OK

~省略~ 

以下のパッケージが新たにインストールされます:
td-agent
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 41 個。
45.9 MB のアーカイブを取得する必要があります。
この操作後に追加で 139 MB のディスク容量が消費されます。
取得:1 http://packages.treasuredata.com/3/ubuntu/xenial xenial/contrib amd64 td-agent amd64 3.1.1-0 [45.9 MB]
45.9 MB を 29秒 で取得しました (1,536 kB/s)
以前に未選択のパッケージ td-agent を選択しています。
(データベースを読み込んでいます ... 現在 218802 個のファイルとディレクトリがインストールされています。)
.../td-agent_3.1.1-0_amd64.deb を展開する準備をしています ...
td-agent (3.1.1-0) を展開しています...
td-agent (3.1.1-0) を設定しています ...
システムユーザー `td-agent' (UID 125) を追加しています...
新しいグループ `td-agent' (GID 132) を追加しています...
新しいユーザー `td-agent' (UID 125) をグループ `td-agent' に追加しています...
ホームディレクトリ `/home/td-agent' を作成しません。
Installing default conffile /etc/td-agent/td-agent.conf ...
THANK YOU FOR USING TREASURE DATA’s PACKAGED VERSION OF FLUENTD (TD-AGENT). IF YOU ARE NOT A TREASURE DATA CUSTOMER AND NEED HELP TROUBLESHOOTING OR THE ENTERPRISE VERSION VISIT https://fluentd.treasuredata.com
libc-bin (2.23-0ubuntu10) のトリガを処理しています ...

Installation completed. Happy Logging!

user@sv001:~$

Launch Daemon デーモンの開始

起動

user@sv001:~$ sudo systemctl start td-agent.service

 起動確認

user@sv001:~$ sudo systemctl status td-agent.service
td-agent.service - td-agent: Fluentd based data collector for Treasure Data
Loaded: loaded (/lib/systemd/system/td-agent.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2018-02-18 12:56:40 JST; 10s ago
Docs: https://docs.treasuredata.com/articles/td-agent
Process: 4341 ExecStart=/opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid (code=exited
Main PID: 4347 (fluentd)
CGroup: /system.slice/td-agent.service
|-4347 /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/t
--4352 /opt/td-agent/embedded/bin/ruby -Eascii-8bit:ascii-8bit /opt/td-agent/embedded/bin/fluentd --log /var/log/td-agent/td-agent.log --da

Feb 18 12:56:39 sv001 systemd[1]: Starting td-agent: Fluentd based data collector for Treasure Data...
Feb 18 12:56:40 sv001 systemd[1]: Started td-agent: Fluentd based data collector for Treasure Data.

自動起動設定

user@sv001:~$ sudo systemctl list-unit-files --type=service | grep td-
td-agent.service disabled

user@sv001:~$ sudo systemctl enable td-agent.service
Synchronizing state of td-agent.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable td-agent

user@sv001:~$ sudo systemctl list-unit-files --type=service | grep td-
td-agent.service enabled

Step3.HTTP経由でサンプルログを送信する

 HTTPログ出力(curlでPOSTリクエスト)
user@sv001:~$ more /etc/td-agent/td-agent.conf
~省略~
# HTTP input
# POST http://localhost:8888/?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>
~省略~
 HTTPログ出力(curlでPOSTリクエスト)
user@sv001:~$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
 HTTPログ確認
user@sv001:~$ cat /var/log/td-agent/td-agent.log
~省略~
2018-02-18 13:01:55.318262450 +0900 debug.test: {"json":"message"}
user@sv001:~$

 

あとは、カスタマイズして調整していくらしいです。そのための公式ドキュメントも準備されているので参考してください。のことかな。

 

~ドキュメントからの抜粋~

Next Steps

You’re now ready to collect your real logs using Fluentd. Please see the following tutorials to learn how to collect your data from various data sources.

Please refer to the resources below for further steps.