ELK-日志收集工具nxlog

文章目录

    • ELK-日志收集工具nxlog
  • 前言
  • 安装
  • 语法
    • 宏变量
    • 通用模块指令格式
      • Module 模块名
      • FlowControl
      • InputType:指定输入类型
      • OutputType:指定输出类型
      • Exec: 执行命令
      • Schedule:定时器
        • Every
        • First
        • Exec
        • When
    • Route模块
    • Extension模块
      • Input
      • output
        • on_tcp/om_udp
        • on_file
        • on_ssl
    • 修改输出内容
  • 例子
    • 读取/var/log/message传给logstash
    • 读取windows事件发送给logstash

前言

nxlog配置有6个可配置的部分,Extension,Processor,Input,Output,Route。其中Route是路由,不需要指定模块,其它都有各自的模块可指定。
官方文档地址-英文
一些内置函数,左侧的3.6章节

安装

官网下载地址,下载nxlog-ce-2.10.2150.msi,点击安装。
64位默认安装路径:C:\Program Files (x86)\nxlog,
32位默认安装路径:C:\Program Files\nxlog,
日志文件默认路径:C:\Program Files (x86)\nxlog\data\nxlog.log。
配置文件路径:C:\Program Files (x86)\nxlog\conf\nxlog.conf。

语法

默认配置文件:

Panic Soft
#NoFreeOnExit TRUEdefine ROOT     C:\Program Files (x86)\nxlog
define CERTDIR  %ROOT%\cert
define CONFDIR  %ROOT%\conf
define LOGDIR   %ROOT%\data
define LOGFILE  %LOGDIR%\nxlog.log
LogFile %LOGFILE%Moduledir %ROOT%\modules
CacheDir  %ROOT%\data
Pidfile   %ROOT%\data\nxlog.pid
SpoolDir  %ROOT%\data<Extension _syslog>Module      xm_syslog
</Extension>
<Extension _charconv>Module      xm_charconvAutodetectCharsets iso8859-2, utf-8, utf-16, utf-32
</Extension><Extension _exec>Module      xm_exec
</Extension><Extension _fileop>Module      xm_fileop# Check the size of our log file hourly, rotate if larger than 5MB<Schedule>Every   1 hourExec    if (file_exists('%LOGFILE%') and \(file_size('%LOGFILE%') >= 5M)) \file_cycle('%LOGFILE%', 8);</Schedule># Rotate our log file every week on Sunday at midnight<Schedule>When    @weeklyExec    if file_exists('%LOGFILE%') file_cycle('%LOGFILE%', 8);</Schedule>
</Extension>

宏变量

宏可以理解为定义一个变量并赋值。比如

define ROOT     C:\Program Files (x86)\nxlog

define指令可以定义宏变量,使用时用两个%号包裹,比如%ROOT %
例子

define BASEDIR /var/log
<Input messages>Module  im_fileFile    '%BASEDIR%/messages'
</Input>

配置文件默认定义了很多宏,了解即可。

通用模块指令格式

Module 模块名

模块名在C:\Program Files (x86)\nxlog\modules下以.dll后缀结尾(linux以.so格式结尾),前缀分别是im_, pm_, om_, or xm_。

im:input module缩写,pm:processor module,om:output module,xm:extension module

FlowControl

是否启用流程控制,建议在使用im_uds模块从/dev/log采集本地syslog 的时候禁用掉,不然syslog会阻塞所有写入的动作,假如输出队列还满掉了,系统可能就不响应了

InputType:指定输入类型

只对im_exec, im_ssl, im_tcp, im_udp, and im_uds模块有效,一般不会特意设置
有效值如下
1. LineBased:一行为一个日志,用\n或者\r\n区分

  2. Dgram:一旦Buffer用完了,考虑合成一份日志,im_udp模块的时候是默认选项,因为UDP syslog 是分批到达的3. Binary:转成Nxlog二进制格式

例如

<Input tcp>Module    im_tcpPort        2345InputType   Binary
</Input>

