开始使用Grafana Loki 获取Grafana Loki的入门 获取Grafana Loki的入门 HTML标签获取Grafana Loki的入门
让我们学习Grafana Loki的基本原理,这是一个多租户日志聚合系统。
在生产环境中,停机时间是不可接受的。它可能导致业务收入和声誉的大量损失。但是如果您有一个适当的日志记录和监控系统,您将知道如何调试这种导致停机的情况。
它有助于节省成本并识别未来可能出现的问题。
如今,每个组织都在使用原则和工具。容器和Kubernetes是最受欢迎的工具之一。使用 Prometheus 监控此类系统非常高效。但 Prometheus 的缺点在于日志记录部分。它没有提供集中式日志记录系统,这就是 Loki 的用武之地。
Grafana Loki 是什么?
Grafana Loki是由 Grafana 在 2018 年创建并在 Apache 2.0 许可下发布的多租户日志聚合系统。这个系统是在受 Prometheus 启发的基础上开发的。它主要与云提供商和 Prometheus、Grafana 等工具一起使用。
Loki 类似于 ELK/EFK 堆栈,但设置和操作更容易,并具有更好的功能。Loki 不索引日志的内容,而是为日志流索引时间戳和一组标签。这使得索引更小,简化了操作,最终降低了成本。
Loki 的优势
以下是在堆栈中使用 Loki 的优势:
- Loki 仅索引元数据,非常具有成本效益。运行用于全文处理的索引需要更大的 RAM 实例,这非常昂贵。将日志存储在像 S3 这样的对象存储上也使其更便宜。
- 它使用租户 ID 来支持多租户,因此租户的数据被单独存储。
- 您可以在小规模操作中本地运行 Loki,也可以轻松地将其水平扩展到大规模操作。
- 它使用规模一致性来确保读取和写入操作的一致性。
- 默认配置为具有 3 个副本的日志,以满足进程崩溃和意外退出的风险,在这些情况下日志会丢失。是的,这会产生一些额外的费用,但不会很高,数据的完整性更为关键。
- 可以与流行的工具如 Kubernetes、Prometheus 和 Grafana 轻松连接。
Loki 架构
Loki 架构有三个组件 – Promtail、Loki 和 Grafana。
Promtail 是一个代理程序,必须安装在运行您的应用程序或服务的每个节点上。Promtail 的主要责任是发现目标,为来自 Pod 的日志流附加标签,并将这些日志推送到 Loki 实例。代理程序 Promtail 从本地文件系统读取日志,并将日志推送到 Loki 的中央服务器。之后,您可以使用 Grafana 查询您的日志。
Loki 的用途
以下是使用像 Loki 这样的日志记录系统的流行用途。
- 商业智能:这是一个永恒的用例,通过日志数据创建可操作的洞察力始终非常有用。Loki可以帮助您理解日志数据,并让您能够为业务增长创建新的策略。例如,通过组织的日志数据,可以帮助您了解来自广告渠道的转化率。
- 监控:Prometheus在行业中被广泛用于监控。但是通过使用Loki等工具监控日志,您可以识别许多问题。它可以帮助您通过查看日志并在超过阈值时发送警报来监视网站上的错误率。
- 调试和故障排除:Loki可以帮助DevOps团队快速获取一些答案,例如应用程序崩溃的时间、崩溃原因、崩溃前的最后状态等。
- 网络安全:近年来,对电子商务门户的网络攻击呈指数级增长。借助于Loki,您可以检查日志以识别组织系统中发生的任何威胁、问题或恶意活动。如果入侵成功,Loki仍然对取证团队有所帮助,以详细了解系统中发生的情况,帮助他们追踪黑客。
- 合规性:为了遵守行业法规,组织必须保留长达7年的审计日志。当地机构可以随时审计这些日志。Loki可以安全地存储您的审计日志。
安装Loki和Promtail
让我们快速了解如何在Grafana上安装和可视化日志。在这个演示中,我将使用通用配置,该配置将从/var/log/*log
中抓取日志。
转到Loki releases页面,向下滚动到Assets,您将找到多个Loki和Promtail软件包。根据您使用的系统下载Loki软件包。不要下载cli或canary Loki软件包。我正在下载适用于我的Ubuntu系统的loki-linux-amd64.zip和promtail-linux-amd64.zip。
下载完成后,提取Loki和Promtail的文件,并将它们放在同一个目录中。
yaoweibin@yaoweibin:~$ mkdir loki
yaoweibin@yaoweibin:~$ mv loki-linux-amd64 promtail-linux-amd64 loki
yaoweibin@yaoweibin:~$ cd loki/
yaoweibin@yaoweibin:~/loki$ ls
loki-linux-amd64 promtail-linux-amd64
现在,下载和的通用配置文件。
yaoweibin@yaoweibin:~/loki$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
--2021-04-30 12:00:51-- https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.110.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1832 (1.8K) [text/plain]
Saving to: ‘loki-local-config.yaml’
loki-local-config.yaml 100%[===============================================================================================>] 1.79K --.-KB/s in 0s
2021-04-30 12:00:51 (16.6 MB/s) - ‘loki-local-config.yaml’ saved [1832/1832]
要启动Loki,请使用Loki配置文件运行下面的命令。这将启动Loki并在终端中显示Loki日志。
yaoweibin@yaoweibin:~/loki$ ./loki-linux-amd64 -config.file=loki-local-config.yaml
level=info ts=2021-04-30T16:08:37.990311491Z caller=main.go:130 msg="Starting Loki" version="(version=2.2.1, branch=HEAD, revision=babea82e)"
level=info ts=2021-04-30T16:08:37.990856871Z caller=server.go:229 http=[::]:3100 grpc=[::]:9096 msg="server listening on addresses"
level=info ts=2021-04-30T16:08:37.991613443Z caller=shipper_index_client.go:100 msg="starting boltdb shipper in 0 mode"
level=info ts=2021-04-30T16:08:37.992568288Z caller=mapper.go:38 msg="cleaning up mapped rules directory" path=/tmp/loki/rules-temp
level=error ts=2021-04-30T16:08:37.992623632Z caller=mapper.go:42 msg="unable to read rules directory" path=/tmp/loki/rules-temp err="open /tmp/loki/rules-temp: no such file or directory"
level=info ts=2021-04-30T16:08:37.993520927Z caller=table_manager.go:171 msg="uploading tables"
level=info ts=2021-04-30T16:08:37.993941099Z caller=module_service.go:59 msg=initialising module=store
level=info ts=2021-04-30T16:08:37.994011839Z caller=module_service.go:59 msg=initialising module=memberlist-kv
level=info ts=2021-04-30T16:08:37.99412775Z caller=module_service.go:59 msg=initialising module=server
level=info ts=2021-04-30T16:08:37.994379648Z caller=module_service.go:59 msg=initialising module=ingester
level=info ts=2021-04-30T16:08:37.994415984Z caller=ingester.go:241 msg="recovering from checkpoint"
要启动Promtail,请使用Promtail配置文件运行下面的命令。Promtail是将日志发送到Loki所必需的。
yaoweibin@yaoweibin:~/loki$ ./promtail-linux-amd64 -config.file=promtail-local-config.yaml
级别=信息时间戳=2021-04-30T16:35:52.775998059Z调用者=server.go:229 http=[::]:9080 grpc=[::]:42557 msg=”服务器监听地址”
级别=信息时间戳=2021-04-30T16:35:52.776283661Z调用者=main.go:112 msg=”启动Promtail” 版本=”(version=2.2.1, branch=HEAD, revision=babea82e)”
级别=信息时间戳=2021-04-30T16:35:57.776226323Z调用者=filetargetmanager.go:254 msg=”添加目标” 键=”{job=”varlogs”}”
时间戳=2021-04-30T16:35:57.776902427Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/fontconfig.log – &{Offset:11055 Whence:0}”
级别=信息时间戳=2021-04-30T16:35:57.776983546Z调用者=tailer.go:125 component=tailer msg=”跟踪例程:开始” path=/var/log/auth.log
级别=信息时间戳=2021-04-30T16:35:57.777009023Z调用者=tailer.go:125 component=tailer msg=”跟踪例程:开始” path=/var/log/fontconfig.log
时间戳=2021-04-30T16:35:57.777094698Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/lastlog – &{Offset:0 Whence:0}”
时间戳=2021-04-30T16:35:57.777712594Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/apport.log – &{Offset:0 Whence:0}”
时间戳=2021-04-30T16:35:57.778200383Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/alternatives.log – &{Offset:456 Whence:0}”
时间戳=2021-04-30T16:35:57.780467419Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/syslog – &{Offset:56911 Whence:0}”
级别=信息时间戳=2021-04-30T16:35:57.780646032Z调用者=tailer.go:125 component=tailer msg=”跟踪例程:开始” path=/var/log/kern.log
级别=信息时间戳=2021-04-30T16:35:57.781289004Z调用者=filetargetmanager.go:254 msg=”添加目标” 键=”{job=”varlogs”}”
级别=信息时间戳=2021-04-30T16:35:57.787770104Z调用者=tailer.go:125 component=tailer msg=”跟踪例程:开始” path=/var/log/grafana/grafana.log
时间戳=2021-04-30T16:35:57.782276009Z调用者=log.go:124 级别=信息 msg=”寻找 /var/log/grafana/grafana.log – &{Offset:0 Whence:0}”
使用Loki和Grafana可视化日志
Grafana对Loki提供内置支持。 Loki已经在Grafana的数据源中。
步骤1:进入Grafana配置,点击“数据源”。
步骤2:在数据源中,可以按名称或类型搜索源。
步骤3:按名称搜索Loki。您可以看到此数据源已经在Grafana中。点击选择。
步骤4:输入要为数据源指定的名称,并在URL中输入http://localhost:3100
(如果Loki在与Grafana不同的服务器上运行,则将其更改为服务器IP),因为我们已经在端口3100上启动了Loki。
点击底部的测试和保存按钮。如果您已经正确设置了Loki,则会收到下面绿色框中显示的消息。
步骤5:点击左侧的Explore选项卡。从数据源选择的下拉菜单中选择Loki。现在,我想可视化Grafana日志的活动。为此,您需要在日志浏览器中添加查询{filename="/var/log/grafana/grafana.log"}
。下面的绿色条是日志文件中的事件条目。
您可以选择要在仪表板上显示的时间范围,并且还可以设置查询的刷新间隔,之后查询将再次运行。要查看日志的更多详细信息,请向下滚动并单击其中一个日志条目,它将提供与日志相关的各种信息。
看起来很漂亮,不是吗?
所以,以上就是入门的全部内容。我强烈建议您进一步查看以下通过Loki解释可观察性的网络研讨会视频。
结论
一个分布式系统由许多应用程序或微服务组成,每个应用程序都有大量的日志。您需要一种经济实惠的方法来存储它们,并利用这些日志。Loki是这种情况的完美解决方案。事实上,通过将Loki集成到生产环境中,您可以将约75%的日志记录和监控成本降低。
Loki也可以通过Grafana Cloud获得,如果您不想经历安装过程,那么试用一下将是一个好选择。
接下来,了解一下Grafana Tempo。