• 摘要:http://luyongxin88.blog.163.com/blog/static/925580720112275183903/ 因为工作的需要,涉及到了syslog-ng。现在看来,在外包公司工作,也就这么两点的好处了,一是拿的钱稍微多点,二就是能接触一下新的东西。当然,想要深入了解,公司是不会提供这样的机会了,还是自己看看吧。以下都是一些网络上学习来了有关syslog-ng的知识。整理一下。以前认为网络上都有,自己转载了没必要,但某天突然领悟到:自己看了,和
    • http://luyongxin88.blog.163.com/blog/static/925580720112275183903/

      因为工作的需要,涉及到了syslog-ng。现在看来,在外包公司工作,也就这么两点的好处了,一是拿的钱稍微多点,二就是能接触一下新的东西。当然,想要深入了解,公司是不会提供这样的机会了,还是自己看看吧。以下都是一些网络上学习来了有关syslog-ng的知识。整理一下。以前认为网络上都有,自己转载了没必要,但某天突然领悟到:自己看了,和自己记录了不一样,我们不能说书本上都有了上课就不做笔记了。再有就是放在自己的地方,查询起来也方便,不用东找西找的,会显得系统一些。

      --------------------

      syslog-next generation 即下一代的系统日志管理工具

      The syslog-ng application is a flexible and highly scalable system logging application that is ideal for creating centralized logging solutions. The main features of syslog-ng are summarized below.

      # 注释 :syslog-ng 应用程序是一个灵活、高扩展性的系统日志工具,主要是用于解决集中日志记录的工具。它的主要特点有 :

      1、可靠的日志传输。syslog-ng 允许你发送日志到远程的日志服务器上。传输过程使用 TCP ,区别于 syslog 的 UDP ,可以确保不会丢失数据

      2、通过使用 SSL/TLS 来加密日志传输过程。不过这个功能只有在 premium 版本才提供。

      3、基于磁盘的缓冲。syslog-ng 可以在网络连接失效时先把日志写入硬盘,等网络连接恢复时再传输到日志服务器上,而且确保日志的顺序不会混乱。不过这个功能也是 premium 版本才提供的。

      4、直接数据库访问。能够把日志直接存入数据库,以便进行搜索及配合日志分析应用程序。支持 MySQL、Oracle、PostgreSQL、SQLIife ,同样也是 premium 才支持

      5、支持多种操作系统。包括 Linux、Unix、BSD、Solaris、HP-UX、AIX 等。甚至还可以通过代理和 Windows 主机进行通信

      6、过滤器和归类。syslog=ng 应用程序可以根据收的喔的日志的内容进行排序、或者根据源ip、应用程序、优先级等。可以通过宏自动建立目录、文件、数据库。支持 regex 和布尔表达式,确保只转发你想要的内容

      7、支持 ipv4 和 ipv6

      syslog-ng在一般linux系统下的配置文件为/etc/syslog-ng/syslog-ng.conf

      一般 syslog-ng 可能含有以下5个章段:

      options{}

      全局设置。 These can be overridden in any of the next four sections

      source{}

      信息来源, 来源可以是文件, 本地 sockets, 或者远程主机。

      destination{}

      信息目标, 可以是文件, 本地 sockets, 或者远程主机。

      filter{}

      过滤选项非常强大且复杂;你可以过滤日志中的任何方面,比如基础的 syslogd 快捷字段(facility names–man 5 syslog.conf 获取更多信息),log 等级,主机名,以及任何log中出现的字段或者是数字。

      log{}

      此段将来源 目的 过滤 都给连接起来并且告诉syslog-ng如何处理日志。

      配置的主要内容为消息路径的匹配规则,这个和iptables 的规则是差不多的。

      消息路径由3部分组成:

      消息路径 = 日志消息源  +  过滤规则  +  消息目地

      其运行过程:消息源 --->  syslog-ng --> 消息命中 -->  对应的日志目的

      消息源

      消息源:

      source <identifier> { source-driver(params);source-driver(params);... };消息源驱动器 source driver,用来收集日志消息,和系统的syslogd交换信息,记录日志

      实例:

      source src { unix-stream("/dev/log"); internal(); udp(ip(0.0.0.0) port(514)); };

      identifier  是给定消息源的唯一标志

      驱动器可以使用参数,参数有些是必需的,有些是可选的。必需的参数一般在前面。上面的指令中,/dev/log就是必需参数。

      下面是可用的源驱动器:

      internal syslog-ng内部产生的消息

      unix-stream 打开指定的SOCK_STREAM模式的unix套接字,接收日志消息

      unix-dgram 打开指定的SOCK_DGRAM模式的unix套接字,接收日志消息

      file 打开指定的文件读取日志信息

      pipe,fifo 打开指定的管道或者FIFO设备,读取日志信息

      tcp 在指定的TCP端口接收日志消息

      udp 在指定的UDP端口接收日志消息

      sun-stream(s) 在solaris系统中,打开一个(多个)指定的STREAM设备,从其中读取日志消息

      过滤规则,过滤器
      在syslog-ng 中,过滤器执行日志路由,决定日志是否满足通过的条件

      filter <identifier> {expression;}; 表达式中可以包含逻辑操作符 and or  not

      例一个搜索来自blurp主机,包含deny的日志消息的过滤指令
      filter f_blurp_deny { host("blurp") and match("deny"); };

       下面是syslog-ng的过滤函数:
      facility() 根据设备选择日志消息
      level()或者priority() 根据优先级选择日志消息
      program() 日志消息的程序名是否匹配一个正则表达式
      host() 日志消息的主机名是否和一个正则表达式匹配
      match() 对日志消息的内容进行正则匹配
      filter() 调用另一条过滤规则并判断它的值
       日志消息的目的
      destination 指定日志消息的去处。目的可以包括一些目的驱动器,指定日志的派发方向。
      destination  <identifier> { destination-driver(params);estination-driver(params);.....};
       

      下面是syslog-ng支持的日志消息目的驱动器:
      file 日志消息写到指定的文件
      fifo,pipe 把日志消息写到指定的管道
      unix-stream 把日志消息发送到给定的SOCK_STREAM类型的UNIX套接字(Linux)
      unix-dgram 把日志消息发送到给定的SOCK_DGRAM类型的UNIX套接字(BSD)
      udp 把日志消息发送到指定主机的UDP端口
      TCP 把日志消息发送到指定主机的TCP端口
      usertty 如果用户登录,把日志发送到指定的终端
      program fork并启动指定的程序,把日志消息发送到这个进程的标准输出。
      两个日志消息源驱动器比较相似,都打开AF_UNIX类型的套接字,在套接字上监听日志消息。unix-stream()主要用在Linux,使用

      SOCK_STREAM参数,是面向连接的,不会造成日志消息的丢失;unix-dgram()用在BSD系统上,使用SOCK_DGRAM参数,是无连
      接的,如果系统过载,会造成日志消息丢失。

      日志路径

      前面的章节中,我们学习了如何定义消息源、过滤器和消息目的。现在我们要把这些结合起来形成一条完整的指令。凡是来源于指定的消息源,匹配所有指定的过滤器,并送到指定的地址。其语法如下:

      log { source(s1); source(s2); ...

      filter(f1); filter(f2); ...

      destination(d1); destination(d2); ... };

      实例

       source s_all {< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

      # message generated by Syslog-NG

      internal();

      # standard Linux log source (this is the default place for the syslog()

      # function to send logs to)

      unix-stream("/dev/log");

      # messages from the kernel

      file("/proc/kmsg" log_prefix("kernel: "));

      # use the following line if you want to receive remote UDP logging messages

      # (this is equivalent to the "-r" syslogd flag)

      # udp();

      udp(ip("0.0.0.0") port(514));

      };

      #===========================added  by Bill ============

      filter f_aqtas  { facility(local7);};

      filter f_aqvue  { facility(local6);};

      filter f_aqlyx  { facility(local5);};

      destination aqtas { file("/var/log/aqtas.log"); };

      destination aqvue { file("/var/log/aqvue.log"); };

      destination aqlyx { file("/var/log/aqlyx.log"); };

      log { source(s_all); filter (f_aqtas); destination(aqtas); };

      log { source(s_all); filter (f_aqvue); destination(aqvue); };

      log { source(s_all); filter (f_aqlyx); destination(aqlyx); };

      =======

      以上已经将主要的syslog-ng的配置内容做了说明,还有其他一些需要了解

       选项
      选项可以改变syslog-ng 的行为,语法如下:
      options { option1(params);option(params);.... }
       以下是syslog-ng支持的参数:
      名字 参数类型 描述
      time_reopen() 数字 一个断开的连接重新连接之前需要等待的时间
      time_reap() 数字 一个闲置的目标文件关闭之前需要等待的时间
      sync_freq() 数字 在写入文件之前,可以缓冲的日志消息行数
      mark_freq() 数字 目前尚未实现
      log_fifo_size() 数字 输出队列的行数
      chain_hostnames() yes/no 打开/关闭主机名链(用于日志转发)
      use_time_recvd() yes/no 使用收到日志消息的时间,不用日志消息中指定的时间
      use_dns()
      yes/no
      打开/关闭DNS查询功能。因为DNS查询无法返回会造成syslog-ng处于阻塞状态,从而造成拒绝服务攻击。为了避免这种情况的出现,应该使用防火墙严格保护使用syslog-ng的网络节点,并确认syslog-ng使用的所有主机都是可以解析的。
      use_fqdn() yes/no 使用完整的域名
      gc_idle_threshold() 数字 当syslog-ng空闲时,设置其进入垃圾信息收集状态的阀值。一旦分配的对象数达到了这个数字,syslog-ng就启动垃圾信息收集状态。默认值是1000。
      gc_busy_threshold() 数字 当syslog-ng忙时,设置其进入垃圾信息收集状态的阀值。一旦分配的对象数达到这个数字,syslog-ng就启动垃圾信息收集状态。默认值是3000。

      修改完 syslog-ng 之后要重启服务:

      # /etc/init.d/syslog-ng restart

      测试

      现在你日志一般是认证日志,所以你可以先尝试着打开一个新的登录窗口,使用su 或者是 sudo 都可以。接着检查 /var/log/auth.log 文件。在客户端上做一些操作,接着检查 /var/log/HOSTS 是否已经为远程客户端创建了新的目录。

      另外一个方法是使用更加高级的 logger 命令:

      # logger “this is a test”

      # logger -p auth.debug “this is a test”

      ==================补充:20110907

       1、facility
      facility定义日志消息的范围,其可使用的key有:
      引用
      auth -由 pam_pwdb 报告的认证活动。
      authpriv -包括特权信息如用户名在内的认证活动 
      cron -与 cron 和 at 有关的计划任务信息。 
      daemon -与 inetd 守护进程有关的后台进程信息。 
      kern -内核信息,首先通过 klogd 传递。 
      lpr -与打印服务有关的信息。 
      mail -与电子邮件有关的信息 
      mark - syslog内部功能用于生成时间戳 
      news -来自新闻服务器的信息 
      syslog -由 syslog 生成的信息 
      user -由用户程序生成的信息 
      uucp -由 uucp 生成的信息 
      local0-local7 -与自定义程序使用
      * 通配符代表除了 mark 以外的所有功能

      除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

      2、level级别
      level定义消息的紧急程度。按严重程度由高到低顺序排列为:
      引用
      emerg -该系统不可用,等同panic
      alert -需要立即被修改的条件 
      crit -阻止某些工具或子系统功能实现的错误条件 
      err -阻止工具或某些子系统部分功能实现的错误条件,等同error
      warning -预警信息,等同warn 
      notice -具有重要性的普通条件 
      info -提供信息的消息 
      debug -不包含函数条件或问题的其他信息 
      none -没有重要级,通常用于排错 
      * 所有级别,除了none

      其中,panic、error、warn均为旧的标识符,不再建议使用。

      在定义level级别的时候,需要注意两点:
      引用
      1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;
      2)低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。(除非使用=号定义)

      3、selector选择条件
      通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
      可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:
      引用
      * - 所有日志信息
      = - 等于,即仅包含本优先级的日志信息
      ! - 不等于,本优先级日志信息除外

    • 以上是

