2012-02-17 163 views
0

一个非常普遍的问题;在程序员的背景下,考虑流程(程序)的操作方面。系统日志 - 日志行分类

是否有任何形式的最佳实践/指南来分类消息,特别是在SaaS /多租户(服务器)软件环境中,由于用户操作或配置错误会产生错误和警告。由于软件的性质,我不得不面对的大多数模块都是无状态的;即当由于用户错误而发生错误时,很难区分该错误和操作错误(如网络错误配置等)。

我想知道的是一些你有经验的人;在这里采用合理的逻辑是什么?为了让男孩/女孩能够轻松分类这些信息并发现问题?

+0

堆栈交换网络上不允许交叉发布:http://meta.stackexchange.com/q/64068/85514也许您应该删除其中一个问题? – 2012-02-17 12:41:00

回答

2

从管理员只需三个方面和日志分析/分类的角度:

  • 做标记字段/节目名称配置。然后,可以配置多个实例以使用日志标记,如app/user_1app/user_2等,以便在系统日志级别上实现快速且简单的过滤器。
  • 将消息从左向右排列,因此可以使用简单搜索模式或正则表达式筛选不同类别的日志行。例如。 config error - cannot parse line 123runtime warning - lost connection to DB xyz
  • 对于非常结构化的日志,您可能还需要查看'structured data' field in syslog-protocol。到目前为止,它很少使用,没有工具支持,但它允许使用名称空间和非常明确的键值属性的应用程序日志消息。
+0

感谢您的指点;特别是结构化数据;任何想法如何通过[syslog()](http://linux.die.net/man/3/syslog)函数传递数据 – 2012-02-17 14:28:32

+0

只需将其与syslog(LOG_NOTICE,“%s “,”[exampleSDID @ 32473 ...]可能接着是免费短信“)' - 仅AFAIK NetBSD有一个库函数[syslogp(3)](http://netbsd.gw.com/cgi-bin/ man-cgi?syslogp ++ NetBSD-current)for syslog-protocol,但这是非常实验性的,并且在其他任何地方都不可用(即在生产中不可用)。 – mschuett 2012-02-17 16:12:45

0
  • 识别服务器和服务器类型(名称,IP地址等)
  • 分类按严重程度,确保所有的时钟都同步为了 有正确排序的消息。
  • 放置一条消息/错误代码以在您的监视工具中过滤/创建一些规则。
  • 将一个模块(如果使用的一台服务器上几个模块)
  • 将解决像网络一般服务类别等

我想你将会从不同的机器上登录他们的系统日志deamon到负责监督/监督的中央机器。

0

大多数* nix使用半标准格式“Month Day 24H-Time host process_name [pid]:message”将日志处理记录到系统日志(或至少应该)。系统日志包含指示消息严重程度的方式,使用它们(但请记住严重程度来自系统的预期而非应用程序)。

如果消息是一个调试问题,那么它通常是“Function_Name File_Name Line_No Error_Code Error_Desc”;否则消息的格式完全取决于程序。

对于多租户系统而言,“消息”部分以某种形式的租户标识开头,后面跟着实际的日志消息是很常见的。