日志收集之nxlog
一,软件介绍
nxlog 是用 C 语言写的一个开源日志收集处理软件,它是一个模块化、多线程、高性能的日志管理解决方案,支持多平台。可以处理来自许多不同来源的大量事件日志。支持的日志处理类型包括重写,关联,警报,过滤和模式匹配。其他功能包括计划,日志文件轮换,缓冲和优先处理。处理完成后,NXLog可以以任何支持的格式存储或转发事件日志。输入,输出和处理采用模块化架构和强大的配置语言实现。
Nxlog 的 module 共分为4种,分别为:Input module 负责从各种数据源(如 file, archive, tcp, udp等)中采集数据,Output module 定义了该如何处理采集的数据,我们可以以文件的方式保存下来,也可能通过 tcp,udp 发出去。Processor module 负责对采集的数据进行处理,比如做一些内容过滤,格式转换之类的。Extension module 主要是用来扩展读写数据的接口,它可以针对特定的数据类型进行特定的处理.这里面 input 和 output 模块是必不可少的,processor 和 extension 模块的话可添加与不加
二,特性
跨平台:NXLog使用Apache Portable Runtime Library,这使得NXLog能够像Apache一样,在不同的平台下运行,在Windows下,它使用Windows本地库进行编写,不依赖Cygwin这种库
模块化的架构:NXLog具有一个轻量级模块化的架构,它使得模块是可插拔的,和Apache Web服务器类似。日志格式化、传输协议、数据库出来、NXLog语言扩展都是模块。只有当模块是需要使用的时候,才会被加载,这能够让程序使用更少的内存。NXLog的核心只具备出来文件和Socket的能力,其他的功能都被放到了各个模块里面,模块具备统一的API,开发者可以轻易的编写新的模块去扩展NXLog
客户端-服务端模式:NXLog可以作为客户端,也可以作为服务器端。它能够采集客户机上的日志并传输给远程服务器。它也能够接收从其他节点传输过来的日志信息并转发到数据库、文件等其他地方
多种输入以及输出:除了可以从日志文件采集日志消息,NXLog还支持许多不同的网络和传输层协议,例如TCP、UDP、TLS/SSL、数据库、还有Socket等方式,它既支持从这些协议里面读,也支持从这些协议里面写。
可扩展的多线程架构:NXLog使用基于事件的架构,NXLog在处理日志消息的时候还会采用并行的模式,读取消息、输出消息等日志消息处理操作都是并行处理的。例如:当单线程的syslog进程在尝试输出日志消息到数据库的时候,它会发生堵塞,后面的UDP输入将会丢丢弃,而多线程架构的NXLog不仅避免了这个问题还充分的发挥了操作系统的并行处理能力
高吞吐量:常规的POSIX系统为监控文件描述提供了select或poll的系统调用,但是这些方式都是不可扩展的。现代操作系统具备一些I/O就绪通知的API用于处理大量的文件打开以及网络连接并发的情况。NXLog就是使用这些高性能的API对日志消息进行处理的。
消息缓冲:当日志消息由于网络问题导致输入堵塞的时候,NXlog会主动调整输入的流量。这能够避免日志消息丢失的情况。同时,NXLog还提供了一些消息缓存的模块可以让日志消息暂存到磁盘或内存中。当问题解决之后,缓冲会全部刷出,并被清空。除了使用现有的模块,还可以使用NXLog的语言对消息进行自定义的处理
优先级:不是所有的日志消息都是非常重要的,有些日志消息需要被更加有限的处理,NXLog支持为日志路由设定优先级。例如,这可以避免TCP输入过载导致系统丢弃UDP syslog输入的情况
避免丢弃消息:内置的流程控制器不支持丢弃日志消息,所以你不会看到类似这种日志消息被丢弃的情况 Dec 18 18:42:42 server syslog-ng[1234]: STATS: dropped 42。当然,在提供丢弃日志消息的条件后,NXLog也能够主动丢弃日志消息。UDP协议下的Syslog是一个非常典型的案例,当kernel的缓冲区用满后,操作系统会丢掉UDP的消息。当日志消息处理导致系统非常繁忙的时候,系统内核的UDP缓冲区就会被非常快的写满。
Apache风格的配置:配置方式和Apache服务器的方式很类似,容易学
内置的配置语言:内置的配置语言能够让管理员更加容易的个性化去处理日志消息,Perl是解决日志处理问题的一个挺流行的语言。内置的nxlog语言和perl的语法非常类似
任务管理器:NXLog内置了一个类似Cron的作业调度器,并且提供了更多的功能,使用这种特性,管理员能够自动的执行一些例如日志轮转,系统检查等的任务。
日志轮转:当日志达到了一定的大小,或者到了某个具体的时间,是需要被日志轮转工具进行轮转的,file input reader模块支持扩展的日志轮转脚本,它能够对日志文件进行转移/重命名等动作,类似的,file output writer 模块能够监控文件的轮转,并在轮转完后重新打开输出。
多种多样的日志消息格式化工具:NXLog支持许多种类型的日志格式,例如Syslog、新颁布的IETF Syslog标准、GELF、JSON等等。使用日志转换函数,NXLog还能够处理多行日志消息或者自定义的日志消息。
高级日志消息处理能力:除了一些内置的功能之外,使用扩展模块可以使NxLog能够具备解决一些日志格式化,事件管理、正则匹配,日志过滤、重写、告警等动作
离线消息处理模式:有些时候日志需要离线处理,NXLog提供了这种模式
字符集和i18n支持:日志消息可能是各种各样的字符集写出来的,例如UTF-8、latin-2等,Nxlog具备字符集的转换能力
三,安装
wget https://nxlog.co/system/files/products/files//nxlog-ce-2.10.-1_rhel6.x86_64.rpm
rpm -ivh nxlog-ce-2.10.2150-1_rhel6.x86_64.rpm
报错,显示没有相关的组建
yum install libdbi
然后rpm -ivh nxlog-ce-2.10.2150-1_rhel6.x86_64.rpm
查看相关的文件位置
[root@web01 filebeat]# rpm -ql nxlog-ce-2.10.2150-1.x86_64
/etc/init.d/nxlog
/etc/nxlog.conf
/usr/bin/nxlog
/usr/bin/nxlog-processor
/usr/bin/nxlog-stmnt-verifier
/usr/libexec/nxlog/modules/extension
/usr/libexec/nxlog/modules/extension/xm_charconv.so
/usr/libexec/nxlog/modules/extension/xm_csv.so
/usr/libexec/nxlog/modules/extension/xm_exec.so
/usr/libexec/nxlog/modules/extension/xm_fileop.so
/usr/libexec/nxlog/modules/extension/xm_gelf.so
/usr/libexec/nxlog/modules/extension/xm_json.so
/usr/libexec/nxlog/modules/extension/xm_kvp.so
/usr/libexec/nxlog/modules/extension/xm_multiline.so
/usr/libexec/nxlog/modules/extension/xm_perl.so
/usr/libexec/nxlog/modules/extension/xm_syslog.so
/usr/libexec/nxlog/modules/extension/xm_wtmp.so
/usr/libexec/nxlog/modules/extension/xm_xml.so
/usr/libexec/nxlog/modules/input
/usr/libexec/nxlog/modules/input/im_dbi.so
/usr/libexec/nxlog/modules/input/im_exec.so
/usr/libexec/nxlog/modules/input/im_file.so
/usr/libexec/nxlog/modules/input/im_internal.so
/usr/libexec/nxlog/modules/input/im_kernel.so
/usr/libexec/nxlog/modules/input/im_mark.so
/usr/libexec/nxlog/modules/input/im_null.so
/usr/libexec/nxlog/modules/input/im_ssl.so
/usr/libexec/nxlog/modules/input/im_tcp.so
/usr/libexec/nxlog/modules/input/im_testgen.so
/usr/libexec/nxlog/modules/input/im_udp.so
/usr/libexec/nxlog/modules/input/im_uds.so
/usr/libexec/nxlog/modules/output
/usr/libexec/nxlog/modules/output/om_blocker.so
/usr/libexec/nxlog/modules/output/om_dbi.so
/usr/libexec/nxlog/modules/output/om_exec.so
/usr/libexec/nxlog/modules/output/om_file.so
/usr/libexec/nxlog/modules/output/om_http.so
/usr/libexec/nxlog/modules/output/om_null.so
/usr/libexec/nxlog/modules/output/om_ssl.so
/usr/libexec/nxlog/modules/output/om_tcp.so
/usr/libexec/nxlog/modules/output/om_udp.so
/usr/libexec/nxlog/modules/output/om_uds.so
/usr/libexec/nxlog/modules/processor
/usr/libexec/nxlog/modules/processor/pm_blocker.so
/usr/libexec/nxlog/modules/processor/pm_buffer.so
/usr/libexec/nxlog/modules/processor/pm_evcorr.so
/usr/libexec/nxlog/modules/processor/pm_filter.so
/usr/libexec/nxlog/modules/processor/pm_norepeat.so
/usr/libexec/nxlog/modules/processor/pm_null.so
/usr/libexec/nxlog/modules/processor/pm_pattern.so
/usr/libexec/nxlog/modules/processor/pm_transformer.so
/usr/share/doc/nxlog-ce/ChangeLog.txt
/usr/share/doc/nxlog-ce/figures
/usr/share/doc/nxlog-ce/figures/architecture.png
/usr/share/doc/nxlog-ce/figures/architecture1.png
/usr/share/doc/nxlog-ce/figures/architecture2.png
/usr/share/doc/nxlog-ce/figures/msi-installer.png
/usr/share/doc/nxlog-ce/figures/windows-service.png
/usr/share/doc/nxlog-ce/nxlog-reference-manual.html
/usr/share/doc/nxlog-ce/nxlog-reference-manual.pdf
/usr/share/nxlog-ce/core-fields.xml
/usr/share/nxlog-ce/im_internal-fields.xml
/usr/share/nxlog-ce/im_mark-fields.xml
/usr/share/nxlog-ce/im_mseventlog-fields.xml
/usr/share/nxlog-ce/im_msvistalog-fields.xml
/usr/share/nxlog-ce/im_ssl-fields.xml
/usr/share/nxlog-ce/im_tcp-fields.xml
/usr/share/nxlog-ce/im_udp-fields.xml
/usr/share/nxlog-ce/pm_norepeat-fields.xml
/usr/share/nxlog-ce/pm_pattern-fields.xml
/usr/share/nxlog-ce/xm_syslog-fields.xml
/usr/share/perl5/vendor_perl/Log/Nxlog.pm
/var/lib/nxlog/cert
/var/log/nxlog
/var/run/nxlog
/var/spool/nxlog
可以看见对应的启动文件与配置文件目录
编辑配置文件
## This is a sample configuration file. See the nxlog reference manual about the
## configuration options. It should be installed locally under
## /usr/share/doc/nxlog-ce/ and is also available online at
## http://nxlog.org/docs ########################################
# Global directives #
########################################
User nxlog
Group nxlog LogFile /var/log/nxlog/nxlog.log
LogLevel INFO ########################################
# Modules #
########################################
<Extension _syslog>
Module xm_syslog
</Extension> <Input in1>
Module im_file
File '/application/nginx/logs/*.log'
SavePos True
</Input> <Output fileout1>
Module om_file
File "/var/log/logmsg.txt"
Exec if $Message =~ /error/ $SeverityValue = syslog_severity_value("error");
Exec to_syslog_bsd();
</Output> <Output out>
Module om_tcp
Host 10.0.0.223
Port
</Output> ########################################
# Routes #
########################################
<Route tcproute>
Path in1 => out
</Route>
启动软件
/etc/init.d/nxlog restart
root@web01 filebeat]# /etc/init.d/nxlog restart
Restarting nxlog daemon...
Starting nxlog daemon...
nxlog started!
nxlog restarted
好像启动了查看日志发现问题了
logstash 进行对接配置
input {
tcp {
port =>
}
redis {
data_type => "list"
host => "10.0.0.7"
db => "1"
port => "6379"
password => "123"
key => "filesystem-log-5612" }
} output {
elasticsearch {
hosts => ["10.0.0.223:9200"]
index => "filesystem-log-5612-%{+YYYY.MM.dd}"
}
}
有端口了
再到客户端运行
/etc/init.d/nxlog restart
可以了
到head查看,日志写一块了,可能不怎么清楚,
日志收集之nxlog的更多相关文章
- ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)
本文章将会继承上一篇文章,主要讲通过工具来进行日志的收集与发送,<ELK系列~NLog.Targets.Fluentd到达如何通过tcp发到fluentd> Nxlog是一个日志收集工具, ...
- LiveCD DSET日志收集
DELL的LiveCD是一张PE光盘,最新版本7.1是基于CentOS 6.2系统的. 工具下载地址: http://downloads.dell.com/FOLDER01960516M/1/SL ...
- ExceptionLess异常日志收集框架-1
哈哈,中秋和代码更配哦,不知不觉一年过半了,祝园友们中秋快乐 前一阵子在博客园看到了一篇博文 http://www.cnblogs.com/savorboard/p/exceptionless.htm ...
- Scribe日志收集工具
Scribe日志收集工具 概述 Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的应用.它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文 ...
- 【转】flume+kafka+zookeeper 日志收集平台的搭建
from:https://my.oschina.net/jastme/blog/600573 flume+kafka+zookeeper 日志收集平台的搭建 收藏 jastme 发表于 10个月前 阅 ...
- 【转】Flume日志收集
from:http://www.cnblogs.com/oubo/archive/2012/05/25/2517751.html Flume日志收集 一.Flume介绍 Flume是一个分布式.可 ...
- ELK+kafka构建日志收集系统
ELK+kafka构建日志收集系统 原文 http://lx.wxqrcode.com/index.php/post/101.html 背景: 最近线上上了ELK,但是只用了一台Redis在 ...
- Flume -- 开源分布式日志收集系统
Flume是Cloudera提供的一个高可用的.高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地.这里的日志是一个统称,泛指文件.操作记录等许多数据. 一.Flum ...
- Auty自动化测试框架第三篇——添加异常处理与日志收集
[本文出自天外归云的博客园] 本次对框架进行完善,增加了日志收集功能和修饰运行功能,完善后的lib目录如下:
随机推荐
- 20169219 NMap+Wireshark实验报告
Tcpdump介绍 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中 ...
- 如何恢复VS2013代码实时校验功能
VS2013在某一天突然无法进行实时代码校验了,只有在编译的时候,错误列表才显示语法错误 怎么来解决这个问题呢?试试环境重置吧. 首先:打开工具菜单,选择“导入和导出设置”. 其次:可以先导出选定 ...
- Codeforces 900C. Remove Extra One(暴力)
You are given a permutation p of length n. Remove one element from permutation to make the number of ...
- MessageBox.Show() 多重用法
MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBox.Show (IWin32Window, S ...
- Nexus 私有仓库
Nexus3.6和Nexus2.x安装不同,2.x版本需要安装服务,再启动.而3.6版本则更加简单. 步骤如下: jdk环境:1.8 Nexus3.6解压(注意,路径不要带空格及中文),解压后有两个文 ...
- docker 镜像创建
dockerfile FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE COPY ${source:-/} . ENTRYPOI ...
- 如何优雅地使用win10的Linux子系统
转自: http://blog.csdn.net/u010053050/article/details/52388663 http://www.rehack.cn/techshare/devtools ...
- session相关
判断session是否已失效: HttpSession session=request.getSession(false); getSession(boolean)相比于getSession()更安全 ...
- ios app提交之前需要哪几个证书
1.遇到的问题 一款App在别人的机器上开发和发布,现在迭代更新和开发需要在一台新mac机上开发和发布. (使用同一个开发者账号)问题: 1.在新mac机器上开发并导入真机测试,是不是需要从别人的机器 ...
- python-判断语句介绍
1.生活中的判断场景 1.1 火车站安检 1.2 上网吧 2.开发中的判断场景 2.1 密码判断 2.2 重要日期判断 if 今天是周六或者周日: 约妹子 if 今天是情人节: 买玫瑰 if 今天发工 ...