Fluentd 例子

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fluentd 例子相关的知识,希望对你有一定的参考价值。

1. http输入,stdout输出

例子

<source>
    @type http
    port 8888
    bind 0.0.0.0
</source>

<match td3.**>
    type stdout
</match>

请求

curl http://10.218.139.216:8888/td3 -d ‘json={"hi":"abc"}‘

结果(/var/log/td-agent/td-agent.log)

2016-02-03 10:17:00 +0800 td3: {"hi":"abc"}

2. http输入,文件输出

例子

## Source descriptions
# HTTP input
# POST http://localhost:8888/<tag>?json=<json>
<source>
    @type http
    port 8888
    bind 0.0.0.0
</source>

## Output
# File output
# match tag=td.*.* and output to file
<match td.**>
    @type file
    path /home/wzh94434/monitor/test.log
    flush_interval 10s
</match>

## match tag=td2.*.* and output to file
<match td2.**>
    @type file
    path /home/wzh94434/monitor/test_2.log
    flush_interval 10s
</match>

http请求:

curl http://10.218.139.216:8888/td2 -d ‘json={"hi":1}‘

linux命令:

发POST请求工具:

技术分享

结果查看:

2016-02-01T15:46:06+08:00       td      {"hi":1}

3. http输入,mongoDB输出

例子

## Source descriptions
# HTTP input
# POST http://localhost:8888/<tag>?json=<json>
<source>
    @type http
    port 8888
    bind 0.0.0.0
</source>

## Output
# MongoDB output
# match tag=td2.*.* and output to file
<match td2.**>
    @type mongo
    host 10.218.139.216
    port 27017
    database db_log
    collection db_col
    time_key time
    flush_interval 10s
</match>

请求

 

curl 10.218.139.216:8888/td2 -d json={"hi":"123"}

 

结果查询:

> show dbs
db_log  0.078GB
local   0.078GB

> use db_log
switched to db db_log

> show collections
db_col
system.indexes

> db.db_col.find()
{ "_id" : ObjectId("56af19dbdfb99f0f50000001"), "hi" : 2, "time" : ISODate("2016-02-01T08:39:47Z") }

4. python写日志

安装插件

sudo pip install fluent-logger

参考:https://github.com/fluent/fluent-logger-python

日志记录示例:

import logging
from fluent import handler

custom_format = {
  host: %(hostname)s,
  where: %(module)s.%(funcName)s,  #具体到文件、函数
  type: %(levelname)s,
  stack_trace: %(exc_text)s
}

logging.basicConfig(level=logging.DEBUG)

l = logging.getLogger(fluent.test)

h = handler.FluentHandler(python.mongo, host=10.218.139.216, port=24224)
formatter = handler.FluentRecordFormatter(custom_format)
h.setFormatter(formatter)

l.addHandler(h)

def funcs():
    l.warning("hello")
    l.error("hello  error")

l.info({"from": "1", "to": "2"})

修改td-agent.conf

<source>
    @type forward
    port 24224
</source>

<match python.mongo.**>
    @type mongo
    host 10.218.139.216
    port  27017
    database db_python
    collection col_python
    time_key time
    flush_interval 10s
</match>

 

以上是关于Fluentd 例子的主要内容,如果未能解决你的问题,请参考以下文章

golang goroutine例子[golang并发代码片段]

分享几个实用的代码片段(附代码例子)

分享几个实用的代码片段(附代码例子)

fluentd解析日志部分json

Logstash 五种替代方案(Filebeat、Fluentd、rsyslog、syslog-ng 以及 Logagent

将 id_key 与 fluentd/elasticsearch 一起使用