One Eye Release 0.4更新

288 阅读2分钟

我们已经有一段时间没有发布《独眼》的新版本了。这并不意味着我们没有在工作,恰恰相反!我们一直忙于做很多改进和增加功能。我们一直在忙着做大量的改进和增加功能。这篇博客将强调自0.3版本以来的许多变化。 image.png

让我们从一些好消息开始(github.com/banzaicloud… Eye日志子系统)现在是Rancher的官方日志后端。我们喜欢看到开源项目一起工作,为最终用户提供更好的体验。既然我们谈到了这个话题,让我们来看看日志运营商的一些改进。

自然,更多的用户意味着更多的问题。你可能可以想象,他们提出了大量的功能要求。我们收集了最受欢迎的问题和错误,并进行了改进,使我们的日志操作员更容易使用。

流量和输出状态 🔗︎

配置越复杂,调试问题就越困难。从Logging Operator 3.8开始,所有自定义资源都有一个Status 和一个Problems 字段。它们有什么用处?我们来看看。在一个健康的系统中,clusteroutput 资源的输出应该看起来像下面这样。

$ kubectl get clusteroutput -A
   NAMESPACE   NAME      ACTIVE   PROBLEMS
   default     nullout   true

ACTIVE 列表示ClusterOutput 已经成功通过configcheck 并在当前的 fluentd 配置中呈现。当没有错误被报告时,PROBLEMS 列是空的。

看一下另一个例子,在这个例子中,我们有一个不正确的ClusterFlow

$ kubectl get clusterflow -o wide
NAME      ACTIVE   PROBLEMS
all-log   true
nullout   false    1

你可以看到,nullout Clusterflow 是不活跃的,而且配置有1个问题。为了更深入地挖掘,我们只需要检查对象的状态字段。

$ kubectl get clusterflow nullout -o=jsonpath='{.status}' | jq
{
  "active": false,
  "problems": [
    "dangling global output reference: nullout2"
  ],
  "problemsCount": 1
}

问题是微不足道的;集群上没有nullout2 ClusterOutput 存在。

新的默认S3对象密钥格式 🔗︎

在我们之前的博客中,我们注意到有一个适当的S3对象密钥格式是多么的重要,从冷存储中预热日志。为了避免这一关键属性的错误配置,我们引入了oneeye_format 参数。你可以在我们的文档中阅读更多关于S3输出的内容。

更新了fluentbit、fluentd和插件 🔗︎

自最新发布的日志运营商以来,已经发布了几个错误修复和改进。我们更新并测试了许多插件,以便在记录期间提供无缝体验。

更新了核心组件

  • Fluentbit版本从1.5.41.6.4
  • Fluentd版本从1.11.21.11.5

更新了Fluentd插件

  • fluent-plugin-cloudwatch-logs从0.11.00.11.1
  • fluent-plugin-grafana-loki 从1.2.141.2.16
  • fluent-plugin-kinesis 从3.2.33.3.0
  • fluent-plugin-webhdfs from1.2.5 to1.3.1
  • fluent-plugin-elasticsearch from4.1.2 to4.2.2
  • fluent-plugin-kafka from0.14.2 to0.15.2
  • fluent-plugin-logdna from0.3.1 to0.4.0
  • fluent-plugin-newrelic from1.1.8 to1.1.10
  • fluent-plugin-prometheus from1.8.3 to1.8.4

这个新功能可以自动将归档日志加载到Elasticsearch中。我们在最近的一篇博文《从冷存储中预热日志》中窥见了这个功能。现在你可以试试了!

image.png

One Eye是一个相对年轻的项目,有一个功能导向的路线图。然而,为了有效地使用一个可观察性工具,你需要一个快速和响应的UI。嵌入grafana仪表盘是为用户提供图表的最快方式,开箱即用,但我们对这种仪表盘的加载时间感到纠结。从0.4版本开始,许多嵌入式仪表盘将是原生图形。我相信你会注意到性能上的不同!

指标视图 🔗︎

我们一直在努力建立一个功能性的相关UI,我们一直在逐一实现组件。从0.4版本开始,你可以使用metrics view来查询你的Prometheus度量。这是一种快速访问Prometheus数据点的简化方法。 image.png

由于fluentd和fluentbit在将日志摄入Loki时遇到困难,我们增加了对简单Promtail安装的支持。由于其架构的原因,fluentd不能保证消息的排序,所以很多消息被Loki丢弃。 fluentbit最近发布了对其传输日志的改进。此外,他们还发布了Loki的官方版本。仍然有一些改进要做,比如对其重试逻辑的改进。在fluentbit Loki输出足够稳定之前,请放心使用Promtail。在那之后,我们可能会放弃对Promtail的支持,并为fluentbit Loki的输出增加一个配置。

为了让你在定制系统的不同部分时有更多的自由,我们从Grafana Helm图表换成了Grafana operator。当涉及到你动态添加数据源或仪表盘时,操作员给你更多自由。你现在可以享受Grafana操作员提供的所有功能。

随着堆栈越来越复杂,甚至安装流程也开始花费相当多的时间。我们引入了一个简单的安装命令,为开箱即用的监控解决方案安装所有必要的组件。因为配置在很大程度上取决于你所使用的基础设施,我们将引入配置文件来处理不同的环境。这种配置包括不同的警报规则等。

最后但同样重要的是,我们增加了一个日志生成器。这个功能更适合于测试和测试自动化,但几乎不值得一提。目前,它基本上是我们已经写的相同的日志生成器,用于生成Nginx访问的日志格式。如果你是One Eye的新手,这是一个伟大的工具,可以测试不同的过滤器和输出等。

$ one-eye log-generator install
? Select the namespace for your output default
? Generator replica count 1
? Maximum interval between log messages (s) 1
? Minimum interval between log messages (ms) 100
? The amount of log message to emit/s 3
✓ crds ❯ resource is in sync name=observers.one-eye.banzaicloud.io, apiVersion=apiextensions.k8s.io/v1beta1, kind=CustomResourceDefinition
? Please confirm to update component! Yes

记录一个像One Eye这样大的项目可能是一个挑战。为了减轻这个负担,Kubernetes有一个解释命令。然而,我们的观察者的复杂性将意味着我们会生成包括文档的CRD,但是太大。这就是为什么我们把解释命令移植到我们的二进制文件中。

$ one-eye observer explain spec
KIND:     Observer
VERSION:  one-eye.banzaicloud.io/v1alpha1

RESOURCE: spec 

DESCRIPTION:
     ObserverSpec defines the desired state of Observer

FIELDS:
   certmanager 
     CertManager component descriptor

   clusterName 
     Custom name for cluster