jjzjj

Linux 服务 | rsyslog

路漫漫 其修远 2023-03-28 原文

rsyslog 是实现日志功能的服务,用来采集日志信息。

主配置文件/etc/rsyslog.conf中,可以设置日志的处理方式。


MODULES

  • 默认开启的两个 imuxsock、imjournal

  • imuxsock 提供对本地系统日志记录的支持

  • imjournal 提供对systemd日志的访问

  • imudp 提供 UDP 方式系统日志接收

  • imtcp 提供 TCP 方式系统日志接收


RULES

  • 规则设置的格式是filter action

  • filter过滤后的日志,送到action处理

  • 多个 rule 用分号隔开*.info;mail.none

过滤器 filter

  • 基于设施.优先级的过滤器。例:kern.* /dev/console

    • kern是产生日志的设施,*是日志优先级

    • 设施类型(facility)
      kern 内核信息
      user 用户程序产生的相关信息
      mail 邮件系统信息
      daemon 守护进程产生的信息
      auth pam认证系统信息
      syslog 日志系统自身信息
      authpriv ssh、ftp等登录信息
      cron 系统执行定时任务产生的信息
      lpr 打印相关信息
      mark 服务内部的信息,时间标识
      uucp Unix-to-Unix Copy 两个unix之间的相关通信
      local0-local7 保留,本地使用

      • 多个设施用,隔开

      • *表示所有设施

    • 日志优先级(priority)

      • debug (7) , info (6) , notice (5) , warning (4) , err (3) , crit (2) , alert (1) , emerg (0)

      • none会记录没有指定级别的信息

      • *记录所有级别信息

      • 多个级别用,隔开

    • 记录日志内容的设置
      . 等级高于符号后面的信息会记录
      .= 只有符号后面等级的信息会记录
      .! 除了符号后面等级,其他的都会记录(注意前面需要先有其他过滤规则,否则什么不记录)

  • 基于属性的过滤器。例:msg, contains, "error"

    • :msg是要比较的日志属性,contains是要执行的比较操作,"error"是比较的值

    • 比较操作

      • contains 匹配提供的字符串值是否是属性的一部分,如果不区分大小写,使用contains_i
      • isequal 比较属性和值是否相等
      • startswith 属性是否以指定字符串开始(startswith_i)
      • regex 正则表达式(POSIX BRE 基本正则)匹配
      • ereregex 正则表达式(POSIX ERE 扩展正则)匹配
      • isempty 判断属性是否为空,不需要 value
  • 基于表达式的过滤器

    • 使用了 rsyslog 自定义的脚本语言RainerScript构建复杂的 filter。

执行操作 action

多个 action 用&连接

action 后面加;模板名可以使用模板格式化日志

  • 日志保存到日志文件。例cron.* /var/log/cron.log

    • 表示所有 cron 执行的日志都放在 cron.log 中

    • 通常生成日志时会同步到日志文件。前面加-则忽略同步

    • 可以动态生成日志文件,用预定义输出路径模板,并在文件名前加?

  • 通过网络发送日志信息

    *.* @192.168.0.1        # 使用 UDP 发送,默认端口514
    
    *.* @@example.com:18    # 使用 TCP 发送到端口18, 默认10514
    
    *.* @(z9)[2001:db8::1]  # UDP, ipv6,使用zlib级别9压缩
    
    • @表示用 UTP 协议发送

    • @@表示用 TCP 协议发送

    • z9表示用 zlib 压缩日志级别,可设置 1-9。可以不设置压缩

  • 丢弃日志,例cron.* ~

    • 使用~

模板 template

所有系统日志都可以用指定模板进行格式化

  • 创建模板

    $template TEMPLATE_NAME,"text %PROPERTY% more text", [OPTION]

    • TEMPLATE_NAME为模板名称

    • "text %PROPERTY% more text"为模板内容

    • OPTION为模板功能,可设置sqlstdsql,数据库存储时用到

  • 生成动态文件名

    $template DynamicFile,"/var/log/test_logs/%timegenerated%-test.log"
    *.* ?DynamicFile
    
    • timegenerated属性从日志信息中提取出信息时间戳
  • 属性

    • 属性放在两个%之间,可以取得日志信息中的内容。

    • 可用的属性列表man rsyslog.conf


服务确认

  • 修改配置后重启服务

    systemctl restart rsyslog.service

  • 写入测试 log

    logger -p syslog.info -t test "this is a test log."

  • 在系统日志文件/var/log/messages中确认写入的测试 log



rsyslog 能满足几乎所有的日志处理。

以后有用到其他内容再来补充

有关Linux 服务 | rsyslog的更多相关文章

  1. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  2. ruby - 具有身份验证的私有(private) Ruby Gem 服务器 - 2

    我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..

  3. ruby-on-rails - 启动 Rails 服务器时 ImageMagick 的警告 - 2

    最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru

  4. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  5. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  6. ruby-on-rails - 在 Rails 中调试生产服务器 - 2

    您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除

  7. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  8. ruby - Rails 开发服务器、PDFKit 和多线程 - 2

    我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它:

  9. ruby - Dropbox 类似 git 的服务——没有 rsync 和 inotify - 2

    关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec

  10. ruby TFTP 服务器 - 2

    我将以下代码放在一起用于一个简单的RubyTFTP服务器。它工作正常,因为它监听端口69并且我的TFTP客户端连接到它,我能够将数据包写入test.txt,但我不只是写入数据包,我希望能够从我的客户端通过TFTP传输文件到/temp目录。预先感谢您的帮助!require'socket.so'classTFTPServerdefinitialize(port)@port=portenddefstart@socket=UDPSocket.new@socket.bind('',@port)whiletruepacket=@socket.recvfrom(1024)putspacketFile

随机推荐