简易部署Rsyslog和LogAnalyzer

  1. 云栖社区>
  2. 博客列表>
  3. 正文

简易部署Rsyslog和LogAnalyzer

技术小胖子 2017-11-11 05:15:00 浏览301 评论0

摘要: 大纲: 一、简介 二、存储日志到远程数据库 三、LogAnalyzer日志分析工具 四、Rsyslog传输应用程序日志 五、Rsyslog记录用户操作 一、简介 1、概要 Rsyslog是一个快速的日志处理系统;提供高性能,安全性高和模块化的设计,它能接收各种各样的输入并输出到不同的目的地,处理速度超级快。

大纲:

一、简介

二、存储日志到远程数据库

三、LogAnalyzer日志分析工具

四、Rsyslog传输应用程序日志

五、Rsyslog记录用户操作


一、简介

1、概要

Rsyslog是一个快速的日志处理系统;提供高性能,安全性高和模块化的设计,它能接收各种各样的输入并输出到不同的目的地,处理速度超级快。

2、新功能

1
2
3
4
5
6
Multi-threading                             #多线程
TCP, SSL, TLS, RELP                          #支持的协议
MySQL, PostgreSQL, Oracle and more          #支持数据库的类型
Filter any part of syslog message          #强大的过滤器,可实现过滤系统信息中的任意部分
Fully configurable output format         #自定义输出格式
Suitable for enterprise-class relay chains  #适用于企业级别日志记录需求

3、优势

1
2
(1)日志统一,集中式管理;
(2)日志实时传送到一个更加安全的远端服务器上,真正记录用户行为,使日志的2次更改可能性大大降低,从而能够对日志进行真实回放,便于问题追踪。

4、核心组成

rsyslog有三部分组成:facility(设施),priority(级别),Target(路径)


facility: 设施,从功能或程序上对日志进行分类,并由专门的工具(facility)负责记录相应的日志信息;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
auth:认证相关
authpriv:认证权限相关
cron:计划任务相关
daemon:守护进程相关
kern:内核相关
lpr:打印相关
mail:邮件相关
mark:防火墙标记
news:新闻信息
security:安全相关
syslog:自身日志
user:用户相关
uucp:Unix to Unix copy,早期系统文件共享服务
local0 - local7:用户自定义facility

priority: 级别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
debug:调试
info:除debug外的所有信息
notice:注意
warn, warning:警告
err, error:错误信息
crit:蓝色警报
alert:橙色警报
emerg, panic:红色警报
 
指定级别的方式:
*: 所有级别
none: 没有级别
priority: 比此级别高的(包含)所有级别的日志信息都会记录
=priority: 仅记录指定级别

Target:路径

1
2
3
4
5
文件路径:将日志记录于指定的文件中;在文件路径之前使用"-",表示异步写入;
用户:将日志信息通知给文件
*: 所有用户
日志服务器:@SERVER
管道:| COMMAND

5、参考文档

1
2
3
Rsyslog doc:http://www.rsyslog.com/doc/v8-stable/
redhat doc:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/s1-basic_configuration_of_rsyslog.html
Other:http://xmodulo.com/configure-syslog-server-linux.html


二、存储日志到远程数据库

1、主机地址分配

1
2
3
Rsyslog :192.168.1.106
Client  :192.168.1.109
Rsyslog中心日志服务器,负责接收其它Client传输到Rsyslog的日志信息,并将其传输到本地的MySQL数据库中。

2、Rsyslog操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
rsyslog-mysql:rsyslog连接mysql的驱动包模块。
# yum -y install mysql mysql-server rsyslog-mysql
 
查看rsyslog-mysql安装了哪些文件
# rpm -ql rsyslog-mysql
/lib64/rsyslog/ommysql.so               //om代表输出模块im代表输入模块
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    #数据库初始化脚本,表结构
 
# service mysqld start
# mysql < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
# mysql -e 'USE Syslog;show tables;'
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           |
| SystemEventsProperties |
+------------------------+
# mysql -e 'USE Syslog;SELECT * FROM SystemEvents;' 
# mysql -e 'USE Syslog;SELECT * FROM SystemEventsProperties;'
以上两条命令的返回值都为空,表示表中无内容。
 