OutputType:指定输出类型

只能用于 om_file, om_exec, om_ssl, om_tcp, om_udp, and om_uds模块
有效值如下:
1. LineBased:一行为一个日志
2. Dgram:一旦缓冲满了就把缓冲数据作为一行日志,om_udp输出默认是开着的
3. Binary:用nxlog binary格式化输出

Exec: 执行命令

每接收到一条日志信息都会执行一次。在input, processor, and output模块里完全支持,大部分extension模块都不支持(除了 xm_multiline 和 xm_rewrite模块)。每行是一条Exec指令,多行指令使用</kbd>换行,使用分号结尾,放在模块的最后面。

比如单行指令:

Exec    $Hostname = 'myhost';

在每行记录里定义了一个变量$Hostname
比如多行指令:

Exec    log_info("first"); \log_info("second");

多行指令也可抱成块形势,上面和下面语句意思一样

<Exec>log_info("first");log_info("second");
</Exec>

Schedule:定时器

Every

比如Every 1 sec表示每秒执行。一个整型数字加上单位组成值,缺省单位是秒,有sec, min, hour, day, or week单位可选

First

设置首次执行时间,使用datetime类型的值,比如First 2010-12-17 00:19:06

Exec

执行的指令

When

@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

这些都是语法,例子

<Input in>Module  im_tcpPort    2345<Schedule>Every   1 secFirst   2010-12-17 00:19:06Exec    log_info("scheduled execution at " + now());</Schedule><Schedule>When    1 */2 2-4 * *Exec    log_info("scheduled execution at " + now());</Schedule>
</Input>

Route模块

这个是最简单模块。指定路由方式。
语法

<Route ROUTE_NAME>Path       IN_NAME => PRO_NAME => OUT_NAME</Route>

比如

<Input in_file>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUEExec convert_fields("auto", "utf-8");
</Input><Output out_file>Module om_fileFile 'D:\666.log'
</Output><Route 1>Path in_file => out_file
</Route>

Extension模块

一些前期引入的操作
这个模块一般我们不用动它,默认配置了几个

<Extension _syslog>Module      xm_syslog #收集事件日志,所有的事件日志默认都被收集
</Extension>

将 xm_syslog换成xm_json表示系统日志格式为json。

<Extension charconv>Module      xm_charconv</Extension>

解决文件内容中解析失败问题

Input

参考
数据输入,可选模块如下图:

常用的是im_msvistalog和im_file

<Input in_win_system>#im_msvistalog支持的是2003之后的版本Module      im_msvistalog#im_mseventlog支持的是2003之前版本# Module      im_mseventlog</Input>
<Input in_win_system>Module      im_msvistalog
</Input>

具体例子
im_file模块:获取springboot.log日志
注意文件使用\

<Input test11>Module im_fileFile "D:\\jar\\dongli\\logs\\spring-boot.log"SavePos TRUEExec convert_fields("auto", "utf-8"); Exec $name="chenyuan";
</Input>

