syslog-ng应用详解
syslog-ng应用详解
科技小能手 2017-11-07 02:43:00 浏览136 评论0
摘要: 最近做一个新项目,要做日志集中收集和处理,拿到机器一看,这批机器用的都是SUSE10 SP2系统,日志服务器用的都是syslog-ng。之前写过写过一篇关于rsyslog的博文,目前也用不上了。总不能把这些机器都挨个装一遍rsyslog吧。
最近做一个新项目,要做日志集中收集和处理,拿到机器一看,这批机器用的都是SUSE10 SP2系统,日志服务器用的都是syslog-ng。之前写过写过一篇关于rsyslog的博文,目前也用不上了。总不能把这些机器都挨个装一遍rsyslog吧。只能硬着头皮学一下syslog-ng了。搜索了一下syslog-ng。发现这个服务还不错。下面我们就具体来了解一下吧。
简介
Syslog-ng是由Balabit IT Security Ltd.维护的一套开源的Unix和类Unix系统的日志服务套件。它是一个灵活的、可伸缩的系统日志记录程序。对于服务器日志集中收集,使用它是一个不错的解决方案。
Syslog-ng主要特性有:
支持SSL/TSL协议
支持将日志写入数据库中,支持的数据库有MySQL, Microsoft SQL (MSSQL),Oracle, PostgreSQL, and SQLite.
支持标准的syslog协议
支持filter、parse以及rewrite
支持更多的平台
更高的负载能力
Syslog-ng工作原理:

Syslog-ng工作模式:
Client mode

Relay mode

Server mode

系统环境:
Centos5.8 x86_64
安装syslog-ng
源码安装
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
mkdir -p /data/softwarecd/data/softwarewget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.11/source/syslog-ng_3.3.11.tar.gzwget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.3.11/source/eventlog_0.2.12.tar.gztar zxvfeventlog_0.2.12.tar.gzcd eventlog-0.2.12/./configure --prefix=/usr/local/eventlogmake && make installcd /data/softwaretar zxvf syslog-ng_3.3.11.tar.gzcd syslog-ng-3.3.11/./configure --prefix=/usr/local/syslog-ng PKG_CONFIG_PATH="/usr/local/eventlog/lib/pkgconfig"make && make installcp contrib/init.d.RedHat /etc/init.d/syslog-ngchmod+x /etc/init.d/syslog-ngvim /etc/init.d/syslog-ng |

YUM安装
由于Centos5.8 x86_64本身的YUM源并没有syslog-ng,所以需要先安装EPEL源。
|
1
2
|
rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpmyum -y install syslog-ng |
设置开机启动项
|
1
2
3
4
|
chkconfig syslog offservice syslog stopchkconfig syslog-ng onservice syslog-ng start |
配置文件详解:
如果你的syslog-ng是yum或者RPM包安装的,那配置文件路径为/etc/syslog-ng/syslog-ng.conf。如果你是源码包编译安装的,那配置文件路径一般在安装路径下的etc目录当中。
整个配置文件大致分为全局配置、消息源、过滤器、消息目的地和日志路径几部分。
如下图所示:

