通过rabbitmq收集日志到elk堆栈的助手
logcollect的Python项目详细描述
用于集中收集日志的python库
提供简单的配置,用于将python日志收集到elk堆栈 通过Rabbitmq。
支持的消息流如下:
python.logging || \/ logcollect || \/ RabbitMQ || \/ Logstash || \/ ElasticSearch || \/ Kibana
力学
本地日志
logcollect.boot.default_config确保根记录器 正确配置的AMQP处理程序。
django
logcollect.boot.django_dict_config修改 django.conf.settings.LOGGING以确保根的amqp处理程序正确 记录员。在日志定义之后,应该在设置模块中调用它。
芹菜
logcollect.boot.celery_config为添加信号处理程序 worker_process_init信号,然后将amqp处理程序添加到 task_logger基本处理程序。如有必要,根记录器也可以 附加到AMQP处理程序。
配置提示
日志存储
input{rabbitmq{exchange=>"logstash"queue=>"logstash"host=>"rabbitmq-host"type=>"amqp"durable=>truecodec=>"json"}}output{elasticsearch{host=>localhost}stdout{codec=>rubydebug}}
日志收集
所有引导辅助程序都有相同的参数:
- broker_uri-芹菜式rabbitmq连接字符串,即 amqp://guest@localhost//vhost
- 交换,路由密钥-RabbitMQ的消息路由信息
- 持久-消息传递模式
- 级别-处理程序日志级别
- 活动标识-带有“进程类型信息”的dict
活动特性
假设我们在同一主机上部署了两个项目:“github”和“jenkins”。 两者都有网络后端和后台工作人员。活动标识有助于 要识别来自这些工作人员的消息:
Project | Worker | Activity identity |
---|---|---|
github | backend | ^{tt8}$ |
jenkins | background | ^{tt9}$ |
loggername可用于分隔代码的不同部分 在工人内部。主机名和进程PID将自动添加。
相关id
尚不支持,但IDEA正在标记关于同一对象的日志消息 具有此对象的ID信息。
示例
原生python日志
python test_native/native_logging.py
django
python test_django/manage.py test_log
芹菜
首先,启动worker:
celery worker -A test_celery.app.celery
然后将任务发送给该工作者:
python test_celery/send_task.py