默认的NGINX格式是这样的: log_format combined '$remote_addr – $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; 这有点难以parsing。 我恐怕人们注入"在请求,引荐者或用户代理。 我曾考虑过使用分隔符,并使用我自己的格式,使用|P-,| 作为分隔符: log_format parsable '$status |P-,| $time_iso8601 |P-,| $http_host |P-,| $bytes_sent |P-,| $http_user_agent |P-,| $http_referer |P-,| $request_time |P-,| $request'; 但是,没有什么能阻止用户注入|P-,| 纳入他们的请求,推荐人或用户代理。 我读了这篇关于ASCII分隔文本的文章: https : //ronaldduncan.wordpress.com/2009/10/31/text-file-formats-ascii-delimited-text-not-csv-or-tab-delimited-text/ 我认为这可以用来解决这个问题,但是用户也可以在他们的数据中注入ASCII分隔符。 有没有最好的方法来解决这个问题?
员工被解雇,做愚蠢的事情(比如偷看色情网站),在IM和电子邮件中谈论个人攻击性/暗示性主题。 作为IT经理,我负责locking用户帐户,更改密码,编辑IM和电子邮件摘要以供pipe理。 不要误解我的意思,我没有在每台机器上都安装显示器。 我通常由pipe理层触发来执行这些任务,因为我没有足够的时间(没有足够的时间通过浏览器caching或历史logging来浪费时间)。 我有时会因为被要求去做或find的东西而感到ra or不安,甚至不得不去报告和采取行动。 你如何处理?
我看到一些奇怪的行为在CoreOS的Docker容器中运行tail -f命令。 我可以想到的一些变数可能会导致这个问题,但我不确定我需要做什么来排除故障。 在CoreOS上,我正在运行带有overlayfs支持的最新版本,以及更新版本的Docker(1.4.1)。 有趣的是,我能够在运行不同版本的Docker(1.3)的不同主机操作系统(Ubuntu 14.04)上成功挂载日志。 我可以生成strace日志,如果这有助于排除故障,他们似乎是不同主机之间的显着不同。 例如,在不工作的主机上,在strace输出中读入以下内容后,停止strace: 04:03:03 inotify_add_watch(4, "f017f0a1-a1e9-11e4-90bc-027e0f87cac6-paster.log", IN_MODIFY|IN_ATTRIB|IN_DELETE_SELF|IN_MOVE_SELF) = 1 <0.000028> 04:03:03 fstat(3, {st_mode=S_IFREG|0644, st_size=12229, …}) = 0 <0.000022> 04:03:03 read(4, 0x7711f0, 64) = ? ERESTARTSYS (To be restarted if SA_RESTART is set) <3.101545> 我只是不太熟悉strace,非常善于解释结果。
我的环境具有通过多个系统的用户请求: [客户端] – > [ELB] —> [nginx] – > [网页] (ELB = AWS Elastic Load Balancer) 感谢这个答案 ,我有nginx确定并通过X-Forwarded-For和X-Real_IP头将正确的客户端IP地址传递给上游服务器(web)。 相关的nginxconfiguration: real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; 我的问题是,nginx中的真实IP模块用其X-Forwarded-For计算结果replace现有的$remote_addrvariables。 这给了我最初的客户端IP,但是我正在丢失实际发送请求到代理(即ELB)的系统的IP地址。 总的来说,拥有客户端IP对我来说更为重要,但是我希望能够logging完整的请求链,以便我能够理解(并debugging)stream量是如何stream动的。 目前,我只能有nginxlogin客户端IP,自己的IP,以及上游服务器IP。 我希望能够loginELB IP。 我看到X-Istence在2013年问了同样的问题 ,运气不多。 从那以后有什么改变或改进?
目前,我的组织拥有一个由10个以上组件组成的解决scheme,其中一些每个线程都有一个日志文件。 由于文件每小时旋转,跟踪所有这一切是一件苦差事。 集中所有日志logging到特定的机器(使用rsyslog或类似的东西)是一个好主意? 我不会为了忙碌而交易简单吗? 这个高容量的用例有很好的日志查看器吗? 顺便说一下,我们是一家直销微软的商店。 感谢您的回复!
对于生产分区的MongoDB安装,我们需要3个configuration服务器。 根据文档“configuration服务器mongod进程相当轻量级,可以在执行其他工作的机器上运行”。 但是,在默认configuration中,它们都启用了日志logging,并且预分配占用了3 GB的磁盘空间。 我认为一个configuration服务器的实际数据和交易量是相当小的,所以这似乎有点太多了。 有没有一种方法(安全地)运行这些configuration服务器与日志的磁盘使用less得多? 我需要configuration服务器上的所有日志吗? 我可以设置日志大小更小吗?
有人问我“我们的应用程序应该保留多久”,我的回答是“直到磁盘满了”,因为除了空间不足之外,没有理由把它们扔掉。 然而,标准的logrotate希望我们指定一个特定的周期+旋转次数。 有没有类似的东西让我们说:“每天轮换,并保持尽可能多的历史,直到只有5%的空间自由”? 该平台是Redhat Linux。
我很惊讶,我现在已经看不到这个网站上的任何答案,也没有在MySQL文档中看到( 5.2节似乎已经logging在其他文档中)。 如果启用二进制日志,我会看到一个小的性能问题(主观上),这是预期的一点额外的IO – 但是当我启用一个普通的查询日志,我看到巨大的性能影响(运行查询的时间增加了一倍,或者更糟糕),超出了我用binlogs看到的方式。 当然,我现在正在logging每个SELECT以及每个UPDATE / INSERT,但是,其他的守护进程logging他们的每个请求(Apache,Exim)而不停顿。 我刚刚看到IO接近性能“转折点”的效果,或者是否有根本上困难的日志查询导致这种情况发生? 我希望能够logging所有的查询,使开发更容易,但我不能certificate这种硬件感觉就像我们需要通过一般的查询login来获得性能。 我当然会logging缓慢的查询,如果我禁用这个,一般用法的改进是微不足道的。 (所有这些都在Ubuntu 10.04 LTS,MySQLd 5.1.49上,但研究表明这是一个相当普遍的问题)
我想了解过去几天PC使用的一切可能性。 就像谁login一样,电脑被locking了多长时间,以及有关PC上login的用户活动的其他信息。 我知道最后的命令可以用来找出谁login了多久。 任何其他可以被发现的信息。
用tail –f监视apache日志往往让人非常沮丧。 是否有任何工具/选项着色日志输出? 也许用红色等信号致命