比如文件存在多个,使用,如:File "D:\jar\dongli\logs\.log"
支持的配置:

  1. SavePos:保存上次读取位置,默认true
  2. Recursive:是否递归子目录文件,例如目录设置为/var/log/*.log,那么/var/log/apache2/access.log也会被匹配,默认是true
  3. ReadFromLast:从最新文件去读,默认true,和SavePos配合使用,一般不设置。具体可参考英文描述
This optional boolean directive instructs the module to only read logs which arrived after NXLog was started if the saved position could not be read (for example on first start). When SavePos is TRUE and a previously saved position value could be read, the module will resume reading from this saved position. If ReadFromLast is FALSE, the module will read all logs from the file. This can result in quite a lot of messages, and is usually not the expected behavior. If this directive is not specified, it defaults to TRUE.
  1. PollInterval:多久检查文件变化,默认是1秒(1 second),如果设置为2秒,就是2 second
  2. DirCheckInterval:检查目录下文件变化,比如增加新文件,如果PollInterval设置了就以PollInterval时间为准,默认是2秒(2 seconds)
    im_exec执行命令:使用tail命令读取文件
  3. CloseWhenIdle:空闲时是否关闭输入流,默认是FALSE
<Input messages>Module  im_execCommand /usr/bin/tailArg     -fArg     /var/log/messages
</Input>

output

数据输入,可选模块如下图:

模块指定发送方式
om_tcp/om_udp:以tcp、udp方式发送
om_http:http方式发送
on_ssl:加密方式发送
on_file:输出到文本

on_tcp/om_udp

<Output out_tcp>Module om_tcpHost 192.168.1.238Port 514
</Output>

on_file

<Output out_file>Module om_fileFile 'D:\666.log'
</Output>

on_ssl

语法

<Output out>Module             om_sslHost                  DST_IPPort                   DST_PORTCAFile                CA_CERTCertFile              CLIENT_CERTCertKeyFile        CLENT_KETKeyPass             PASSWORDAllowUntrusted     TRUEExec        $raw_event = to_json();</Output>

说明:

  1. DST_IP:为发送的目的主机IP地址,或者也可以是域名
  2. DST_PORT: 为发送目的主机端口
  3. CA_CERT:为CA证书路径
  4. CLIENT_CERT:为在服务端为客户机生成的证书
  5. CLIENT_KEY:为在服务端为客户主机生成的key
  6. PASSWORD:证书密码,默认设置为“123456”可修改,根据证书生成时的密码决定
<Output out>Module       om_sslHost             192.168.161.96Port              1514CAFile           %CERTDIR%\ca-cert.pemCertFile         %CERTDIR%\client-cert.pemCertKeyFile %CERTDIR%\client-key.pemKeyPass       123456AllowUntrusted     TRUEExec               $raw_event = to_json();</Output>

修改输出内容

使用$raw_event变量
比如,下面在输出的日志状况添加一个ip

<Output out_file>Module om_fileFile 'D:\666.log'Exec $raw_event = "192.168.161.63 " + $raw_event;
</Output>

例子

读取/var/log/message传给logstash

<Input messages>Module  im_fileFile    "/var/log/messages"
</Input><Output tcp>Module  om_tcpHost     192.168.1.238Port    514
</Output><Route messages_to_tcp>Path    messages => tcp
</Route>

读取windows事件发送给logstash

<Extension _syslog>Module      xm_syslog
</Extension><Input in>Module      im_msvistalog
# For windows 2003 and earlier use the following:
#   Module      im_mseventlogReadFromLast FALSESavePos     FALSEQuery       <QueryList>\<Query Id="0">\<Select Path="Security">*</Select>\ #配置为只发送Security Log</Query>\</QueryList></Input><Output out>Module      om_tcpHost        192.168.1.238Port        514Exec        to_syslog_snare();
</Output><Route 1>Path        in => out
</Route>

配置为同时接收多个事件日志

<Input in>Module      im_msvistalog
# For windows 2003 and earlier use the following:
#   Module      im_mseventlogReadFromLast FALSESavePos     FALSEQuery       <QueryList>\<Query Id="0">\<Select Path="Application">*</Select>\<Select Path="System">*</Select>\<Select Path="Security">*</Select>\</Query>\</QueryList></Input>

ELK-日志收集工具nxlog相关推荐

  1. 性能优越的轻量级日志收集工具,微软、亚马逊都在用!

    ELK日志收集系统大家都知道,但是还有一种日志收集系统EFK,肯定有很多朋友不知道!这里的F指的是Fluentd,它具有Logstash类似的日志收集功能,但是内存占用连Logstash的十分之一都不 ...

  2. 深入浅出ELK日志收集系统搭建

    先看一下目录图 背景 试想这么一种场景:Nginx负载了2个Tomcat,那么日志查看就很麻烦了,每次查看日志都要登录2台服务器,挨个搜索,2台还好,如果5台呢?10台呢?那查看日志就可费劲了,所以需 ...

  3. ELK日志收集系统概述

    前言 日志分析是运维工程师解决系统故障,发现问题的主要手段.日志主要包括系统日志应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息检查配过程中的错误及错误发生的原因.经常分析日 ...

  4. Scribe日志收集工具

    Scribe日志收集工具 概述 Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用.它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文 ...

  5. SpringBoot使用ELK日志收集

    本文介绍SpringBoot应用配合ELK进行日志收集. 1.有关ELK 1.1 简介 在之前写过一篇文章介绍ELK日志收集方案,感兴趣的可以去看一看,点击这里-----> <ELK日志分 ...

  6. 分布式日志收集工具分析比较

    目录 写在最前:为什么做日志收集系统❓ 一.多种日志收集工具比较 1.背景介绍 2.Facebook 的 Scribe 3.Apache 的 Chukwa 4.LinkedIn 的 Kafka 5.C ...

  7. ELK日志收集系统(一)

    ELK日志收集系统(一) 一:软件包下载地址 二:环境准备 三:kibana安装与配置 四:安装nginx 五:filebeat安装配置 5.1 配置filebeat收集nginx日志 5.2 kib ...

  8. Oracle TFA日志收集工具的安装与使用

    TFA日志收集工具: 一.介绍: TFA全称:Trace File Analyzer,日志分析工具. TFA会监视的日志,以发现可能影响服务的重大问题,在检测到任何潜在问题时也会自动收集相关的诊断信息 ...

  9. Oracle GI 日志收集工具 - TFA

    1.TFA的目的: TFA是个11.2版本上推出的用来收集Grid Infrastructure/RAC环境下的诊断日志的工具,它可以用非常简单的命令协助用户收集RAC里的日志,以便进一步进行诊断:T ...

  10. 日志收集工具ELK,简单集群配置

    因项目部署在多台服务器上,如果出现Bug需要查询日志的时候,日志非常难查询.所以采用Logstash来收集日志,通过Kibana页面将日志展示出来.一开始偷懒,使用Docker安装了个单机版的ELK, ...

最新文章

  1. delphi variant和stream相互转换的函数
  2. printf的使用和test的使用
  3. 【科普】让人头秃的理论:什么是“奥卡姆剃刀”原理?
  4. Yii2的MVC新特性
  5. php无限极菜单,无限极菜单的实现
  6. Git管理代码常用术语
  7. C语言形参跟实参详解
  8. java 动态规划求最短路径_使用分支界定和动态规划解决最短路径问题(原)
  9. 4比较三个数的大小输出最大的值并从小到大排序输出
  10. HTML设置单边圆角,如何在html中做圆角矩形和 只有右边的分隔线
  11. WinForm界面开发教程:DevExpress WidgetView使用介绍
  12. 【Qt开发】编译时报“undefined reference to“问题的解决方案
  13. 用 C 语言编写的程序被称为,用c语言编写的程序被称为
  14. 【机器学习笔记】【决策树】【泰坦尼克号幸存者的预测】
  15. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类
  16. python类中的特殊方法_python类中的特殊成员方法介绍
  17. python中如何上下标
  18. 禁止灵格斯2.7弹出“新奇英语 互动锐词”广告窗口的解决方法
  19. 伽利略或洛伦兹变换不适用于波动
  20. 怎样使用markdown做笔记、python入门小白

热门文章

  1. 4位格雷码的顺序编码_格雷码的编码和译码算法.doc
  2. linux 16.04系统下载,【Ubuntu1604镜像下载】乌班图系统Ubuntu 16.04 官方正式版-开心电玩...
  3. vim 命令模式下光标移动
  4. Burp Suite使用介绍说明
  5. PyQt5|PySide2 UI界面内嵌web浏览器的方法
  6. visio2016无法安装的完美解决方法
  7. android五中布局 四大组件,Android 四大组件五大布局
  8. WIN11映射NAS网络驱动器提示 用户名和密码错误
  9. 利用msfvenom渗透win7
  10. 专利电子申请那些事儿 |入股不亏 |专利代理 |CPC客户端