海运的博客

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日志信息了。

Nginx/Lnmp定时分割日志shell脚本

发布时间:May 5, 2012 // 分类:日记分析 // No Comments

如果服务器访问量较大,Nginx日志占用空间也是个很大的问题,也不可能每天都手工清除日志,久而久之硬盘空间。。。
此脚本用于每天定时切割日记,备份30天内的日志数据备查,并删除30前备份的数据。

#/bin/bash
#Create by https://www.haiyun.me
log_path="/home/wwwlogs"
mkdir -p $log_path/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")  
for logname in $(ls /home/wwwlogs/*.log |awk -F/ '{print $NF}')
do
         mv $log_path/$logname $log_path/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/$(date -d "yesterday" +"%d")/$logname
 done
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
find $log_path -type d -mtime +30 -exec rm {} \;

将此脚本添加到计划任务:

echo "30 1 * * * sh /path/file.sh" > /etc/cron.d/nginx
#每天凌晨1点30执行任务
分类
最新文章
最近回复
  • crowjin: 你确定这能过滤??不是所有请求都返回空地址::?
  • : linux系统上单个网卡多条宽带拨号获取公网IP,外网可以访问这些IP,有偿! Q:25299...
  • 硅谷少年: 非常有用,感谢分享
  • spartan2: https://dashboard.hcaptcha.com/welcome_accessib...
  • 海运: 应该能,在购买页面先手工跳过cf机器验证,后续一定时间内不更换ip应该不会再次验证。
  • spartan: 大佬斯巴达开启了CF的机器识别验证,请问插件能自动跳过吗? 另外这个脚本有没有简单使用说明,新...
  • vincent: 膜拜大佬
  • 海运: proxy-header或proxy_protocol
  • liangjw: 如果是 内部调用 或者 中间存在 代理 而上一个代理又在内网 ,那怎么处理来自代理私有IP?
  • chainofhonor: 感谢,用dnsmasq设置自动判断BIOS和UEFI成功了