如果您使用Prometheus来监视您的微服务和Kubernetes环境,那么您现在可以直接将这些指标发送到New Relic以进行存储、可视化,并使用我们的方法与其他遥测数据进行关联普罗米修斯OpenMetrics集成

这一集成收集遥测数据从很多服务(如Traefik,特使,etcd),以与Prometheus兼容的格式公开指标。实际上,通过集成,您将能够监视Kubernetes环境的关键方面,例如etcd性能和运行状况指标、Kubernetes水平pod自动卡(HPA)容量和节点准备情况。

作为集成的一部分,New Relic存储了来自Prometheus的所有指标,消除了管理存储和Prometheus服务器可用性的开销。在对Kubernetes集群中的问题进行故障排除时,可以访问由此集成收集的指标以及从Kubernetes收集的指标New Relic APM和和集群资源管理器

对普罗米修斯

普罗米修斯,泰坦的一部分云本地计算基金会(CNCF)是一个开源工具包,它为运行在容器中的服务和应用程序提供监视和警报。它被广泛用于从Kubernetes环境中收集度量数据。

Prometheus与开源社区一起做了大量工作来标准化Prometheus如何格式化和公开度量标准,特别是在Kubernetes集群中。事实上,普罗米修斯暴露度量标准的方案已经成为事实上的Kubernetes标准。

普罗米修斯是如何工作的

Prometheus使用基于pull的系统通过HTTP端点从服务中提取多维timeseries指标,而不是依赖于服务将指标推出给Prometheus。由于这种基于拉取的系统,像New Relic这样的第三方可以构建集成,与Prometheus的公制出口商一起收集有价值的数据用于存储和可视化。

虽然部署Prometheus服务器很容易,但是在规模上管理Prometheus对于成长中的组织来说是一个真正的挑战。New Relic负责随着时间的推移扩展和管理度量标准的存储,并提供了可视化和提醒这些度量标准的工具。

Prometheus使用键值标记来组织度量数据,这允许用户构建强大的查询来查询他们的数据。例如,以下是通过HTTP查询指标时的样子:

myservice_requests_total{服务= "目录",env =“生产”}100

普罗米修斯的核心部件

普罗米修斯架构是创建从少数组件,以下是必要的:

普罗米修斯和Kubernetes

Prometheus已经看到了Kubernetes部署中使用量的显著增加,部分原因是它在CNCF中的地位。Prometheus还支持大量开源导出程序,以及像the这样的项目普罗米修斯运营商使它非常容易在Kubernetes环境中部署。这是一种从Kubernetes主机和进程获得指标的有效方法。

让我们从Kubernetes中的新Relic Prometheus OpenMetrics集成开始吧

New Relic的Prometheus OpenMetrics集成支持这两种功能码头工人Kubernetes使用普罗米修斯版本2。