syslog-ng 学习

      的内容,更多

syslog学习ng

      的内容,请您使用右上方搜索功能获取相关信息。

syslog-ng 学习的更多相关文章

  1. Ngnice-国内ng学习网站

    今天给angular新手介绍一个国内开源的ng学习网站http://www.ngnice.com/这是由一批ng爱好者在雪狼大叔的带领下共同开发完成,致力于帮助更多的ng新人,他们分别是: ckken ...

  2. 国内ng学习网站

    Ngnice-国内ng学习网站2015-01-25 21:30 by 破狼, 534 阅读, 3 评论,收藏, 编辑 今天给angular新手介绍一个国内开源的ng学习网站http://www.ngn ...

  3. Linux中的syslog 入门学习教程

    syslog是linux系统中默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.程序.守护进程和内核提供了访问系统的日志信息.任何希望生成日志信息的程序都可以向sy ...

  4. Machine Learning(Andrew Ng)学习笔记

    1.监督学习(supervised learning)&非监督学习(unsupervised learning) 监督学习:处理具有若干属性且返回值不同的对象.分为回归型和分类型:回归型的返回 ...

  5. Linux System Reinforcement、Intrusion Detection Based On syslog

    目录 .文件系统及访问权限 . Linux Syslog . Linux日志审计 . 帐号安全管理 . 基础物理安全 . 系统编译环境安全 . 系统病毒.后门.rootkit安全 . 系统端口.服务安 ...

  6. Deap Learning (吴恩达) 第一章深度学习概论 学习笔记

    Deap Learning(Ng) 学习笔记 author: 相忠良(Zhong-Liang Xiang) start from: Sep. 8st, 2017 1 深度学习概论 打字太麻烦了,索性在 ...

  7. Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时

    概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...

  8. Centos系统各种日志存详解

    Centos系统各种日志存储路径和详细介绍 Linux常见的日志文件详述如下 1./var/log/boot.log(自检过程) 2./var/log/cron (crontab守护进程crond所派 ...

  9. Flume 相关

    在CentOS 7上安装配置Flume https://mos.meituan.com/library/41/how-to-install-flume-on-centos7/ Flume NG 学习笔 ...

随机推荐

  1. 关于JSON call 的一个小问题

    如图当我们在做Json call 的时候,一定要切记,建立的model 一定要与JSON 字符串严格的一一对应,否者会解析不出来

  2. springboot JPA

    JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简化现有的持久 ...

  3. ie9 form submit 请求参数问题替代办法

    //隐藏表单 <input id="hdPeriod" name="period" type="hidden" value=" ...

  4. vmware 中安装Ghost XP 版本心得

    安装是肯定是选择 ISO映像文件,第一次进入真能进入Ghost选择界面, 无论你第一次 进入的是pe 或 一键分区还是 ghost到C盘最后你再重启就总是让你按任意键或Ctrl+Alt+Del 自然想 ...

  5. Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embe

    Caused by: org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationEx ...

  6. SmartStore.Net、NopCommerce 全局异常处理、依赖注入、代码研究

    以下是本人最近对NopCommerce和SmartStore.net部分代码的研究和总结,主要集中于:依赖注入.异常处理.对象映射.系统缓存.日志这些方面,供大家参考. NOP 3.8 /// < ...

  7. 1.7Oob 方法体中的循环也能也能返回值给方法

    public String monthString(int monthNumber){ switch(monthNumber){ case 1: return "january"; ...

  8. nginx rate limit

    nginx rate limithttps://www.topjishu.com/12139.htmlhttps://blog.csdn.net/hellow__world/article/detai ...

  9. redis有序集合性能 列表、集合、有序集合

    https://www.cnblogs.com/pirlo21/p/7120935.html 1.1 列表 列表(list)类型是用来存储多个字符串,元素从左到右组成一个有序的集合.列表中的每个字符串 ...

  10. 应用docker化

    1)首先安装源代码工具Git.  [root@master~]# yum install-y git  2)从GitHub上下载示例的Java应用源代码.  [root@master~]# cd/op ...