Linux下使用rsyslog部署日志服务器 && 记录history并发送到rsyslog服务器
一、syslog服务简介
rsyslog 是一个 syslogd 的多线程增强版。rsyslog负责写入日志, logrotate负责备份和删除旧日志, 以及更新日志文件
logger命令
将自定义的信息写入到本地日志系统需要用到:logger 命令
logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息
logger -it error -p local5.info "hello world"
-i 在每行都记录进程ID -t 日志中的每一行都加一个error标签 -p 指定自定义的日志设备和日志级别,相关内容参见文章附录
日志类型
authpam产生的日志authprivssh,ftp等登录信息的验证信息cron时间任务相关kern内核lpr打印mail邮件mark(syslog)rsyslog服务内部的信息,时间标识news新闻组user用户程序产生的相关信息uucpunix to unix copy, unix主机之间相关的通讯local1~7自定义的日志设备日志级别
级别 | 说明 |
二、syslog服务配置
[root@localhost]# yum install rsyslog rsyslog-mysql logrotate [root@localhost]# service rsyslog status rsyslogd (pid 24331) is running... [root@localhost]# ps -ef | grep rsyslogd | grep -v grep root 24331 1 0 20:26 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 2 -r -x -m 180
server:
配置rsyslog
[root@localhost]# vim /etc/sysconfig/rsyslog 1 # Options for rsyslogd 2 # Syslogd options are deprecated since rsyslog v3. 3 # If you want to use them, switch to compatibility mode 2 by "-c 2" 4 # See rsyslogd(8) for more details 5 # SYSLOGD_OPTIONS="-c 5" 6 SYSLOGD_OPTIONS="-c 2 -r -x -m 180" 7 KLOGD_OPTIONS="-x"
各参数作用:
-c 指定运行兼容模式。
-r 指定监听端口。 默认514
-x 在接收客户端消息时,禁用DNS查找。需和-r参数配合使用。
-m 标记时间戳。单位是分钟,为0时,表示禁用该功能。
编辑rsyslog.conf 开启相关属性
$ModLoad immark
$ModLoad imudp
$UDPServerRun 514
查看是否启动
[root@localhost]# netstat -nultp | grep 514 udp 0 0 0.0.0.0:514 0.0.0.0:* 24331/rsyslogd udp 0 0 :::514 :::* 24331/rsyslogd
Client:
编辑rsyslog.conf 新增以下:
*.* @192.168.1.10
说明:
第一个*号字段为什么服务如:mail、kernel、ftpd等,这里的*号代表所有服务
第二个*号字段为记录相应服务的日志级别如info、warn、err等,这里*号代表说有级别,即所有服务的说有日志都会发送到192.168.1.10这台主机上
注意:如果server端开启的是tcp的514端口,上面就应该这样写:*.* @@rsyslog-server-ip
记录日志(有一个很实用的功能记录服务器执行的history)
这里有多种方法
第一种
修改bash源码,重新编译
# wget http://ftp.gnu.org/gnu/bash/bash-4.2.tar.gz # tar zxvf bash-4.2.tar.gz -C /usr/local/bash-4.2 # cd /usr/local/bash-4.2 。。。
可以参见 http://levichen.logdown.com/posts/2013/11/04/syslog-record-history
第二种 使用trap (Just add the following lines in your /etc/profile)
function log2syslog { declare command command=$(fc -ln -0) logger -p local1.notice -t bash -i — $USER : $command } trap log2syslog DEBUG
第三种 (Just add the following lines in your /etc/profile)
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }' export PROMPT_COMMAND='{ command=$(history 1 | { read x y; echo $y; }); logger -p local1.notice -t bash -i "user=$USER,from=$SSH_CLIENT,pwd=$PWD,command:$command"; }' alias precmd "history 1 | /bin/logger -p local1.notice -t `echo $SHELL`:`whoami`:`pwd`:`ip r l |cut -d' ' -f12` -i " PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION")' export PROMPT_COMMAND='if [ "$(id -u)" -ne 0 ]; then echo "$(date "+%Y-%m-%d.%H:%M:%S") $(pwd) $(history 1)" >> ~/.logs/bash-history-$(date "+%Y-%m-%d").log; fi'
有好多种方式来记录,我采用第二条命令
三、rsyslog server文件配置
修改配置文件
vim /etc/rsyslog.d/50-default.conf
添加内容
*.* /var/log/remotehost.log
新建保存日志文件
touch /var/log/remotehost.log
重启rsyslog server,用tail动态查看
tail -f /var/log/remotehost.log
参考文章
http://levichen.logdown.com/posts/2013/11/04/syslog-record-history
相关推荐
使用Log4j的SystemLogAppender可以实现远程的日志输出,为集中式的日志管理提供便利。/etc/init.d/syslog start3. 在写日志的客户机上,修改log4j配置文件: