因此,我配置了 Haproxy,因此日志记录将通过 rsyslog,并且现在全部转储到一个文件中。
它肯定会记录日志,因为我在启动时收到那些“开始”消息,但根本没有记录 HTTP 请求。我的配置有什么问题?
haproxy.cfg :
global
log /dev/log local0 debug
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend webfront
option forwardfor
stats enable
stats uri /haproxy?statis
stats …Run Code Online (Sandbox Code Playgroud) 您如何分析来自 UNIX/Linux 机器的日志文件?我们运行数百台服务器,它们都直接或通过 syslog 生成自己的日志文件。我正在寻找一个不错的解决方案来汇总这些并挑选出重要的事件。这个问题分为 3 个部分:
1) 消息传输
经典的方法是使用 syslog 将消息记录到远程主机。这对于登录到 syslog 的应用程序很有效,但对于写入本地文件的应用程序不太有用。解决方案可能包括让应用程序登录到连接到程序的 FIFO 以使用 syslog 发送消息,或者通过编写一些内容来 grep 本地文件并将输出发送到中央 syslog 主机。然而,如果我们不厌其烦地编写工具来将消息导入系统日志,我们是否会更好地用 Facebook 的Scribe 之类的东西来替换整个系统,它比系统日志提供更多的灵活性和可靠性?
2)消息聚合
日志条目似乎属于两种类型之一:每主机和每服务。Per-host 消息是发生在一台机器上的消息;考虑磁盘故障或可疑登录。Per-service 消息出现在大多数或所有运行服务的主机上。例如,我们想知道 Apache 何时发现 SSI 错误,但我们不希望 100 台机器出现相同的错误。在所有情况下,我们只希望看到每种类型的消息中的一个:我们不希望有 10 条消息说同一个磁盘发生故障,并且我们不希望每次遇到损坏的 SSI 时都收到一条消息。
解决此问题的一种方法是在每个主机上将多个相同类型的消息聚合为一个,将这些消息发送到中央服务器,然后将相同类型的消息聚合为一个整体事件。SER可以做到这一点,但使用起来很尴尬。即使经过几天的摆弄,我也只能进行基本的聚合,并且不得不不断查找 SER 用于关联事件的逻辑。这是强大但棘手的东西:我需要一些我的同事可以在最短的时间内拿起和使用的东西。SER 规则不符合该要求。
3) 生成警报
当有趣的事情发生时,我们如何告诉我们的管理员?邮寄群组收件箱?注入Nagios?
那么,你是如何解决这个问题的?我不指望盘子上有答案;我可以自己解决细节问题,但就什么是常见问题进行一些高层讨论会很棒。目前,我们正在使用 cron 作业、系统日志以及谁知道还有什么可以找到事件的大杂烩。这不是可扩展的、可维护的或灵活的,因此我们错过了很多我们不应该的东西。
更新:我们已经在使用 Nagios 进行监控,这对于检测到的主机/测试服务/等非常有用,但对于抓取日志文件不太有用。我知道 Nagios 有日志插件,但我对比每个主机警报更具可扩展性和层次性的东西感兴趣。
所有 IIS7 告诉我的是一个文件夹(即 C:\inetpub\logs\LogFiles),其中包含几个子文件夹。我怎么知道我应该查看哪个子文件夹/文件?这个文件夹/文件结构背后的逻辑是什么?
顺便提一句。附带问题:MS 是否提供任何具有漂亮 UI 的日志查看器?
随着时间的推移,我注意到一些日志,/var/log例如auth,kern并且messages变得越来越大。我logrotate为他们做了条目:
$ cat /etc/logrotate.d/auth.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/kern.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/messages
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
Run Code Online (Sandbox Code Playgroud)
我也compress启用了该选项:
$ grep compress /etc/logrotate.conf
# uncomment this if you want your log files compressed
compress
Run Code Online (Sandbox Code Playgroud)
这个伟大工程auth.log,kern.log和其他人,这意味着每个这些日志被gzip压缩和旋转,用日志的最近5天保留。/var/log/messages但是没有被压缩,导致日志超过 5 天:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100213
/var/log/messages-20100201 /var/log/messages-20100214
/var/log/messages-20100202 …Run Code Online (Sandbox Code Playgroud) 我很确定我受到了 Slowloris 的攻击。我设置了一个 iptables 规则来限制到我的网络服务器的最大连接数,但我想知道如何确定它是否真的是 Slowloris 攻击,如果是,我如何找到攻击者的 IP 地址。我真的很想将日志传递给他的 ISP。
谢谢
我假设这些是某种机器人,但想知道他们试图对我的服务器做什么。
登录问题如下,IP 地址已更改为原始地址。
12.34.56.78 - - [18/Oct/2012:16:48:20 +0100] "\x86L\xED\x0C\xB0\x01|\x80Z\xBF\x7F\xBE\xBE" 400 172 "-" "-"
12.34.56.78 - - [18/Oct/2012:16:50:28 +0100] "\x84K\x1D#Z\x99\xA0\xFA0\xDC\xC8_\xF3\xAB1\xE2\x86%4xZ\x04\xA3)\xBCN\x92r*\xAAN\x5CF\x94S\xE3\xAF\x96r]j\xAA\xC1Y_\xAE\xF0p\xE5\xBAQiz\x14\x9F\x92\x0C\xCC\x8Ed\x17N\x08\x05" 400 172 "-" "-"
12.34.56.78 - - [18/Oct/2012:16:58:32 +0100] "g\x82-\x9A\xB8\xF0\xFA\xF4\xAD8\xBA\x8FP\xAD\x0B0\xD3\xB2\xD2\x1D\xFF=\xAB\xDEC\xD5\xCB\x0B*Z^\x187\x9C\xB6\xA6V\xB8-D_\xFE" 400 172 "-" "-"
12.34.56.78 - - [18/Oct/2012:17:06:59 +0100] "\xA61[\xB5\x02*\xCA\xB6\xC6\xDB\x92#o.\xF4Kj'H\xFD>\x0E\x15\x0E\x90\xDF\xD0R>'\xB8A\xAF\xA3\x13\xB3c\xACI\xA0\xAA\xA7\x9C\xCE\xA3\x92\x85\xDA\xAD1\x08\x07\xFC\xBB\x0B\x95\xA8Z\xCA\xA1\xE0\x88\xAEP" 400 172 "-" "-"
12.34.56.78 - - [18/Oct/2012:17:13:53 +0100] "b\xC4\xA24Z\xA2\x95\xEFc\xAF\xF1\x93\xE8\x81\xFD\xB4\xDEo\x92\xC0v\x1Fe\xD8W\x85\xC7O\x9D\x8C\x89<" 400 172 "-" "-"
12.34.56.78 - - [19/Oct/2012:09:56:39 +0100] "\x93d\xD8\x85\xD3f\x182\x94\x10\xE6y\x06\x7F\xE5\x97\xA8S\x8AfZ\x84\x0C\x0F\xFD\x19d*+\x09%\xEC3EG\xDD:Tn\xDA" 400 172 "-" "-"
12.34.56.78 - - [19/Oct/2012:10:07:10 +0100] ">\x92\xD7\x85\xC2\x5C\xDA\x8CJX\xBE\x87\x01\xBA\x09\xADj\xEDT.\x02z\x0B\xCA\x00\xAC\xDC[_;q\xC15\x17\xE9\x0B\x9F\xDA;\xEC\xDA)\xB8\x91\xA2\xB5P\xE9\x81\xF2\xD5\xD3\xC4\xD3" 400 172 "-" "-"
12.34.56.78 - - [19/Oct/2012:10:09:53 +0100] "\x12\x9E>\xFC\xF4\x07,\x9A\xF5G\xB4\xD0\xD4\xF1\xCB9\x9FRl\xB0\xDB\x84a\x90\x7F{\xB1\xA3\xD9-5\xF8\x94~\xCEm\x87\xEC\xB4\xE2s\xBD\xDB@" 400 …Run Code Online (Sandbox Code Playgroud) 稍后如何查看引导 Debian 系统时滚动的消息?
换句话说,我怎样才能方便地查看所有这些内容?这是问题的重点;仅仅其中的一个子集是不够的。
一些启动时间消息仅写入/var/log/daemon.log和/var/log/syslog,我在其中看到了如下消息:udevd[240]: SYSFS{}= will be removed in a future udev version。
在挤压中,这些不在/var/log/dmesg. 它们也不是在/var/log/boot与设置BOOTLOGD_ENABLE=yes在/etc/default/bootlogd和包bootlogd安装。
有关rsyslogd各种日志记录位置的更多详细信息,请参阅您的/etc/rsyslog.conf.
使用 Nginx、Wordpress 和 Ubuntu 16。
我经常收到这些消息的轰炸 kern.log , syslog and ufw.log
Nov 28 21:02:28 kernel: [246817.450026] [UFW BLOCK] IN=eth0 OUT= MAC=xx.xx SRC=122.3.133.77 DST=xx.xx LEN=60 TOS=0x00 PREC=0x00 TTL=53 ID=22334 DF PROTO=TCP SPT=45750 DPT=23 WINDOW=5808 RES=0x00 SYN URGP=0
Nov 28 21:02:31 kernel: [246820.443191] [UFW BLOCK] IN=eth0 OUT= MAC=xx.xx SRC=122.3.133.77 DST=xx.xx LEN=60 TOS=0x00 PREC=0x00 TTL=53 ID=22335 DF PROTO=TCP SPT=45750 DPT=23 WINDOW=5808 RES=0x00 SYN URGP=0
Nov 28 21:02:33 kernel: [246822.448520] [UFW BLOCK] IN=eth0 OUT= MAC=xx.xx SRC=195.154.181.110 DST=xx.xx LEN=40 TOS=0x00 PREC=0x00 TTL=246 ID=6401 PROTO=TCP SPT=52845 …Run Code Online (Sandbox Code Playgroud) 我有一台电源按钮有问题的服务器,它喜欢自行重启。通常会有警告信号,比如 /var/log 中的 acpid 日志文件开始发送垃圾邮件大约 10 小时左右。
有没有一种简单的方法可以让我监视 acpid 日志并在有新活动时给我发送电子邮件?
我不会认为自己非常先进,因此您可能拥有完成此类事情的任何“指南”都将非常有帮助并且非常感谢。谢谢!
我想实现 nginx 日志的轮换:
最好的方法是像 PostgreSQL 那样的东西——即在它的 log_filename 配置变量中,我可以指定 strftime-style %Y-%m-%d,它会在日期(或时间)更改时自动更改日志。
来自 apache 的另一种方法 - 通过管道将日志发送到 rotatelogs 程序。
据我所能搜索 - 不存在这样的方法。我所能做的就是将 logrotate 与 dateext 选项一起使用,但它有自己的一组缺点,我宁愿使用类似 |rotatelogs 或 log_filename 在 PostgreSQL 中的东西。