;Grafana Kubernetes监控;如何;使用Grafana Agent监控Kubernetes上的一个应用程序

使用Grafana Agent监控Kubernetes上的一个应用程序

本教程演示如何部署一个仪器化的三层(数据层、应用程序逻辑层、负载平衡层)web应用程序加入到Kubernetes集群中,并利用Grafana Cloud内置的Kubernetes监控功能来监控应用程序。

在本教程中,您将:

  • 部署TNS示例应用程序到你的Kubernetes集群。
  • 将预构建的仪表板部署到Grafana Cloud实例中,以可视化应用程序的性能指标。
  • 展开Grafana Agents,从Kubernetes集群收集指标、日志和事件。
  • 配置这些代理来从TNS应用程序收集指标、日志和跟踪(包括范例)。
  • 学习如何使用Grafana强大的相关特性从度量、到日志、到跟踪和返回。
  • 了解如何使用Kubernetes Cluster Navigator来探索集群的运行工作负载,从Pods跳到仪表板和日志。

在开始之前

要完成本教程,您需要访问:

  • 一台Kubernetes, k3,或者OpenShift集群
  • 一个Grafana云堆栈,可选与范例支持启用。要为您的Grafana云堆栈启用范例,请联系技术支持。

部署和配置Grafana Agent

按照以下过程将Grafana Agent推出到Kubernetes集群中。为了简化Agent的部署,Grafana Cloud提供了预先配置的清单供您下载和修改。

  1. 导航到Grafana Cloud实例。

  2. 单击Kubernetes监控左侧导航栏中的图标(船轮)。

  3. 点击开始发送数据,然后按安装仪表板和规则安装预先构建的Kubernetes仪表板和警报。

  4. 点击代理配置说明检查先决条件得到满足。

  5. 指标和事件、替换默认的名称空间字段与您的名称空间。

    Agent ConfigMap用您的命名空间更新。

  6. 点击复制到剪贴板并将Agent ConfigMap粘贴到编辑器中。

    默认情况下,ConfigMap只抓取集群度量端点,如/ cadvisor而且/ kubelet端点。需要配置ConfigMap为刮取模式/指标通过执行下一步,可以在集群中部署Pods的端点。

  7. 在ConfigMap中,添加以下抓取作业节:

    ……relabel_configs:行动:保持正则表达式:kube-state-metrics source_labels: - __meta_kubernetes_pod_label_app_kubernetes_io_name #新刮下面的工作- job_name:集成/ kubernetes pod-metrics kubernetes_sd_configs: - - - - - -作用:豆荚relabel_configs: -行动:下降正则表达式:kube-state-metrics source_labels: - __meta_kubernetes_pod_label_app_kubernetes_io_name行动:labelmap正则表达式:__meta_kubernetes_pod_label_ (+) - source_labels: [__meta_kubernetes_namespace]行动:取代target_label:命名空间- source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod - source_labels: ['__meta_kubernetes_namespace', '__meta_kubernetes_pod_label_name'] action: 'replace' separator: '/' target_label: 'job' replacement: '$1' - source_labels: ['__meta_kubernetes_pod_container_name'] action: 'replace' target_label: 'container' . .

    此抓取作业试图抓取在您的集群中运行的所有容器(和端口)/指标,删除任何kube-state指标(因为您已经在另一个刮擦作业中获得了这些指标),并执行一些重新标记(设置工作圆荚体名称空间等标签)。

    要了解关于配置刮擦作业的更多信息,请参阅Prometheus刮擦配置文档.您可以调整这个通用的catchall节,以使用不同的配置指令将抓取限制为给定的名称空间、工作负载标签、删除附加指标等。

  8. 配置Grafana Agent发送范本格拉弗纳云。为此,将以下内容添加到ConfigMap中:

    ……configs: - name: integrations remote_write: - url:  basic_auth: username:  password:  #添加以下行send_exemplars: true…

    注意:您必须联系技术支持才能启用范本在你的Grafana Cloud实例中。

  9. 将ConfigMap部署到集群中。

  10. 按照K8s Monitoring说明中的其余步骤,将以下内容部署到指定的命名空间:

    • 代理状态集
    • kube-state-metrics
    • Agent ConfigMap & DaemonSet用于跟踪容器日志
  11. 通过以下命令部署Agent以收集跟踪船Kubernetes跟踪使用Grafana代理指南

    一定要填写必要的信息remote_write凭证。你的Tempo端点URL应该像这样tempo-us-central1.grafana.net: 443

    重要的是:如果没有Agent来收集跟踪,演示应用程序将无法启动,因此一定要完成这一步。

    当你部署完遥测收集器后,你运行的K8s Pods应该看起来像这样:

    NAME READY STATUS重启AGE grafana-agent-0 1/1运行0 3m grafana-agent-logs-lcpjd 1/1运行0 2m44s grafana-agent-logs-pc9sp 1/1运行0 2m44s grafana-agent-logs-qtjzq 1/1运行0 2m44s grafana-agent- tracking -7775575d6d-qcrmq 1/1运行0 21s ksm-kube-state-metric -58ccd7456c-487c9 1/1运行0 2m50s . lcpjd 1/1运行0 2m44s

