我试图弄清楚其他人如何实现他们的日志管理系统。
我有 20-30 个 Linux 服务器和一些 Windows 机器(其中大部分是虚拟的)。我们使用大量 Perl 和 Bash 脚本来完成大部分自动化工作,我正在尝试标准化它们的日志记录。
我一直在寻找 log4perl 和 log4sh 来记录脚本,并使用 syslog-ng 来获取集中式日志服务器上的所有日志。我还阅读了 splunk,尽管听起来企业版非常昂贵,而且我可能会超过所有服务器的免费许可限制。
我见过其他工具,如 swatch 和 logcheck,但我不太确定所有这些部分如何组合在一起......任何建议将不胜感激!
我有几个应用程序和脚本,我想将输出重定向到自定义文件。
我使用这些应用程序启动
command | logger -t TAG
Run Code Online (Sandbox Code Playgroud)
我想根据它们的标签过滤这些消息并将它们重定向到不同的文件。我不想使用 bash 重定向,因为这些应用程序主要是长时间运行的进程并且需要适当的日志轮换。
我尝试在 /etc/rsyslog.d/60-myfilter.conf 中添加自定义过滤器;
if $syslogtag == 'giomanager' then /var/log/giomanager.log
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么 ?根据标签进行过滤的正确方法是什么,或者是否有更好的选择来获得类似的结果?
我有一个这样设置的规则;
在 /etc/sec/rules.d 我有;
type=SingleWithSuppress
ptype=regexp
pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*)
desc=Login Failure: $0
action=pipe '%s ' /bin/mail -s "login failure $2 to $3@$1" team@team.com
window=300
Run Code Online (Sandbox Code Playgroud)
因此,如果这是通过系统日志实现的;
Nov 21 11:24:10 servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins
Run Code Online (Sandbox Code Playgroud)
它应该根据模式匹配这个(它根据我的正则表达式编辑器匹配);
servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost= user=kloggins
Run Code Online (Sandbox Code Playgroud)
我们遇到了垃圾邮件问题,因为时间戳正在发生变化。所以我重写了模式以匹配主机名之后的所有内容。
但是,这似乎不起作用,每次用户“身份验证失败”时,我仍然会收到一封电子邮件。
我一直在使用以下内容进行测试;
logger -p syslog.err 'sshd[26846]: PAM 2 more authentication failures; …Run Code Online (Sandbox Code Playgroud) 我有一个脚本可以更新我的(Debian)服务器上内核日志的任何更改。
问题是,日志偶尔会包含如下几行:
last message repeated 4 times
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个缩短日志大小的功能- 但在这种情况下更喜欢记录消息的每个实例。
有没有办法关闭这个功能?
我希望能够在 syslogd 记录某些内容时收到电子邮件通知,例如err优先级或更高。假设这是一个与 BSD 兼容的系统日志守护进程。
我正在管理几个 tomcat 实例(大约 30-35 个)并寻找一些控制台来集中日志。我之前尝试过 php-syslog-ng(没有使用 tomcat),发现它很有用。我希望这些软件具有以下一些功能:
- 根据异常的严重性高亮语法。- 堆栈跟踪和嵌套异常的树视图。
加分点:
- 当某些模式匹配时报警。
我试图让 rsyslog 将所有日志发送到 2 个远程服务器,但如果第一个失败,rsyslog 似乎只发送到辅助服务器。
*.* @@server1
*.* @@server2
Run Code Online (Sandbox Code Playgroud)
如果我将上述内容放在 /etc/rsyslog.conf 中,只要 server1 启动,server2 就不会收到任何日志。无论如何,我如何告诉 rsyslog 发送到两台服务器?
此外,作为额外的奖励,如果远程服务器出现故障,我想使用 2 个不同的本地“缓冲区”文件进行本地存储。
我一直在努力寻找一个“好的”系统日志服务器来为我们构建的分布式系统提供集中的应用程序登录。我们的应用程序日志系统不仅可以记录到文件,还可以记录到系统日志服务器,我们希望利用此功能。以下会很好:
在 Linux/Unix 上有很多可用的解决方案,但在 Windows 上可用的解决方案很少。
我希望 syslog 在我的 linux 机器上以非 root 用户身份运行。这使得它不可能绑定到端口 514 - 因为这是一个特权端口。有什么办法可以授予非管理员用户“foo”侦听端口 514 的能力?
我有如下日志条目:
Apr 8 10:25:31 monitor postfix/smtpd[3131]: connect from localhost[127.0.0.1]
Apr 8 10:25:31 monitor postfix/smtpd[3131]: lost connection after CONNECT from localhost[127.0.0.1]
Apr 8 10:25:31 monitor postfix/smtpd[3131]: disconnect from localhost[127.0.0.1]
Run Code Online (Sandbox Code Playgroud)
在来自所有本地/远程节点(Debian Squeeze、Rsyslog 4.6.4、Postfix 2.7.1 都来自 repos)的中央 rsyslogd 日志监控框上每隔一分钟左右,我试图/etc/rsyslog.conf通过注释掉以下行来禁用信息消息:
#mail.info -/var/log/mail.info
Run Code Online (Sandbox Code Playgroud)
并添加一行
*.*;auth,authpriv.none,cron.none,mail.none -/var/log/syslog
Run Code Online (Sandbox Code Playgroud)
我认为这会禁用从 Postfix 到 的所有邮件日志记录/var/log/syslog,但这无济于事。我搜索了其他mail.info mail.debug条目,但没有,只有一个条目,例如:
mail.* -/var/log/mail.log
Run Code Online (Sandbox Code Playgroud)
我也已经注释掉了,但是我认为这不应该导致登录/var/log/syslog,不是吗?