网络设备日志服务器搭建和邮件报警

拉取网络设备的日志到日志服务器

客户端配置(日志主机)

[root@shangqin248 ~]# yum install rsyslog-mysql -y # 安装 rsyslog 的 MySQL 扩展程序 rsyslog-mysql

修改 rsyslog 配置文件,将日志信息传输给远程数据库

[root@shangqin248 ~]# vim /etc/rsyslog.conf
#添加
$ModLoad ommysql(不存数据库可以不要这条)
*.* @rsyslog 172.*.*.118 #数据库 IP 地址
#使用UDP协议传输
$ModLoad imudp
$UDPServerRun 514
#使用TCP协议传输(两者可同时使用)
$ModLoad imtcp
$InputTCPServerRun 514

重启 rsyslog 服务

[root@shangqin248 ~]# systemctl restart rsyslog.service

服务端配置(及网络设备如:0路由、1核心、2汇聚、3AC、4AP)

system-view
[device] info-center enable
[device] info-center loghost 10.*.*.252 facility local0   #指日志服务器地址,local0 对应的是路由器的网络日志
[device] info-center source default loghost level informational

这里就举例路由配置,其他都类似。注意其中红色标出的数字需要和客户端的配置文件做
再入主机配置
以超级管理员身份登录日志主机
在/var/log路径下为Device创建同名日志文件夹Device,在该文件夹创建日志文件info.log,用来储存来自Device的日志

[root@shangqin248 ~]# mkdir /var/log/Device
[root@shangqin248 ~]# touch /var/log/Device/info.log
编辑/etc/路径下的文件rsyslog.conf,添加以下内容

#Device configuration message
local0.info  /var/log/Device/router.log  # 路由器
local1.info  /var/log/Device/hexin.log  # 核心
local2.nfo  /var/log/Device/huiju.log   #汇聚

以上配置中的local0表示日志主机接受日志的工具名称,info表示信息的等级
Linux系统会把等级高于information的日志记录到/var/log/Device/路径中对应的 文件中
在编辑/etc/rsyslog.conf时应该注意一下问题
注释必须独立成行,并且以#开头
文件名之后不得有多余的空格
在/etc/rsyslog.conf中指定的日志接收工具名称信息等级与Device上(网络设备)相应的参数必须保持一致,否则日志不能正常输出到日志主机上

查看系统守护进程rsyslogd的进程号,终止rsyslogd的进程,且重设置后台启动
[root@shangqin248 ~]# ps -ae | grep rsyslogd
32666
[root@shangqin248 ~]# kill -9 32666
[root@shangqin248 ~]# rsyslogd -r &

配置报警邮箱

[root@shangqin248 ~]# yum install mailx -y
修改配置:vim /etc/mail.rc 在后面加上相应信息

set from=it-log@xxxx.com #(邮箱地址)
set smtp=smtp.xxxx.com #(smtp服务器)
set smtp-auth-user=it-log@xxxx.com #(用户名)
set smtp-auth-password=4b%UxD#TnARv7ES0 #(邮箱授权码)
set smtp-auth=login

测试

echo Hello World | mail -s test xxx@qq.com  邮件发送正常

切割和分析脚本

#!/bin/bash
#目的:切割分析日志
time=$(date '+%Y%m%d')
cd /var/log/Device/
echo "**区域网络日志日报" > a.txt
if [  `cat router.log | grep  "GigabitEthernet2/0/1  changed |  dianxin: probe-fail" wc -l ` -gt 0 ];   #判断电信线路是否异常
  then
echo "电信线路异常,异常日志如下"  >>a.txt
cat router.log | grep "GigabitEthernet2/0/1 changed | dianxin: probe-fail"  >>a.txt      #把电信异常的日志信息写到a.txt

else
echo "电信线路正常"  >>a.txt
fi

if [  `cat router.log | grep  "GigabitEthernet2/0/2 changed | liantong: probe-fail " |wc -l ` -gt 0 ];   #判断联通线路是否异常
then
echo "联通线路异常,异常日志如下"  >>a.txt
cat router.log | grep "GigabitEthernet2/0/2 changed | liantong"  >>a.txt   #把联通异常的日志信息写到a.txt

else
echo "联通线路正常"  >>a.txt

fi

if [  `cat router.log | grep  "GigabitEthernet2/0/3 changed" |wc -l ` -gt 0 ];   #判断专线是否异常
then
echo "专线线路异常,异常日志如下"  >>a.txt
cat router.log | grep "GigabitEthernet2/0/3 changed"  >>a.txt   #把专线异常的日志信息写到a.txt

else
echo "专线线路正常"  >>a.txt

fi

mv router.log  $time-router.log       #以日期为名字重命名日志
touch router.log                 #创建日志接收文本
systemctl restart rsyslog.service    #重启服务
echo "**网络日志日报" | mail -s "**网络日志日报"  bian**@xxxx.com <a.txt

设置定时任务

[root@shangqin248 ~]# crontab -e     #进入定时任务编辑界面
00 08 * * sh /var/log/Device/router.sh    #设置每天早上8点执行脚本任务

重启定时任务服务

[root@shangqin248 ~]# service crond reload
[root@shangqin248 ~]# service crond restart
上一篇
下一篇