安装例如,将Prometheus OpenMetrics集成到Kubernetes集群中,只需在清单中更改两个变量并将其部署到集群中:

  1. 下载集成清单YAML文件:
    curl - ohttps://download.newrelic.com/infrastructure_agent/integrations/kubernetes/nri-prometheus-latest.yaml
  2. 编辑nri-prometheus-latest.yaml清单文件,并添加集群名称来标识您的Kubernetes集群(必需的)和New Relic许可密钥(必需的)。
    env: - name: LICENSE_KEY值:""[…配置。yaml: | cluster_name: ""
  3. 在Kubernetes集群中部署集成:
    kubectl应用-f nri-prometheus-latest.yaml

nri-prometheus-latest.yaml清单文件包括nri-prometheus-cfg配置映射,它显示了一个示例配置。您可以使用示例文件进行配置,例如,如何清除端点指标筛选

一旦您安装了集成码头工人Kubernetes,您可以开始构建查询来跟踪和可视化您在New Relic中的Prometheus数据。

看到New Relic的文档有关兼容性和需求、安装选项、数据限制、配置、指标查询、故障排除、指标转换等方面的详细信息。

在New Relic中收集、查看和查询普罗米修斯度量

当集成就绪后,您将首先从Prometheus收集指标,然后查询和查看它们。

收集度量标准

这个集成系统会自动发现哪些目标需要突破。默认情况下,在/指标路径在端口8080。但是,您可以使用prometheus.io /端口prometheus.io /路径注释标签在Kubernetes pods和服务中指定集成在构造目标时应该使用的端口和端点路径(但注意注释优先于标签)。

例如,如果您在集群中进行了部署,那么pods会在端口上公开Prometheus指标8080路径中my-metrics,设置标签prometheus.io /端口“8080”prometheus.io /路径“my-metrics”在部署清单的PodSpec元数据中,如下所示:

apiVersion: apps/v1类型:部署元数据:名称:我-部署规范:副本:2选择器:匹配标签:app:我-app模板:元数据:标签:app:我-app普罗米修斯。io /刮:“真正的”普罗米修斯。io /端口:“8080”普罗米修斯。io /路径:“my-metrics”

这个集成将通过发送一个请求来从你的pods中检索指标http:// < pod-ip >: 8080 / my-metrics

查看和查询您的度量标准

收集之后,您可以使用New Relic查询语言(NRQL)查询您的Prometheus度量New Relic的见解或者是New Relic One制图器

例如,要获得特定集群、名称空间或pod的指标名称,请运行以下查询之一:

  • 集群:
    从度量选择uniques(metricName),其中clusterName=''
  • 名称空间:
    从度量选择uniques(metricName),其中namespaceName=''
  • 圆荚体:
    从Metric SELECT uniques(metricName),其中podName=''

从那里,你可以得到一个度量的属性和属性值:

  • 从度量选择keyset(),其中metricName=''
  • 从度量选择uniques(),其中metricName=''和podName=''

使用检索到的度量名称和属性,现在可以查询Prometheus数据。

例如:

  • 要获得原始的度量值:
    从度量中选择,其中=''
  • 以得到度量的图表(可能的聚合器是平均水平,分钟,马克斯,金额):
    从度量中选择(),其中='' TIMESERIES
  • 要查看部署中所有pods的平均内存使用情况:
    从度量选择平均(container_memory_usage_bytes),其中deploymentName='my-app-deployment'和namespaceName='default'

阅读有关查看和查询度量数据的更多信息文档

在New Relic中使用Prometheus数据的示例

在New Relic中有很多使用Prometheus数据的方法,但是请考虑以下用例:

监控etcd

Etcd是运行Kubernetes集群所必需的键值数据存储。Prometheus从etcd获取指标,因此要确保集群运行正常,可以使用Prometheus OpenMetrics集成进行监控etcd服务器、磁盘和网络指标如:

  • etcd_server_has_leader
  • etcd_server_proposals_failed_total
  • etcd_network_peer_sent_bytes_total
  • etcd_disk_wal_fsync_duration_seconds

Kubernetes卧式自动机(HPA)

HPA会根据用户配置的限制自动扩展Kubernetes部署。在安装了Prometheus OpenMetrics集成之后,您可以在New Relic chartbuilder(或New Relic Insights)中使用以下查询来构建一个仪表板小部件,以监视剩余的HPA容量。

从度量选择latest(kube_hpa_status_current_replicas)、latest(kube_hpa_spec_max_replicas),其中clusterName = '<您的集群名称>' facet hpa

使用图表生成器创建仪表板小部件来监视HPA容量

节点准备

在Kubernetes中,当节点可以接受工作负载(pods)时,它被标记为就绪。如果某个节点出现问题,Kubernetes会将其标记为“未准备好”。“创造一个警报条件为此,使用集成,使用以下查询:

从度量中选择latest(kube_node_status_condition),其中condition='Ready'和status =' true'和clusterName =' <您的集群名称>' facet nodeName

为节点准备就绪设置警报条件

看看它的行动:

让New Relic管理和扩展您的普罗米修斯数据

无论您是刚开始使用Prometheus,还是已经将它与Grafana之类的仪表盘工具一起使用来监视您的Kubernetes环境,New Relic都可以帮助您开始使用并扩展数据,而不必为管理Prometheus和仪表盘工具而烦恼。新Relic Prometheus OpenMetrics集成允许您在一个平台上存储和可视化这些重要的度量标准。使用New Relic One,您可以更容易地将度量数据与事件、跟踪和日志数据(或者,我们称之为,M.E.L.T.)从您整个软件堆栈的所有实体-从您的Kubernetes后端到您的前端浏览器ui -为您的数据和应用程序之间的关系的完全连接的视图。

为Prometheus OpenMetrics集成做出贡献

新遗迹促成了普罗米修斯的整合到Apache 2.0许可下的开放源码社区。

我们欢迎贡献到此集成或我们的任何开放源码导出程序和适配器。如果你有兴趣投稿,请浏览我们的网站贡献者指南。请记住,当你提交你的pull request时,你需要签署我们的CLA。如果您想执行我们的企业CLA,或有任何问题,请发送电子邮件到我们opensource@newrelic.com

作为Kubernetes在New Relic的产品经理,JF帮助客户理解、排除故障并优化他们的Kubernetes环境。在此之前,他为一家电信公司设计、部署、管理和自动化全球和大规模的基础设施,并在一家开发开源网络虚拟化和分析软件的初创公司担任产品经理。查看贴子

有兴趣为新遗迹博客写作吗?亚搏体育登入网给我们发个广告!