博客/工程

我是如何因为Grafana Loki而爱上原木的

2021年3月23日7分钟

作为高级解决方案工程师,这是我工作的一部分bob彩票中奖计划bob电竞频道在美国,我往往很容易就能找到解决技术问题的方法。然而,我最近家里的Wi-Fi出现了一些问题,需要做一些故障排除。我的经历改变了我对原木的看法,我想分享我的故事,希望我也能开阔其他人的眼界。(我最初在我的博客上发布了这个故事的一个版本个人博客1月)。

首先,一些背景信息:

我一直是衡量标准的人。我非常喜欢图表和图表。我对日志记录的接触有限,主要是在我的企业IT时代,在数百个端点上浏览相当一部分应用程序日志。您还记得以前创建共享NAS导出,只写出日志直到文件系统被填满的日子吗?(是的,我也是…咳咳……)

我的家庭计算占用了10Gb的交换机、多个无线接入点、渲染场服务器托盘和tb级的存储空间。我很难找到我的网络的一些新问题,而且很难看到我的设备一直在做什么。

我面临的挑战是弄清楚为什么我的无线设备会出现断断续续的连接不稳定,以及我的无线接入点中哪一个(如果有的话)出现的问题最多。但我只能使用syslog,这是一种标准的基于网络的日志协议,设备使用它来发送消息和记录事件。参数并不能拯救我。我需要一种方法来获取所有这些信息!

我在网上搜索“Syslog Collector”,得到了342,000个结果。大多数引人注目的“6个免费的Syslog服务器”链接都指向相当多的Windows实用程序,而且它们每次都被限制在几个主机上。这个问题?我需要从十几个系统中收集数据,我运行的是Linux和macOS。我一直在寻找一些简单的东西,而且我知道找到一些开源的优点可能会有用。

现在,这变成了一个关于我如何爱上原木的故事。和洛基。<3

我最初接触到的Grafana洛基在我第一天在Grafanabob电竞频道实验室。当您想要同时发现和使用日志时,Loki是一个惊人的解决方案普罗米修斯而且Kubernetes对于微服务,它提供了一个很棒的文件和应用程序端点日志聚合系统。

当我学习在一些核心用例中使用Loki时,我并没有立即想到我也可以使用它来捕获独立的网络日志。然而,一旦我明白了这一点,我就马上投入到洛基的新部署中。

尽管Loki的根源来自Prometheus和Kubernetes,但我的目标是构建一个快速启动的独立syslog摄取器。发现洛基是多么容易部署为一个二进制文件,无论是通过命令行或码头工人,意味着我可以马上开始我的项目。部署后Promtail(它将日志输入Loki)我觉得只要花几分钟的时间,我就快要解开我的网络的奥秘了。

概览洛基的文档在配置Promtail和Syslog时,我意识到Promtail本身只适用于IETF Syslog (RFC5424) -这也是我发现我的设备仅限于RFC3164的原因。值得庆幸的是,我还发现了如何最好地解决我的syslog困境:syslog-ng

在我的情况下,syslog-ng的有用之处是,它可以被旋转起来侦听RFC3164 (UDP端口514),然后在端口1514上转发到Promtail RFC5424,因为我的大多数设备只输出旧风格的syslog。我只需要做一些快速的默认配置更改,就可以将syslog-ng和Promtail结合在一起,并使它们能够愉快地相互通信。

syslog-ng配置

# syslog-ng.conf

源s_local {internal();};Source s_network {default-network-drivers();};目的地d_loki {syslog("promtail"传输("tcp")端口("1514"));};日志{源(s_local);源(s_network);目的地(d_loki);};

Promtail配置

# promtail-config.yml

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/tmp/位置。Yaml客户端:—url: http://loki:3100/loki/api/v1/push scrape_configs:—job_name: syslog syslog: listen_address: 0.0.0.0:1514 idle_timeout: 60s label_structured_data: yes labels: job: "syslog" relabel_configs:—source_labels: ['__syslog_message_hostname'] target_label: 'host'

Promtail中的重标记将发送消息的设备的主机名转换为一个主机标签,供Loki索引。在几分钟内,我让我所有的主机从我的网络上发送syslog日志到Loki,它在里面是可以探索的79bob官方下载

显示Loki摄取syslog-ng转发的syslog日志的仪表板示例。

我梦想中的仪表盘

在我所有的网络故障排除发生的同时,Grafana实验室的首席解决方案工程师之一,bob电竞频道bob彩票中奖计划沃德Bekker向我们的团队介绍了即将推出的产品Loki 2.0发布.他向我们展示了一些新的仪表板示例,并毫不犹豫地对我说:“戴夫,看看把日志转换成指标有多简单。”他引起了我的注意!

我重新开始努力构建一个仪表板,收集我所有的设备日志(现在很容易收集),并应用Loki最近发布的“日志到指标”魔法。净结果是无线接入点在一段时间内的组总结计数!

这是我的第一个LogQL查询,开始了我的日志度量之旅:

count_over_time({主机= ~“主机名美元”,工作=“syslog”}(__interval美元)| = " $过滤器")

下面的示例显示了来自我的syslog Promtail作业(syslog)的主机名($hostname)过滤的随时间变化的日志数量,它带有来自我的Grafana变量($filter) auth_fails的自由形式搜索查询字符串。

通过稍微调整仪表板,我能够可视化来自其他一些网络设备的其他类型的syslog消息,比如我的网络网关、服务器IPMI统计信息和NAS详细信息。我现在可以回滚我的日志历史记录,直到那时我都看不见。我还可以直观地了解收集到的消息的频率和类型,以及对所有日志进行自由文本过滤的简单方法。真的,日志和指标!

将Grafana, Loki和Syslog整合到一个一体化项目中

我如何开始使用Loki并开始我的日志记录之旅是非常简单的,我相信它代表了连接开源解决方案来解决即时问题是多么快速和简单,甚至在家庭实验室的情况下也是如此。bob彩票中奖计划

我想分享这些配置,这样其他不喜欢日志的人就能明白,所以我创建了一个“一体化”的docker-compose项目,我称之为Loki Syslog AIO。

这个快速示例项目允许您在Linux服务器上使用docker-compose运行所有提到的服务。将您的网络设备指向(主机名:514)并登录到Grafana(主机名:3000),您将看到“Loki Syslog AIO -概述”仪表板。

对于那些想要了解一些幕后细节的人,我为每个主要服务(Grafana、Loki、MinIO、Docker和主机指标)提供了一些预构建的性能概述仪表板。在Loki Syslog AIO - Overview仪表板的顶部,您将看到指向“性能概述”的下拉链接,包括返回起始仪表板的链接。如果您没有立即可用的syslog设备,但又想尝试一下仪表板,我还构建了一个可选的syslog生成器容器。

有关更多设置细节和下载,请查看我的Grafana Loki Syslog AIO Github存储库。我的洛基仪表板的例子也可以在Grafana的社区仪表板

如果你想知道洛基是否帮我找出了导致我家庭实验室服务器断网的原因,答案是肯定的!它们与高DHCP重试次数和我的最低数据速率控制设置过于激进有关。谢谢,洛基!

开始使用Grafana、Prometheus、Loki和Tempo进行跟踪的最简单方法是Grafana Cloud和我们最近增加了一个新的免费计划,并升级了我们的付费计划.如果你还没有使用Grafana Cloud,今天免费注册并查看哪个计划符合您的用例。