最新
推荐
2014年高等教育信息化十大“关... 01-04 教育部成立教育信息化专家组 12-24
我国首次开展全国性教育信息化... 12-22 CERNET第二十一届学术年会 11-24
|
对于实际实施,建议日志主机采用Debian GNU/Linux 操作系统,日志守护程序采用rsyslog,网络监听端口开放在默认的 UDP 514。业界另一个比较流行的日志守护程序是syslog-ng。二者相比,rsyslog 具有 syslog-ng 的灵活性和模块化优点,同时更为轻量、高效,配置文件语法与类 UNIX 系统的传统 syslogd 兼容,是syslogd直接替代品,是最新版Debian 系统的默认日志守护程序。 收到远端日志后,rsyslogd 可利用其来源主机、级别、时间,甚至对内容作正则表达式匹配,进行分类、存储、过滤、内容改写,乃至触发调用脚本等丰富多样的处理,详情参见rsyslogd 的官方文档。 另外应注意设计适当的用户权限方案,将不同来源的日志数据的所有者和使用权限赋予不同用户。一个可行的方案是,对每一来源主机创建独立用户作为其日志数据的所有者,或者将所有来源主机分成几类,分别创建独立用户。另一个方案是,所有日志采用同一所有者,用户权限控制放在对外服务的网络文件系统上。 日志数据的增量备份可采用功能强大的 Rsync 程序,备份传输过程可采用压缩及加密方式。 原始数据层可对外提供读取服务,例如可对类 UNIX 系统提供 NFS 服务,对 Windows 用户提供 SAMBA 。二者都可在用户操作系统上映射为网络磁盘,方便操作。另外,对于 Linux 用户,还建议采用 sshfs 。sshfs 可通过ssh 将远端文件系统映射到本地目录,免除 NFS 的繁琐配置。对于需要抗网断的可靠连接,则可考虑文件系统的多路径方案(Multipath I/O)。 此层是集中式日志系统的数据基础,同时也足以独立提供基本而完备的日志服务系统。如果条件不成熟,可忽略之上的解析层、计算层及事件层,而仅在这一层上运行。 解析层 解析层如图3 所示。在原始数据层的基础上,可以进一步根据日志的不同类型,采用不同的日志解析器对日志进行语法和初级语义解析。例如系统日志的格式,一般包括时间戳、源主机名、产生日志的程序名、日志正文。这是所有遵照系统日志格式的设备系统的日志的固定格式。因此可以首先根据这一格式将这些固定信息提取出来。日志正文一般也有格式可循,但是不同程序会定义自己的一套格式,因此与程序强相关。对于流行的软件程序,例如 sshd 、apache 、mysql 等,其日志格式是共知的,因此也可以直接作语义分析。经过分析提取之后,日志数据被切成若干语义段,插入数据库中。由于日志条目内容不一,没有固定的字段,即便是同一程序产生的日志也并非每条日志都具有完全一样的格式,因此不太适合插入关系型数据库,我们建议采用文档型的非关系型数据库,比如时下流行的 Mongodb。
图3 解析层 在日志解析器编写方面,应注意到日志格式的特点是不同日志格式之间既有不同,也有相同之处,同一程序产生的不同日志格式之间甚至有继承关系。因此,为了高效灵活解析各类日志,编写各类解析器之时应注意模块化与对象化设计。可以针对一些流行软件的日志格式,相应开发解析器。正则表达式是处理文本的通用性与灵活性极高的工具,建议系统开发者编写一款通用的“解析母器”,以正则表达式为其格式语法描述语言,一般的系统管理员只需用正则表达式描述特定日志格式的字段,即可产生针对该特定日志格式的解析器。另外如果对函数式编程范式熟悉的人,可以利用所谓解析器组合子(Parser Combinator)作为日志格式描述语言。与正则表达式相比,解析器组合子表达更清晰简洁,更容易模块化设计。这类解析器以 Haskell 语言的 Parsec 最为著名,其他语言也有类似的函数库,如 Python 的 funcparserlib 、Java 的 Jparsec 等等,可根据熟悉何种编程语言选择。 日志经过解析器解析之后,插入数据库,然后再以全文索引工具对正文作索引,以便快速查询。日志格式由于没有固定字段,因此数据库建议采用诸如Mongodb 的文档型数据库,其数据表没有固定字段的限制,且具有极佳的线性扩展性,尤其适合海量数据的分布式存储。索引工具方面,Sphinx 搜索引擎具有非常高效的索引效率,在单台一般个人电脑上也可支持高达十亿条级别的海量数据。 解析层的数据输入可以来自本地硬盘,也可来自远端系统, 例如先通过 NFS、SAMBA 或者 Sshfs 挂载到本地文件系统,再如同本地磁盘一般作解析处理。而处理后的数据插入数据库后,数据库也可直接开放网络读取服务,或者直接将处理后的数据插入远端的数据库。换言之,此层的解析处理与数据的来源和去向是弱相关的,这为后面提到的分布式扩展,或其他灵活部署奠定了基础。 集中式日志系统到这一层,也构成完备的服务系统,此层如果对外开放服务,可对外提供格式化的具有语义的日志数据,第三方在此基础上可发展各类丰富的应用。 计算层 计算层如图4 所示。在经过解析后的格式化日志数据,乃至原始数据的基础上,进行分析统计计算,可以提取蕴含在海量数据中的信息。例如首先按日志来源主机、日志级别、产生时间、产生程序等进行分类统计,则可以对数据中心的整体运行状态与规模有个大概反映。再如,可分拣出错误(error)级别以上的日志,以辨知系统潜在的故障。再如,对登录程序,如 sshd 的日志,分拣统计失败尝试,可了解系统账户安全威胁。
图4 计算层
|
版权所有:中国教育和科研计算机网网络中心 CERNIC,CERNET,京ICP备15006448号-16,京网文[2017]10376-1180号
关于假冒中国教育网的声明 | 有任何问题与建议请联络:Webmaster@staff.cernet.com