# mysql -e "grant all privileges on Syslog.* to 'rsysloguser'@'192.168.1.%' identified by 'rsyslogpass';flush privileges;"
 
修改Rsyslog.conf文件
# vim /etc/rsyslog.conf
$ModLoad imudp        #通过UDP的514端口搜集日志信息,即将自己当做日志服务器
$UDPServerRun 514
$ModLoad imtcp        #通过TCP的514端口搜集日志信息,即将自己当做日志服务器
$InputTCPServerRun 514
$ModLoad ommysql       #装载mysql模块
*.info;mail.none;authpriv.none;cron.none  :ommysql:192.168.1.106,Syslog,rsysloguser,rsyslogpass  
 
# service rsyslog restart

3、Client操作

1
2
3
4
# vim /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none                @192.168.1.106:514  #指定Rsyslog日志服务器的地址
 
# service rsyslog restart

4、测试

1
2
在Client上手动向/var/log/messages文件中写入一条信息,这里用logger命令
# logger -t dhcp "zhengyansheng's log"

你会发现Rsyslog上的/var/log/messages文件中也有同样的一条记录信息并且数据库中也有记录。

1
2
[root@Rsyslog ~]# tail -f /var/log/messages 
Oct 10 05:52:35 localhost dhcp: zhengyansheng's log

wKiom1YYcWWCcaQaAALN0CsPQqo470.jpg


三、LogAnalyzer日志分析工具

1、简介

LogAnalyzer是一款syslog日志和其他网络事件数据的Web前端,它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。

2、安装lamp环境

1
2
# yum -y install httpd php php-mysql php-gd
# service httpd start

3、安装loganalyzer

1
2
3
4
5
6
# wget http://download.adiscon.com/loganalyzer/loganalyzer-3.6.5.tar.gz
# tar zxf loganalyzer-3.6.5.tar.gz 
# mv loganalyzer-3.6.5/src /var/www/html/loganalyzer
# cd /var/www/html/loganalyzer/
# touch config.php
# chmod 666 config.php

4、浏览器访问loganalyzer

http://192.168.1.102/loganalyzer/install.php

wKioL1YYcf3QKI1CAANhsPkhs70638.jpg

wKiom1YYcePBdiT5AAOhjfclcNM744.jpg

wKioL1YYcf6AIjd2AAUGcAD3rvE168.jpg

wKiom1YYceSjFL8cAAQYL8YKJr8666.jpg

wKioL1YYcf6jvP9RAAOXkga5Uas340.jpg

wKiom1YYceTAJWJ0AAQSpK8Rfd0914.jpg

wKioL1YYcf7CX-iXAASNxzQeScg002.jpg

wKiom1YYceWx3fS5AANIRsM1Oxk863.jpg

wKioL1YYcf_iipQrAAsP5Ve5ysA533.jpg


loganalyzer的安装可以参考此篇文章:http://tecadmin.net/setup-loganalyzer-with-rsyslog-and-mysql/


四、Rsyslog传输应用程序日志(补充)

1、修改rsyslog.conf添加imfile模块

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# vim /etc/rsyslog.conf
$ModLoad imfile
$InputFileName /var/log/httpd/access_log
$InputFileTag packetfence:
$InputFileStateFile stat-packetfence
 
$InputFileSeverity info 
$InputFileFacility local5
$InputFilePollInterval 1
$InputFilePersistStateInterval 1
$InputRunFileMonitor
local5.*  @192.168.1.106:514
 
File [/path/to/file]
被监控的文件必须是一个绝对路径
 
Tag [tag:]
用于文件消息标记会记录到日志标签上
 
Facility [facility]
设施:比如local1,local2,localN;默认是local0
 
Severity [syslogSeverity]
级别:比如info,warning...默认是notice
 
PersistStateInterval [lines]
被用来控制状态文件的持久化频率,测试阶段,可以把它设置的小点儿,正式阶段,出于效率的考虑,可以把它调大点儿,但是相应的也会出现丢失数据的潜在风险,
具体设置多少合适需要结合自己的情况来斟酌。

