Syslog协议

系统日志(Syslog)协议是在一个IP网络中转发系统日志信息的标准,它是在美国加州大学伯克利软件分布研究中心(BSD)的TCP/IP系统实施中开发的,目前已成为工业标准协议,可用它记录设备的日志。Syslog记录着系统中的任何事件,管理者可以通过查看系统记录随时掌握系统状况。系统日志通过Syslog进程记录系统的有关事件,也可以记录应用程序运作事件。通过适当配置,还可以实现运行Syslog协议的机器之间的通信。通过分析这些网络行为日志,可追踪和掌握与设备和网络有关的情况。

在Unix类操作系统上,syslog广泛应用于系统日志。syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。

完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。在Unix类操作系统上,能够按Facility和Severity的组合来决定什么样的日志消息是否需要记录,记录到什么地方,是否需要发送到一个接收syslog的服务器等。由于syslog简单而灵活的特性,syslog不再仅限于Unix类主机的日志记录,任何需要记录和发送日志的场景,都可能会使用syslog。

syslog协议格式定义如下

facility.priority action

facility(设施):标识系统需要记录日志的子系统,大概有以下子系统。

auth #PAM认证相关日志;

authpriv #SSH、FTP登录相关日志;

cron #任务计划相关日志;

daemon #守护进程相关日志;

kern #内核相关日志;

lpr #打印相关日志;

mail #邮件相关日志;

mark #标记相关日志;

news #新闻相关日志;

security #安全相关日志与auth类似;

syslog #Rsyslog自己的日志;

user #用户相关日志;

uucp #UNIX to UNIX cp相关日志;

local0 to local7 #用户自定义使用设置日志;

* #表示所有的facility;

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

debug #程序或系统调试信息;

info #一般信息;

notice #不影响正常功能需要注意的信息;

warning #可能影响系统功能提醒用户的重要事件;

error #错误信息;

crit #比较严重的信息;

alert #必须马上处理的警告信息;

emerg/panic #会导致系统不可用的严重信息;

* #表示所有日志级别;

none #跟*相反表示什么都没有;

action(动作):设置日志记录的位置,有以下几种。

1)记录到普通文件或设备文件

*.* /var/log/file.log #绝对路径

*.* /dev/pts/0 #设备文件

2)”|”,表示将日志送给其他命令处理

3)”@HOST”,表示将日志发送到特定的主机

*.emerg @192.168.10.1

4)”用户”,表示将日志发送到特定的用户

5)”*”,表示将日志发送所有登录到系统上的用户

连接符号

. #表示大于等于xxx级别的信息;

.= #表示等于xxx级别的信息;

.! #表示在xxx之外的等级的信息;

格式定义案例(定义在/etc/rsyslog.conf配置文件)

# 表示将mail相关的,info级别及以上级别都记录到mail.log文件中

mail.info /var/log/mail.log

# 表示将auth相关的基本为info信息记录到远程主机

auth.=info @192.168.10.1

# 表示记录与user和error相反的

user.!error

# 表示记录所有日志信息的info级别及以上级别

*.info

# 所有日志及所有级别信息都记录下来

*.*

PS:多个日志来源可以使用,号隔开,如cron.info;mail.info。

rsyslog日志系统

对于日志管理,其配置文件为”/etc/rsyslog.conf“,信息如下介绍:

