ELK-日志收集工具nxlog

2023-05-16

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 TRUE

define 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_charconv
    AutodetectCharsets 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 hour
        Exec    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    @weekly
        Exec    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_file
    File    '%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_tcp
    Port        2345
    InputType   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_tcp
    Port    2345

    <Schedule>
        Every   1 sec
        First   2010-12-17 00:19:06
        Exec    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_file
	File "D:\\jar\\dongli\\logs\\spring-boot.log"
	SavePos TRUE
	Exec convert_fields("auto", "utf-8"); 
</Input>

<Output out_file>
	Module om_file
	File '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_file
	File "D:\\jar\\dongli\\logs\\spring-boot.log"
	SavePos TRUE
	Exec 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_exec
    Command /usr/bin/tail
    Arg     -f
    Arg     /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_tcp
	Host 192.168.1.238
	Port 514
</Output>

on_file

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

on_ssl

语法

<Output out>

    Module             om_ssl

    Host                  DST_IP

    Port                   DST_PORT

    CAFile                CA_CERT

    CertFile              CLIENT_CERT

    CertKeyFile        CLENT_KET

    KeyPass             PASSWORD

    AllowUntrusted     TRUE

    Exec        $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_ssl

    Host             192.168.161.96

    Port              1514

    CAFile           %CERTDIR%\ca-cert.pem

    CertFile         %CERTDIR%\client-cert.pem

    CertKeyFile %CERTDIR%\client-key.pem

    KeyPass       123456

    AllowUntrusted     TRUE

    Exec               $raw_event = to_json();

</Output>

修改输出内容

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

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

例子

读取/var/log/message传给logstash

<Input messages>
    Module  im_file
    File    "/var/log/messages"
</Input>

<Output tcp>
    Module  om_tcp
    Host     192.168.1.238
    Port    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_mseventlog

    ReadFromLast FALSE
    SavePos     FALSE
    Query       <QueryList>\
                    <Query Id="0">\
                        <Select Path="Security">*</Select>\ #配置为只发送Security Log
                    </Query>\
                </QueryList>

</Input>

<Output out>
    Module      om_tcp
    Host        192.168.1.238
    Port        514
    Exec        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_mseventlog

    ReadFromLast FALSE
    SavePos     FALSE
    Query       <QueryList>\
                    <Query Id="0">\
                        <Select Path="Application">*</Select>\
                        <Select Path="System">*</Select>\
                        <Select Path="Security">*</Select>\
                    </Query>\
                </QueryList>

