博客/工程

Loki的GA之路:Systemd的Docker日志驱动插件和支持

2019年7月15日4分钟

去年12月在KubeCon北美发布,洛基是一个Prometheus-inspired服务它优化了存储、搜索和聚合,同时使日志易于在Grafana中本机探索。洛基被设计成可以轻松工作微服务和巨石,关联日志和度量为用户省钱。

不到一年之后,洛基在GitHub上有近6500颗星,现在是快速接近GA.在Grbob电竞频道afana实验室,我们一直在努力开发关键功能,使之成为可能。在接下来的几周里,我们将重点介绍其中的一些功能。本文将重点介绍:

两者都用于扩展用户可以将日志拉入Loki的源。

Docker日志驱动插件

对于非kubernetes工作负载

为了将日志发送给Loki,我们创建了promtail,它还允许您向日志添加标签和信息。当你在Kubernetes上运行工作负载时,Promtail日志跟踪可以开箱即用——但并不是每个人都使用Kubernetes。

出于各种原因,有些人更喜欢使用普通的Docker,而问题是,当你不在Kubernetes上运行promtail时,你将无法从promtail中获得相同的好处。到目前为止,您还没有得到服务发现—或者所有允许您根据应用程序进行过滤的标签(这是搜索日志的基本要求)—所以我们为Loki构建了Docker驱动程序。

易用性

Loki的Docker驱动程序是一个插件,你可以在服务器上的Docker守护进程上安装它。您可以告诉它,当您运行应用程序时,它应该使用该日志驱动程序。一旦容器启动,它不会将日志保存到文件中,而是直接将其发送给洛基。

因为我们在Docker中,所以我们能够围绕容器的名称和其中的堆栈进行服务发现。这使得使用洛基更容易,因为你不需要设置其他任何东西。您只需在守护进程上执行一次,然后它就可以运行了。与promtail不同,Docker驱动程序不需要你配置任何文件。

我们添加这个功能的原因是为了确保每个人都能轻松上手,无论他们使用什么。例如,Docker驱动程序是在ECS上传输日志的最简单方法。目前在ECS上使用Splunk的用户可以无缝切换到Loki和我们的日志驱动程序。

有关Docker日志记录驱动程序的更多信息,请阅读文档

配置驱动

你可以注册一个新的Docker驱动程序洛基免费试用

你需要在你的主机上安装Docker驱动程序:

Docker插件安装grafana/ Loki - Docker -driver:latest——alias Loki——grant-all-permissions

然后使用Docker log-driver标志启动Docker容器,如下所示:

Docker run——log-driver=loki \——log-opt loki-url="https://:@logs-us-west1.grafana.net/api/prom/push" \——log-opt loki-retries=5 \——log-opt loki-batch-size=400 \ grafana/grafana

这个命令将配置Grafana容器以Loki驱动程序启动,Loki驱动程序将日志发送到logs-us-west1.grafana.net(这是我们的Grafana云托管日志演示端点),使用400个条目的批处理大小。如果失败,它将重试最多5次。

你可以找到你的user_id而且密码在您的Grafana云帐户在托管日志演示部分。

有关更多配置选项,请参考Docker驱动程序文档

Systemd支持

虽然Docker驱动程序允许你将日志从容器中推入Loki,但systemd特性的工作方向相反:它使用promtail将所有systemd日志从系统中拉入Loki。但两者都能让洛基从更多来源获取日志。特别是,由Grafana实验室的另一位成员开发的新功能,bob电竞频道罗伯特·弗拉托-帮助用户从遗留工作负载中提取日志,几乎所有公司都有。

如果你想从不是在Docker和Kubernetes内部运行的软件中获取日志,而是作为systemd服务运行,或者显式地将日志记录到systemd日志中,那么它非常有用。Promtail以前只能读取纯文本文件,而不是所有的软件日志都可以读取。

下面是如何在promtail配置文件中启用systemd支持的示例:

服务器:http_listen_port: 9080 grpc_listen_port: 0位置:文件名:/tmp/位置。Yaml客户端:—url: http://localhost:3100/api/prom/push scrape_configs:—job_name: journal journal: path: /var/log/journal labels: job: system -journal relabel_configs:—source_labels: ['__journal__systemd_unit'] target_label: 'unit'

您可以阅读有关该功能的更多信息文档

在未来的博客文章中,我们将重点介绍Loki的其他特性,包括loki-canary,管道阶段,查询优化。请务必回来查看更多信息关于洛基的内容