官方文档地址: Before Installation
在安装 Fluentd 之前,请确保正确设置环境,以避免在稍后阶段出现任何不一致。
遵循这些建议:
- 配置 NTP。
- 增加文件描述符的最大数量。
- 优化网络内核参数。
1. 配置 NTP
强烈建议您在节点上设置一个 NTP 守护进程(例如 chrony、ntpd ),以获得准确的当前时间戳。这对于所有生产级日志服务都是至关重要的。
对于 Amazon Web Services 用户,我们建议使用 AWS 托管的 NTP 服务器。
2. 增加文件描述符的最大数量
增加文件描述符的最大数量。可以使用ulimit -n
命令查看当前配置:
$ ulimit -n
65535
如果控制台显示 1024,则不足。请在/etc/security/limits.conf
文件中添加以下几行,然后重新启动机器:
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
如果您在systemd
下运行 fluentd,也可以使用选项LimitNOFILE=65536
。而且,如果您正在使用td-agent
包,则默认设置此值。
3. 优化网络内核参数
对于有很多 Fluentd 实例的高负载环境,在/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
使用sysctl -p
命令或重新引导节点使更改生效。
这些内核选项最初来自于高级性能架构师 Brendan Gregg 在 AWS re:Invent 2017 上的演讲 How Netflix Tunes EC2 Instances for Performance。
4. 使用粘位符号链接 / 硬链接防护
注意:CentOS 7 及以上版本、Ubuntu 18.04 及以上版本、Debian GNU/Linux 10 及以上版本均支持这些参数。
Fluentd 有时使用可预测的路径来转储、写入文件等。保护的默认设置在/etc/sysctl.d/10-link-restrictions.conf
或者/usr/lib/sysctl.d/50-default.conf
或在别处。
对于符号链接攻击防护,以下参数设置为1
:
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
这个设置几乎是足够的 time-of-check to time-of-use(TOCTTOU,TOCTTOU或TOC/TOU),这是一类软件错误。
如果你关掉了这些保护装置,请把它们打开。
使用sysctl -p
命令或重新引导节点使更改生效。