</Input>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK-日志收集工具nxlog 的相关文章

  • logstash grok插件语法介绍

    原文地址 转载请注明出处 https blog csdn net qq 34021712 article details 79746413 王赛超 介绍 logstash拥有丰富的filter插件 它们扩展了进入过滤器的原始数据 进行复杂的
  • ELK+Filebeat日志分析系统

    目录 一 ELK基本介绍 1 ELK是什么 2 组件简介 2 1 ELK组件介绍 2 2 ELFK组件介绍 2 3 其它组件 4 使用ELK的原因 5 完整日志系统的基本特征 二 Elasticsearch的介绍 三 Logstash的介绍
  • 使用docker搭建elk

    一 安装前须知 以下步骤在 VMware 中的 centos 7 中操作 ip 地址为 192 168 161 128 注意安装的时候最好统一版本 否则后面会出现许多问题 进官网搜索对应镜像 查看 Tags 标签下的版本 目前我这最新的 T
  • LogStash安装

    目录 1 下载安装报 2 上传到服务器 3 启动 Logstash 4 连接 Elasticsearch Elasticsearch安装与配置 Kibana安装与配置 LogStash安装 LogStash 简介 LogStash 日志采集
  • ELK系列(三)、安装Logstash插件及打包离线安装包

    Logstash有input output filter codec 四种插件类型 支持的种类也很丰富 功能特别强大 选对正确的插件可以节省很多的资源占用和开发效率 生产环境一般都无法连接到公网 所以本篇就带大家如何在线安装 以及打包离线安
  • java编写es搜索程序

    开发环境 java8 springboot pom文件导入依赖
  • ELK日志监控平台(三)---kibana数据可视化

    目录 一 基本简介 编辑 二 安装 三 创建可视化访问量的指标 四 创建可视化访问量的垂直条形图 五 启动xpack安全验证 官放文档 Explore Kibana using sample data Kibana Guide 7 6 El
  • node settings must not contain any index level settings

    本人安装的ES是7 6 1版本 报错意思为 节点设置不能包含任何索引级别设置 也就是说报错是因为 在elasticsearce yml文件中对索引进行了配置 应该是新版本不支持这样配置 删除相应的索引配置即可 index refresh i
  • centos7-elk之elasticsearch

    准备环境 centos7 4 jdk 1 8 安装jdk可见链接 https blog csdn net xuejinyan123 article details 102685458 下载 elasticsearch 版本 6 0 1 存放
  • ElasticSearch 单机、集群安装

    文章目录 ElasticSearch 基本概念 安装启动 集群配置 快速启动一个集群节点实例 集群的状态 ElasticSearch 基本概念 索引 含有相同属性的文档集合 类型 索引可以定义一个或多个类型 文档必须属于一个类型 文档 文档
  • ELK之Elasticsearch常用DSL语句(kibana语句)

    DSL 是什么 DSL Domain Specific Language 的缩写 中文翻译为领域特定语言 Wikipedia 对于 DSL 的定义还是比较简单的 A specialized computer language designe
  • 2023最新ELK搭建教程,基于ES 8

    一 ELK介绍 ELK的应用 ELK的应用场景 日志查询 问题排查 上线检查服务器监控 应用监控 错误报警Bug管理性能分析 用户行为分析 安全漏洞分析 企业 行业 ELK用途 阿里巴巴 电子商务 云计算 用于日志管理和实时监控 腾讯 互联
  • ELK的优点和局限性

    ELK作为一种开源的日志管理解决方案 具有以下优点 实时性高 ELK可以实现实时索引和搜索 支持高效的日志收集和处理 可以帮助用户及时发现问题和异常 提高系统的响应速度和稳定性 可扩展性强 ELK的架构支持水平扩展和负载均衡 可以根据需要增
  • docker-compose deploy 高可用 elasticsearch TLS

    文章目录 1 sysctl 2 swap 3 hosts 4 配置 instances yaml 5 创建证书 6 部署 7 修改 kibanna 密码 8 清理 1 sysctl root github es tls cat etc sy
  • ELK企业级日志分析系统

    ELK概述 为什么要使用 ELK 日志主要包括系统日志 应用程序日志和安全日志 系统运维和开发人员可以通过日志了解服务器软硬件信息 检查配置过程中的错误及错误发生的原因 经常分析日志可以了解服务器的负荷 性能安全性 从而及时采取措施纠正错误
  • Centos7安装elasticsearch及kibana并进行安全设置

    Centos7安装elasticsearch及kibana并进行安全设置 每天多学一点点 话不多说 这就开始吧 文章目录 Centos7安装elasticsearch及kibana并进行安全设置 1 前言 2 环境要求 3 安装elasti
  • 使用python和snapshot备份ElasticSearch索引数据

    该python备份snapshot的索引数据脚本 通过Elasticsearch连接es 然后通过es indices get alias函数获取所有索引名称 通过列表的startswith函数剔除 开头的自带索引名称 然后把所有索引名称放
  • ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询

    ElasticSearch 6 3版本 ES 查询关键字不拆词查询 类似mysql 的 like 语句 mysql的sql语法类似如下 采用大量like和locate语法 进行模糊查询 导致查询一个需要8秒多 通过ES优化后 总的查询在1秒
  • 大数据笔记--ELK(第一篇)

    一 ELK介绍 1 什么是ELK ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案 是三个产品的首字母缩写 分别是ElasticSearch Logstash 和 Kibana 1 1 E ELASTICSEARCH
  • Logstash 的流行为不一致 - ELK

    我有一个包含几个平面字段和几个嵌套字段的索引 我正在尝试通过 Logstash 将 SQL Server 中的信息通过特定 ID 流式传输到嵌套字段中 当我流式传输数据时only one然后它就完全成功地通过了 没有任何问题 另一方面 当我

