标签 rsyslog 下的文章

日志自动备份脚本(基于rsyslog)

#!/bin/bash
service rsyslog stop
BackupPath=/Logback/
LogFile=/Logback/back.log
DBPath=/var/log/switch
Date=$(date +%y%m%d)
File=/Logback/log_bak$Date.tgz
NewFile=”$BackupPath”log_bak$Date.tgz
if [ ! -d “$BackupPath” ]; then
mkdir $BackupPath
fi
echo “——————————————-” >> $LogFile
echo $(date +”%y-%m-%d %H:%M:%S”) >> $LogFile
echo “————————–” >> $LogFile
tar cPzvf $NewFile $DBPath >> $LogFile 2>&1
if [ -f “$File” ]; then
rm -rf /var/log/switch/*
else
echo “文件不存在,现在开始备份!” >> $LogFile
tar cPzvf $NewFile $DBPath >> $LogFile
fi
echo “日志备份成功!” >> $LogFile
service rsyslog start
chmod -R 755 /var/log/switch/
echo “注意:备份文件解压路径为’/var/log/switch/ ‘,解压时注意防止覆盖未备份日志文件!” >> $LogFile
mail -s “日志备份成功!” liufengnian@ghnovo.com < /Logback/back.log

Centos使用rsyslog+loganalyzer监控交换机日志

公司需要对机房交换机的日志进行监控,搭建了个rsyslog日至服务器来监控,现将搭建过程记录如下:
1.安装Lamp环境

yum install httpd mysql mysql-server mysql-devel php php-mysql php-gd –y
service httpd start
service mysqld start
chkconfig httpd on
chkconfig mysqld on

2.安装 rsyslog

yum install rsyslog rsyslog-mysql -y
service rsyslog start
chkconfig rsyslog on

编辑 rsyslog配置文件 /etc/rsyslog.conf

取消下边两行注释
$ModLoad imudp
$UDPServerRun 514 (允许从udp 514 端口接收及发送日志,也可以取消tcp 注释行,通过tcp 端口发送)

检查防火墙514 端口是否开启
添加mysql 模块及信息用以链接数据库

$ModLoad ommysql

*.* :<删除我>ommysql:localhost,Syslog,root,password (localhost:服务器,root:数据库用户,nian:数据库用户对应密码)

重启rsyslog 服务

service rsyslog restart

将数据库文件导入数据库 (此数据库用来存日志)

mysql –u root –p < /usr/share/doc/rsyslog/CreateDB.sql

3. 挂接web接口用以图形化管理
下载loganalyzer,解压后将src目录下所有内容拷贝到/var/www/syslog
创建 config.php 文件并且给予读取权限

touch config.php
chmod o+w config.php

4.创建loganalyzer数据库 loganalyzer (loganalyzer 次数据库存放管理员等用户信息)

mysql -uroot -ppasswd
mysql> create database loganalyzer;

在浏览器中安装 http://IP/syslog

5.loagnalyzer默认没有显示来源IP,但是我们可以通过修改添加数据库字段来实现
修改rsyslog.conf 配置文件 添加sql语句,添加IP字段

$template insertpl,”insert into SystemEvents (Message, Facility, FromHost, FromIP, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values (‘%msg%’, %syslogfacility%, ‘%HOSTNAME%’, ‘%fromhost-ip%’, %syslogpriority%, ‘%timereported:::date-mysql%’, ‘%timegenerated:::date-mysql%’, %iut%, ‘%syslogtag%’)”,SQL

$ModLoad ommysql
*.* :<删除我>ommysql:localhost,Syslog,root,passwd;insertpl

6.在web管理页面中修改
(1)在Fields中添加 IP
(2)在Views 中添加 NewSyslog 添加 Date, Facility, Severity, Host, IP, Syslogtag, Messagetype, Message
(3)在DBMappings中 添加NewSyslog 继续添加字段

Date => devicereportedtime, uID => id, Host => fromhost, IP => fromip, Messagetype => infounitid, Message => message, Facility => facility, Severity => priority, Syslogtag => syslogtag, ProcessID => processid, Event ID => 1, Eventlog Type => eventlogtype, Event Source => eventsource, Event Category => eventcategory, Event User => eventuser, SystemID => systemid, Checksum => checksum

(4)在Source 的数据源中修改Table type 为NewSyslog
7.客户端配置:
安装rsyslog 服务 修改配置文件,
取消下边两行注释

$ModLoad imudp
$UDPServerRun 514 (允许从udp 514 端口接收及发送日志)

在底部添加
*.* @remote-IP (*.* 为发送的日志级别, @ 为通过udp端口发送 @@ 为通过tcp端口发)

此时就可以监控到客户端的日志了,默认是存在数据库中的

8.自定义设备来源日志文件
如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:
修改/etc/rsyslog.conf

:fromhost-ip, isequal, “192.168.0.160″ /var/log/switch/192.168.0.160.log
:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/switch/192.168.0.161
:FROMHOST-IP, startswith, “192.168.1.1” /var/log/switch/192.168.1.1
:FROMHOST-IP, startswith, “192.168.1.2” /var/log/switch/192.168.1.2

重启 服务

service rsyslog restart

然后在/var/log/目录下就会自动创建日志文件

客户端测试日志命令:

logger –p user.info “XXX”

一定要给/var/log/switch 文件夹添加读写权限,不然loganalyzer 无法读取
chmod -R o+wr /var/log/switch
在loganalyzer 的source 中添加数据来源为Diskfile,然后就可以单独管理每台客户端的日志了!