AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 771673
Accepted
Bamse
Bamse
Asked: 2016-04-21 02:45:43 +0800 CST2016-04-21 02:45:43 +0800 CST 2016-04-21 02:45:43 +0800 CST

转发特定日志 rsyslog

  • 772

TL;DR - 使用 rsyslog 发送特定日志(到 redis 服务器):如何选择要发送的日志?

我想向 redis 服务器转发一组(并且只有那组)日志,例如 nginx logs in /var/log/nginx/*.log。为此,我正在考虑使用 rsyslog工具(在我的示例中为 local7)。然而 :

  • 我不能只处理local7.*到 redis 服务器的日志:我收到了系统的所有日志(auth、authpriv、cron、local7 等)
  • 我无法处理一个目录的所有日志(例如:/var/log/nginx/*.log不会工作但/var/log/nginx/some-access.log会通过rsyslog发送到我的redis服务器。那么如何获取一个目录的所有日志?)

配置使用了三个模块,并以这种方式将日志从 local7 发送到我的 redis 服务器:

local7.* @redis_ip:port
$ModLoad imuxsock # provides support for local system logging
$ModLoad omhiredis # support for sending to Redis
$ModLoad imfile # For tailing files

另外两个代码块是我遇到的配置 rsyslog 的两种不同方法。

配置1(人们建议的常见配置):

$InputFileName /var/log/nginx/*.log
$InputFileTag nginx
$InputFileFacility local7
$InputRunFileMonitor

配置 2(不同的语法 - 我在 rsyslog 版本 8.16.0 的文档中找到的那个):

input(
  type="imfile"
  File="/var/log/nginx/*.log"
  Tag="nginx:"
  Facility="local7"
)

输出到 redis :

action(
  name="rsyslog_redis"
  type="omhiredis"
  mode="queue"
  key="rsyslog_redis_key"
  template="jsonlines"  # use a JSON template defined below
)
  • Rsyslog 8.16.0,使用模块 omhiredis 从源构建(用于输出到 Redis)
  • Debian 8

笔记

例如,如果我只是删除配置 1 或配置 2 并使用authpriv.* @redis_ip:port,我仍然会获取所有日志(因此来自设施syslog、cron、auth、authpriv 等的日志)就好像 authpriv.* inauthpriv.* @redis_ip:port对 rsyslog 没有影响一样。

我从/usr/local/sbin/rsyslog -f /etc/rsyslog.confrsyslog 开始并使用选项 -N1 检查它说它是正确的。

我检查过的问题对我没有任何改变:

  • 如何使用 rsyslog 将 /var/log 之外的特定日志文件转发到远程服务器?
  • (rsyslog) 仅转发特定日志
logging rsyslog
  • 1 1 个回答
  • 3325 Views

1 个回答

  • Voted
  1. Best Answer
    Bamse
    2016-04-22T00:55:34+08:002016-04-22T00:55:34+08:00

    由于我终于得到了一些工作,并且可能我知道我的错误在哪里,这里是我自己问题的答案:

    $ModLoad imuxsock # provides support for local system logging
    $ModLoad omhiredis # support for sending to Redis
    $ModLoad imfile # For tailing files
    
    if $syslogtag == "nginx:" then {
      action(
        name="rsyslog_redis"
        server="redis_ip"
        port="redis_port"
        type="omhiredis"
        mode="queue"
        key="rsyslog_redis" # we need the same key in Logstash's config
        template="jsonlines"  # use the JSON template defined below
      )
    }
    
    input(
      type="imfile"
      File="/var/log/nginx/access.log"
      Tag="nginx:"
    )
    

    允许我发送 nginx access.log 并且只发送那些到我的 redis 服务器。

    我的错误来自不受if 语句限制的块操作(..) 。因此,它正在发送所有日志。authpriv.* @redis_ip:port这解释了我在哪里不会改变任何东西的问题中的第一个注释。

    答案: action(..) 将发送日志,即使其中没​​有定义服务器,所以用 if 语句将其包围以选择转发哪些日志。

    注意:我没有将模板“jsonlines”添加到配置中,因为人们可以很容易地在互联网上找到它,而且这里会占用一些不必要的空间。

    • 0

相关问题

  • IIS 6 - 仅记录某些目录

  • 什么是好的日志查看器,例如 apache、postfix、syslog?

  • 如何提供可搜索的 IRC 日志?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

  • Tomcat 6 HTTP 日志滚动和清除

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve