☞rsyslog

rsyslog



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

rsyslog:是syslog的升级版,使用多线程并发记录本地或远程日志,支持存储日志信息在MySQL, PGSQL, Oracle等RDBMS中。同时拥有强大的过滤器功能,可以对日志中任意内容进行过滤。

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

rsyslog支持的facility与priority

facility:设施、信道:

auth, pam产生的日志
authpriv, ssh,ftp登录信息的验证日志
cron, 计划任务
daemon, 守护进程
kern,
lpr, 打印服务
mail,
mark, rsyslog服务内部信息,时间标识
news, 新闻
security,SELinux
user, 用户程序
uucp, unix主机之间通信
syslog, 系统级别的日志
local0-local7(start system),自定义的信道

priority:级别

debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

rsyslog程序

  1. 配置文件:/etc/logrotate.d/syslog

  2. 主程序:/usr/sbin/rsyslogd

  3. 模块路径:/lib64/rsyslog/

  4. Unit File:/usr/lib/systemd/system/rsyslog.service

配置文件

grep "^####" /etc/rsyslog.conf
#### MODULES ####
#### GLOBAL DIRECTIVES ####
#### RULES ####

#语法格式:
facility.priority   target

facility:
   *:所有的facility
   f1,f2,....p1:指定的facility
   f1.p1,f2.p2,....:指定的facility
priority:
   *:所有级别
   none:不记录
   PRIORITY:高于此级别的才记录
   =PRIORITY:
target:
   文件:记录在指定文件中,-/var/log/maillog:异步写入磁盘
   用户:通知指定的用户,一般为已经登录终端的用户
   日志服务器:@rsyslog_server<
   管道:|给某个程序

SAMPLE
   *.info;mail.none;authpriv.none;cron.none     /var/log/messages
   local3.*    ^/tmp/handel.sh     #发送给脚本并执行

配置日志记录级别和路径

通过指定facility和priority的日志记录在本地的某一文件中,

vi /etc/rsyslog.conf
#### RULES ####
   *.info;mail.none;authpriv.none;cron.none;local2.none     /var/log/messages      #不记录在messages中,指定为 /testdir/testlog 文件
   local2.notice            /testdir/testlog

systemctl restart rsyslog.service

logger - a shell command interface to the syslog(3) system log module
-p, --priority priority
logger -p local2.notice [-t HOSTIDM -f /dev/idmc]    ""

配置日志记录在远程rsyslog server

rsyslog server端

远程服务端需装载相应的udp、tcp接收模块,侦听514端口。如果不使用默认端口则需要注意SELinux的策略是否允许的问题。

vi /etc/rsyslog.conf
#### MODULES ####
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

#### RULES ####
如果要把不同服务器发送过来的日志保存到不同的文件, 可以这样操作:
:fromhost-ip, isequal, “192.168.0.160″ /var/log/host160.log
:FROMHOST-IP, isequal, “192.168.0.161″ /var/log/host161.log
:FROMHOST-IP, startswith, “192.168.1.” /var/log/network1.log
:FROMHOST-IP, startswith, “192.168.2.” /var/log/network2.log

rsyslog client端

客户端 rsyslog 需在 RULES配置段中指定 facility和priority 以及 rsysylog server 的地址 

使用UDP协议传输 

@使用TCP协议传输 
标准端口无需指定,其他端口需在ip:port给出

vi /etc/rsyslog.conf
#### RULES ####
*.*     @10.1.x.x
*.*     ~              #所有日志不在本机中记录
#再如:
:rawmsg,contains,"dg_log"   @@10.1.x.x  #包含"dg_log"的日志才记录在服务器
:rawmsg,contains,"dg_log"   ~          #包含"dg_log"的日志不在本地记录

测试远程服务器是否记录日志

#client:
logger "hello remote host."
logger "dg_loghello remote host."

#server:
tail /var/log/messages

rsyslog记录在MySQL中

日志文件信息记录在数据库中能够比记在文件中文件有更好的检索速度,利用MySQL的数据索引有助于日志信息的查询与分析。

  • 安装 MySQL-server 或 Mariadb-server,创建Syslog数据库并授权给rsyslog用户,建议在完成操作后使用rsyslog用户登录数据库,以免造成后面的实验失败。

yum -y install mariadb-server
skip_name_resolve = ON
innodb_file_per_table = ON

GRANT ALL ON Syslog.* TO 'rsyslog'@'127.0.0.1' IDENTIFIED BY 'rsyslogpass'

GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDNETIFIED BY 'rsyslogpass'

FLUSH PRIVILEGES

  • 安装 rsyslog-mysql 模块 
    rsyslog-mysql package contains a dynamic shared object that will add MySQL database support to rsyslog.

yum install rsyslog-mysql
rpm -ql rsyslog-mysql
   只有两个文件,一个为动态模块,一个为数据库操作模板

cat /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
CREATE DATABASE Syslog;