部署TNS应用程序

随着遥测收集器的启动和运行,您现在可以将TNS演示应用程序部署到Kubernetes集群中。TNS的GitHub库包含Kubernetes清单(用Jsonnet编写),部署应用程序所需的组件。您不需要学习Jsonnet来遵循本指南并在部署组件之前检查清单和代码。回购还包含了更多关于该应用程序的信息,以及它是如何与Grafana Cloud一起工作的。它还包含应用程序源代码。

  1. 使用实例部署app,命令如下:

    Kubectl应用-f https://raw.githubusercontent.com/grafana/tns/main/production/k8s-yamls-cloud/app-full.yaml

    在将应用程序部署到集群之前,可以检查YAML清单。这将应用程序Pods和服务部署到tns-cloud命名空间,并在命名空间不存在时创建该命名空间。

  2. 使用以下命令检查部署状态kubectl

    Kubectl得到所有-n tns-cloud
  3. 将端口转发到本地web浏览器:

    Kubectl port-forward -n tns-cloud service/app 8080:80
  4. 导航到https://localhost:8080在您的web浏览器中查看演示应用程序的运行情况。

随着测试演示应用程序和负载生成器的启动和运行,您现在可以导航到Grafana Cloud,以查询应用程序日志,可视化其指标,并检查其跟踪数据。

关联度量、日志和跟踪

此时,演示应用程序和负载生成器已经安装好并运行,您的遥测收集器正在将指标、日志、跟踪和事件数据转发到Grafana Cloud。在探索Grafana Cloud的一些内置功能之前,请安装一个自定义预构建应用程序指示板演示了Grafana的一些核心特性:

  1. 在Grafana实例中,单击指示板然后进口

  2. 输入16491,单击负载

  3. 点击进口导入仪表板。

  4. 导航到仪表板。

    以下仪表板显示:

    TNS仪表板

    注意:如果你没有看到黄点(范本),联系技术支持在你的Grafana实例中启用范例。

  5. 点击一个示例跳转到一个特别慢的请求的跟踪:

    范例

    跟踪

  6. 从这里,跳转到日志,查看有问题的跨度:

    追踪到日志

    日志

  7. 点击显示上下文在日志行上查看周围的日志上下文。

从度量、到跟踪、到日志再返回的能力是一个非常强大的功能,它可以帮助您快速解决生产问题并减少平均恢复时间(MTTR)。

方法还可以从指标跳到日志探索视图。

  1. 输入以下PromQL查询,确保选择了正确的Prometheus数据源:

    由(status_code) (rate(tns_request_duration_seconds_count{job=~"tns-cloud/app.*"}[$__rate_interval]))

    下图显示:

    PromQL查询

  2. 点击分裂在窗口顶部,并在下拉菜单中选择正确的Loki数据源:

    洛基下拉

    Grafana携带在PromQL查询中选择的标签,并预先填充一个具有相同标签的LogQL查询,这样您就可以快速地从Prometheus度量查询跳转到与您正在分析的度量图相关的相应Loki日志数据:

    记录结果

要了解更多关于这些功能的信息,请观看以下视频:

探索Kubernetes工作负载的另一种方法是使用集群导航功能。

  1. 单击Kubernetes监控图标(船轮)在您的Grafana实例的左侧导航栏中。

    显示“集群”导航选项卡。

    集群导航

  2. 单击进入一个特定的名称空间,开始研究工作负载。

    工作负载导航

    从这里,您可以看到任何发射警报、运行的Pods的运行状况,并可以进一步深入到给定的replicset。

    ReplicaSet导航

  3. 单击进入一个Pod,可以快速查看额外的Pod信息、它的日志和最新的Kubernetes集群事件。

    圆荚体视图

  4. 单击选项卡右上角的“查看计算资源”,可以快速跳转到Pod的资源使用仪表板:

    豆荚仪表板

总结

而不是复制和粘贴Pod名称和标签从终端和运行kubectl得到kubectl描述,kubectl日志,你现在可以导航和跳转到相关的可观测性数据,所有在Grafana云。

要了解更多关于Grafana Cloud Kubernetes监控的信息,请参见: