日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
#-----实用-----
# This one is the template to generate the log filename dynamically, depending on the client's IP address.
# 根据客户端的IP单独存放主机日志在不同目录
$template Remote,"/var/log/syslog/%fromhost-ip%/%fromhost-ip%_%$YEAR%-%$MONTH%-%$DAY%.log"
# Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
& ~ # 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录
#-----实用-----
#-----sd-syslog-----
$template myFormat,"%rawmsg%\n"
$ActionFileDefaultTemplate myFormat
#-----sd-syslog-----
#https://my.balabit.com/downloads/syslog-ng/sources/3.3.5/source //syslog-ng下载地址 eventlog,libol,syslog-ng
#----syslog相关----
syslog-ng (syslog-Next generation) 是syslog的升级版,syslog-ng有两个版本,一个是收费的,一个是开源的,那么作为syslog的下一代产品,功能是可想而知,肯定比syslog的功能强大的多,如
高性能
可靠的传输
支持多平台
高可靠性
众多的用户群体
强大的日志过滤及排序
事件标签和关联性
支持最新的IETF标准
等....
syslog-ng
nest generation
syslog 服务:
syslogd 系统,非内核产生的信息
klogd 内核产生的信息
kernel --> 物理终端(/dev/console) /var/log/dmesg
#dmesg
#cat /var/log/dmesg
日志需要滚动(日志切割):
logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d/syslog //滚动定义
/var/log/messages //系统标准错误日志信息;非内核产生的引导信息,各子系统产生的信息
/var/log/secure
#vi /etc/rc.d/init.d/rsyslog
logrotate中包含了一个定时任务,根据/etc/logrotate.conf文件和/etc/logrotate.d/目录中的的配置定期的转储日志文件。
#syslog-ng 安装包下载https://my.balabit.com/downloads
#安装syslog-ng 注意点:
/usr/local/syslog_ng_tar 安装包存放目录
/usr/local/software 解压包存放目录
/usr/local/syslog-ng/etc 配置文件路径
#安装依赖包:
#yum -y install kernel-headers* glibc-headers-* glibc-devel-* gcc-* zlib-* zlib-devel-* libffi-* libffi-devel-* e2fsprogs-devel-* keyutils-libs-devel-* libselinux-
devel-* libsepol-devel-* libselinux-devel-* krb5-devel-* openssl-devel-* pcre-devel xz
#export PKG_CONFIG_PATH=/usr/local/eventlog/lib/pkgconfig
#./configure --prefix=/usr/local/syslog-ng --with-libol=/usr/local/libol && make && make install
#mkdir /usr/local/syslog-ng/etc
#mkdir /usr/local/syslog-ng/var
#cp /usr/local/software/syslog-ng-3.5.5/contrib/syslog-ng.conf.RedHat /usr/local/syslog-ng/etc
#cp /usr/local/software/syslog-ng-3.5.5/scl/scl.conf /usr/local/syslog-ng/etc/
#cp /usr/local/software/syslog-ng-3.5.5/scl/scl.conf /usr/local/syslog-ng/etc/
#cp contrib/init.d.RedHat /etc/init.d/syslog-ng
#cd /usr/local/syslog-ng/etc/
#mv syslog-ng.conf.RedHat syslog-ng.conf
#chmod +x /etc/init.d/syslog-ng
#ln -s /usr/local/eventlog/lib/* /lib/
#ln -s /usr/local/eventlog/lib/* /lib64/
#vi /etc/init.d/syslog-ng //添加版本好、修改source格式
@version:3.5.5
@include"scl.conf"
options {
time_reopen (10);
chain_hostnames(off);
flush_lines(0);
log_fifo_size (1000);
use_dns (no);
use_fqdn (no);
create_dirs (no);
keep_hostname (yes);
};
source s_udp514 {
network(
transport("udp")
port(514)
flags(no-parse)
);
};
#/etc/syslog-ng/syslog-ng.conf
@version: 3.7
@include "scl.conf"
source s_system { system(); internal(); };
destination d_all { file("/var/log/all.log"); };
log { source(s_system); destination(d_all); };
#service syslog-ng start
#Splunk for Palo Alto Networks withsyslog-ng
You should also have the Palo Alto Networks for Splunk app and add-on installed as described in Getting Started
http://pansplunk.readthedocs.io/en/latest/getting_started.html
1,Under “Sources” add a source in syslog-ng to listen for logs on a port. This example uses port UDP 514:
source s_udp514 {
network(
transport("udp")
port(514)
flags(no-parse)
);
};
2,Under “Destinations” specify a .log file destination:
destination d_udp514 { file("/YOURPATH/udp514.log" template("${MSG}\n")); };
3,Under “Log paths” specify the path of the log:
log { source(s_udp514); destination(d_udp514); };
4,Save syslog-ng.conf and restart syslog-ng:
$ /etc/init.d/syslog-ng restart
#通过Syslog收集Cisco网络设备的日志
在Cisco网络设备上的配置命令一般为:
logging
logging trap
Splunk默认使用UDP 514端口来监听syslog消息。例如:
logging 192.168.122.1
logging trap warning
#通过Syslog收集Linux主机的日志
在Linux主机上的配置一般为修改/etc/syslog.conf配置,添加以下两行:
# Send syslog to Splunk server
*. @
如:
# Send syslog to Splunk server
*.debug @192.168.122.1
#----备注-----
# Log all messages to the dynamically formed file.
:fromhost-ip, !isequal, "127.0.0.1" ?Remote
# 排除本地主机IP日志记录,只记录远程主机日志
# 注意此规则需要在其它规则之前,否则配置没有意义,远程主机的日志也会记录到Server的日志文件中
& ~ # 忽略之前所有的日志,远程主机日志记录完之后不再继续往下记录
#----备注-----