引用 转载 请注明出处
1969年夏天的贝尔实验室,Ken 和Dennis那个举动引起的蝴蝶效应是如此巨大。他们催生了伟大开源系统UNIX,此后各种开源应运而生。日志管理系统是开源历史伟大的分支。而今天总有那些以开源为名,做着违背开源价值事情。整理遇到的开源日志管理软件记录下来,助大家少踩坑。
日志是系统监控和分析重要数据来源。大部分软件日志是系统运维和监控的唯一来源。那么,开源软件中有哪些提升日志管理软件和项目哪些?又有哪些重量级的产品哪?本文会解决以上问题。
日志包括系统日志、应用程序日志和安全日志。每条日志都记载着时间戳、主机名、使用者及操作行为等相关的描述,系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,及时分析问题、追查错误根源。
网上一个有意思的日志管理图。 与2004年比起来,2014年日志统一采集和管理大幅提升了用户的好感度。那么,好感度从哪里来哪?现在日志管理有哪些构成的哪?一个成熟日志管理系统用于支持运维和系统诊断包括如下功能:
用户管理 访问权限
通知-告警-邮件
配置管理
日志缓存
数据库管理
日志管理是日志接入、处理、存储和可视化的过程。如日志数据流程图每个过程都涉及到一些开源软件,下面分别说明。
1. 数据接入
数据接入也是数据采集。采集源包括系统日志、应用日志、移动App日志等。
采集是对日志进行过滤、转换、聚合、分析、路由、缓存过程,完成采集后非结构化日志变成结构化数据,用于持久化和数据可视化,用于支持运维和故障诊断等。
采集方式分为:
侵入式日志采集。它的优点和缺点都很明显。采集逻辑植入到源代码中,因为不是一种普适的采集行为。系统若属于简单、单一的服务系统,这是个选择。采集逻辑根据业务定制化,后续日志处理流程简化,和减少网络或磁盘IO。
非侵入式采集。 从使用场景和解决方案都是更通用。开源日志管理系统都是基于该方案实施和部署。
我们列举的软件都是和应用无关。也就是使用非侵入式采集。数据采集现今发展很蓬勃,下文列举热门又好用的采集工具。
logstash 是大名鼎鼎的ELK三剑客之一的L。生态构建非常好,积累大量用户,社区也非常活跃,新特征和插件可选择性很多。
Filebeat 是logstash轻量级版本。虽非孪生,但是部署方便、性能优化、资源消耗少,而且处理后的数据,可以输出到logstash。存储层也可以是redis或者kafka。
flume-ng 随着流处理崛起,它还会更好。
fluentd 采集层输出格式化(json)数据,便于后续环境使用,而且保持了不错的性能。
上述软件满足了采集层的基本功能,仅列举特色功能。
2. 数据可视化BI工具
商业化的BI呈现和分析工具在大数据时代大行其道。在开源领域也有一股清流,为我们BI探索提供实用化实践机会。它是日志管理系统和用户沟通的桥梁,当前又有哪些优秀的开源可视化工具哪?
整理出来可视化工具对比:
superset apache的顶级开源项目,功能强大的可视化工具。随处于孵化节点,依然吸引大批粉丝。一旦毕业后,可预见会非常流行。
redash 社区版本功能依然很强大,企业商业会需要付费。
metabase 即使非技术人员也有很好的用户体验。
kibana ELK三件套之一。广泛的应用场景。
grafana 如果数据源是关系数据库,grafana 是很好支持场景。
值得庆幸的是,大量的开源数据可视化工具能够从空间和表格中获取到独特数据,并通过使用高级图形和图表向用户呈现信息。让数据分析变得容易,用户更专注数据分析和挖掘层面。
3. 全功能日志管理工具
上文从数据采集和数据可视化2个角度对比开源的工具集合。构建日志管理系统需要选型,全功能日志管理工具帮助我们解决选项的难题。我们称它是日志管理工具界的泥石流
。让我们看看都包括哪些?
ELK 日志管理任谁也绕不过它。我们只需要根据需要,增加和修改部分组件就可以满足功能。
flume-ng + kafka + storm 分布式存储+ 实时性流处理 满足大部分用户需求。
skyEye 相对小众的全功能工具。 支持不同类型的存储
srcibe fb开源的部署灵活的分布式处理系统
chukwa 优点在于计算
后记
日志管理随不同业务需求工具会不同,文中涉及开源软件解决大部分日志管理系统的需求场景。