2017-07-15 113 views
10

我使用ELK堆栈来从我的django服务器进行集中式日志记录。我ELK栈是一个远程服务器上,并logstash.conf看起来像elasticsearch和logstash正在此Django服务器不发送日志到logstash

input { 
    tcp { 
    port => 5959 
    codec => json 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["xx.xx.xx.xx:9200"] 
    } 
} 

两个服务(使用docker-compose logs logstash选中)。

我Django的服务器的设置文件中有记录的conf像下面

LOGGING = { 
    'version': 1, 
    'handlers': { 
     'logstash': { 
      'level': 'INFO', 
      'class': 'logstash.TCPLogstashHandler', 
      'host': 'xx.xx.xx.xx', 
      'port': 5959, # Default value: 5959 
      'version': 0, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library) 
      'message_type': 'django', # 'type' field in logstash message. Default value: 'logstash'. 
      'fqdn': True, # Fully qualified domain name. Default value: false. 
      'tags': ['django.request'], # list of tags. Default: None. 
     }, 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['logstash'], 
      'level': 'DEBUG', 
    }, 
} 
} 

我跑我的Django服务器和logstash处理程序处理的日志,控制台显示没有logs.I使用中的python-logstash库在Django服务器之上构建CONF但日志不能发送到我的远程服务器

我经历了许多的问题检查,验证服务正在运行的端口是正确的,但不知道为什么日志不会被发送到logstash

+0

你确定“django.request”没有过滤掉所有的事件吗? –

+0

Django请求应该发送所有的请求日志 –

+0

你有没有试过把'fqdn'改成'False'? –

回答

2

纵观configurati on,logger“django.request”设置为级别“DEBUG”,处理程序“logstash”设置为级别“INFO”。我的猜测是处理程序将不会处理DEBUG消息。虽然我不确定。

为记录器和处理程序设置相同的级别以测试它的工作原理。

什么级别的使用取决于你想从你的日志中得到什么。在这种情况下,我猜INFO级别就足够了。

如果尚未看一看Django logging

注:从评论,似乎不是解决这个问题,但我希望它是有用的反正。

UPDATE:

我尝试以下的配置和它捕获404和500中的错误 “的debug.log”。

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'handlers': { 
    'logfile': { 
     'level': 'WARNING', 
     'class': 'logging.FileHandler', 
     'filename': os.path.join(PROJECT_DIR, 'debug.log'), 
    }, 
}, 
'loggers': { 
    'django.request': { 
     'handlers': ['logfile'], 
     'level': 'WARNING', 
     'propagate': True, 
    }, 
}} 

通过此测试配置,logstash处理程序应至少接收消息/ logrecord。如果没有运气,我建议尝试调试logstash.TCPLogstashHandlerSocketHandler(由TCPLogstashHandler继承),以确保它们收到发出的记录。

+0

你的观点似乎是正确的,那么你会建议如何解决这个问题? –

+0

将logstash设置为级别调试 – herm

+0

我建议使用级别INFO。根据日志消息的创建方式,有时最好能够根据使用的环境来打开和关闭DEBUG日志记录。例如django将它用于mail_admins。 –

相关问题