syslog协议介绍

2023-11-11

syslog协议介绍

syslog架构

Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的。syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理。
在Linux中,常见的syslog服务器端程序是syslogd守护程序。这个程序可以从三个地方接收日志消息:(1)Unix域套接字 /dev/log;(2)UDP端口514;(3)特殊的设备/dev/klog(读取内核发出的消息)。相应地,产生日志消息的程序就需要通过上述三种方式写入消息,对于大多数程序而言就是向/dev/log这个套接字发送日志消息。

关于syslog的协议

介绍 

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

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

长期以来,没有一个标准来规范syslog的格式,导致syslog的格式是非常随意的。最坏的情况下,根本就没有任何格式,导致程序不能对syslog 消息进行解析,只能将它看作是一个字符串。

在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 RFC标准

     目前有两个syslog RFC标准RFC 3164、RFC 5424,两者的主要区别在于数据的格式不同,可以参考RFC标准上所述格式。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

syslog协议介绍 的相关文章

  • ubuntu10.04下Eclipse&pydev搭建python环境

    ubuntu10 04下Eclipse pydev搭建python环境 ubuntu10 04已经自带了python 用户可以在命令行中输入python 就启动了python 就可以写程序来测试了 也可以通过用gedit写一些脚本 然后在命
  • 超线程简介

    超线程简介 超线程的技术原理 超线程技术在一个物理核上模拟两个逻辑核 两个逻辑核具有各自独立的寄存器 eax ebx ecx msr等等 和APIC 但会共享使用物理核的执行资源 包括执行引擎 L1 L2缓存 TLB和系统总线等等
  • 多线程中递归锁的实现

    多线程中递归锁的实现 在上一篇文章中 我已经阐述了多线程中简单锁的实现 可在结束的时候 我就提了那么一个问题 那就是如果在一个链表中进行插入时 要进行查询的操作 如果只是简单的锁 是没法实现的 所以 递归锁 就浮现于世了 可能有些人看到递归
  • 如何在C语言中调用shell命令

    如何在C语言中调用shell命令 在linux操作系统中 很多shell命令使用起来非常简单 这些shell命令的程序实现已经被底层实现好 有时候需要在程序中调用shell命令 这样可以就不用在控制台上手动输入shell命令了 下面就以三个
  • Linux下编译链接多个源文件

    Linux下编译链接多个源文件 add c 的内容 int Add int a int b int result result a b return result minus c 的内容 int Minus int a int b int
  • linux设备驱动之构造和运行模块

    构造和运行模块 今天开始学习 linux设备驱动程序 第三版这本书 在看到第二章的构造和运行模块的时候 我在linux平台上做了一个小测试 下面就让我说下 在宿主机上安装开发工具和下载linux源码 要求版本号和目标机上的linux内核版本
  • linux上的一些系统监测工具简介

    linux上的一些系统监测工具简介 在linux中提供了很多有用的工具 以方便开发人员调试和评测服务器程序 下面介绍几个常用的工具 tcpdump nc strace lfos netstat vmstat ifstat和mpstat 1
  • 2.6内核的通用的编译步骤

    2 6内核的通用的编译步骤 1 下载源码并解压 虽然我们可以将内核源码存放在任何自己找得到的地方 但通常还是会将内核源码下载到 usr src目录并解压 cd usr src wget ftp kernel org pub linux ke
  • FastCGI技术

    FastCGI技术 by ahuner 1 FastCGI介绍 FastCGI 快速通用网关接口 Fast Common Gateway Interface FastCGI 是一种让交互程序与Web服务器通信的协议 FastCGI像是一个常
  • va_list(),va_start(),va_arg(),va_end()

    va list va start va arg va end 详解 一 写一个简单的可变参数的C函数 下面我们来探讨如何写一个简单的可变参数的C函数 写可变参数的C函数要在程序中用到以下这些宏 void va start va list a
  • linux下保护模式之CPL,RPL,DPL总结

    linux下保护模式之CPL RPL DPL总结 先说下特权级的概念 在保护模式下 系统依靠特权级来实施代码和数据的保护 相当于权限啦 特权级共有4 个级别 0 1 2 3 数字越小特权越高 较为核心的代码和数据放在较高 靠内 的层级中 处
  • orange's一个操作系统的实现的前五章文件组织整理

    Orange s一个操作系统的实现的前五章文件组织整理 Tree Makefile a img 虚拟软盘 bochsrc bochs虚拟机配置 boot boot asm 编译为boot bin文件后被BIOS加载到内存 然后在a img中
  • syslog协议介绍

    syslog协议介绍 syslog架构 Unix Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的 syslog是一种标准的协议 分为客户端和服务器端 客户端是产生日志消息的一方 而服务器端负责接收客户端发送来的日
  • 秒杀linux下系统调用fork()面试题

    秒杀linux下系统调用fork 面试题 第一道题 在之前博客也写过这道题 http blog csdn net chdhust article details 8535915 题目 请问下面的程序一共输出多少个 1 2 3 4 5 6
  • gdb调试多进程程序和多线程程序

    gdb调试多进程程序和多线程程序 平时一般用gdb直接调试短小的程序 好像我还没调试过多进程和多线程程序呢 1 gdb调试多进程程序 如果一个进程通过fork系统调用创建了子进程 gdb会继续调试原来的进程 子进程则正常运行 常用的有两种方
  • 警惕UNIX下的LD_PRELOAD环境变量

    警惕UNIX下的LD PRELOAD环境变量 前言 也许这个话题并不新鲜 因为LD PRELOAD所产生的问题由来已久 不过 在这里 我还是想讨论一下这个环境变量 因为这个环境变量所带来的安全问题非常严重 值得所有的Unix下的程序员的注意
  • dword ptr指令讲解

    dword ptr指令讲解 8086CPU的指令 可以处理两种尺寸的数据 byte和word 所以在机器指令中要指明 指令进行的是字操作还是字节操作 对于这个问题 汇编语言中用一下方法处理 1 通过寄存器名指明要处理的数据的尺寸 例如 下面
  • Linux下C编译系统

    Linux下C编译系统 编译过程概述 了解一些编译知识的读者都知道 所谓编译 就是在编译程序读取源程序 字符流 对之进行词法和语法的分析 将高级语言指令转换为功能等效的汇编代码 再由汇编程序转换为机器语言 并且按照操作系统对可执行文件感谢格
  • linux下libxml库的安装及编译

    linux下libxml库的安装及编译 1 下载和安装LIBXML2 Libxml2是个C语言的XML程式库 能简单方便的提供对XML文件的各种操作 并且支持XPATH查询 及部分的支持XSLT转换等功能 Libxml2的下载地址是 htt
  • undefined reference to ceil 链接错误

    undefined reference to ceil 链接错误 原因今天编译一个C文件 输入下面的代码后 GOP12 c文件代码大致为 include