USE Syslog;
  • 导入 rsyslog 所需的数据定义和数据操作 
    rsyslog需要对应的数据库来存储,安装了rsyslog-mysql模块就可以使用已经定义好的SQL语句创建数据库,因此使用mysql命令导入这个sql脚本。

mysql -hlocalhost -ursyslog -prsyslogpass < /usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql
  • 修改rsyslog.conf配置文件,添加target为ommysql模块 
    在配置文件的RULE字段中定义日志转储的facility and priority到数据库中,同时需要指明数据库服务器的地址、数据库名、用户、密码,配置完成重启rsyslog服务即可。

vi /etc/rsyslog.conf
#### MODULES ####
   $ModLoad ommysql
#### RULES ####
   *.*         :ommysql:127.0.0.1,Syslog,rsyslog,rsyslogpass
                    #module,dbhost,dbname,dbuser,dbpassword

systemctl restart rsyslog.service
  • 在数据库中查询rsyslog的记录的日志信息

#测试
mysql -h127.0.0.1 -ursyslog -prsyslogpass -e "USE Syslog;SELECT * FROM SystemEvents\G"

其他日志文件

  1. last, lastb – show listing of last logged in users 
    last / lastb -n NUM #success, fail

    • /var/log/btmp:登录当前系统的所有的失败的尝试

    • /var/log/wtmp:所有成功登录至当前系统的相关信息;

  2. dmesg – print or control the kernel ring buffer 
    系统引导过程中的日志信息

    • /var/log/dmesg

使用LogAnalyser管理rsyslog在数据库存储的日志

LogAnalyzer用于管理和检索rsyslog记录在数据库中的日志,运行在AMP环境下,提供简易界面的日志浏览、检索、统计、分析的功能。此外,LogAnalyzer的绘图功能依赖于php-gd扩展包。

配置LogAnalyser程序

  • 准备运行环境,且已经完成了上文中rsyslog记录在MySQL中的相关配置

yum install httpd mysql-server php php-mysql php-gd
  • 解压缩文件,复制到站点文档目录,注意保留原有属性

tar xf loganalyzer-3.6.5.tar.gz 
cd loganalyzer-3.6.5
cp -a src /var/www/html/loganalyzer-3.6.5       #保留属性
cd /var/www/html
ln -s loganalyzer-3.6.5 log
  • 创建权限为666的config.php文件,使得浏览器可以配置loganalyzer

cd log
touch config.php
chmod 666 config.php            #contrib/configure.sh
  • 浏览器配置loganalyzer,需要php的支持 
    MySQL Native, Syslog Field 
    Table Type:”Monitorware”

  • 配置完成后进行安全设定config.php文件的权限为644

chmod 644 config.php            #contrib/secure.sh

LogAnalyser使用简介

  1. 鼠标停留在Message可以看到固定格式的日志信息 
    01.jpg

  2. Events界面可以看到统计信息,点击可进入该类别的日志信息 
    02.jpg

  3. Reports导出日志信息到文件 
    03.jpg

原创文章,作者:helloc,如若转载,请注明出处:http://www.178linux.com/56313

(0)
hellochelloc
上一篇 2016-10-16
下一篇 2016-10-16

相关推荐

  • 安装Redmine

    Redmine是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放源码软件解决方案,它提供集成的项目管理功能,问题跟踪,并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了,但想坚持一个自由和开放源码的解决…

    Linux干货 2016-12-01
  • Mysql备份II

    Mysql备份II V.II.I单台或共用机器,数据量和访问量小50G< 1 Mysqldump(全导出,导库,导表) 锁表 如果这时有些入会锁住或者超时 2 至少停止写入 防止innodb配置还没刷到磁盘里 先flash tables /usr/local/mysql/bin/mysqladmin -S /tmp/mysql.so…

    Linux干货 2016-06-09
  • awk基本用法

    一、awk介绍     awk、sed&grep都可以匹配文本,但sed和awk可以对文本进行编辑,grep则不具有此功能;sed是非交互式的流编辑器,而awk则是一门模式匹配的编程语言。awk主要用于处理匹配的文本,同时awk还支持编程语言的一些特性,如变量、函数、循环语句等。  &nbs…

    Linux干货 2016-09-21
  • LVM逻辑卷管理相关命令的用法

    前提:创建分区,文件或添加硬盘作为LVM的物理卷 pv(物理卷) 命令用法 1、pvcreate创建pv pvcreate -s    指定PE大小,默认为4M 2、pvremove删除pv 3、pvs,pvdisplay显示pv pvs 显示pv摘要 pvdisplay 详细显示pv 4、pvmove:把卷组中一个物…

    Linux干货 2016-08-30
  • 自制Linux系统实验

    1、添加一块新硬盘、并使系统识别 [root@centos6 ~]# echo "- – -" > /sys/class/scsi_host/host0/scan  [root@centos6 ~]# echo "…

    Linux干货 2016-09-19
  • CentOS 7和CentOS 6 使用gpg工具实现公钥加密和解密

    运行环境: [root@Shining ~]# uname -a Linux Shining.ACG 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x…

    Linux干货 2016-12-01