Linux日志:rsyslog及loganalyzer(一)

【前言】

日志记录了系统每天发生的各种各样的事情,同时还可以监视系统中发生的事件,你可以通过他来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹,对运维管理人员来说日志就是他的第三只眼,对于预警、发现、解决系统问题都非常有帮助。下面我们就一同来了解Linux下的日志系统(rsyslog)与如何通过loganalyer来实现日志信息的webGUI展示。

【rsyslog的特性】

在CentOS6上通过rsyslog(日志系统)来管理记录日志,其具有如下特性:1、支持多线程;2、通过TCP,SSL,TLS,RELP协议传输日志;3、支持通过MySQL, PGSQL, Oracle等多种关系型数据库来存储;4、具备强大的过滤器,可实现过滤系统信息中的任意部分;5、支持自定义输出格式;6、很适用于企业级别日志记录需求。

【rsyslog的配置文件及其定义格式】

rsyslog的配置文件:/etc/rsyslog.conf(主配置文件,一般配置该文件即可);

/etc/rsyslog.d/*.conf (从配置文件,一般都不配置);

rsyslog配置文件的定义格式:facility(设施).(连接符号)priority(级别)  Target(目标)

facility:设施(日志设备),从功能或程序上对日志进行分类,并由专门的工具负责记录其日志,可以理解为日志类型。

设施 说明 设施 说明
auth 与认证相关的,例如pam产生的日志; mark 防护墙标记
authpriv 与认证授权相关的,例如ssh,ftp等登录信息的验证信息; news 新闻组
cron 与周期性计划任务相关的 security 安全相关
daemon 与守护进程相关的 syslog syslog自己的日志
kern 与内核相关的 user 与用户相关的
lpr 与打印子系统相关的 mail 邮件
uucp 早期unix与unix之间共享文件的协议 local0~7 用户自定义

指定设施时可以使用通配符: *: 所有    f1,f2,f3,...: 列表    !: 取反

连接符号  

 连接符号   说  明
.xxx 表示大于等于xxx级别的信息
.=xxx 表示等于xxx级别的信息
.!xxx 表示在xxx之外的等级的信息

    ◆ facility:级别(日志级别),从上到下级别从低到高,记录的信息越来越少,详细的可以查看手册: man 3 syslog

日志级别 说明 级别值
debug 调式信息,日志信息最多 7
info 一般信息的日志,最常用 6
notice 最具有重要性的普通条件的信息 5
warn,warning 警告级别 4
err, error 错误级别,阻止某个功能或者模块不能正常工作的信息 3
crit 蓝色警戒,阻止整个系统或者整个软件不能正常工作的信息 2
alert 橙色警戒,需要立刻修改的信息 1
emerg, panic 红色警戒,内核崩溃等严重信息 0
指定级别时可以使用通配符: *: 所有级别    none: 没有任何级别(表示不记录日志信息)

◆ Target:目标,指定如何存储日志。

文件路径:例如/var/log/messages ,当路径前面有“-”时,表示启用异步存储机制;

用户: * 表示当前系统上所有已登录的用户

日志服务器:@SERVER_IP

管道:|COMMAND

◆ 实例说明:

mail.info         /var/log/maillog

# 比指定级别更高的所有级别,包括指定的级别本身,都记录;

mail.=info       /var/log/maillog

# 明确指定级别;

mail.!info      *

# 除了指定级别,以外的所有级别

*.info

# 所有facility的info级别

mail.*:

# mail的所有级别

mail,news.info:

#mail的info级别与比其更高的所有级别,news的info级别与比其更高的所有级别;

注意:同一行可以定义多个facility(设施).priority(级别),当定义的设施不同级别相同时用“,”来隔开(例:mail,news.info);当定义的级别不相同或设施不相同时,需用“;”隔开(例:*.info;mail.none;authpriv.none;cron.none)。

【启用日志服务器的功能】

[[email protected] ~]# vim /etc/rsyslog.conf #修改编辑rsyslog的主配置文件;
#### MODULES ####

$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# Provides UDP syslog reception
$ModLoad imudp #装载imudp模块;
$UDPServerRun 514 #启动rsyslog服务时,使其监听在UDP的514号端口上;
         
# Provides TCP syslog reception
$ModLoad imtcp #装载imtcp模块; 
$InputTCPServerRun 514  #启动rsyslog服务时,使其监听在TCP的514号端口上;
[[email protected] ~]# service rsyslog start #启动rsyslog服务;
Starting system logger:                                    [  OK  ]
[[email protected] ~]# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Address   State       PID/Program name   
tcp        0      0 0.0.0.0:514          0.0.0.0:*       LISTEN      224
tcp        0      0 :::514               :::*            LISTEN      2248/rsyslogd       
udp        0      0 0.0.0.0:514          0.0.0.0:*                   2248/rsyslogd       
udp        0      0 :::514               :::*                        224
#ok,可以看出TCP与UDP的514号端口都监听了起来,启动日志服务器的功能就是这么简单!
#下面我在另一台主机(192.168.0.112)上添加一条规则,使其日志都记录到该日志服务器
#(192.168.0.111)上来。
[[email protected] ~]# vim /etc/rsyslog.conf 
  *.*                @192.168.0.111 #编辑一条规则使0.112这台主机的所有日志都记录到0.111这台
# 日志服务器上去;
[[email protected] ~]# service rsyslog restart #重启rsyslog服务,载入新的配置文件;
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[[email protected] ~]# yum remove zsh -y #卸载zsh;
[[email protected] ~]# tail -3 /var/log/messages #查看本机的日志,并没有记录我的卸载事件;
Jun 10 03:45:56 dns kernel: hrtimer: interrupt took 5042794 ns
Jun 10 04:13:53 dns kernel: Kernel logging (proc) stopped.
Jun 10 04:13:53 dns rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="1437" x-info="http://www.rsyslog.com"] exiting on signal 15.
[[email protected] ~]# tail -3 /var/log/messages #现在我们在日志服务上来查看;
Jun 18 23:07:13 www dbus: avc:  received setenforce notice (enforcing=0)
Jun 18 23:07:13 www dbus: avc:  received setenforce notice (enforcing=0)
Jun 10 04:18:57 dns yum[2315]: Erased: zsh #ok!就在这了,日志已经记录下来!
#注意:我们配置日志服务器时,一定要记得配置好iptables或其他防火墙的规则,放行TCP与UDP的
#514号端口。这里为了快速的检验效果,我们可以先关闭iptables服务(service iptables stop)
#与Slinux(getenforce 0)。

【使用MySQL服务器来存储日志】

    1)安装配置好MySQL数据库服务

[[email protected] ~]# yum install mysql-server -y

    2)安装rsyslog与MySQL数据库实现通讯所需的rsyslog-mysql包

[[email protected] ~]# yum install rsyslog-mysql -y

    3)创建rsyslog依赖的数据库

[[email protected] ~]# mysql -u root -p
mysql> SOURC /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql #导入sql文件,创建数据库与表
mysql> SHOW DATABASES; #创建了Syslog数据库;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| Syslog             |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
mysql> use Syslog
Database changed
mysql> SHOW TABLES #在Syslog数据库下创建了两张表;
    -> ;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
2 rows in set (0.00 sec)
mysql> GRANT ALL ON Syslog.* TO [email protected] IDENTIFIED BY ‘123456‘ #增加一个新用户名
#为[email protected],密码为‘123456‘,且授权使其对Syslog这个数据库完全控制权限;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES; #强制刷新数据库,载入设置;
Query OK, 0 rows affected (0.00 sec)

    4)配置rsyslog启用模块

[[email protected] ~]# vim /etc/rsyslog.conf #修改编辑rsyslog的主配置文件;  
            在#### Modules #####中插入启用模块ommysql:
            $ModLoad ommysql
            在####rules####段中定义记录日志信息于数据库中
            *.*      :ommysql:localhost,Syslog,test,123456
#说明:localhost表示本地主机,Syslog为数据库名,test为数据库用户,123456为该用户密码;

    5)重启rsyslog,载入新配置

[[email protected] ~]# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

至此,我的所有日志都会存储于MySQL数据库中。在下一篇博文中我们将继续衔接下去,搭建完成日志服务器(Rsyslog+MySQL+Loganalyer)。

时间: 2024-08-30 06:00:40

Linux日志:rsyslog及loganalyzer(一)的相关文章

Linux日志管理系统rsyslog

一.日志的概念 什么是日志?日志就是历史事件.历史事件包括时间.地点.人物.时间.这个是生活中所说的日志很好理解.在Linux中也有类似的服务,它主要作用就是记录Linux系统的历史事件,包括什么时间什么服务或者那个进程或者pid发生的一些事件,通过记录发生的事件,我们可以查看日志来了解在过去的一段时间Linux系统发生了什么事,从而可以帮助我们解决一些问题. 在Linux系统里日志是有级别的,也就是说事件的关键程度,比如说有些事件只是警告,需要我们注意,起个提醒我们的目的,我们可以后面去处理,

rsyslog+MySQL+loganalyzer日志集中分析管理

前言   rsyslog系统日志,在CentOS5上叫syslog,而在CentOS6上叫rsyslog,叫增强版的syslog,CentOS5上的配置文件在/etc/syslog.conf下,而CentOS6在/etc/rsyslog.conf下.       syslog默认是把我们的日志放到文件.用户.日志服务器.管道中.       rsyslog在syslog的基础上还多了一条途径,允许把日志放到mysql数据中.       rsyslog比syslog好在哪里:       Mul

rsyslog + mysql + loganalyzer 构建日志服务器

rsyslog支持的特性 支持多线程 支持tcp,ssl,tls.relp 可以把日志存储于关系型数据库中 支持过滤器,可以实现过滤日志中的任意部分. 支持自定义格式 适用于企业级的日志记录需求. 功能模块化 rsyslog用facility接收各个应用和程序的日志,并把日志分类.有以下几类 auth        与认证相关的 authpriv 与用户认证授权相关的,如用户登陆 cron     与周期任务相关的 daemon    与守护进程相关的 kern        与内核相关的 lp

django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>

纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没有技术可以修改这个开源的php日志程序罢了,当然,在做这个的时候,也是菜鸟一个,只是想自己尝试一下.高手可以直接跳过..... 首先,写在前面,因为上班空闲时间不多,只有忙里偷闲或自己回家的时间弄下,所以这个前后的时间就比较久了. 之前在上篇写到,是准备使用apache+django来搭建的,但是真的,我折腾

rsyslog+mysql+loganalyzer 环境搭建日志服务器

环境:CentOS6.6 rsyslog+mysql+loganalyzer 环境搭建日志服务器 Client端:    192.168.2.10 MySQL服务器:  192.168.2.11 # Client端安装必备的软件包 yum install rsyslog-mysql -y 生成了2个文件: /lib64/rsyslog/ommysql.so           #rsyslog支持数据库的模块文件 /usr/share/doc/rsyslog-mysql-5.8.10/creat

linux日志数据化

linux日志:  /var/log/messages, secure, facility:设施,从功能或程序上对日志进行分类,并由专门的工具负责记录其日志. facility对日志进行分类,并用专门的工具进行记录 auth 认证相关日志 authpriv 认证授权相关的日志 cron 帮周期性计划记录日志 daemon 帮首部进程记录日志 kern 帮内核记录日志 lpr 帮打印记录日志 mail 帮邮件子系统记录日志 mark 防火墙标记记录日志 news 新闻组记录日志 security

Linux日志管理系统

日志:按时间序列将发生的时间予以记录. 记录内容:事件发生的时间,事件内容. Linux系统的日志系统: 1.syslogd:用于CentOS 5上,记录系统进程相关的日志 2.klogd:内核事件相关的日志 rsyslog:用于CentOS 6上,支持的新特性: 1.支持多线程 2.支持基于TCP,SSL,TLS,RELP协议将日志信息存储在远程日志服务器上,以前版本的syslog仅支持文本格式. 3.支持将数据放在MySQL,PGSQL,Oracle等多种关系型数据库中 4.强大的过滤器,可

rsyslog+mysql+loganalyzer

在Linux系统上面,系统可以记录从开机到当前系统上面何时发生了什么事情,并将其分类,分级写到特定的日志文件当中,如系统自身产生的问题,用户登录信息,网络数据信息等等. 在CentOS上面有一个rsyslog专门负责记录系统日志上信息,虽然rsyslog的功能足够强大,但是通常的日志文件都只是以文字的形式表现出来,如果我们将其与loganalyzer结合起来就能实现日志信息的图形化展示,下面我们在一台主机上简单实现一下rsyslog+mysql+loganalyzer结合起来,以实现日志信息的图

Linux 之 rsyslog

Linux 之 rsyslog 系统日志转发 一.rsyslog 介绍 ryslog 是一个快速处理系统日志的程序,提供了高性能.安全功能和模块化设计.rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息. 特性:1.多线程 2.支持加密协议:ssl,tls,relp 3.mysql.oracle.postgreSQL 4.等等.. 二.实践部署() 2.1 环境图 2.2.rsyslog server上部署操作 安装rsyslo

MySQL存储日志并使用Loganalyzer作为前端展示

MySQL存储日志并使用Loganalyzer作为前端展示 为什么要使用日志 在生产环境中我们可能需要一个较为完整的日志系统来查看运行中主机服务的状态和所作出的操作,我们可以在较大型的网络架构中使用ELK来实现对日志的收集.检索.前端显示,但是中小型架构中使用rsyslog足以对所有服务器的日志进行收集和检索来达到实时分析数据流量的目的. 本文目标 使用rsyslog将两台主机的日志信息存储到MySQL数据库中,并且编译安装Loganalyzer对MySQL中的日志信息使用httpd+php在前