海运的博客

Syslog-ng配置文件详解

发布时间:June 22, 2012 // 分类:日记分析 // No Comments

Syslog-ng作为syslog的下一代日记记录工具,兼容于syslog协议,可通过定义规则,实现高级过滤功能,可以构建灵活的、可靠的中央日志服务器。
配置文件基于以下架构:

log { source( ); filter( l); destination( ); };
#通过关联数据源、过滤规则、目标操作组成一个完整的消息路径。
#数据源、过滤规则、目标操作分别定义。

数据源定义source:

source <sourcename> { 日志源; 日志源; ... };
#日志源可用参数:
file (filename) : 从指定的文件读取日志信息
unix-dgram  (filename) : 从SOCK_DGRAM模式的unix套接字接收日志消息
unix-stream (filename) : 从SOCK_STREAM模式的unix套接字接收日志消息
udp ( (ip),(port) ) :从UDP端口接收日志
tcp ( (ip),(port) ) : 从TCP端口接收日志
internal() : syslog-ng内部产生的日志
pipe(filename),fifo(filename) : 从指定的管道或者FIFO设备,读取日志信息

应用示例:

source net {udp();};
从UDP 514端口接收日志

过滤参数定义:

filter <filtername> { 过滤参数; };
#过滤参数可用:
facility(,): 根据facility(设备)选择日志消息,使用逗号分割多个facility
level(,): 根据level(优先级)选择日志消息,使用逗号分割多个level,或使用“..”表示一个范围
program(regexp): 日志消息的程序名是否匹配一个正则表达式
host(regexp): 日志消息的主机名是否和一个正则表达式匹配
match(regexp): 对日志消息的内容进行正则匹配
filter(): 调用另一条过滤规则并判断它的值
#过滤参数操作式:
and 和
or 或者
not 不包含
#facility(设备)可用消息类型
auth            用户认证
authpriv        有特权的用户认证
cron            cron守护进程
daemon          各种系统守护进程
ftp             ftp守护进程
kern            内核消息
local0-local7   保留用于本地用法
lpr             打印机  
mail            邮件    
news            新闻    
syslog          内部syslog
uucp            uucp系统
user            各种用户程序来的消息
#Level等级:
emerg   最严重的错误 (如system panic)
alert   需要立即处理的严重错误
crit    critical warming
err     普通错误
warn    警告信息
notice  比较不严重的信息
info    普通信息
debug   除错信息

应用举例:

filter f_local { facility(authpriv) or level(notice); };
#定义过滤规则f_local包含authpriv所有消息和其它设备notice级别以上消息

目标操作定义destination:

destination <name> { 目标操作; 目标操作;  ...  ;};
#目标操作常用参数:
file (filename) :写入指定文件
unix-dgram  (filename) :写入SOCK_DGRAM模式的unix套接字
unix-stream (filename) :写入SOCK_STREAM模式的unix套接字
tcp  (ip),(port) :以TCP协议发送指定主机端口
udp (ip),(port) :以UDP协议发送指定主机端口
usertty(username) :把日志消息发送到已经登陆的指定用户终端
pipe(filename),fifo(filename) :把日志消息发送到指定的管道或者FIFO设备
program(parm) :启动指定的程序,并把日志消息发送到该进程的标准输入

应用示例:

destination d_kern { file("/var/log/kern"); }
定义目标规则d_kern写入日志到文件/var/log/kern
destination d_udp  { udp("127.0.0.1" port(514)); };
定义目标规则d_udp发送日志到相应IP端口

Windows下用EvtSys发送日志到syslog-ng服务器

发布时间:June 21, 2012 // 分类:Cacti,日记分析 // 2 Comments

之前有介绍cacti配合syslog-ng构建中央日志服务器,对于Linux服务器可以直接将日志通过网络发送到syslog-ng服务端,Windows下要利用EvtSys这个小工具转换日记为syslog格式并发送到syslog-ng服务器。
EvtSys官方下载地址:http://code.google.com/p/eventlog-to-syslog/downloads/list,支持windows2003和windows2008系统。
将下载的文件解压复制到C:\WINDOWS\SYSTEM32目录下,打开cmd窗口执行:

