Linux 日志管理 Rsyslog Loganalyzer

article/2025/10/5 22:19:36

Syslog常被称为系统日志或系统记录,是一种用来在互联网协议(TCP/IP)的网上中传递记录档消息的标准。这个词汇常用来指涉实际的syslog 协议,或者那些提交syslog消息的应用程序或数据库。

syslog协议属于一种主从式协议:syslog发送端会发送出一个小的文字消息(小于1024位组)到syslog接收端。接收端通常名为“syslogd”、“syslog daemon”或syslog服务器。系统日志消息可以被以UDP协议及╱或TCP协议来发送。这些数据是以明码类型被发送。不过由于SSL加密外套(例如Stunnel、sslio或sslwrap等)并非syslog协议本身的一部分,因此可以被用来透过SSL/TLS方式提供一层加密。

Rsyslog 是syslog 的升级版,一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计,将多种来源输入输出转换结果到目的地。

Rsyslog的传输方式有三种:

  • UDP 传输协议 

  • 基于传统UDP协议进行远程日志传输,也是传统syslog使用的传输协议;

  • 可靠性比较低,但性能损耗最少

  • 在网络情况比较差,或者接收服务器压力比较高情况下,可能存在丢日志情况。

  • TCP 传输协议 

  • 基于传统TCP协议明文传输,需要回传进行确认,可靠性比较高;

  • 但在接收服务器宕机或者两者之间网络出问题的情况下,会出现丢日志情况。

  • RELP 传输协议 

  • RELP(Reliable Event Logging Protocol)是基于TCP封装的可靠日志消息传输协议;

  • 是为了解决TCP 与 UDP 协议的缺点而在应用层实现的传输协议,也是三者之中最可靠的。

  • 对于线上服务器,为了日志安全起见,建议使用 RELP 协议进行传输。


  • 查看系统中 Rsyslog 版本信息

  • Rsyslog 的主配置文件为 /etc/rsyslog.conf 
  • Rsyslog 的配置主要有以下模块:
  • modules:模块,配置加载的模块,如:ModLoad imrelp  配置加载RELP传输模块
  • global directives:全局配置,配置ryslog守护进程的全局属性,比如主信息队列大小(MainMessageQueueSize)
  • rules:规则(选择器+动作),每个规则由两部分组成,selector部分和action部分,这两部分由一个或多个空格或tab分隔,selector部分指定源和日志等级,action部分指定对应的操作

  • 常用的modules

  • imudp,传统方式的UDP传输,有损耗
  • imtcp,基于TCP明文的传输,只在特定情况下丢失信息,并被广泛使用
  • imrelp,RELP传输,不会丢失信息

  • 规则(rules)

规则的选择器(selectors)由两部分组成,设施和优先级,由点号.分隔。多个选择器用;分隔,如:*.info;mail.none

  • facility:设施,从功能或程序上对日志收集进行分类

内建的日志设施有:
auth(security), authpriv:认证授权和安全相关的消息
kern:来自Linux内核的消息
mail:邮件服务系统的各种组件
mark:防火墙标记
cron:周期任务计划相关的信息

daemon:守护进程产生的信息
news:网络消息子系统
lpr:打印相关的日志信息
user:用户进程相关的信息
local0 to local7:保留,本地使用

  • priority:优先级,日志级别(由低到高)

debug:包含详细的开发情报的信息,通常只在调试一个程序时使用
info:情报信息,正常的系统消息,比如骚扰报告,带宽数据等,不需要处理
notice: 不是错误情况,也不需要立即处理
warning: 警告信息,不是错误,比如系统磁盘使用了85%等
err:错误,不是非常紧急,在一定时间内修复即可
crit:重要情况,如硬盘错误,备用连接丢失
alert:应该被立即改正的问题,如系统数据库被破坏,ISP连接丢失
emerg:紧急情况,需要立即通知技术人员

指定级别

功能

*

所有级别

none

没有级别

priority

此级别及高于此级别的所有级别

=priority

仅此级别

  • 动作 (action)

action是规则描述的一部分,位于选择器的后面,规则用于处理消息。总的来说,消息内容被写到一种日志文件上,但也可以执行其他动作,比如写到数据库表中或转发到其他主机。

写到mysql数据库中


  • 实验环境
  • LOG Server CentOS 7.5 192.168.1.2
  • LOG Client CentOS 7.5 192.168.1.3

  • 首先在 LOGServer 192.168.1.2 端安装 Rsyslog、以及RELP协议支持:rsyslog-relp
  • yum -y install rsyslog rsyslog-relp
  • 编辑 /etc/rsyslog.conf 主配置文件

  • vim /etc/rsyslog.conf

  • 在#### MODULES ####下面添加以下信息:

    $ModLoad imrelp    #开启RELP传输协议
    $InputRELPServerRun 514   #设定监听端口

  • 编辑 /etc/sysconfig/rsyslog 开启传输端口监听

  • vim /etc/sysconfig/rsyslog

    -r指定监听端口,-c2 使用兼容模式

  • SYSLOGD_OPTIONS="-r514 -c2"

  • 确认无误 启动 Rsyslog 服务

  • systemctl start rsyslog

  • 查看 514 端口是否被监听

  • ss -alnt | grep 514

  • 在服务器端用 tail -f /var/log/messages 追踪日志

  • tail -f /var/log/messages


  • 接下来在 LOGClient 192.168.1.3 端安装配置 Rsyslog
  • yum -y install rsyslog rsyslog-relp
  • 编辑 /etc/rsyslog.conf 添加以下信息:
    $ModLoad omrelp        #指定传输协议
    *.*    :omrelp:192.168.1.2:514     #设置那些LOG日志被记录以及LOG服务器IP和端口
  • 重启 Rsyslog 服务
  • systemctl restart rsyslog
  • 发送一条测试日志
  • logger -t kern -p err "This is a testlog"


  • 然后回到 LOG Server 192.168.1.2 端查看是否接收到刚才的测试 LOG
  • tail -f /var/log/messages
  • Mar 22 15:47:29 C75_192_168_1_3 kern: This is a testlog


Loganalyzer是一款syslog日志和其他网络时间数据的web前端,它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般syslog文本文件中获取,所有loganalyzer不需要改变现有的记录架构。基于当前的日志数据,它可以处理syslog日志消息windows事件日志记录,支持故障排除,使用户能快速查找日志数据中看出问题的解决方案。

  loganalyzer获取客户端日志会有两种保存模式,一种是直接读取客户端/var/log目录下的日志并保存到服务端该目录下,一种是读取后保存日志服务器数据库中,这里测试的是mariadb数据库

  Loganalyzer基于php开发,需要搭建php运行环境

  • 接下来在 LOGServer 192.168.1.2 端安装配置 lamp 和 日志管理工具:loganalyzer
  • lamp 具体设置请参照拙作:https://blog.csdn.net/gaofei0428/article/details/104058580https://blog.csdn.net/gaofei0428/article/details/104224132
  • yum -y install mariadb mariadb-server php php-fpm php-gd php-mysql httpd rsyslog rsyslog-mysql rsyslog-relp
  • 导入所需要的数据库和表:

  • mysql -uroot -p123456 < /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

  • mysql-createDB.sql 是安装 rsyslog-mysql 生成的,可以用命令查看

    rpm –ql rsyslog-mysql

  • 添加、授权用户 rsyslog 使用 Syslog 库

  • mysql -uroot -p123456 -e "GRANT ALL ON Syslog.* TO 'rsyslog'@'%' IDENTIFIED BY 'rsyspass';" #需要从网络登陆,%或者 192.168.1.%,localhost只能本地登陆。

  • mysql -uroot -p123456 -e "flush privileges;"   #立即刷新权限

  • 编辑 /etc/rsyslog.conf 主配置文件

  • vim /etc/rsyslog.conf

  • 在#### MODULES ####下面添加以下信息:

    $ModLoad imrelp    #开启RELP传输协议
    $InputRELPServerRun 514   #设定监听端口

    $ModLoad ommysql   #开启 mysql 模块

  • 在#### RULES #### 下面添加

    # rule, send to mysql
    #*.*  :ommysql:database-server,database-name,database-userid,database-password
    *.*     :ommysql:192.168.1.2,Syslog,rsyslog,rsyspass

  • 从 loganalyzer 官网下载
  • wget https://download.adiscon.com/loganalyzer/loganalyzer-4.1.7.tar.gz
  • tar xf loganalyzer-4.1.7.tar.gz
  • cd loganalyzer-4.1.7
  • cp -ar ./src/* /data/web/
  • cp -ar ./contrib/*.sh /data/web/
  • cd /data/web
  • chmod +x ./*.sh
    ./configure.sh   #生成 config.php  文件,属性为 666
  • 确认无误启动服务
  • systemctl start httpd
  • systemctl start php-fpm
  • systemctl restart rsyslog
  • 打开浏览器输入 http://192.168.1.2
  • 点击 here 开始配置
  • Step 1 默认即可 点击 Next
  • Step 2 测试是否可以写入 config.php 点击 Next
  • Step 3 默认 点击 Next
  • Step 7 

    Source Type MYSQL Native  #选择 MYSQL 记录方式
    Select View  EventLog Fields  

    Database Type Options  

    Table type MonitorWare  #默认
    Database Host  192.168.1.2  #MariaDB Server IP
    Database Name  Syslog  #选择数据库
    Database Tablename  SystemEvents  #选择表,注意大小写!
    Database User  rsyslog   #MariaDB授权用户
    Database Password  rsyspass #用户密码
    Enable Row Counting   #默认

  • Step 8 Finish

  • chmod 644 /data/web/config.php

  •  LOGClient 192.168.1.3 端,编辑 /etc/rsyslog.conf 修改以下信息:
  • $Modload ommysql     
    *.* :ommysql:192.168.1.2,Syslog,rsyslog,rsyspass
  • logger -t kern -p err "This is a testlog"

 


http://chatgpt.dhexx.cn/article/5XvtKU78.shtml

相关文章

建立 rsyslog 日志服务器

文章目录 1. rsyslog 介绍2. 实验目的3. 实验环境4. 配置服务端5. 配置客户端6. 在服务端验证效果 1. rsyslog 介绍 rsyslog 是一个快速处理收集系统日志的开源程序&#xff0c;提供了高性能、安全功能和模块化设计。rsyslog 是 syslog 的升级版&#xff0c;它将多种来源输入输…

rsyslog配置

rsyslog配置文件详解&#xff1a; #### MODULES #### #定义日志的模块。 $ModLoad imuxsock #imuxsock为模块名&#xff0c;支持本地系统日志的模块。 $ModLoad imjournal #imjournal为模块名&#xff0c;支持对系统日志的访问。 #$ModLo…

syslog 和 rsyslog

1. 介绍 rsyslog可以简单的理解为syslog的超集&#xff0c;在老版本的Linux系统中&#xff0c;Red Hat Enterprise Linux 3/4/5默认是使用的syslog作为系统的日志工具&#xff0c;从RHEL 6 开始系统默认使用了rsyslog。 其特性包括&#xff1a; 支持输出日志到各种数据库&…

rsyslog日志服务详解

rsyslog日志服务详解 原文出处&#xff1a;http://blog.51cto.com/6638225/1862902 内容&#xff1a; 1、rsyslog日志服务简介 2、rsyslog的配置详解 3、实现日志服务器收集日志及last、lastb、dmseg命令的使用 4、实现日志存储在mysql中 一、rsyslog日志服务简介 ​ 日…

【Linux】rsyslog日志服务(配置,测试、日志转储)

一、rsyslog简介 Rsyslog的全称是 rocket-fast system for log ,可用于接受来自各种来源的输入&#xff0c;转换 它们&#xff0c;并将结果输出到不同的目的地。 它提供了高性能、强大的安全功能和模块化设计。虽然rsyslog最初是一个常规的系 统日志&#xff0c;但它已经发展…

Linux原生日志系统Rsyslog详解

一、概述 Rsyslog 是一个 syslogd 的多线程增强版&#xff0c;依然基于Syslog协议&#xff08;linux6之前默认使用syslog程序&#xff0c;centos6用rsyslog所取代&#xff09;完成系统日志的处理转发&#xff0c;官方形容它是一个极速&#xff08;如火箭般快速&#xff09;的日…

N皇后问题-回溯法-C语言

关于对N皇后问题和回溯法的理解 个人非常推荐下面这个视频&#xff1a;算法与数据结构&#xff0c;回溯法求解八皇后&#xff0c;最经典的递归问题_哔哩哔哩_bilibili八皇后问题是计算机科学中最为经典的问题之一&#xff0c;该问题由国际西洋棋棋手马克斯贝瑟尔于1848年提出。…

Java——N皇后问题

题目链接 leetcode在线oj题——N皇后 题目描述 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff…

N 皇后问题

n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案&#xff0c;该方案中 Q 和 . 分别代表了皇后和…

N皇后问题(C++)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

回溯法求解n皇后问题

一、实验目的 1&#xff0e;掌握能用回溯法求解的问题应满足的条件&#xff1b; 2&#xff0e;加深对回溯法算法设计方法的理解与应用&#xff1b; 3&#xff0e;锻炼学生对程序跟踪调试能力&#xff1b; 4&#xff0e;通过本次实验的练习培养学生应用所学知识解决实际问题的能…

N皇后问题(java)

n皇后问题是一个以国际象棋为背景的问题&#xff1a;在nn的国际象棋棋盘上放置n个皇后&#xff0c;使得任何一个皇后都无法直接吃掉其他的皇后&#xff0c;即任意两个皇后都不能处于同一条横行、纵行或斜线上。 我们通过回溯的方法将所有可能的情况遍历一遍 假设现在有一个4*4…

N皇后问题(Python实现)

n 皇后问题研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 也就是说&#xff1a;存在一个N*N的棋盘&#xff0c;要放N个棋子&#xff0c;每个棋子不同行&#xff0c;不同列&#xff0c;不同&#xff08;正反&#xff09;对角线&…

数据结构之N皇后问题(C语言)

一、N皇后问题的概念 n 皇后问题&#xff0c;研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 一个皇后可以向水平、垂直以及向斜对角方向移动&#xff0c;如果一个皇后出现在另一个皇后的同一行&#xff0c;同一列或者斜对角&#x…

n皇后问题 C++

先上代码&#xff01; #include<iostream> using namespace std;const int N 20;int n; bool row[N],col[N], dg[N], udg[N]; char g[N][N];void dfs(int x, int y, int z) {if (y n) y 0, x; //判断y是否已经抵达边界&#xff0c;抵达后&#xff0c;x1进行下一行if …

回溯法-N皇后问题

一、N皇后问题 n皇后问题&#xff1a;要求在一个nn的棋盘上放置n个皇后&#xff0c;使得任意两个皇后不在同一行或同一列或同一斜线上。 二、回溯法 回溯法是一类非常重要的算法设计方法&#xff0c;有“通用解题法”之称。 回溯法&#xff08;探索与回溯法&#xff09;&am…

(新手向)N皇后问题详解(DFS算法)

非常经典的一道题&#xff1a; N皇后问题&#xff1a; 国际象棋中皇后的势力范围覆盖其所在的行、列以及两条对角线&#xff0c;现在考察如下问题&#xff1a;如何在n x n的棋盘上放置n个皇后&#xff0c;使得她们彼此互不攻击 。 免去麻烦我们这里假定n不是很大。。 &#…

n皇后问题-c语言实现

n皇后问题描述为:在一个nxn的棋盘上摆放n个皇后&#xff0c;要求任意两个皇后不能冲突&#xff0c;即任意两个皇后不在同一行、同一列或者同一斜线上。 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4 4,1 4,2 4,3 4,4 上面是4皇后摆放方案&#xff0c;只有…

n皇后问题合集

八皇后问题是dfs的经典问题&#xff0c;目前遇到过的类型大致有这么几种&#xff1a; 1.经典n皇后问题 题目描述 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 …

N皇后问题(c语言实现)

问题描述&#xff1a; 有一个n*n的棋盘&#xff0c;在这个棋盘中放n个皇后&#xff0c;使得这n个皇后&#xff0c;任意两个皇后不在同一行&#xff0c;同一列&#xff0c;同一条对角线。例如&#xff0c;当n等于4时&#xff0c;有两种摆法。 输入只有一个整数n。 思路 如果…