使用Grafana Agent监控Kubernetes上的一个应用程序
本教程演示如何部署一个仪器化的三层(数据层、应用程序逻辑层、负载平衡层)web应用程序加入到Kubernetes集群中,并利用Grafana Cloud内置的Kubernetes监控功能来监控应用程序。
在本教程中,您将:
- 部署TNS示例应用程序到你的Kubernetes集群。
- 将预构建的仪表板部署到Grafana Cloud实例中,以可视化应用程序的性能指标。
- 展开Grafana Agents,从Kubernetes集群收集指标、日志和事件。
- 配置这些代理来从TNS应用程序收集指标、日志和跟踪(包括范例)。
- 学习如何使用Grafana强大的相关特性从度量、到日志、到跟踪和返回。
- 了解如何使用Kubernetes Cluster Navigator来探索集群的运行工作负载,从Pods跳到仪表板和日志。
在开始之前
要完成本教程,您需要访问:
部署和配置Grafana Agent
按照以下过程将Grafana Agent推出到Kubernetes集群中。为了简化Agent的部署,Grafana Cloud提供了预先配置的清单供您下载和修改。
导航到Grafana Cloud实例。
单击Kubernetes监控左侧导航栏中的图标(船轮)。
点击开始发送数据,然后按安装仪表板和规则安装预先构建的Kubernetes仪表板和警报。
点击代理配置说明检查先决条件得到满足。
下指标和事件、替换
默认的
在名称空间字段与您的名称空间。Agent ConfigMap用您的命名空间更新。
点击复制到剪贴板并将Agent ConfigMap粘贴到编辑器中。
默认情况下,ConfigMap只抓取集群度量端点,如
/ cadvisor
而且/ kubelet
端点。需要配置ConfigMap为刮取模式/指标
通过执行下一步,可以在集群中部署Pods的端点。在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节,以使用不同的配置指令将抓取限制为给定的名称空间、工作负载标签、删除附加指标等。
配置Grafana Agent发送范本格拉弗纳云。为此,将以下内容添加到ConfigMap中:
……configs: - name: integrations remote_write: - url:
basic_auth: username: password: #添加以下行send_exemplars: true… 注意:您必须联系技术支持才能启用范本在你的Grafana Cloud实例中。
将ConfigMap部署到集群中。
按照K8s Monitoring说明中的其余步骤,将以下内容部署到指定的命名空间:
- 代理状态集
- kube-state-metrics
- Agent ConfigMap & DaemonSet用于跟踪容器日志
通过以下命令部署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一起工作的。它还包含应用程序源代码。
使用实例部署app,命令如下:
Kubectl应用-f https://raw.githubusercontent.com/grafana/tns/main/production/k8s-yamls-cloud/app-full.yaml
在将应用程序部署到集群之前,可以检查YAML清单。这将应用程序Pods和服务部署到
tns-cloud
命名空间,并在命名空间不存在时创建该命名空间。使用以下命令检查部署状态
kubectl
:Kubectl得到所有-n tns-cloud
将端口转发到本地web浏览器:
Kubectl port-forward -n tns-cloud service/app 8080:80
导航到
https://localhost:8080
在您的web浏览器中查看演示应用程序的运行情况。
随着测试演示应用程序和负载生成器的启动和运行,您现在可以导航到Grafana Cloud,以查询应用程序日志,可视化其指标,并检查其跟踪数据。
关联度量、日志和跟踪
此时,演示应用程序和负载生成器已经安装好并运行,您的遥测收集器正在将指标、日志、跟踪和事件数据转发到Grafana Cloud。在探索Grafana Cloud的一些内置功能之前,请安装一个自定义预构建应用程序指示板演示了Grafana的一些核心特性:
在Grafana实例中,单击指示板然后进口.
输入
16491
,单击负载.点击进口导入仪表板。
导航到仪表板。
以下仪表板显示:
注意:如果你没有看到黄点(范本),联系技术支持在你的Grafana实例中启用范例。
点击一个示例跳转到一个特别慢的请求的跟踪:
从这里,跳转到日志,查看有问题的跨度:
点击显示上下文在日志行上查看周围的日志上下文。
在指标、日志和跟踪之间导航
从度量、到跟踪、到日志再返回的能力是一个非常强大的功能,它可以帮助您快速解决生产问题并减少平均恢复时间(MTTR)。
方法还可以从指标跳到日志探索视图。
输入以下PromQL查询,确保选择了正确的Prometheus数据源:
由(status_code) (rate(tns_request_duration_seconds_count{job=~"tns-cloud/app.*"}[$__rate_interval]))
下图显示:
点击分裂在窗口顶部,并在下拉菜单中选择正确的Loki数据源:
Grafana携带在PromQL查询中选择的标签,并预先填充一个具有相同标签的LogQL查询,这样您就可以快速地从Prometheus度量查询跳转到与您正在分析的度量图相关的相应Loki日志数据:
要了解更多关于这些功能的信息,请观看以下视频:
导航集群工作负载
探索Kubernetes工作负载的另一种方法是使用集群导航功能。
单击Kubernetes监控图标(船轮)在您的Grafana实例的左侧导航栏中。
显示“集群”导航选项卡。
单击进入一个特定的名称空间,开始研究工作负载。
从这里,您可以看到任何发射警报、运行的Pods的运行状况,并可以进一步深入到给定的replicset。
单击进入一个Pod,可以快速查看额外的Pod信息、它的日志和最新的Kubernetes集群事件。
单击选项卡右上角的“查看计算资源”,可以快速跳转到Pod的资源使用仪表板:
总结
而不是复制和粘贴Pod名称和标签从终端和运行kubectl得到
,kubectl描述
,kubectl日志
,你现在可以导航和跳转到相关的可观测性数据,所有在Grafana云。
要了解更多关于Grafana Cloud Kubernetes监控的信息,请参见:
相关Grafana云资源
介绍普罗米修斯和格拉夫娜云
普罗米修斯要接管监控世界了!在这次网络研讨会上,我们将首先简要介绍开源项目,它是监控现代云原生系统的实际标准。
如何用Grafana Cloud建立和可视化大规模的综合监控
在这个GrafanaCONline会话中,学习如何使用Kubernetes、Grafana Loki和Grafana Cloud的合成监控功能来设置基础设施的检查。
使用Grafana Cloud来驱动制造工厂的效率
GrafanaCONline课程讲述了Grafana如何帮助一家拥有75年历史的制造公司提高产品质量和维护设备。