阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Rsyslog日志收集服务并结合Loganalyzer工具展示

238次阅读
没有评论

共计 11394 个字符,预计需要花费 29 分钟才能阅读完成。

一、日志概述

1、rsyslog 简介
  syslog 是日志收集存储系统,负责记录遵守此服务的内核、程序的日志信息。一般记录为:“日期时间,主机,进程:事件”。syslog 不仅可以记录本地的系统日志,也可以通过 tcp, udp 协议记录远程主机的程序日志信息。

syslog:系统日志,是一种服务,有两个进程
  syslogd:记录应用程序相关的日志
  klogd:记录内核相关的日志

rsyslog:是 syslog 的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在 MySQL,PGSQL, Oracle 等 RDBMS 中。同时拥有强大的过滤器功能,可以对日志中任意内容进行过滤。
  rsyslog 是 CentOS 6 以后的系统使用的日志系统,与之前的 syslog 日志系统相比,具有以下优点:
    支持多线程
    支持 TCP、SSL、TLS、RELP 等协议
    强大的过滤器,可实现过滤日志信息中的任意部分
    支持自定义输出格式
    适用于企业级别日志记录需求
    模块化

日志的记录格式:
  日期时间 主机 进程[pid]:事件内容

2、rsyslog 的一些概念
  系统上的应用程序指定某一信道记录日志,信道默认已经设定了日志的记录级别,一旦应用程序产生了日志信息,通过该信道就会把日志文件记录在指定的本地文件、数据库或远程 rsyslog 服务器中。
当然应用程序输出的日志一般也会按照级别划分,比如 sshd_conf 中就定义了信道为 authpriv,级别为 info 的日志输出:
# Logging — SyslogFacility AUTHPRIV — #LogLevel INFO

3、rsyslog 支持的 facility 与 priority
facility:设施、信道
  从功能或程序上对日志进行分类,并由专门的工具负责记录其日志
常用的 facility:lpr:打印相关的日志      auth:认证相关的日志      user:用户相关的日志      cron:计划任务相关的日志      kern:内核相关的日志      mail:邮件相关的日志      mark:标记相关的日志      news:新闻相关的日志      uucp:文件 copy 相关的日志    daemon:系统服务相关的日志  authpri:授权相关的日志  security:安全相关的日志    syslog:由 syslogd 服务产生的日志信息,虽然服务名称改为 rsyslogd,但是很多配置都还是沿用了 syslogd 的,这里并没有修改服务名  local0-local7:自定义相关的日志信息(自定义时可以使用通配符)priority:级别
debug          #有调式信息的,日志信息最多
info            #一般信息的日志,最常用
notice          #最具有重要性的普通条件的信息
warning, warn  #警告级别
err, error      #错误级别,阻止某个功能或者模块不能正常工作的信息
crit            #严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert          #需要立刻修改的信息
emerg, panic    #内核崩溃等严重信息
### 从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为 err,则日志不会记录比 err 级别低的日志二、rsyslog 配置

1、程序环境
程序包:rsyslog
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
主程序:/usr/sbin/rsyslogd
模块路径:/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service

2、配置文件 /etc/rsyslog.conf 格式详解
由三部分组成,必须严格按照配置段位置添加配置
[root@centos6.8~]# grep “####” /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####

MODULES:定义装载的模块,如接下来的使用 mysql 模块记录日志则需要在这里配置
GLOBAL DIRECTIVES:定义了全局的环境
RULES:定义了记录日志的设施以及等级等信息
  定义规则的格式为:
    facility.priority  Target

facility 可以使用的通配符:
  *:所有
  ,:列表,如 f1,f2,f3…
  !:取反       
       
priority 可以使用的通配符:
  *:所有日志级别
 none:没有任何级别,也就是不记录日志信息
           
Target:目标,指日志保存的位置
    可以使用的有:
        文件, 如 /var/log/messages
      用户:* 表示当前登录系统的所有用户
      日志服务器:@host  ##host: 必须要监听在 tcp 或 udp 协议 514 端口上提供服务;
      管道:| COMMAND
例如:

mail.info /var/log/maillog
      表示将 mail 产生的 info 日志级别以上的信息都记录在 /var/log/maillog 文件中
mail.=info  表示仅记录 info 级别日志
mail.!info  表示记录 info 以下级别的日志
*.info    表示所有设施的 info 级别
mail,news.info  表示 mail 和 news 都使用 info 级别

有些日志记录二进制格式:/var/log/wtmp,/var/log/btmp
/var/log/wtmp: 当前系统上成功登录的日志;last
/var/log/btmp:当前系统上失败的登录尝试;lastb
lastlog 命令:显示当前系统每一个用户最近一次的登录时间;

3、配置文件 /etc/rsyslog.conf 详解
#### MODULES 日志的模块 ####
$ModLoad imuxsock  #imuxsock 是模块名,支持本地系统日志的模块
$ModLoad imklog    #imklog 是模块名,支持内核日志的模块
#$ModLoad immark    #immark 是模块名,支持日志标记
#$ModLoad imudp    #imupd 是模块名,支持 udp 协议
#$UDPServerRun 514  #允许 514 端口接收使用 UDP 和 TCP 协议转发过来的日志
#$ModLoad imtcp    #imtcp 是模块名,支持 tcp 协议
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES #### 定义全局日志格式的指令
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板
$IncludeConfig /etc/rsyslog.d/*.conf  #载入 rsyslog.d 文件中所有以 conf 结尾的文件
#### RULES ####
*.info;mail.none;authpriv.none;cron.none    /var/log/messages
##### 记录所有日志类型的 info 级别以及大于 info 级别的信息到 /var/log/messages,但是 mail 邮件信息,authpriv 验证方面的信息和 cron 时间 #任务相关的信息除外
authpriv.*            /var/log/secure
#####authpriv 验证相关的所有信息存放在 /var/log/secure
mail.*                -/var/log/maillog
##### 邮件的所有信息存放在 /var/log/maillog; 这里有一个 - 符号, 表示是使用异步的方式记录, 因为日志一般会比较大
cron.*                /var/log/cron
#### 计划任务有关的信息存放在 /var/log/cron
*.emerg                * (* 表示所有用户)
### 记录所有的大于等于 emerg 级别信息, 以 wall 方式发送给每个登录到系统的人
uucp,news.crit        /var/log/spooler
#### 记录 uucp,news.crit 等存放在 /var/log/spooler
local7.*              /var/log/boot.log
#### 本地服务器的启动的所有日志存放在 /var/log/boot.log 中

三、配置使用基于 mysql 存储日志信息, 并结合前端 loganalyzer 工具分析日志
1、配置 rsyslog 日志存储于 mysql 中
(1) 准备好 MySQL 服务器,创建用户,授权对 Syslog 数据库的全部访问权限;
mysql> grant all on Syslog.* to ‘syslog’@’192.168.137.%’ identified by ‘123456’;

(2) rsyslog 服务起上安装 rsyslog-mysql 程序包;
yum install -y rsyslog-mysql

(3) 创建 rsyslog-mysql 依赖的数据库;
rpm -ql rsyslog-mysql

/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    ## 建库脚本位置

# yum install mysql -y  ##rsyslog 服务器安装 mysql 客户端
# mysql -usyslog  -p123456  -h192.168.137.130  –default-character-set=utf8 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

mysql> use Syslog
Database changed
mysql> show tables;
+————————+
| Tables_in_Syslog      |
+————————+
| SystemEvents          |
| SystemEventsProperties |

(4) 配置 rsyslog 使用 ommysql 模块
vim /etc/rsyslog.conf
#### MODULES ####
$ModLoad ommysql
#### RULES ####
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.137.130,Syslog,syslog,123456
重启 rsyslog 服务:    service rsyslog restart

(5)测试日志记录
rsyslog 服务器:yum remove lrzsz
mysql> select * from SystemEvents\G 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143690p2.htm

2、安装 loganalyzer(rsyslog 专用前端展示工具)
(1)准备环境,loganalyzer 为 php 程序开发的 web 页面

yum install -y httpd php php-mysql            (mysql mysql-server rsyslog-mysql 前期已安装)
测试 httpd 能否正常工作,能否通过 php 工作
[root@master ~]# cd /var/www/html/
[root@master html]# vim index.php
Hello word!
My Blog is “http://www.linuxidc.com/”
<?php
phpinfo();
?>

测试 php 和 mysql 结合
[root@localhost html]# cat index.php
<?php
$link=mysql_connect(‘192.168.137.150′,’syslog’,’123456′);
if($link){
echo “success..frank!”;
}else{
echo “failed..frank!”.mysql_error();
}
mysql_close($link);
phpinfo();
?>

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

(2)、下载 loganalyzer 并进行安装配置;

可以到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2017 年资料 / 5 月 /12 日 /Rsyslog 日志收集服务并结合 Loganalyzer 工具展示 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

 ~]# tar xf loganalyzer-3.6.4.tar.gz
 ~]# cd loganalyzer-3.6.4
 loganalyzer-3.6.4]# cp -r src /var/www/html/loganalyzer
 loganalyzer-3.6.4]# cp contrib/*.sh /var/www/html/loganalyzer/
 loganalyzer-3.6.4]# cd /var/www/html/loganalyzer/
loganalyzer]# chmod u+x *.sh
loganalyzer]# ./configure.sh
loganalyzer]# ./secure.sh
loganalyzer]# chown -R apache:apache ./*

修改 rsyslog 的配置文件 rsyslog.conf,只需开启两个模块以及允许通过 tcp,udp 发出接受信息,并且设置信息都保存至 mysql 数据库的 Syslog 中,
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

日志数据存储在数据库中,其它全部注释掉
*.*    :ommysql:192.168.137.150,Syslog,syslog,123456

安装 loganalyzer:
http://192.168.137.150/loganalyzer/install.php

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

对 loganalyzer 日志系统进行测试,在本机上通过 ssh 连接 192.168.137.150
[root@CentOS-7 loganalyzer]# ssh 192.168.137.150
root@192.168.137.150’s password:
Last login: Thu May 11 19:37:06 2017 from centos-7

Rsyslog 日志收集服务并结合 Loganalyzer 工具展示

重新配置 loganalyzer:
loganalyzer]# rm -f config.php
loganalyzer]# ./configure.sh
loganalyzer]# ./secure.sh
loganalyzer]# chmod 666 config.php
http://192.168.137.150/loganalyzer/install.php

CentOS 6.7 搭建 Rsyslog 日志服务器 http://www.linuxidc.com/Linux/2016-06/132418.htm

Rsyslog+MySQL+Loganalyzer 搭建日志服务器  http://www.linuxidc.com/Linux/2016-09/134849.htm

Rsyslog+MySQL+Loganalyzer 搭建日志服务器  http://www.linuxidc.com/Linux/2016-09/134849.htm

CentOS 6.5+Rsyslog+LogAnalyzer 搭建中央日志服务器  http://www.linuxidc.com/Linux/2014-06/102867.htm

CentOS 6.5 rsyslog+MySQL+loganalyzer 日志集中分析管理 http://www.linuxidc.com/Linux/2016-11/137656.htm

Rsyslog 日志服务器搭建以及 Loganalyzer 安装使用  http://www.linuxidc.com/Linux/2017-02/140240.htm

Linux 中使用 rsyslog 配置 syslog 服务器  http://www.linuxidc.com/Linux/2017-02/140484.htm

Rsyslog 的详细介绍:请点这里
Rsyslog 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143690.htm

一、日志概述

1、rsyslog 简介
  syslog 是日志收集存储系统,负责记录遵守此服务的内核、程序的日志信息。一般记录为:“日期时间,主机,进程:事件”。syslog 不仅可以记录本地的系统日志,也可以通过 tcp, udp 协议记录远程主机的程序日志信息。

syslog:系统日志,是一种服务,有两个进程
  syslogd:记录应用程序相关的日志
  klogd:记录内核相关的日志

rsyslog:是 syslog 的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在 MySQL,PGSQL, Oracle 等 RDBMS 中。同时拥有强大的过滤器功能,可以对日志中任意内容进行过滤。
  rsyslog 是 CentOS 6 以后的系统使用的日志系统,与之前的 syslog 日志系统相比,具有以下优点:
    支持多线程
    支持 TCP、SSL、TLS、RELP 等协议
    强大的过滤器,可实现过滤日志信息中的任意部分
    支持自定义输出格式
    适用于企业级别日志记录需求
    模块化

日志的记录格式:
  日期时间 主机 进程[pid]:事件内容

2、rsyslog 的一些概念
  系统上的应用程序指定某一信道记录日志,信道默认已经设定了日志的记录级别,一旦应用程序产生了日志信息,通过该信道就会把日志文件记录在指定的本地文件、数据库或远程 rsyslog 服务器中。
当然应用程序输出的日志一般也会按照级别划分,比如 sshd_conf 中就定义了信道为 authpriv,级别为 info 的日志输出:
# Logging — SyslogFacility AUTHPRIV — #LogLevel INFO

3、rsyslog 支持的 facility 与 priority
facility:设施、信道
  从功能或程序上对日志进行分类,并由专门的工具负责记录其日志
常用的 facility:lpr:打印相关的日志      auth:认证相关的日志      user:用户相关的日志      cron:计划任务相关的日志      kern:内核相关的日志      mail:邮件相关的日志      mark:标记相关的日志      news:新闻相关的日志      uucp:文件 copy 相关的日志    daemon:系统服务相关的日志  authpri:授权相关的日志  security:安全相关的日志    syslog:由 syslogd 服务产生的日志信息,虽然服务名称改为 rsyslogd,但是很多配置都还是沿用了 syslogd 的,这里并没有修改服务名  local0-local7:自定义相关的日志信息(自定义时可以使用通配符)priority:级别
debug          #有调式信息的,日志信息最多
info            #一般信息的日志,最常用
notice          #最具有重要性的普通条件的信息
warning, warn  #警告级别
err, error      #错误级别,阻止某个功能或者模块不能正常工作的信息
crit            #严重级别,阻止整个系统或者整个软件不能正常工作的信息
alert          #需要立刻修改的信息
emerg, panic    #内核崩溃等严重信息
### 从上到下,级别从低到高,记录的信息越来越少,如果设置的日志内性为 err,则日志不会记录比 err 级别低的日志二、rsyslog 配置

1、程序环境
程序包:rsyslog
配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
主程序:/usr/sbin/rsyslogd
模块路径:/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service

2、配置文件 /etc/rsyslog.conf 格式详解
由三部分组成,必须严格按照配置段位置添加配置
[root@centos6.8~]# grep “####” /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####

MODULES:定义装载的模块,如接下来的使用 mysql 模块记录日志则需要在这里配置
GLOBAL DIRECTIVES:定义了全局的环境
RULES:定义了记录日志的设施以及等级等信息
  定义规则的格式为:
    facility.priority  Target

facility 可以使用的通配符:
  *:所有
  ,:列表,如 f1,f2,f3…
  !:取反       
       
priority 可以使用的通配符:
  *:所有日志级别
 none:没有任何级别,也就是不记录日志信息
           
Target:目标,指日志保存的位置
    可以使用的有:
        文件, 如 /var/log/messages
      用户:* 表示当前登录系统的所有用户
      日志服务器:@host  ##host: 必须要监听在 tcp 或 udp 协议 514 端口上提供服务;
      管道:| COMMAND
例如:

mail.info /var/log/maillog
      表示将 mail 产生的 info 日志级别以上的信息都记录在 /var/log/maillog 文件中
mail.=info  表示仅记录 info 级别日志
mail.!info  表示记录 info 以下级别的日志
*.info    表示所有设施的 info 级别
mail,news.info  表示 mail 和 news 都使用 info 级别

有些日志记录二进制格式:/var/log/wtmp,/var/log/btmp
/var/log/wtmp: 当前系统上成功登录的日志;last
/var/log/btmp:当前系统上失败的登录尝试;lastb
lastlog 命令:显示当前系统每一个用户最近一次的登录时间;

3、配置文件 /etc/rsyslog.conf 详解
#### MODULES 日志的模块 ####
$ModLoad imuxsock  #imuxsock 是模块名,支持本地系统日志的模块
$ModLoad imklog    #imklog 是模块名,支持内核日志的模块
#$ModLoad immark    #immark 是模块名,支持日志标记
#$ModLoad imudp    #imupd 是模块名,支持 udp 协议
#$UDPServerRun 514  #允许 514 端口接收使用 UDP 和 TCP 协议转发过来的日志
#$ModLoad imtcp    #imtcp 是模块名,支持 tcp 协议
#$InputTCPServerRun 514
#### GLOBAL DIRECTIVES #### 定义全局日志格式的指令
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板
$IncludeConfig /etc/rsyslog.d/*.conf  #载入 rsyslog.d 文件中所有以 conf 结尾的文件
#### RULES ####
*.info;mail.none;authpriv.none;cron.none    /var/log/messages
##### 记录所有日志类型的 info 级别以及大于 info 级别的信息到 /var/log/messages,但是 mail 邮件信息,authpriv 验证方面的信息和 cron 时间 #任务相关的信息除外
authpriv.*            /var/log/secure
#####authpriv 验证相关的所有信息存放在 /var/log/secure
mail.*                -/var/log/maillog
##### 邮件的所有信息存放在 /var/log/maillog; 这里有一个 - 符号, 表示是使用异步的方式记录, 因为日志一般会比较大
cron.*                /var/log/cron
#### 计划任务有关的信息存放在 /var/log/cron
*.emerg                * (* 表示所有用户)
### 记录所有的大于等于 emerg 级别信息, 以 wall 方式发送给每个登录到系统的人
uucp,news.crit        /var/log/spooler
#### 记录 uucp,news.crit 等存放在 /var/log/spooler
local7.*              /var/log/boot.log
#### 本地服务器的启动的所有日志存放在 /var/log/boot.log 中

三、配置使用基于 mysql 存储日志信息, 并结合前端 loganalyzer 工具分析日志
1、配置 rsyslog 日志存储于 mysql 中
(1) 准备好 MySQL 服务器,创建用户,授权对 Syslog 数据库的全部访问权限;
mysql> grant all on Syslog.* to ‘syslog’@’192.168.137.%’ identified by ‘123456’;

(2) rsyslog 服务起上安装 rsyslog-mysql 程序包;
yum install -y rsyslog-mysql

(3) 创建 rsyslog-mysql 依赖的数据库;
rpm -ql rsyslog-mysql

/lib64/rsyslog/ommysql.so
/usr/share/doc/rsyslog-mysql-5.8.10
/usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql    ## 建库脚本位置

# yum install mysql -y  ##rsyslog 服务器安装 mysql 客户端
# mysql -usyslog  -p123456  -h192.168.137.130  –default-character-set=utf8 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

mysql> use Syslog
Database changed
mysql> show tables;
+————————+
| Tables_in_Syslog      |
+————————+
| SystemEvents          |
| SystemEventsProperties |

(4) 配置 rsyslog 使用 ommysql 模块
vim /etc/rsyslog.conf
#### MODULES ####
$ModLoad ommysql
#### RULES ####
*.info;mail.none;authpriv.none;cron.none :ommysql:192.168.137.130,Syslog,syslog,123456
重启 rsyslog 服务:    service rsyslog restart

(5)测试日志记录
rsyslog 服务器:yum remove lrzsz
mysql> select * from SystemEvents\G 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2017-05/143690p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计11394字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中