# 表示将所有facility的info级别,但不包括mail,authpriv,cron相关的信息,记录到 /var/log/messages文件

  1. #### MODULES #### #定义日志的模块。
  2. $ModLoad imuxsock #imuxsock为模块名,支持本地系统日志的模块。
  3. $ModLoad imjournal #imjournal为模块名,支持对系统日志的访问。
  4. #$ModLoad imklog #imklog为模块名,支持内核日志的模块。
  5. #$ModLoad immark #immark为模块名,支持日志标记。
  6. # Provides UDP syslog reception #提供udp syslog的接收。
  7. #$ModLoad imudp #imudp为模块名,支持udp协议。
  8. #$UDPServerRun 514 #允许514端口接收使用udp和tcp转发来的日志。
  9. # Provides TCP syslog reception #提供tcp syslog的接收。
  10. #$ModLoad imtcp #imtcp为模块名,支持tcp协议。
  11. #$InputTCPServerRun 514
  12.  
  13. #### GLOBAL DIRECTIVES #### #定义全局日志格式的指令。
  14. # Where to place auxiliary files
  15. $WorkDirectory /var/lib/rsyslog #工作目录。
  16. # Use default timestamp format
  17. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat #定义日志格式默认模板。
  18. $IncludeConfig /etc/rsyslog.d/*.conf #所有配置文件路径。
  19. $OmitLocalLogging on #省略本地登录。
  20. # File to store the position in the journal
  21. $IMJournalStateFile imjournal.state
  22.  
  23. #### RULES ####
  24. #kern.* /dev/console
  25. #记录所有日志类型的info级别以及大于info级别的信息到messages文件,但是mail邮件信息,authpriv验证方面的信息和corn时间和任务相关信息除外。
  26. *.info;mail.none;authpriv.none;cron.none /var/log/messages
  27.  
  28. # authpriv验证相关的所有信息存放在/var/log/secure。
  29. authpriv.* /var/log/secure
  30.  
  31. #邮件的所有信息存在/var/log/maillog;这里有一个“-”符号表示是使用异步的方式记录
  32. mail.* -/var/log/maillog
  33.  
  34. #任务计划有关的信息存放在/var/log/cron。
  35. cron.* /var/log/cron
  36.  
  37. #记录所有的≥emerg级别信息,发送给每个登录到系统的日志。
  38. *.emerg :omusrmsg:*
  39.  
  40. #记录uucp,news.crit等存放在/var/log/spooler
  41. uucp,news.crit /var/log/spooler
  42.  
  43. #本地服务器的启动的所有日志存放在/var/log/boot.log
  44. local7.* /var/log/boot.log
  45.  
  46. #发送日志,@表示传输协议(@表示udp,@@表示tcp),后面是ip和端口。
  47. #*.* @@remote-host:514

 通过syslog接收远程日志

服务端(sever)

1)检查是否安装了rsyslog软件

# rpm -qa | grep rsyslog    //默认系统都安装了该软件

2)安装rsyslog 连接MySQL数据库的模块

# yum install rsyslog-mysql –y

rsyslog-mysql 为rsyslog 将日志传送到MySQL 数据库的一个模块,这里必须安装。

3)配置服务端支持rsyslog-mysql 模块,并开启UDP服务端口获取网内其他LINUX系统日志

  1. #### MODULES ####
  2.  
  3. $ModLoad ommysql
  4. *.* :ommysql:192.168.10.15,Syslog,root,123456
  5.  
  6. $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
  7. $ModLoad imklog # provides kernel logging support (previously done by rklogd)
  8. $ModLoad immark # provides --MARK-- message capability
  9.  
  10. # Provides UDP syslog reception
  11. $ModLoad imudp
  12. $UDPServerRun 514
  13.  
  14. # Provides TCP syslog reception
  15. $ModLoad imtcp
  16. $InputTCPServerRun 514 

4)导入rsyslog-mysql 数据库文件

# mysql -uroot -pabc123 < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql

  1. mysql> use Syslog;
  2. Database changed
  3. mysql> show tables
  4. -> ;
  5. +------------------------+
  6. | Tables_in_Syslog |
  7. +------------------------+
  8. | SystemEvents |
  9. | SystemEventsProperties |
  10. +------------------------+
  11. 2 rows in set (0.01 sec)
  12.  
  13. mysql>

 5)重启rsyslog 服务

# /etc/init.d/rsyslog restart

客户端(client)

1)配置rsyslog 客户端发送本地日志到服务端

# vi /etc/rsyslog.conf

*.* @192.168.10.15

2)重启rsyslog 服务

# /etc/init.d/rsyslog restart

3)编辑/etc/bashrc,将客户端执行的所有命令写入系统日志/var/log/messages中。

# vi /etc/bashrc

在文件尾部增加一行

export PROMPT_COMMAND='{ msg=$(history 1 | { read x y; echo $y; });logger "[euid=$(whoami)]":$(who am i):[`pwd`]"$msg"; }'

设置其生效

# source /etc/bashrc

客户端配置完毕。

通过以上配置即可在服务端的数据库和/var/log/message中接收到客户端操作信息

syslog日志的更多相关文章

  1. logstash收集syslog日志

    logstash收集syslog日志注意:生产用syslog收集日志!!! 编写logstash配置文件 #首先我用rubydebug测试数据 [root@elk-node1 conf.d]# cat ...

  2. 利用Syslog Watcher在windows下部署syslog日志服务器

    1.概述 syslog协议是各种网络设备.服务器支持的网络日志记录标准.Syslog消息提供有关网络事件和错误的信息.系统管理员使用Syslog进行网络管理和安全审核. 通过专用的syslog服务器和 ...

  3. syslog之三:建立Windows下面的syslog日志服务器

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  4. 关于syslog日志功能详解 事件日志分析、EventLog Analyzer

    关于syslog日志功能详解 事件日志分析.EventLog Analyzer 一.日志管理 保障网络安全 Windows系统日志分析 Syslog日志分析 应用程序日志分析 Windows终端服务器 ...

  5. ELK学习笔记之ELK分析syslog日志

    0x00 配置FIlebeat搜集syslog并发送至 #配置 mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak vim /et ...

  6. syslog之一:Linux syslog日志系统详解

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  7. syslog日志格式解析

    在网上搜的文章,写的很全乎.摘抄如下,供大家参考学习 1.介绍 在Unix类操作系统上,syslog广泛应用于系统日志.syslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog ...

  8. 编译bash实现history的syslog日志记录

    摘要: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://koumm.blog.51cto.com/703525/1763145 一 ...

  9. syslog 日志

    syslog日志是系统日志的一种,可以存放在本地也可以发送到syslog日志服务器, 但是syslog日志由于的格式不统一,在日常工作中审计syslog日志是一种很麻烦的 事情.不过在2001出现了一 ...

随机推荐

  1. 「Luogu 3792」由乃与大母神原型和偶像崇拜

    更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...

  2. Ansible之playbook拓展

    一.handlers和notify结合使用触发条件 handlers同tasks是属同级,相当于一个特殊任务列表,这些任务同前文说的tasks里的任务没有本质的不同,用于当关注的资源发生变化时,才会采 ...

  3. Spring Boot Actuator监控使用详解

    在企业级应用中,学习了如何进行SpringBoot应用的功能开发,以及如何写单元测试.集成测试等还是不够的.在实际的软件开发中还需要:应用程序的监控和管理.SpringBoot的Actuator模块实 ...

  4. spark集群搭建(三台虚拟机)——kafka集群搭建(4)

    !!!该系列使用三台虚拟机搭建一个完整的spark集群,集群环境如下: virtualBox5.2.Ubuntu14.04.securecrt7.3.6_x64英文版(连接虚拟机) jdk1.7.0. ...

  5. nyoj 36-最长公共子序列 (动态规划,DP, LCS)

    36-最长公共子序列 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:18 submit:38 题目描述: 咱们就不拐弯抹角了,如题,需要你做的就是写 ...

  6. go中的关键字-defer

    1. defer的使用 defer 延迟调用.我们先来看一下,有defer关键字的代码执行顺序: func main() { defer func() { fmt.Println("1号输出 ...

  7. 查找文件或目录(find、locate、whereis、which、whatis)

    find命令:可以按文件名.文件的类型.用户等条件来递归查找文件或目录 find  [路径]  [匹配表达式] ,常用选项如下 -name filename  按文件名 -user username ...

  8. opencv 6 图像轮廓与图像分割修复 2 使用多边形将轮廓包围

    使用多边形将轮廓包围 返回外部矩阵边界(boundingRect()函数) 寻找最小包围矩形(minAreaRect()函数) 寻找最小包围圆形(minEnclosingCircle函数) 用椭圆拟合 ...

  9. 利用tomcat搭建图片服务器

    今天来教大家如何使用 tomcat 来搭建一个图片的服务器 1.先将tomcat解压一份并改名 2.此时apache-tomcat-8.5.43-windows-x64-file为图片服务器 依次打开 ...

  10. Java流程控制之(三)嵌套

    目录 嵌套循环 for循环嵌套 while循环嵌套 总结 之前谈到各种循环结构,有for循环啊,有while循环啊,可以完成不断重复的动作,相当方便.那么如果好多个循环结合再一次,又是如何实现效果的呢 ...