微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

一、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实现日志转发”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程之家网站,小编将为大家输出更多高质量的实用文章

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