博客/工程

我是如何因为格拉夫娜·洛基而爱上原木的

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洛基就在我第一天这里是Grafabob电竞频道na实验室。当您想同时发现和使用日志时,Loki是一个令人惊奇的解决方案普罗米修斯而且Kubernetes对于微服务,它提供了一个很好的文件和应用程序端点日志聚合系统。

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

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

概览洛基的文档在配置Promtail与Syslog时,让我意识到Promtail本身只与IETF Syslog (RFC5424)一起工作-这也是我如何发现我的设备仅被限制在RFC3164。谢天谢地,我还发现了解决syslog困境的最佳方法:syslog-ng

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

syslog-ng配置

# syslog-ng.conf

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

Promtail配置

# promtail-config.yml

Server: http_listen_port: 9080 grpc_listen_port: 0 locations: filename: /tmp/ locations。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中的重标签将发送消息的设备的主机名放入syslog-ng中,并将其转换为一个主机标签,供Loki建立索引。在几分钟内,我将所有主机的syslog从我的网络流到Loki中,它可以在其中进行探索79bob官方下载

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

我梦想中的仪表盘

就在我进行网络故障排除的同时,Grafana实验室的一位首席解决方案工程师,bob电竞频道bob彩票中奖计划沃德Bekker向我们的团队介绍了即将推出的产品Loki 2.0版本.他向我们展示了一些新的仪表盘示例,并毫不犹豫地对我说:“Dave,看看将日志转换为度量是多么容易。”他引起了我的注意!

我再次努力构建一个仪表板,收集我所有的设备日志(现在很容易收集),并将最近通过Loki发布的“日志到指标”魔法应用到设备上。最终的结果是无线接入点的分组汇总计数!

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

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

下面的这个示例显示了一段时间内由主机名($hostname)过滤的日志数量,这些日志来自我的syslog Promtail作业(syslog),它带有来自我的Grafana变量($filter) auth_failures的自由格式搜索查询字符串。

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

将Grafana、Loki和Syslog合并到一个一体化项目中

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

我想要分享这些配置,以便其他讨厌日志的人也能看到,所以我创建了一个“一体化”的docker合成项目,我称之为Loki Syslog AIO。

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

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

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

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

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