水槽系统日志代理没有选择消息并将其放入 HDFS

Posted

技术标签:

【中文标题】水槽系统日志代理没有选择消息并将其放入 HDFS【英文标题】:flume syslog agent not picking the message and placing it into HDFS 【发布时间】:2018-04-11 17:07:43 【问题描述】:

我正在尝试模拟 syslog 水槽代理,最终应该将数据放入 HDFS。 我的场景如下:

syslog flume 代理正在物理服务器 A 上运行,以下是配置详细信息:

===

syslog_agent.sources = syslog_source
syslog_agent.channels = MemChannel
syslog_agent.sinks = HDFS

# Describing/Configuring the source
syslog_agent.sources.syslog_source.type = syslogudp
#syslog_agent.sources.syslog_source.bind = 0.0.0.0
syslog_agent.sources.syslog_source.bind = localhost
syslog_agent.sources.syslog_source.port = 514

# Describing/Configuring the sink
syslog_agent.sinks.HDFS.type=hdfs
syslog_agent.sinks.HDFS.hdfs.path=hdfs://<IP_ADD_OF_NN>:8020/user/ec2-user/syslog
syslog_agent.sinks.HDFS.hdfs.fileType=DataStream
syslog_agent.sinks.HDFS.hdfs.writeformat=Text
syslog_agent.sinks.HDFS.hdfs.batchSize=1000
syslog_agent.sinks.HDFS.hdfs.rollSize=0
syslog_agent.sinks.HDFS.hdfs.rollCount=10000
syslog_agent.sinks.HDFS.hdfs.rollInterval=600

# Describing/Configuring the channel
syslog_agent.channels.MemChannel.type=memory
syslog_agent.channels.MemChannel.capacity=10000
syslog_agent.channels.MemChannel.transactionCapacity=1000

#Bind sources and sinks to the channel
syslog_agent.sources.syslog_source.channels = MemChannel
syslog_agent.sinks.HDFS.channel = MemChannel

我正在使用内置实用程序“记录器”从不同的物理服务器 B 发送系统日志“日志”,如下所示:

sudo logger --server IP_Address_physical_server_A> --port 514 --udp

我确实看到 yje 日志消息进入物理 server-A 的路径 --> /var/log/messages

但我没有看到任何消息进入 HDFS;即使消息从服务器 B 发送到服务器 A,水槽代理似乎也无法获取任何数据。

我在这里做错了吗?谁能帮我解决这个问题?

编辑

以下是运行 syslog 守护程序的服务器 A 上 netstat 命令的输出:

tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      573/rsyslogd
tcp6       0      0 :::514                  :::*                    LISTEN      573/rsyslogd
udp        0      0 0.0.0.0:514             0.0.0.0:*                           573/rsyslogd
udp6       0      0 :::514                  :::*                                573/rsyslogd

【问题讨论】:

【参考方案1】:

我不确定logger --server.给你什么,但我见过的大多数例子都使用netcat。

无论如何,你已经设置了batchSize=1000,所以在你发送 1000 条消息之前,Flume 不会写入 HDFS。

请记住,HDFS 不是流媒体平台,并且不喜欢有小文件。

如果您正在寻找日志收集,请查看以 Kafka 主题为前端的 Elasticsearch 或 Solr

【讨论】:

以上是关于水槽系统日志代理没有选择消息并将其放入 HDFS的主要内容,如果未能解决你的问题,请参考以下文章

水槽仍然保留 .tmp 文件并且没有将文件完全复制到 HDFS

提高水槽性能的指导方针是啥

如何接收系统日志消息并将其转换为字符串

水槽的 Spool Dir 可以在远程机器上吗?

Kafka Source 的 Flume 不使用 file_roll 写入事件

ini 水槽记录器,hdfs.conf