Fluentd+Elasticsearch收集django日志

简介

  • Fluentd是一个开源的日志收集器
  • Elasticsearch是一个基于restfulAPI的全文检索开源搜索引擎

本文使用fluntd与django对接,然后再将日志转发到elasticsearch,平台为centos7

Django部分

利用fluentd为用户开发的fluent-logger的插件,可以轻松的将日志收集起来,在开始之前需要安装一下这个模块python3 -m pip install fluent-logger

修改django的settings

Logging = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'fluent_formatter': {
            '()': 'fluent.handler.FluentRecordFormatter',  # fluent模块的日志格式化类
            'format': {
                'level': '%(levelname)s',
                'module': '%(name)s',
                'message': '%(message)s',
                'time': '%(asctime)s',
                'file': '%(filename)s',
                'line': '%(lineno)d'},
            },
            'datefmt': '%Y-%m-%d %H:%M:%S',
        }
    },
    'hanlders': {
        'fluent_handler': {
            'level': 'DEBUG',
            'class': 'fluent.handler.FluentHandler',  # fluent模块的日志处理类
            'formatter': 'fluent_formatter',
            'tag': 'django.debug',  # 给收集到的日志命名,后面消息路由需要用到这个标签
            'host': 'localhost',  # fluentd地址
            'port': 24224  # fluentd需要开启一个接受日志的source
        }
    },
    'loggers': {
        '': {  # 根消息记录器
            'handlers': ['fluent_handler'],
            'level': 'DEBUG',
        }
    }
}

fluentd配置

fluentd需要配置一个source做日志的接收端,然后还需要安装一个输出日志到elasticsearch的插件td-agent-gem install fluent-plugin-elasticsearch

<source>
  type forward
  port 24224
</source>

<match django.log>  # 消息路由匹配tag为django.log的日志源,
  @type elasticsearch  # output类型为elasticsearch
  host 127.0.0.1  # elasticsearch的ip地址
  port 9200  # 端口
  index_name fluentd-django  # 设置索引值
  type_name fluentd
</match>

配置完成后启动服务器td-agent

elasticsearch

elasticsearch不需要过多的配置可以直接启动,./elasticsearch, 启动成功后netstat -tlnp能够看到一个9200的端口开放就代表启动成功,等fluentd往elasticsearch开始写日志的时候,不出意外能够看到类似这么一条消息[fluentd-django/xxxxxxxxxxxxx] create_mapping [fluentd]

# 查询index索引
curl -XGET 'localhost:9200/_cat/indices?v'
# 查询django日志字段信息
curl -XGET 'localhost:9200/fluentd-django?pretty'
# 查询数据 从第100条开始查询1条
curl -XGET 'localhost:9200/fluentd-django/_search/?pretty&from=100&size=1'

相关网址

fluentd

fluent-logger-python

elasticsearch

3 thoughts on “Fluentd+Elasticsearch收集django日志”

  1. 迎春花一开,引得百花竞放,梅花开,杏花开,桃花开,看的人眼花,花多的你都叫不上名字,番正都是花,看起来很好看,很映人的眼,很牵动人的心,能激发人多情,能触动人去联想,给人感觉是北京成了花的海洋,花的世界,花的天下,花的花境。冬天的护城河畔,虽然没有花,但是一河青冰也装饰的护城河银装素裹,玉带环绕,更是富有生活的特写。

Leave a Reply

Your email address will not be published. Required fields are marked *