随机推荐

  • ORA-28000: the account is locked

    原因 xff1a Oracle账户多次以错误密码登录 xff0c 导致数据库服务器宕机 xff0c 账户被锁定 以系统账户sys 登录Oracle xff0c 查看sql SELECT FROM DBA PROFILES WHERE RES
  • Docker镜像编译方式

    1 普通Dockerfile的缺点 我们通常情况下要编译Spring Boot的Docker镜像 xff0c 一般会写一个下面这样的Dockerfile FROM openjdk span class token operator span
  • Python入门第一章笔记 从安装到编写hello world

    1 下载Python安装包 xff1b 可以到官网下载 xff1a https www python org 但是如果没有翻墙的话 xff0c 下载会很慢 25M安装包 xff0c 需要1个小时以上 如果没有耐心等可以在csdn进行下载 x
  • 养老产业政策链接

    江西省养老政策文件 xff1a 江西省养老服务条例 http mzw ganzhou gov cn gzsmzjy c103172 202201 d238525b35bb47b49b3de312c9b63a60 shtml 南昌市养老服务体
  • 我多变的2013

    我多变的2013 第一篇 xff1a 回顾 回顾工作 首先简单的做个自我介绍吧 xff0c 我是87年的 xff0c 北漂已经是第5个年头了 xff0c 一直都从事java开发工作 前后只换过一家公司 xff0c 第一家待了近两年 xff0
  • 我花1200大洋所学的“元学习课”究竟学了些什么?

    我花1200大洋所学的 元学习课 究竟学了些什么 xff1f 讲课的是台湾的一位大牛名叫Xdite xff0c 以及亿万富豪李笑来 能够跟牛人学习怎么学习我想应该不会有错吧 xff0c 对我来说这次做的应该是一次正确的决定 xff0c 所谓
  • 成长记录-开启我的新生 (2016-12-06)

    真的是很惊险 xff0c 我差一点就错过了 获得新生 的机会 xff0c 我在蜻蜓音频中听到了逻辑思维 xff0c 从逻辑思维中了解到了 得到 xff0c 从 得到 中订阅了吴军博士的 硅谷来信 xff0c 却在过去的好几个月里 xff0c
  • 最新Java电子书

    最新Java电子书 JAVA参考大全 J2SE 5EDITION 世界级程序设计大师作品 Thinking in Java第三版 43 第四版 xff08 中文版 43 习题答案 xff09 Java数据库高级编程宝典 Java核心技术第八
  • ELK-ElasticSearch权威指南笔记

    ELK ElasticSearch笔记 文章目录 ELK ElasticSearch笔记 前言测试工具 语法索引 xff0c 文档和类型文档元数据检索索引里文档数据查看当前节点的所有 Index查看所有index的mapping 映射 查看
  • 关于JAVA中内存溢出的解决办法

    关于JAVA中内存溢出的解决办法 J2ee应用系统是运行在J2EE应用服务器上的 xff0c 而j2ee应用服务器又是运行在JVM上的 xff0c 生成环境中JVM参数的优化和设置对于J2EE应用系统性能有着决定性的作用 要优化系统 xff
  • ireport的使用总结

    ireport的使用总结 截图居然都没显示出来 xff0c 如有需要可以到 xff08 http download csdn net detail czp0608 4140640 xff09 下载 相信很多java程序员们 xff0c 在开
  • 卡尔曼滤波C代码分析

    文章下载地址 xff1a http wenku baidu com view 3c42b7733186bceb18e8bb29
  • 作为一个新人,怎样学习嵌入式Linux?

    作为一个新人 xff0c 怎样学习嵌入式Linux xff1f 被问过太多次 xff0c 特写这篇文章来回答一下 在学习嵌入式Linux之前 xff0c 肯定要有C语言基础 汇编基础有没有无所谓 就那么几条汇编指令 xff0c 用到了一看就
  • pixhawk启动脚本分析

    Nuttx系统启动是由ardupilot mk PX4 ROMFS init d里的rcS和rc APM完成的 笔者阅读了rcS和rc APM xff0c 该脚本类似C语言 xff0c 并做了相关注释 主要是一些设备自检 xff0c 启动各
  • pixhawk ArduPilot_main启动与运行分析

    上节分析 2 个系统启动脚本 xff0c 一个是 ardupilot mk PX4 ROMFS init d 里的 rcS xff0c 另一个是 rc APM xff0c 这个脚本在 rcS 里得到了调用 xff0c 也就是说 xff0c
  • pixhawk make文件分析

    由于笔者没学过Linux等系统 xff0c 对make文件所知甚少 xff0c 本节分析可能有大量错误 xff0c 只提供参考 xff0c 随着技术积累 xff0c 以后会回过头改正错误的地方 xff0c 也非常欢迎提出指导意见 其中分析大
  • pixhawk 从main开始分析传感器数据如何流动起来,以GPS为例

    void Copter loop scheduler run time available gt MAIN LOOP MICROS 0u time available 本文以GPS数据为代表 xff0c 分析数据如何从硬件驱动层慢慢的流到主
  • pixhawk uORB初步分析

    再次编辑 xff0c 因为发现大神的解析 xff0c 添加在最后 xff0c 若一般人我不告诉他 根据自己理解画的流程图 xff1a xff08 2016 05 29加 xff09 由于上节分析GPS涉及到AP GPS PX4 read函数
  • pixhawk硬件构架

    1 Phxhawk连接线路 2 Phxhawk硬件芯片列表 处理器 STM32F427 VIT6 168 Mhz 256 KB RAM 2 MB 闪存 100Pin 32位 STM32F100C8T6 xff08 48Pin xff09 故
  • ELK-日志收集工具nxlog

    ELK 日志收集工具nxlog 文章目录 ELK 日志收集工具nxlog 前言安装语法宏变量 通用模块指令格式Module 模块名FlowControlInputType 指定输入类型OutputType xff1a 指定输出类型Exec