随机推荐

  • js右键双击事件

    鼠标左击双击事件dblclick 那右击双击事件呢 在开发中遇到一个需求 左键双击下钻 右键双击上钻 貌似没有右键双击事件 自己手写一个 let t 0 total 0 document addEventListener mousedown
  • 学习笔记——python中为什么需要使用“if __name__ == ‘__main__‘”语句

    学习过程中又又又疑问了 为啥有时候必须要用 if name main 语句 感觉就跟其他语言中的main函数一样 转载一篇文章 嘻嘻 主要是讲的太好了 就不加我个人见解了 首先用最简洁的语言来说明一下 if name main 的作用 防止
  • 各种环境下正确应对-微信40001-invalid credential, access_token is invalid or not latest

    这个Bug是微信开发常见Bug之一了 意思access token失效了 网上很多解答都只针对某种情况 笔者解决这个问题也是经历了痛苦的过程 根据实战经验总结供同仁参考 方案思路 根据微信官方文档 access token的有效期是7200
  • vue中使用elementUI使用el-tabs,切换Tab如何实现实时加载,以及el-table表格使用总结

    当我们在开发中遇到tab切换 这时候用el的el tabs感觉很方便 但当我在把代码都写完后 发现一个问题就是页面打开时 虽然我们只能看见当前一个tab页 但是vue会帮你把你写的所有tab页的内容都渲染出来了 只是其他的隐藏了 同时其他t
  • React学习第二天元素渲染

    一 前言 1 对于一个单页面应用 我们最终要将react元素挂载到页面根节点 通常设置为root根节点 该节点内的所有内容都将由 React DOM 管理 2 挂载的过程就是渲染的过程 react提供了相应是api实现这个过程 二 元素渲染
  • Java如何实现统计在线人数的功能?

    很多人在笔试或者面试中问到 现在要你实现一个统计在线人数的功能 你该怎么设计 不知道的朋友 这篇文章告诉你 先说答案 可以利用监听器Listener来实现 目录 1 监听器的简介 2 Java监听器的类型 1 ServletContextL
  • 深入理解“字符编码模型”

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Python基于OpenCV库Adaboost实现人脸识别功能详

    本文实例讲述了Python基于OpenCV库Adaboost实现人脸识别功能 分享给大家供大家参考 具体如下 以前用Matlab写神经网络的面部眼镜识别算法 研究算法逻辑 采集大量训练数据 迭代 计算各感知器的系数 相当之麻烦 而现在运用调
  • STDOUT/STDERR重定向到ALOG中

    说下背景 现在众多Android开发者新添加的Google暂时并不会支持的功能 比如拨号上网 USB打印机等等 一般的实现方法就是静态编译Linux的相对开源库和程序 一般是C C 语言 然后由Apk一层一层调用 最终是调用这个命令来实现的
  • mpeg4 码流格式及判断关键帧

    MPEG4码流视频关键帧头部16个字节 非关键帧8个字节 均包含四字节ID 说明如下 关键帧 字节 0 1 2 3 4 5 6 7 8 9 A B C D E F 值 0 0 1 FB XX R W H Date time Length 含
  • Java 序列化与反序列化(Serialization)

    一 什么是 为什么需要 序列化 Serialization 是将对象的状态信息转化为可以存储或者传输的形式的过程 反序列化则为其逆过程 内存的易失性 传输需要 一些应用场景中需要将对象持久化下来 以便在需要的时候进行读取 二 JDK提供的A
  • 前端 面经/编码规范/教程/安装总结

    文章目录 面经 编码规范 学习教程 安装 配置环境 遇到过的问题 实习之后发现了很多东西 所以最近就梳理了一些前端可能用到的教程等等 链接已经放在下面了 同样也是为了方便自己查阅 面经 震惊 前端300基础面试题 答案 分类学习整理 良心制
  • 将项目 上传到Git上面

    使用git bash命令上传 1 通过命令行创建一个新的版本库 touch README md git init git add REAIME md git commit m first commit git remote add orig
  • Pow(x, n)

    Pow x n 思路 x n x x n 2 当n为偶数 x n x x n 2 x 当n为奇数 当n为负数时 x n 1 x n 注意 对边界条件的处理 当n INT MIN时 直接取负会溢出 https discuss leetcode
  • Mybatis-plus使用注解 @TableField(exist = false) 注明非数据库字段属性

    TableField exist false 注解加载bean属性上 表示当前属性不是数据库的字段 但在项目中必须使用 这样在新增等使用bean的时候 mybatis plus就会忽略这个 不会报错
  • 批量删除.svn文件夹、.svn文件

    http www phpvar com archives 311 html 使用svn进行版本控制 每个文件夹下都有 svn文件夹 有些项目在脱离svn版本控制之后 想删除项目中所有的 svn文件夹 可用下面的方法进行快速删除 1 打开要删
  • Vue基础精讲 —— 实例解析Vue的生命周期

    结合官网Vue生命周期图例 实例生命周期钩子 vue生命周期 import Vue from vue new Vue el root template div text div data text text beforeCreate 无法做
  • C语言计算机二级/C语言期末考试 刷题(四)

    收集了一些经典C语言计算机二级和C语言期末考试题库 整理不易 大家点赞收藏支持一下 祝大家计算机二级和期末考试都高分过 系列文章 C语言计算机二级 C语言期末考试 刷题 一 C语言计算机二级 C语言期末考试 刷题 二 C语言计算机二级 C语
  • dedecms织梦系统基本参数添加内容后首页显示后台空白不显示

    最近跟版网的小编在测试织梦模板时候发现 添加首页名称 版权信息 备案号等 保存后首页能显示 但是后台却没有文字 更新缓存也没用 那么这种情况该如何解决呢 小编告诉您 找到 dede templets sys info htm这个文件 里边找
  • syslog协议介绍

    syslog协议介绍 syslog架构 Unix Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的 syslog是一种标准的协议 分为客户端和服务器端 客户端是产生日志消息的一方 而服务器端负责接收客户端发送来的日