在这篇文章中,您将了解如何使用 IBM Log Analysis with LogDNA 服务为在 IBM Cloud Kubernetes Service 中发布的名为 Knative-node-app 的应用程序配置集群级日志记录。请参阅这篇文章 -Install Knative with Istio and deploy an app on IBM Cloud, 以设置 nodejs 应用程序。

IBM Log Analysis with LogDNA 为管理员、DevOps 团队和开发人员提供过滤、搜索和跟踪日志数据、定义警报和设计自定义视图以监控应用程序和系统日志的高级功能。

从使用 IBM Cloud Kubernetes Service 供应集群的那一刻起,您就希望知道集群内部发生了什么。您需要访问日志来解决问题并预先解决问题。在任何时候,您都希望能够访问不同类型的日志,例如工作器日志、Pod 日志、应用程序日志或网络日志。此外,您可以监控 Kubernetes 集群中不同来源的日志数据。因此,您管理和访问来自任何这些来源的日志记录的能力至关重要。您成功管理和监控日志取决于您如何为 Kubernetes 平台配置日志记录功能。

使用 LogDNA 实例供应 IBM Log Analysis 并配置 LogDNA 代理

在配置实例之前,检查先决条件

在 Knative Kubernetes 集群上运行应用程序后,使用 LogDNA](https://cloud.ibm.com/observe/logging/create)服务供应[IBM Log Analysis 的实例

  • 选择区域/位置(美国-南部)

  • 选择资源组

  • 选择一个合适的计划(7天日志搜索推荐此帖子)

  • 单击创建。通过此步骤,您可以配置一个集中式日志管理系统,其中日志数据托管在 IBM Cloud 上。

配置您的 Kubernetes 集群以将日志发送到您的 LogDNA 实例

  • 在https://cloud.ibm.com/observe/logging下配置服务后,单击 Edit log sources 然后单击 Kubernetes。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--HxMDsLd4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2ADbOwzmmiZTM6Pwgb2oQ7Cw.png)

IBM Cloud 上的可观察性

  • 您应该会看到两条命令,用于在集群的每个节点上自动安装 logdna-agent pod。
kubectl create secret generic logdna-agent-key --from-literal=logdna-agent-key= **<INGESTION_KEY>**

kubectl create -f https://repo.logdna.com/ibm/prod/logdna-agent-ds-us-south.yaml
  • 这会在集群中的每个工作程序(节点)上配置 LogDNA 代理。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--QWC_DIYZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/862/1%2ASQb88xplfaJgL2v9ZpG8_w.png)

K8s 集群上的 LogDNA 代理使用 LogDNA 将日志发送到 IBM Log Analysis

  • 要确认在集群中的每个工作节点上成功创建 LogDNA 代理,请运行以下命令
kubectl get pods

[](https://res.cloudinary.com/practicaldev/image/fetch/s--NfQaadNA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2AOIgYdoXaqiiMlgSVcWxJiQ.png)

IBM kui 工具上的 kubectl 命令

启动 LogDNA 仪表板并查看日志

让我们检查和搜索日志,并通过单击 View LogDNA 创建一些图表。 在新选项卡上 ,Everything 下,您应该开始实时查看所有日志。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--aaR12rd5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2Ag--X5ryHt_jwygHhtHc88A.gif)

为此,我们需要生成一些流量/负载,并且有许多可用的开源库/工具。在这篇文章中,我们将使用Vegeta,一个 HTTP 负载测试工具和库。您也可以使用嘿。

在生成负载之前,让我们快速检查一下在部署应用时 IP_ADDRESS 和 HOST_URL 是否设置正确。

echo $IP_ADDRESS

echo $HOST_URL

安装Vegeta后,运行以下命令

echo “GET [http://${IP_ADDRESS](http://%24%7BIP_ADDRESS)}" | vegeta attack -duration=300s -header “Host: ${HOST_URL}” | tee results.bin | vegeta report
 vegeta report -type=json results.bin > metrics.json
 cat results.bin | vegeta plot > plot.html
 cat results.bin | vegeta report -type=”hist[0,100ms,200ms,300ms]”

您可以在运行上述命令的文件夹中打开 plot.html 文件以查看 Vegeta 图

[](https://res.cloudinary.com/practicaldev/image/fetch/s--ObC_6ihO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/1%2AhJuS-5X0DGHwTc1mXvVj5Q.png)

在 LogDNA 仪表板上,您可以在搜索框中搜索/过滤各种字段,还可以突出显示您感兴趣的术语。您还可以通过单击未保存的视图将其保存为 View 作为书签。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--DZ0LZp6j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/1%2AnPRZ7VXBLnUVdkZWoyB1zw.png)

LogDNA 仪表板

对于将日志归档到 IBM Cloud Object Storage,请参阅此链接

您可以按标签、来源、应用程序和级别(信息、错误等)过滤日志

[](https://res.cloudinary.com/practicaldev/image/fetch/s--0ExLNRDX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2AdB2p5dqcFcC_-Pekh6tdEQ.png)

过滤日志

板和图表

板是图形的命名集合,类似于视图。所有板都位于板列表中,并且可能包含任意数量的图表。对板所做的更改会自动保存。

要创建新版块,请在左侧窗格中 > 单击仪表板下方的图标,然后单击 +NEW BOARD。我们称之为 _ knative-board _。

  • 点击+添加图表。

  • 选择_destinationApp_ 作为要绘制的字段。

  • 选择knative-node-app-00001作为可选值,点击添加图。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--7_xMXx2_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2AsGgdPcleSqBI5FJthwdTKA.png)

新图创建

将创建一个新图表,其中包含 24 小时内的 destinationApp 图表(随意更改时间范围)。您还可以通过单击图表下方的 +Add Plot 添加新图表。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--PkPheNRl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/1024/1%2ABVIPdNzEmoTUaTGaoI6hAQ.png)

带有多个图表的knative-board

由于 Knative 以其自动缩放功能而闻名,让我们通过添加一个新图表来看看自动缩放器如何处理传入的流量/请求,如上图所示。

Knative Serving Autoscaler — 另一个运行单个 Pod 的 k8s 部署,它监视运行用户代码的 Pod 上的请求负载。它增加和减少运行用户代码的部署的大小,以补偿更高或更低的流量负载。

此外,作为您创建的图表的扩展,您可以通过单击图表下方的箭头 > + 添加来查看节点、目的地名称等各种字段的细分(直方图)。您可以创建多个细分。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--UGVFu0EP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/1024/1%2An9lLYwUHjebr6xfwpSDThA.png)

工作节点信息

我们刚刚触及了冰山一角,还有很多领域/指标需要注意。探索具有不同负载和过滤器的工具。

问题或疑虑?在 Twitter 上发布问题或联系@VidyasagarMSC

延伸阅读

  • 使用警报

  • 导出日志到本地文件

  • 使用 Kaniko — 在 K8s 集群内构建容器映像并将其推送到 IBM Cloud Container Registry

  • IBM、Google 催生 Knative Serverless Cloud 项目

  • Knative 文档


Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