如果您使用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
普罗米修斯的核心部件
的普罗米修斯架构是创建从少数组件,以下是必要的:
- 普罗米修斯服务器:抓取和存储时间序列度量数据
- Pushgateway:在发送到Prometheus服务器之前,缓存来自短期任务的指标
- 出口商:从第三方服务,如Redis, etcd,和Grafana获取数据
- 客户端库:用于仪器服务和应用程序的监测与普罗米修斯
普罗米修斯和Kubernetes
Prometheus已经看到了Kubernetes部署中使用量的显著增加,部分原因是它在CNCF中的地位。Prometheus还支持大量开源导出程序,以及像the这样的项目普罗米修斯运营商使它非常容易在Kubernetes环境中部署。这是一种从Kubernetes主机和进程获得指标的有效方法。
让我们从Kubernetes中的新Relic Prometheus OpenMetrics集成开始吧
New Relic的Prometheus OpenMetrics集成支持这两种功能码头工人和Kubernetes使用普罗米修斯版本2。
安装例如,将Prometheus OpenMetrics集成到Kubernetes集群中,只需在清单中更改两个变量并将其部署到集群中:
- 下载集成清单YAML文件:
curl - ohttps://download.newrelic.com/infrastructure_agent/integrations/kubernetes/nri-prometheus-latest.yaml
- 编辑
nri-prometheus-latest.yaml
清单文件,并添加集群名称来标识您的Kubernetes集群(必需的)和New Relic许可密钥(必需的)。env: - name: LICENSE_KEY值:"
"[…配置。yaml: | cluster_name: " " - 在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
节点准备
在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。