linux中怎么配置syslog实现日志转发

79次阅读
没有评论

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

本篇内容介绍了“linux 中怎么配置 syslog 实现日志转发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、syslog 协议

     linux 系统中大部分日志是通过一种 syslog 机制产生和维护的。syslog 是一种协议,分为客户端和服务器端。客户端产生日志,服务器端接收日志。并对接收的日志做出保存到文件或其他方式的处理。

        在 linux 中,常见 syslog 服务器端程序是 syslogd 守护进程。这个程序从三个地方接收日志

       【1】: unix 域套接字 /dev/log

       【2】:udp 端口 514

       【3】:特殊的设备 /dev/klog

          相应的,产生日志的消息的程序就需要通过上述三种方式写入消息。对于大多数程序而言就是向 /dev/log 这个套接字发送日志消息。

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

           【1】:产生日志的程序模块

           【2】:严重性

           【3】:时间

           【4】:主机名或 IP

           【5】:进程名

           【6】:进程 ID

           【7】:正文

        在 2001 年定义的 RFC3164 中,描述了 BSD syslog 协议:http://www.ietf.org/rfc/rfc3164.txt,不过这个规范的很多内容都不是强制性的,常常是“建议”或者“约定”,也由于这个规范出的比较晚,很多设备并不遵守或不完全遵守这个规范。接下来就介绍一 下这个规范。

        约定发送 syslog 的设备为 Device,转发 syslog 的设备为 Relay,接收 syslog 的设备为 Collector。Relay 本身也可以发送自身的 syslog 给 Collector,这个时候它表现为一个 Device。Relay 也可以只转发部分接收到的 syslog 消息,这个时候它同时表现为 Relay 和 Collector。

       syslog 消息发送到 Collector 的 UDP 514 端口,不需要接收方应答,RFC3164 建议 Device 也使用 514 作为源端口。规定 syslog 消息的 UDP 报文不能超过 1024 字节,并且全部由可打印的字符组成。完整的 syslog 消息由 3 部分组成,分别是 PRI、HEADER 和 MSG。大部分 syslog 都包含 PRI 和 MSG 部分,而 HEADER 可能没有。

二、配置 syslog 服务端和客户端,实现日志转发

      环境:ubantu16.04

     1、服务端

          1 修改 /etc/default/rsyslog

                修改 /etc/sysconf/syslog 修改 SYSLOGD_OPTIONS 为 -r -x -m 0  

                        - r 表示允许接收外来的消息

                        - x 表示不解析 DNS,

                        -m 0 表示时间戳标记间隔,

                        如果指定只接受某个或多个 ip 过来的日志,例 -s 168.1.1.1:168.1.1.2

              修改 /etc/rsyslog.conf

                  取消注释:

$ModLoad imudp.so
 $UDPServerRun 514

                  在文件末尾添加这两句

syslog.info;syslog.!err;syslog.!crit;syslog.!alert /var/log/mylog #info 信息记录到日志服务器的 /var/log/mylog 中
 syslog.err /var/log/testerror #error 信息记录到日志服务器的 /var/log/testerror 中  2 、客户端 

          修改 /etc/syslog.conf  添加

              取消注释:

$ModLoad imudp.so
 $UDPServerRun 514

              在末尾增加这两句
                         syslog.info   @IP(IP 为服务端 IP 地址)

3、服务重启

4、测试

  在客户端运行下面代码,可在服务端 /var/log/mylog 中看到日志已经存入到服务端

#include  stdio.h 
#include  syslog.h 
int main(int argc, char* argv[])
 //openlog(argv[0], LOG_CONS | LOG_PID, LOG_USER);
 int count = 0;
 while(count 5){ syslog(LOG_SYSLOG|LOG_INFO,  %d:, syslog user test , count);
 count++;
 }
 //closelog();
 return 0;
}

“linux 中怎么配置 syslog 实现日志转发”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-12发表,共计2198字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)