全局配置:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
options { opt1; opt2; ... };chain_hostnames(yes|no) # 是否打开主机名链功能,打开后可在多网络段转发日志时有效long_hostnames(yes|no) # 是chain_hostnames的别名,已不建议使用keep_hostname(yes|no) # 是否保留日志消息中保存的主机名称use_dns(yes|no) # 是否打开DNS查询功能,use_fqdn(yes|no) # 是否使用完整的域名check_hostname(yes|no) # 是否检查主机名有没有包含不合法的字符bad_hostname(regexp) # 可通过正规表达式指定某主机的信息不被接受dns_cache(yes|no) # 是否打开DNS缓存功能dns_cache_expire(n) # DNS缓存功能打开时,一个成功缓存的过期时间dns_cache_expire_failed(n) # DNS缓存功能打开时,一个失败缓存的过期时间dns_cache_size(n) # DNS缓存保留的主机名数量create_dirs(yes|no) # 当指定的目标目录不存在时,是否创建该目录dir_owner(uid) # 目录的UIDdir_group(gid) # 目录的GIDdir_perm(perm) # 目录的权限,使用八进制方式标注,例如0644owner(uid) # 文件的UIDgroup(gid) # 文件的GIDperm(perm) # 文件的权限,同样,使用八进制方式标注gc_busy_threshold(n) # 当syslog-ng忙时,其进入垃圾信息收集状态的时间一旦分派的对象达到这个数字,syslog-ng就启动垃圾信息收集状态。默认值是:3000。gc_idle_threshold(n) # 当syslog-ng空闲时,其进入垃圾信息收集状态的时间一旦被分派的对象到达这个数字,syslog-ng就会启动垃圾信息收集状态,默认值是:100log_fifo_size(n) # 输出队列的行数log_msg_size(n) # 消息日志的最大值(bytes)mark(n) # 多少时间(秒)写入两行MARK信息供参考,目前没有实现stats(n) # 多少时间(秒)写入两行STATUS信息,默认值是:600sync(n) # 缓存多少行的信息再写入文件中,0为不缓存,局部参数可以覆盖该值。time_reap(n) # 在没有消息前,到达多少秒,即关闭该文件的连接time_reopen(n) # 对于死连接,到达多少秒,会重新连接use_time_recvd(yes|no) # 宏产生的时间是使用接受到的时间,还是日志中记录的时间;建议使用R_的宏代替接收时间,S_的宏代替日志记录的时间,而不要依靠该值定义。 |
消息源:
|
1
2
3
4
5
6
7
8
9
10
11
|
source <sourcename> {sourcedriver params; sourcedriver params; ... };internal() # syslog-ng内部产生的消息file() # 从指定的文件读取日志信息pipe() # 从指定的管道,读取日志信息fifo() # 从指定的FIFO设备,读取日志信息program() # 打开指定的应用程序,从它的标准输出读取消息sun-stream(), sun-streams() # 在solaris系统中,打开一个(多个)指定的STREAM设备,从其中读取日志消息tcp(), tcp6() # 在指定的TCP端口接收日志消息udp(), udp6() # 在指定的UDP端口接收日志消息unix-dgram() # 打开指定的SOCK_DGRAM模式的unix套接字,接收日志消息unix-stream() # 打开指定的SOCK_STREAM模式的unix套接字,接收日志消息 |
过滤器:
|
1
2
3
4
5
6
|
filter <filtername> {expression; };facility() # 根据facility(设备)选择日志消息filter() # 调用另一条过滤规则host() # 日志消息的主机名是否和一个正则表达式匹配level() or priority() # 根据level(优先级)选择日志消息match() # 对日志消息的内容进行正则匹配 |
消息目的地:
|
1
2
3
4
5
6
7
8
9
10
11
|
destination <destname> {destdriver params; destdriver params; ... ; };file() # 把日志消息写入指定的文件pipe() # 把日志消息发送到指定的管道fifo() # 把日志消息发送到指定的FIFO设备program() # 启动指定的程序,并把日志消息发送到该进程的标准输入sql() # 把日志消息写入数据库,适用于3.x版本及更高版本的syslog-ngtcp() and tcp6() # 把日志消息发送到指定的TCP端口udp() and udp6() # 把日志消息发送到指定的UDP端口unix-dgram() # 把日志消息写入指定的SOCK_DGRAM模式的unix套接字unix-stream() # 把日志消息写入指定的SOCK_STREAM模式的unix套接字usertty() # 把日志消息发送到已经登陆的指定用户终端窗口 |
消息路径:
|
1
|
log { source S1; source S2; ...filter F1; filter F2; ... destination D1; destination D2; ... }; |
配置实例:
单机配置:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
options {sync (0);time_reopen (10);log_fifo_size (1000);long_hostnames (off);use_dns (no);use_fqdn (no);create_dirs (no);keep_hostname (yes);};source s_sys {file ("/proc/kmsg"log_prefix("kernel: "));unix-stream ("/dev/log");internal();# udp(ip(0.0.0.0) port(514));};destination d_cons {file("/dev/console"); };destination d_mesg {file("/var/log/messages"); };destination d_auth { file("/var/log/secure");};destination d_mail {file("/var/log/maillog" sync(10)); };destination d_spol {file("/var/log/spooler"); };destination d_boot {file("/var/log/boot.log"); };destination d_cron {file("/var/log/cron"); };destination d_kern { file("/var/log/kern");};destination d_mlal {usertty("*"); };filter f_kernel { facility(kern); };filter f_default { level(info..emerg) andnot (facility(mail)or facility(authpriv)or facility(cron)); };filter f_auth { facility(authpriv); };filter f_mail { facility(mail); };filter f_emergency { level(emerg); };filter f_news { facility(uucp) or(facility(news)andlevel(crit..emerg)); };filter f_boot { facility(local7); };filter f_cron { facility(cron); };#log { source(s_sys);filter(f_kernel); destination(d_cons); };log { source(s_sys);filter(f_kernel); destination(d_kern); };log { source(s_sys);filter(f_default); destination(d_mesg); };log { source(s_sys);filter(f_auth); destination(d_auth); };log { source(s_sys);filter(f_mail); destination(d_mail); };log { source(s_sys);filter(f_emergency); destination(d_mlal); };log { source(s_sys);filter(f_news); destination(d_spol); };log { source(s_sys);filter(f_boot); destination(d_boot); };log { source(s_sys);filter(f_cron); destination(d_cron); }; |
C/S模式:
服务端配置:
|
1
2
3
4
5
6
7
8
|
source s_sys {file ("/proc/kmsg"log_prefix("kernel: "));unix-stream ("/dev/log");internal();udp(ip(0.0.0.0) port(514));};destination d_mesg {file("/var/log/messages"); };log { source(s_sys);destination(d_mesg); }; |
客户端配置:
|
1
2
3
4
5
6
7
|
source s_sys {file ("/proc/kmsg"log_prefix("kernel: "));unix-stream ("/dev/log");internal();};destination d_mesg {udp(ip(0.0.0.0) port(514));};log { source(s_sys);destination(d_mesg); }; |
日志入库:
创建需要的库
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
CREATE DATABASE syslog;USE syslog;CREATE TABLE logs (host varchar(32) default NULL,facility varchar(10) defaultNULL,priority varchar(10) defaultNULL,level varchar(10) default NULL,tag varchar(10) default NULL,date date default NULL,time time default NULL,program varchar(15) default NULL,msg text,seq int(10) unsigned NOT NULLauto_increment,PRIMARY KEY (seq),KEY host (host),KEY seq (seq),KEY program (program),KEY time (time),KEY date (date),KEY priority (priority),KEY facility (facility)) TYPE=MyISAM; |
|
1
|
mkfifo /tmp/mysql.pipe |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
source s_sys {file ("/proc/kmsg"log_prefix("kernel: "));unix-stream ("/dev/log");internal();udp(ip(0.0.0.0) port(514));};destination d_mysql {program("/usr/bin/mysql-uroot syslog < /tmp/mysql.pipe");pipe("/tmp/mysql.pipe"template("INSERT INTO logs(host, facility, priority, level, tag, date,time, program, msg) VALUES ('$HOST', '$FACILITY', '$PRIORITY', '$LEVEL','$TAG','$YEAR-$MONTH-$DAY','$HOUR:$MIN:$SEC', '$PROGRAM', '$MSG' );\n") template-escape(yes));};log { source(s_sys);destination(d_mysql); }; |
到这里为止,syslog-ng常用的配置方法基本上都有了。大家可以尝试安装使用一下,只要灵活配置好配置文件,syslog-ng不光是可以收集系统日志,还可以收集各类服务日志等等。如果大家在使用当中有什么问题欢迎和我交流。O(∩_∩)O~
本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/1245650
syslog-ng应用详解的更多相关文章
- Flume NG 配置详解(转)
原文链接:[转]Flume NG 配置详解 (说明,名词对应解释 源-Source,接收器-Sink,通道-Channel) 配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式 ...
- 关于syslog日志功能详解 事件日志分析、EventLog Analyzer
关于syslog日志功能详解 事件日志分析.EventLog Analyzer 一.日志管理 保障网络安全 Windows系统日志分析 Syslog日志分析 应用程序日志分析 Windows终端服务器 ...
- syslog之一:Linux syslog日志系统详解
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
- syslog及syslog-ng详解 日志服务器
服务器的日志对系统工程师来说是至关重要的,一旦服务器出现故障或被入侵,我们需要查看日志来定位问题的关键所在,所以说对于线上跑的服务器而言日志应该合理的处理及管理.下面来 服务器的日志对系统工程师来 ...
- syslog - 日志文件详解
日志文件,是linux最为重要的记录文件,记录着日常的操作. 我们在linux编程的时候,通常会使用日志文件记录操作和信息,日志系统提供了我们几个API接口供调用 1. API void openlo ...
- Flume NG 配置详解
配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式,是Java属性文件格式.在相同的配置文件,可以指定一个或多个代理的配置.配置文件包括每个源,接收器和通道,把它们连接在一起, ...
- ng 目录详解
在新建的项目中需要我们关注的就是package.json和src文件夹 node_modules (项目所需依赖)是package.json所创建的模块安装到node_modules中 src:是代码 ...
- (转)Linux 系统设置 : dmesg 命令详解
原文:https://blog.csdn.net/yexiangCSDN/article/details/80683246 https://www.cnblogs.com/duanxz/p/34770 ...
- linux syslog详解
linux syslog详解 分三部分 一.syslog协议介绍 二.syslog函数 三.linux syslog配置 一.syslog协议介绍 1.介绍 在Unix类操作系统上,syslog广 ...
- FastDFS分布式文件系统配置文件详解
一.tracker配置文件详解: # is this config file disabled# false for enabled# true for disableddisabled=false# ...
随机推荐
- [原]openstack-kilo--issue(二十一) instance can't get ip 虚拟机不能得到ip(2)
===问题点==== 在使用vlan模式部署compute节点的时候出现了下面的错误:在controller节点的dhcp-agent.log中 2017-01-22 20:19:34.178 241 ...
- [原]openstack-kilo--issue(十八) Error parsing template file: Template format version not found.
在创建stack的时候出现的报错: ]# heat stack-create nems_demo -e AAA.yaml -f AAA.parameter.yaml Error parsing tem ...
- sohu_news搜狐新闻类型分类
数据获取 数据是从搜狐新闻开放的新闻xml数据,经过一系列的处理之后,生成的一个excel文件 该xml文件的处理有单独的处理过程,就是用pandas处理,该过程在此省略 import numpy a ...
- 理解 CALayer ContentsCenter 属性
http://aaronzjp.cn/2016/12/01/iOS-CALayer/ 这个属性和android 的 .9 文件类似,定义了图片的拉伸范围:例子中明显是四个角不拉伸,对于需要做背景,co ...
- Lucene.net(4.8.0) 学习问题记录一:分词器Analyzer的构造和内部成员ReuseStategy
前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移.因为项目整体要迁移到ASP.NET Core 2.0版本,而Lucene使用的版本是3 ...
- java小tip
//20181128 ·javaJDK源码在c盘java安装目录里jdk文件夹src.zip压缩包里 ·HashCode()返回的数可能是负数 ·内部类的优点:可以方便调用所在类的方法 ·接口中定义常 ...
- 查询大数据表的效率对比:Linq to SQL、Entity Framework、企业库存储过程、ADO.Net
最近因为要开发大数据量网站,特作比较. Linq to SQL 查询 记录数:399997Linq to SQL 查询 Milliseconds:1910视图查询 记录数:399997视图查询 Mil ...
- 9 tips to improve spoken english
https://www.youtube.com/watch?v=FUW_FN8uzy0 1. don't translate everything into your native language ...
- Page9:结构分解以及系统内部稳定和BIBO稳定概念及其性质[Linear System Theory]
内容包含系统能控性结构分解.系统能观测性结构分解以及系统结构规范分解原理,线性系统的内部稳定.BIBO稳定概念及其性质
- [daily] SNAT和DNAT
SNAT,DNAT,MASQUERADE都是NAT MASQUERADE是SNAT的一个特例 SNAT是指在数据包从网卡发送出去的时候,把数据包中的源地址部分替换为指定的IP,这样,接收方就认为数据包 ...