本文概述
- Graylog
- Logstash
- Fluted
- Flume
- Octopussy
- LOGalyze
- LogPacker
- LogWatch
- Syslog-ng
- lnav
就像安全性一样, 日志记录是Web应用程序(或一般应用程序)的另一个关键组件, 由于过时的习惯和无法向前看而被搁置了。许多人认为无用的数字磁带包装是强大的工具, 可以在你的应用程序内部查看, 纠正错误, 改善薄弱环节并吸引客户。
在开始集中式日志记录之前, 让我们首先了解为什么日志记录如此重要。
两种类型(级别)的日志记录
计算机是确定性系统, 除非不是。
作为一名专业开发人员, 我遇到过许多情况, 观察到的应用程序行为困扰了所有人数天, 但关键始终在日志中。我们运行的每个软件都会生成(或至少应该生成)日志, 这些日志告诉我们在出现问题情况时正在经历什么。
现在, 如我所见, 日志记录有两种类型:自动生成的日志和程序员生成的日志。请注意, 这与教科书没有任何区别, 引用此术语会给你带来麻烦。 ????
文章图片
【10个用于集中式日志记录的开源日志收集器】上图显示了可以称为自动生成的日志的内容。
在这种情况下, 这是一个WordPress系统, 在运行某些PHP代码时会记录意外情况(通知)。像MySQL这样的数据库工具, 像Apache这样的Web服务器, 编程语言和环境, 移动设备甚至是操作系统, 这些日志一直在不停地生成。
它们很少包含太多的价值, 并且程序员甚至不必费神去研究它们, 除非出现问题。在这样的时刻, 他们深入挖掘了日志, 试图了解出了什么问题。
但是自动生成的日志只能提供很大帮助。例如, 如果几个人拥有对该站点的管理员访问权限, 而其中一个恰巧删除了一条必不可少的信息, 则无法使用自动生成的日志来检测出罪魁祸首。从作为应用程序捆绑在一起的系统的角度来看, 这只是工作的另一天-某人拥有执行任务所需的权限, 因此系统执行了该任务。
这里需要的是附加的一层明确的, 广泛的日志记录, 该记录为事物的人性方面创建了线索。这些就是我所说的程序员生成的日志, 它们构成了银行等敏感行业的骨干。这是一个这样的日志记录方案的示例:
文章图片
伐木就是力量
因此, 鉴于系统中的两种日志类型, 下面介绍了如何利用它们并扩大影响。
领先于客户
“ 客户满意” 已被称为无用的营销头, 但是由于记录的原因, 它可以变得非常真实。我知道数字产品像鹰一样监视着他们的日志, 一旦客户破坏了页面上的某些内容, 他们便可以致电客户并提供帮助。
文章图片
试想一下-在收到一个丑陋的错误的几秒钟内, 你会接到公司打来的电话, 说:” 嘿, 我知道你正在尝试将此商品添加到购物车中, 但它一直在消失。我可以添加这个时间并为你完成订单吗?”
高兴的顾客?你打赌!
团队士气和生产力
就像我之前说过的那样, 当长时间跟踪错误时, 你团队中的开发人员会感到沮丧, 并浪费越来越多的时间来追逐自己的尾巴。这就是调试的事情-从一开始就需要一个崭新的, 好奇的头脑。如果WTF的想法已经进入你的大脑, 那么整个过程就会一团糟。
文章图片
什么使调试变得困难?以我的经验, 缺少日志记录或缺少日志记录知识。首先, 你可能没有意识到自己喜欢的数据库也是生成日志的另一软件, 或者你没有在应用程序中进行大量日志记录(请参见上面的程序员生成的日志)。
我特别记得一种情况, 其中应用程序无响应, 没人知道原因。几天后, 罪魁祸首是由于流量过大而达到磁盘I / O限制。因为没有人去看那里, 所以没人能弄清楚为什么。
审计跟踪
如果两年后你的客户说所有这些订单不是由他们而是由黑客下达的, 该怎么办?
要接受或拒绝他们的请求, 有哪些论点?如果你拥有广泛的日志记录(IP地址, 日期和时间, 信用卡等), 则可以分析所有内容并做出决定。好的或坏的, 至少要有一些客观的基础, 而不是像在黑暗中拍摄。
文章图片
如果你受某些法规的约束或作为新的重要项目的一部分需要进行第三方审核, 则同样如此。没有强大的日志记录系统将使你感到不舒服。
改善现有系统
你如何去改进当前的系统?
你是否应该仅向其抛出更多的RAM和CPU线程?如果资源充足, 你的应用仍然运行缓慢怎么办?瓶颈在哪里?日志记录常常是答案。
例如, 所有主要的数据库系统都具有记录慢查询的功能。
文章图片
如果你定期访问慢查询日志, 则将了解哪些操作花费最多的时间, 从而发现需要工作的小而重要的区域。通常, 像这样的小的更改比使硬件容量增加一倍更好。
好的日志记录系统可以为你提供多少帮助。也许最好的论据是, 这是一项自动活动, 一旦建立, 就不需要任何监控, 并且可以避免你有一天陷入困境。
顺便说一句, 让我们看看其中一些令人惊叹的” 开源日志收集器” (统一的日志记录工具)。以防万一, 你在前面的文章中确实介绍了基于商业云的日志记录工具。
Graylog 在工业级日志记录和可视化功能方面, Graylog是业内领先的公司之一。它的独特之处还在于它会扫描你收集的日志中是否存在安全漏洞迹象, 并立即通知你。
虽然Graylog是集中式日志记录系统, 但它具有所需的灵活性, 可让你自定义警报, 仪表板等。
文章图片
Greylog是开源的, 但是如果你的需求很复杂, 则有一项企业计划。
在拥有SAP, Cisco和LinkedIn等客户的情况下, Graylog是你值得信赖的工具。
Logstash 如果你是Elastic堆栈的粉丝或用户, 那么Logstash值得一试(如果你不知道, ELK堆栈已经是一件事情了)。像此列表中的其他日志记录工具一样, Logstash如果是完全开源的, 则使你可以自由部署和使用所需的自由。
文章图片
但是请不要误解:Logstash是一门母舰, 其功能远远超过任何不起眼的日志记录工具。它能够从多个平台收集大量数据, 使你能够定义和执行自己的数据管道, 了解非结构化日志转储等等。
当然, 唯一的限制是它只能与Elastic产品套件一起使用, 但是如果你要开始并打算很快进行扩展, 则Logstash是必经之路!
Fluted 在用作数据摄取中间层的集中式日志记录工具中, Fluted处于首位。凭借出色的插件库, Fluentd能够从几乎任何生产系统中捕获数据, 将其揉合到所需的结构中, 构建自定义管道, 并将其提供给你喜欢的MongoDB或Elasticsearch分析平台。
文章图片
Fluentd建立在Ruby之上, 是完全开源的, 并且由于其灵活性和模块化而广受欢迎。
微软, Atlassian和Twilio等主要公司都在使用该平台, 因此Fluentd没有什么可证明的。 ????
Flume 如果确实要面对非常大的数据集, 并且最终希望将所有内容馈入Hadoop之类的东西, Flume就是其中的最佳选择之一。从我们心爱的Apache基金会维护的意义上说, 这是一个” 纯” 开源项目, 这意味着没有企业计划。
这可能不是你想要的。 ????
文章图片
Flume的源代码是完全用Java编写的(在开创性的技术方面, 这让我感到惊讶)。如果你正在寻找适用于重型设备的分布式容错数据提取平台, Flume就是你的最佳选择。
Octopussy 对于产品命名, 我将其满分为十分之十。但是, 如果你的需求很简单, 并且你想知道与流水线, 提取, 聚合等有关的所有麻烦事, 八达通就是一个不错的选择。
我认为, Octopussy可以满足大多数产品的需求(估计的统计数据没有用, 但是如果我不得不猜测, 我想说它可以处理现实世界中80%的用例)。
文章图片
八达通根本没有出色的用户界面(请参见此处), 但是它可以弥补速度和缺乏膨胀的缺点。如预期的那样, 该源可在GitHub上获得, 我认为值得认真看一下。
LOGalyze LOGalyze是一种商业产品, 最近被开源。尽管我无法在GitHub上进行该项目, 但它们确实使Windows安装程序和所有源代码都可以下载。
如果你打算建立社区, 则可以在此处找到邮件列表的详细信息。
文章图片
LOGalyze是一种相对灵活且功能强大的产品, 将非常适合于单系统部署, 这些系统试图合并来自已知来源(如Postfix, Apache等)的日志记录, 并以CSV, PDF, HTML或类似格式生成输出。是的, 它不能做所有事情, 但是由于它一次是一种商业产品, 因此做得很好。
LogPacker 在为工作选择工具时, 我有两个标准:必须专注, 并且必须有活跃的业务模型作为后盾。通常, 开源软件的问题在于, 未来数月/数年, 停滞或死亡的可能性很高。没有使用gusto启动多少个日志记录工具的计数, 而现在只能在GitHub墓地中找到。
以这个尺度衡量, LogPacker是我的最爱。
文章图片
从屏幕截图可以看出, LogPacker完全是关于日志的, 仅此而已。他们的推动力绝对是他们的云产品, 但非常欢迎你下载并安装到你的服务器上(此处为GitHub页面)。
集群和聚合适用于希望在不小的范围内使用的人员, 而企业计划也适用于希望使用API??或需要更大部署的人员。我认为, 日志记录管理是一种令人耳目一新的极简主义(重点突出, 尽管功能并不差)!
LogWatch 我敢肯定, 我们当中有些人不希望所有仪式都与” 统一” , “ 集中式” 记录系统相关联。他们的业务来自单一服务器, 他们正在寻找快速高效的工具来查看其日志文件。好吧, 向Logwatch打招呼。
安装后, LogWatch可以扫描你的系统日志并创建所需类型的报告。不过, 它是一款过时的软件(读为” 可靠” ), 是用Perl编写的。因此, 你需要在服务器上运行Perl 5.6+。我没有任何截图可以共享, 因为它是纯命令行, 后台进程。
如果你是CLI迷, 并且喜欢老式的处理方式, 那么你会喜欢Logwatch!
Syslog-ng Syslog-ng工具的开发是一种实时处理syslog(用于系统日志记录的已建立的客户端-服务器协议)数据文件的方式。但是, 随着时间的流逝, 它已经支持其他数据格式:非结构化, SQL和NoSQL。下图很好地总结了syslog协议的工作方式。
文章图片
syslog-ng是使用C语言编写的生产级, 可靠的日志收集和分类工具, 长期以来一直是业界公认的名称。最好的部分是它的可扩展性, 使你可以用C, Python, Java, Lua或Perl编写插件。
lnav lnav是(Log Navigator)的缩写, 是可在单台计算机, 单个目录上运行的纯终端工具。适用于将日志记录统一到一个目录中, 或者想要过滤和显示来自单个来源的实时日志的人。
文章图片
如果你认为lnav仅仅是美化的tailf | grep, 那你就错了。有几个功能会让你爱上它:时间序列视图, 漂亮的打印(用于JSON和其他格式), 颜色编码的日志源, 强大的过滤器, 能够理解多种日志记录协议的功能等等。
只是有时你需要零麻烦, 零设置, 可能是临时的日志记录层, 而lnav非常适合你!
总结
在那里, 你拥有了!
坦率地说, 这是一份很难编译的清单, 因为日志记录不如内容管理那么流行, 而且所有心智共享似乎都被三到四个工具所抓住。尽管如此, 每个人的需求都不同, 我已经尝试了广泛地解决它们。
从愚蠢的命令行, 无设置工具到功能强大的数据专家, 一切都在这里!我错过了什么?我当然做了!请在评论中让我知道, 我很乐意将其添加到此处(当然要有积分!)。
推荐阅读
- 了解Docker入门-容器技术
- MongoDB权威入门简介
- Android数据存储
- Android开发数据持久化存储,sharePreference(偏好选择)的练习
- 谈谈Android Binder机制及AIDL使用
- Android studio——LinearLayout(线性布局)
- 入门实战资料《Android进阶解密》+《Android进阶之光》+《重构改善既有的代码第2版》电子资料学习
- 《Pro Spring Boot 2》第四章(Web Applications with Spring Boot)
- Android error “Could not get BatchedBridge, make sure your bundle is packaged properly” on start of