文本日志回收系统LofkaTail

技术文档网 2021-04-19
文本日志回收器-LofkaTail

简介

如果你需要对一些文本文件进行逐行的追踪并处理,那么请使用lofka-tail中的脚本,本脚本同时支持Python2和3。

 _              __  _            _____       _  _
| |            / _|| |          |_   _|     (_)| |
| |      ___  | |_ | | __ __ _    | |  __ _  _ | |
| |     / _ \ |  _|| |/ // _` |   | | / _` || || |
| |____| (_) || |  |   <| (_| |   | || (_| || || |
\_____/ \___/ |_|  |_|\_\\__,_|   \_/ \__,_||_||_|

启动命令与参数设置

启动的时候默认会显示一些帮助:

options    type     usage                          default
--file     string   which file to monitor          [no default]
--target   string   url of logger server           http://logger.example.com/
--period   float    the period to scan the file    1.0
--type     list[]   which processors will be used  common
--app_name string   application name               lofka_tail
--append   string   a json file name to read       [no default]

这里给出更加详细的解释:

(选项都要加上--

选项 类型 详细说明 默认值 备注
file 字符串 选择要监控哪个文件 没有默认值 -
target 字符串 写入到那个日志服务器 不建议使用默认值(http://logger.example.com/) -
period 浮点型 文件扫描周期(单位:秒) 1.0 实时性要求高可以换成0.3之类
type 字符串列表(逗号分隔) 使用哪些解析器对日志进行解析 common 可选的还有nginx和arg_common,也可以自己扩展
app_name 字符串 应用名称 lofka_tail -
append 字符串 附加JSON文件的名称,JSON中的数据将会被完整的添加到每个日志文件中 没有默认值 如果字段和其他程序产生字段(如timestamp或者app_name)有冲突将会被覆盖

需要注意的是,http://logger.example.com/ 也是使用Nginx进行代理的,在对代理 http://logger.example.com/ 的Nginx进行日志收集的时候,务必将日志直接收集到 http://10.10.11.75:9500/ 否则将引起自激振荡。

通用回收(--type common

通用回收器用于回收一般的日志,一般都是不推荐这么回收的,除非该日志的配置既没有办法改动,也很难通过文本操作解析。

通用参数化回收(--type arg_common

有一种很简单的方式针对已有的日志进行格式化改造,只需要输出为--key value格式即可,其中,key和value之间空两个Tab键,如果你的日志可能会输出连续的2个Tab键……这么变态的日志谁写的啊~请自己修改源代码解析日志吧。 例如某日志系统就可以这么设置: --time\t\t%t\t\t--message\t\t%s

Nginx(--type nginx

Nginx解析器根据Nginx的一些特性做了针对性的优化,对字段进行了更加深度解析。 要想记录Nginx的日志需要做以下事情:

  1. 修改Nginx的配置文件(通常是/etc/nginx/nginx.conf)
  2. 验证配置文件准确性(nginx -t)
  3. 重新加载Nginx(nginx -s reload)
  4. 启动监听工具

Nginx配置修改

推荐的Nginx日志如下所示,更多详细信息请参见官方文档:

  1. Nginx核心模块参数
  2. Nginx Upstream 模块参数
  3. 等等
##
# Logging Settings

log_format    main    '--remote_addr\t\t$remote_addr\t\t'
                    '--remote_user\t\t$remote_user\t\t'
                    '--time_iso8601\t\t$time_iso8601\t\t'
                    '--request_method\t\t$request_method\t\t'
                    '--request_length\t\t$request_length\t\t'
                    '--scheme\t\t$scheme\t\t'
                    '--server_protocol\t\t$server_protocol\t\t'
                    '--uri\t\t$uri\t\t'
                    '--args\t\t$args\t\t'
                    '--status\t\t$status\t\t'
                    '--bytes_sent\t\t$bytes_sent\t\t'
                    '--body_bytes_sent\t\t$body_bytes_sent\t\t'
                    '--http_referer\t\t$http_referer\t\t'
                    '--http_user_agent\t\t$http_user_agent\t\t'
                    '--http_x_forwarded_for\t\t$http_x_forwarded_for\t\t'
                    '--upstream_addr\t\t$upstream_addr\t\t'
                    '--upstream_response_time\t\t$upstream_response_time\t\t'
                    '--request_time\t\t$request_time\t\t'
                    '--msec\t\t$msec\t\t'
                    '--pipe\t\t$pipe\t\t'
                    '--host\t\t$host\t\t'
                    ;

启动监听工具

启动监听日志:

sudo python lofka_tail.py --file /var/log/nginx/access.log --type nginx --app_name 服务器的标识名称 --target http://10.10.11.75:9500/

相关文章

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表-&gt;就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod

随机推荐

  1. 硅谷互联网公司的开发流程

    开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro

  2. RESTful-表述性状态转移风格

    REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表-&gt;就是产品资源 最重要的是如何表示一个资源 地址即

  3. 稳定性思考

    产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能

  4. Supervisor守护队列发邮件

    安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et

  5. 安装libsodium,让服务器支持chacha20等加密方式

    用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod