推荐使用td-agent官方包安装:添加Treasure Data APT源后安装td-agent4,启动并启用systemd服务,配置文件位于/etc/td-agent/td-agent.conf,日志输出至/var/log/td-agent/td-agent.log。

如果您在统信UOS操作系统上需要部署Fluentd日志采集器,但系统默认未预装且缺少Ruby运行环境或依赖包,则可能因环境不兼容导致安装失败。以下是适用于统信UOS的多种可靠安装与配置方法:
一、使用td-agent官方包安装(推荐生产环境)
td-agent是Fluentd的稳定发行版,由Treasure Data维护,已针对Linux发行版(含UOS)预编译并适配systemd服务管理,无需手动处理Ruby版本冲突。
1、打开终端,添加Treasure Data官方APT仓库密钥与源:
sudo apt-get install -y curl gnupg2 && curl -fsSL https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agent4.sh | sh
2、更新软件包索引:
sudo apt-get update
3、安装td-agent:
sudo apt-get install -y td-agent
4、启动并启用开机自启服务:
sudo systemctl start td-agent && sudo systemctl enable td-agent
5、验证服务状态与配置路径:
sudo systemctl status td-agent && ls /etc/td-agent/td-agent.conf
安装成功后,主配置文件位于 /etc/td-agent/td-agent.conf,日志输出默认为 /var/log/td-agent/td-agent.log。
二、通过RubyGems安装(适合开发调试)
此方式直接安装Fluentd核心gem包,灵活性高,但需确保UOS系统已具备兼容的Ruby 2.7+环境及编译工具链;若系统自带Ruby版本过低(如2.5以下),必须先升级。
1、安装基础构建依赖:
sudo apt-get install -y build-essential ruby-dev zlib1g-dev libssl-dev libffi-dev
2、升级Ruby至2.7或更高版本(UOS默认Ruby常为2.5,不满足Fluentd v4要求):
curl -sSL https://get.rvm.io | bash -s stable && source /etc/profile.d/rvm.sh && rvm install 2.7.8 && rvm use 2.7.8 --default
3、更换RubyGems源为国内镜像以加速安装:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
4、安装Fluentd核心包:
sudo gem install fluentd --no-document
5、初始化用户级配置目录:
fluentd --setup ~/.fluentd
6、启动Fluentd并指定配置文件:
fluentd -c ~/.fluentd/fluent.conf -p ~/.fluentd/plugin
注意:该方式下Fluentd以当前用户权限运行,不自动注册为系统服务;如需守护进程,请配合systemd unit文件或supervisord管理。
三、使用Docker容器方式运行(隔离性强,免环境冲突)
统信UOS支持Docker(需已安装docker-ce),此方案完全规避宿主机Ruby与依赖版本问题,所有组件封装于镜像内,适合快速验证或轻量采集场景。
1、确认Docker服务已启用:
sudo systemctl is-active docker
2、拉取官方Fluentd v4镜像:
sudo docker pull fluent/fluentd:v4.4.0
3、创建本地配置目录并写入最小化配置(例如 ./fluent/conf/fluent.conf):
<source> @type tail path /tmp/app.log pos_file /tmp/app.pos tag app.log format none </source> <match app.log> @type stdout </match>
4、运行容器并挂载配置与日志目录:
sudo docker run -d --name fluentd -v $(pwd)/fluent/conf:/fluentd/etc -v /tmp:/tmp -p 24224:24224 -p 8888:8888 fluent/fluentd:v4.4.0
5、向容器发送测试日志:
echo '{"message":"test from UOS"}' | curl -X POST -H 'Content-Type: application/json' -d @- http://localhost:8888/test.log
关键提示:容器内Fluentd监听端口24224(forward协议)和8888(HTTP输入),务必确保UOS防火墙放行对应端口。
四、配置Fluentd采集系统日志(进阶实践)
在UOS中采集journalctl日志需使用systemd插件,该插件依赖libsystemd-dev头文件,安装前需补全开发包。
1、安装systemd开发支持:
sudo apt-get install -y libsystemd-dev
2、为td-agent安装systemd输入插件:
sudo td-agent-gem install fluent-plugin-systemd
3、编辑 /etc/td-agent/td-agent.conf,在
<source> @type systemd filters [{ "_SYSTEMD_UNIT": "sshd.service" }] read_from_head true </source>
4、重启服务使配置生效:
sudo systemctl restart td-agent
验证采集效果:执行 journalctl -u sshd -n 10 可查原始日志,同时检查 /var/log/td-agent/td-agent.log 是否出现对应条目。
五、权限与SELinux兼容性适配(UOS安全增强场景)
统信UOS启用强制访问控制(类似SELinux),若Fluentd无法读取/var/log/下的敏感日志(如auth.log),需调整策略或切换读取方式。
1、检查当前安全策略模式:
sudo sestatus
2、若为enforcing模式,临时允许td-agent读取日志目录(仅用于测试):
sudo setsebool -P td_agent_read_logs on
3、更安全的做法是使用journalctl转发替代文件直读:
sudo mkdir -p /etc/systemd/journald.conf.d && echo -e "[Journal]\nForwardToSyslog=yes\nMaxRetentionSec=7day" | sudo tee /etc/systemd/journald.conf.d/forward.conf
4、重启journald服务:
sudo systemctl restart systemd-journald
重要说明:UOS默认禁用syslog socket,启用ForwardToSyslog后,Fluentd可通过@type syslog插件接收UDP 514端口日志,避免直接访问受限文件路径。

