2、Apache日志存储到数据库的展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*************************** 69. row ***************************
                ID: 69
        CustomerID: NULL
        ReceivedAt: 2015-10-10 19:52:47
DeviceReportedTime: 2015-10-10 19:52:47
          Facility: 21
          Priority: 6
          FromHost: localhost
           Message:  192.168.1.101 - - [10/Oct/2015:19:52:39 -0400] "GET /icons/poweredby.png HTTP/1.1" 304 - "http://192.168.1.109/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1653.0 Safari/537.36"
        NTSeverity: NULL
        Importance: NULL
       EventSource: NULL
         EventUser: NULL
     EventCategory: NULL
           EventID: NULL
   EventBinaryData: NULL
      MaxAvailable: NULL
         CurrUsage: NULL
          MinUsage: NULL
          MaxUsage: NULL
        InfoUnitID: 1
         SysLogTag: packetfence:    //此处就是那个tag标签
      EventLogType: NULL
   GenericFileName: NULL
          SystemID: NULL


五、Rsyslog记录用户操作

1
2
3
4
在Client上执行以下操作,会记录用户在命令行执行的所有命令记录
# vim /etc/bashrc
export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'
# source /etc/bashrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
*************************** 74. row ***************************
                ID: 74
        CustomerID: NULL
        ReceivedAt: 2015-10-10 21:06:59
DeviceReportedTime: 2015-10-10 21:06:59
          Facility: 1
          Priority: 5
          FromHost: localhost
           Message:  [euid=root]:root pts/1 2015-10-10 19:51 (192.168.1.101):[/root]history
        NTSeverity: NULL
        Importance: NULL
       EventSource: NULL
         EventUser: NULL
     EventCategory: NULL
           EventID: NULL
   EventBinaryData: NULL
      MaxAvailable: NULL
         CurrUsage: NULL
          MinUsage: NULL
          MaxUsage: NULL
        InfoUnitID: 1
         SysLogTag: root:
      EventLogType: NULL
   GenericFileName: NULL
          SystemID: NULL

>>>>>知识点补充<<<<<

1
2
3
4
5
6
7
8
9
10
11
12
13
#Rsyslog支持tcp和udp的传输方式
*.*       @@192.168.1.106:514      #通过tcp传
*.*       @192.168.1.106:514       #通过udp传
 
#上面的实验是Client通过tcp的方式传输到Rsyslog服务器的日志文件中,然后又转储到数据库当中,如果感觉这里没有必要的话,其实Client可以直接存储到远程的数据库当中。操作如下
修改Client操作
# vim /etc/rsyslog.conf
$ModLoad ommysql 
*.info;mail.none;authpriv.none;cron.none  :ommysql:192.168.1.102,Syslog,rsysloguser,rsyslogpass
以上操作即可
 
这里我在解释下*.info;mail.none;authpriv.none;cron.none表示什么意思?
除mail、authpriv和cron之外的日志并且级别为info或者比info更高的都会被发送到远程192.168.1.102的数据库当中,后面是数据库的用户名和密码。

Rsyslog的imfile模块可以参考文档:http://www.rsyslog.com/doc/v8-stable/configuration/modules/imfile.html


Rsyslog配置文件参考:http://qinyinbolan.blog.51cto.com/4359507/1347383






     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1701420,如需转载请自行联系原作者




【云栖快讯】阿里云栖开发者沙龙(Java技术专场)火热来袭!快来报名参与吧!  详情请点击

网友评论

技术小胖子
文章22141篇 | 关注120
关注
针对日志类数据的一站式服务,用户无需开发就能快捷完成数据采集、消费、投递以及查询分析等功能,... 查看详情
提供基于开源Elasticsearch及商业版X-pack插件,致力于数据分析、数据搜索等场... 查看详情
MySQL 是全球最受欢迎的开源数据库,阿里云MySQL版 通过深度的内核优化和独享实例提供... 查看详情
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效... 查看详情
阿里云总监课正式启航

阿里云总监课正式启航