zoukankan      html  css  js  c++  java
  • Fluentd直接传输日志给MongoDB (standalone)

    官方文档地址:https://docs.fluentd.org/output/mongo

    td-agent版本默认没有包含out_mongo插件,需要安装这个插件才能使用

    使用的是td-agent,安装这个插件:

    $ /usr/sbin/td-agent-gem install gems
    $ /usr/sbin/td-agent-gem install fluent-plugin-mongo
    

    使用的是Fluentd,安装这个插件:

    $ fluent-gem install fluent-plugin-mongo
    

    有关插件管理可以看这篇文章,地址:https://www.cnblogs.com/sanduzxcvbnm/p/13936280.html

    配置示例

    # Single MongoDB
    <match mongo.**>
      @type mongo
      host fluentd
      port 27017
      database fluentd
      collection test
    
      # for capped collection
      capped
      capped_size 1024m
    
      # authentication
      user michael
      password jordan
    
      <inject>
        # key name of timestamp
        time_key time
      </inject>
    
      <buffer>
        # flush
        flush_interval 10s
      </buffer>
    </match>
    

    参数说明

    • @type:必填mongo
    • connection_string:必填,MongoDB的URI连接字符串,类型是string,默认是nil
    • host:必填,MongoDB主机名,类型是string,默认是'localhost'
    • port:必填,MongoDB端口号,类型是integer,默认是27017
    • database:必填,MongoDB数据库,类型是string,默认是nil
    • collection:必填,集合名称,类型是string,如果没有设置tag_mapped则默认是'untagged'
    • tag_mapped:是否允许out_mongo使用Fluentd的标记来确定目标集合,类型是bool,默认是false
    • capped:启用capped集合,类型是string
    • capped_size:上限集合大小,类型是size
    • user:用于身份验证的用户名,类型是string
    • password:用于身份验证的密码,类型是string
    • time_key:时间戳的密钥名,类型是string

    connection_string参数官方文档上是必填,但是实际使用的时候没找到这个咋用的,官方示例上也没有用这个

    如果没有配置tag_mapped,则说使用配置文件中的中的database(数据库)+collection(集合/表)

    如下这个示例,设置了tag_mapped,fluentd设置的tag是mongo.foo,但是设置了remove_tag_prefix去掉前缀mongo.只使用foo,结合起来后,最终使用的是database(fluentd)+collection(foo)

    <match mongo.*>
      @type mongo
      host fluentd
      port 27017
      database fluentd
    
      # Set 'tag_mapped' if you want to use tag mapped mode.
      tag_mapped
    
      # If the tag is "mongo.foo", then the prefix "mongo." is removed.
      # The inserted collection name is "foo".
      remove_tag_prefix mongo.
    
      # This configuration is used if the tag is not found. The default is 'untagged'.
      collection misc
    </match>
    

    用法示例

    mongodb安装参考:https://www.cnblogs.com/sanduzxcvbnm/p/13935837.html
    这个示例就是没有设置tag_mapped

    <source>
      @type tail
      @id input_tail
      <parse>
        @type nginx
      </parse>
      path /usr/local/openresty/nginx/logs/host.access.log
      tag mongo.nginx
    </source>
    
    <match mongo.nginx>
      @type mongo
      host 192.168.0.253
      port 27017
      database fluentd # 事先创建好的数据库
      collection test # 相当于数据表,会自动生成
    
      capped
      capped_size 1024m
    
      user testadmin # 事先创建好的数据库相对应的用户名
      password 123456 # 事先创建好的数据库相对应的密码
    
      <inject>
        time_key time
      </inject>
    
      <buffer>
        flush_interval 10s
      </buffer>
    </match>
    

    启动openresty,浏览器访问,然后使用Navicat查看数据

  • 相关阅读:
    Flink中的window、watermark和ProcessFunction(三)
    ThreadLocal刨根问底
    Flink的流处理API(二)
    Flink简介(一)
    SparkStreaming
    SparkSQL
    Spark入门
    SparkCore
    【HNOI2009】 最小圈
    【BOI 2002】 双调路径
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13936308.html
Copyright © 2011-2022 走看看