#https://www.haiyun.me
evtsys -i -h server
-i ;安装为系统服务
-h ;syslog-ng服务器地址
-p ;syslog-ng服务器端口,默认514

启动EvtSys:

net start evtsys

然后在syslog管理界面就可查看windows server日志信息了。

Cacti安装syslog插件配合syslog-ng构建中央日志服务器

发布时间:June 20, 2012 // 分类:Cacti,日记分析 // No Comments

实现流程:Cacti服务器安装syslog-ng为中央日志服务器,Cacti通过syslog插件展示,从服务器通过网络将日志实时发送到中央日志服务器。
Cacti下syslog插件安装:

#https://www.haiyun.me
cd /home/wwwroot/cacti/plugins/
wget -O syslog.tar.gz http://docs.cacti.net/_media/plugin:syslog-v1.22-2.tgz
tar zxvf syslog.tar.gz 

新建syslog数据库并授权:

mysql -u root -p
create database syslog;
grant all privileges on syslog.* to cacti@localhost;

导入syslog数据库:

mysql -u root -p syslog < syslog/syslog.sql

修改syslog插件配置文件,然后通过web界面安装syslog插件,略过。

vim syslog/config.php 
$use_cacti_db = false; #不使用cacti默认数据库
#定义syslog数据库信息
if (!$use_cacti_db) {
    $syslogdb_type     = 'mysql';
    $syslogdb_default  = 'syslog';
    $syslogdb_hostname = 'localhost';
    $syslogdb_username = 'cactiuser';
    $syslogdb_password = 'password';
    $syslogdb_port     = 3306;

Cacti服务器端安装syslog-ng服务端,yum安装需先安装epel源

yum -y install syslog-ng
service syslog stop
chkconfig syslog off
service syslog-ng start
chkconfig syslog-ng on

编辑syslog-ng配置文件添加以下内容:

vim /etc/syslog-ng/syslog-ng.conf 
source net { #源设备为网络接收数据
        udp();
};

destination d_mysql { #目的操作
         pipe("/tmp/mysql.pipe"
         template("INSERT INTO syslog_incoming (host, facility, priority, date, time, message) VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$YEAR-$MONTH-$DAY', '$HOUR:$MIN:$SEC', '$MSG' );\n")
         template-escape(yes)
        );
 };
log { source(net); destination(d_mysql); };
#log { source(s_sys); destination(d_mysql); };

新建日志数据库导入脚本:

vim /etc/syslog-ng/syslog.sh 
#!/bin/bash
if [ ! -e /tmp/mysql.pipe ]; then
            mkfifo /tmp/mysql.pipe
    fi 
    while [ -e /tmp/mysql.pipe ]
    do
        mysql -u root --password=passwd syslog < /tmp/mysql.pipe
done

启动脚本并配置开机启动:

sh /etc/syslog-ng/syslog.sh &
echo "sh /etc/syslog-ng/syslog.sh" >> /etc/rc.local 

从服务器配置syslog将日志发送到syslog-ng服务器:

echo "*.*                        @server" >> /etc/syslog.conf
/etc/init.d/syslog restart

上张效果图:
cacti插件syslog.png

分类
最新文章
最近回复
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...
  • 孤狼: 擦。。。。apcupsd会失联 nut在冲到到100的时候会ONBATT进入关机状态,我想想办...
  • 海运: 网络,找到相应的url编辑重发请求,firefox有此功能,其它未知。
  • knetxp: 用浏览器F12网络拦截或监听后编辑重发请求,修改url中的set为set_super,将POS...
  • Albert: 啊啊啊啊啊啊啊啊啊 我太激动了,终于好了英文区搜索了半天,翻遍了 pve 论坛没找到好方法,博...