公司日志采集用 flume 还是用脚本?

问答 AIZero ⋅ 于 2020-09-02 00:38:36 ⋅ 最后回复由 潘牛 2020-09-02 21:46:08 ⋅ 2405 阅读

老师所教的获取日志的方式有两个,以小时为单位
第一个脚本实现:contab 2:00通过mv access.log文件到work目录下,上传到hdfs中,将文件夹命名为1:00。触发用crontab来实现。
第二个flume实现:contab 2:00通过cp access.log 文件到work目录下,flume监控到work目录下发生变化,将文件夹命名为2:00,上传到hdfs中。直接触发用flume,间接触发还是crontab

问题1:flume上传到hdfs的过程中,文件夹的日期名能否修改,比如上面第二方案hdfs文件名2:00修改到1:00(不知道怎么在flume配置文件里改,自己太菜)
问题2:公司集群是采用何种方式,是如何实现的
问题3:多个节点都有所需的数据源,contab在多个节点管理很麻烦,flume如何定时获取数据源,如果不行,怎么实现

点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2020-09-02 00:48:35

    上传的过程中当然不能移动了,不过可以使用flume直接读access日志,然后flume自己实现文件小时切分,这样就不用接住crontab了,你可以问一下潘老师。
    公司集群使用flume,以后脚本的方式指定要抛弃。
    不同的数据源,可以配置不同的flume-agent实现。
    其实你问这3个问题都能用flume解决

  • 潘牛 在这个世界里,都要好好活着
    2020-09-02 08:27:40

    重点研究下taildir 源的使用 和 hdfs sink的使用, hdfs sink配置时,可以配置按照天,小时滚动生成日志,如:
    a1.sinks.k1.hdfs.path = hdfs://ns1/user/hadoop/access/%Y/%m%d/%H
    每个参数是干什么的,你可以参考flume官方文档
    http://flume.apache.org/FlumeUserGuide.html#hdfs-sink

  • AIZero
    2020-09-02 11:47:07

    @潘牛 配置hdfs目录中有一个疑问比如这样配置,a1.sinks.k1.hdfs.path = hdfs://ns1/user/hadoop/access/%Y/%m%d/%H,
    目录0902/03的数据是上午2:00-3:00区间的数据,就是3点的数据是前面区段的数据,有点不符合平常认知。我希望目录为0902/02指向2:00-3:00的数据。在shell脚本中可以用date=date -d "1 day ago" +%Y%m%d%H,用来获取前一小时的日期,但是在flume的配置文件中加上这条语句后,hdfs://ns1/user/hadoop/access/%Y/%m%d/%H时间并不会受到影响。有什么办法能修改吗,还是flume采取的日志大家都默认指向前一个时间段。

  • 潘牛 在这个世界里,都要好好活着
    2020-09-02 21:46:08

    @AIZero 我们归集日志,只是按照小时归集即可,不用管当前小时内的文件数据和目录的关系,因为数据处理出报表是按照每条记录的业务时间。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter