;Grafana Kubernetes监控;如何;使用remote_write船普罗米修斯指标;安装普罗米修斯运营商Kubernetes Grafana云

安装普罗米修斯运营商Kubernetes Grafana云

在本指南您将学习如何安装普罗米修斯运营商Kubernetes集群(美丽),刮端点配置它,船刮度量Grafana云。

普罗米修斯运营商实现了Kubernetes运营商模式管理Prometheus-based Kubernetes监测堆栈。Kubernetes运营商包括Kubernetes自定义资源和Kubernetes控制器代码。总之,这些抽象的管理和实现细节Kubernetes上运行一个给定的服务。了解更多关于Kubernetes运营商,请参阅操作模式从Kubernetes文档。

普罗米修斯运营商安装一套Kubernetes自定义资源,简化普罗米修斯部署和配置。例如,使用ServiceMonitor自定义资源,您可以配置Kubernetes服务应该如何监控k8 YAML体现而不是普罗米修斯配置代码。操作员控制器将与k8 API服务器添加服务通信/指标端点和自动生成所需的普罗米修斯刮配置配置服务。更多地了解普罗米修斯运营商,请参见普罗米修斯算子GitHub库

我们将开始通过安装普罗米修斯运营商Kubernetes集群。接下来,我们将推出一个2-replica高可用性(HA)普罗米修斯部署到集群使用运算符,然后将普罗米修斯服务器公开为服务。最后,我们将创建一个ServiceMonitor指示普罗米修斯刮,然后船这些报废指标Grafana云。

在开始之前

在你开始之前,你应该有以下可用:

  • 一个Kubernetes> = 1.16.0集群与基于角色的访问控制(RBAC)启用。
  • Grafana云账户。
  • Grafana云API的关键MetricsPublisher的角色。学习如何创建一个Grafana云API密匙,请参阅创建一个Grafana云API键
  • kubectl命令行工具在本地机器上安装和配置为连接到集群。你可以阅读更多关于安装kubectl在官方文档

一旦你准备好了,你可以开始了。

安装普罗米修斯运营商

我们会通过安装普罗米修斯运营商Kubernetes集群。我们将安装所有的普罗米修斯运营商Kubernetes定制资源定义(crd)定义普罗米修斯,Alertmanager和ServiceMonitor抽象用于配置监控堆栈。我们还将部署一个普罗米修斯操作员控制器到集群。

安装操作人员使用bundle.yaml普罗米修斯运营商GitHub库文件:

kubectl创建- f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/master/bundle.yaml

你应该可以看到如下输出:

customresourcedefinition.apiextensions.k8s.io / alertmanagerconfigs.monitoring.coreos.com customresourcedefinition.apiextensions.k8s.io /创建alertmanagers.monitoring.coreos.com创建customresourcedefinition.apiextensions.k8s.io / podmonitors.monitoring.coreos.com customresourcedefinition.apiextensions.k8s.io /创建probes.monitoring.coreos.com创建customresourcedefinition.apiextensions.k8s.io / prometheuses.monitoring.coreos.com customresourcedefinition.apiextensions.k8s.io /创建prometheusrules.monitoring.coreos.com创建customresourcedefinition.apiextensions.k8s.io / servicemonitors.monitoring.coreos.com customresourcedefinition.apiextensions.k8s.io /创建thanosrulers.monitoring.coreos.com clusterrolebinding.rbac.authorization.k8s创建。io / prometheus-operator clusterrole.rbac.authorization.k8s创建。io / prometheus-operator创建部署。应用程序/ prometheus-operator serviceaccount创建/ prometheus-operator创建服务/ prometheus-operator创建

bundle.yaml安装crd普罗米修斯对象以及普罗米修斯操作员控制器和服务。

注意:在本指南,我们将安装到的一切默认的名称空间。学习如何安装普罗米修斯运营商到另一个名称空间,请参阅普罗米修斯操作文档

验证普罗米修斯运营商安装成功使用kubectl:

kubectl得到部署
姓名准备最新的可用年龄prometheus-operator 1 1 3 m21s 1/1

安装了普罗米修斯运营商,你可以继续配置RBAC普罗米修斯服务器的权限。

普罗米修斯RBAC配置权限

普罗米修斯推出之前,我们将配置使用ClusterRole RBAC的特权,和绑定这ClusterRole ServiceAccount使用ClusterRoleBinding对象。

普罗米修斯需要发现目标和拉ConfigMaps Kubernetes API访问。了解更多关于权限授予在本节中,请参阅RBAC从普罗米修斯操作文档。

首先,创建一个目录,你将存储任何k8体现用于本指南,和cd成:

mkdir operator_k8s cd operator_k8s

创建一个清单文件prom_rbac.yaml使用您喜欢的编辑器。粘贴在下面Kubernetes清单:

apiVersion: v1: ServiceAccount元数据:名称:普罗米修斯——apiVersion: rbac.authorization.k8s。io / v1beta1: ClusterRole元数据:名称:普罗米修斯规则:- apiGroups:["]资源:-节点-节点/指标-服务端点豆荚动词:[“获得”,“列表”,“看”)——apiGroups:["]资源:- configmaps动词:[“获得”]- apiGroups: networking.k8s。io资源:进入动词:[“获得”,“列表”,“看”)——nonResourceURLs:[" /指标"]动词:[“获得”]——apiVersion: rbac.authorization.k8s。io / v1beta1: ClusterRoleBinding元数据:名称:普罗米修斯roleRef: apiGroup: rbac.authorization.k8s。io: ClusterRole名称:普罗米修斯主题:-:ServiceAccount名称:普罗米修斯名称空间:违约

这将创建一个ServiceAccount调用普罗米修斯并将它绑定普罗米修斯ClusterRole。manifest ClusterRole赠款得到,列表,k8 API的特权。

当你完成编辑manifest,保存并关闭它。

创建的对象使用kubectl:

kubectl应用- f
serviceaccount /普罗米修斯clusterrole.rbac.authorization.k8s创建。io /普罗米修斯clusterrolebinding.rbac.authorization.k8s创建。io /普罗米修斯创造了

现在,普罗米修斯k8 API访问,您可以将其部署到集群。

部署普罗米修斯

在此步骤中,我们将推出一个2-replica HA普罗米修斯Kubernetes集群部署到使用普罗米修斯普罗米修斯算子定义的资源。

普罗米修斯资源编码特定领域的普罗米修斯配置为一组容易配置YAML字段。而不是管理普罗米修斯普罗米修斯配置配置文件和学习语法,你可以通过修改切换许多重要的配置参数普罗米修斯对象变量k8清单。

首先创建一个文件prometheus.yaml。粘贴在以下清单:

apiVersion: monitoring.coreos.com/v1类:普罗米修斯的元数据:名称:普罗米修斯标签:应用:普罗米修斯规范:形象:quay.io /普罗米修斯/普罗米修斯:v2.22.1 nodeSelector: kubernetes。io / os: linux副本:2资源:请求:内存:400 mi securityContext: fsGroup: 2000 runAsNonRoot:真正的runAsUser: 1000 serviceAccountName:普罗米修斯版本:v2.22.1 serviceMonitorSelector: {}

请注意,我们组普罗米修斯,不部署圆荚体。的普罗米修斯资源抽象了底层控制器和ConfigMaps成流线型对象用来操纵普罗米修斯基础设施组件。

我们定义以下参数:

  • 的名字普罗米修斯资源普罗米修斯
  • 给它一个应用:普罗米修斯标签
  • 设置集装箱图像用于运行普罗米修斯
  • 限制其部署到Linux节点
  • 确保每个副本都有400米可用的内存
  • 配置安全上下文。要了解更多,请参阅配置一个圆荚体或容器的安全上下文
  • 设置ServiceAccount它将使用
  • 设置普罗米修斯版本
  • 指示普罗米修斯自动捡起所有配置ServiceMonitor资源的使用{}。在这个指导我们将创建一个ServiceMonitor让普罗米修斯刮自己的指标。

当你完成后,保存并关闭该文件。

将其部署到集群kubectl应用- f:

kubectl应用- f
prometheus.monitoring.coreos.com/prometheus创建

注意:我们普罗米修斯部署到默认的名称空间。部署普罗米修斯在另一个名称空间,可以使用- n namespace_name旗帜上写着kubectl或设置名称空间场资源的Kubernetes清单文件。

验证部署使用kubectl得到:

kubectl让普罗米修斯
姓名版本副本年龄普罗米修斯v2.22.1 2 32 s

您可以检查底层舱使用得到豆荚:

kubectl得到豆荚
姓名就绪状态重启年龄普罗米修斯-运营商- 79 cd654746 mdfp6 1/1运行0 33 m prometheus-prometheus-0 2/2运行1 57 s prometheus-prometheus-1 2/2运行1 57 s

现在,普罗米修斯已经启动并运行在集群中,我们可以使用一个公开的服务。

创建一个普罗米修斯服务

创建普罗米修斯服务,打开一个清单文件prom_svc.yaml粘贴在以下定义:

apiVersion: v1:服务元数据:名称:普罗米修斯标签:应用:普罗米修斯规范:港口:-名称:网络端口:9090发送:web选择器:应用:普罗米修斯sessionAffinity: ClientIP

这个配置如下:

  • 设置服务名称普罗米修斯
  • 创建一个应用:普罗米修斯服务标签
  • 使港口9090年在整个集群范围的稳定的IP地址并将其转发给两个普罗米修斯豆荚违约网络端口(9090年)
  • 使用选择普罗米修斯豆荚作为目标应用:普罗米修斯标签
  • 使用sessionAffinity: ClientIP确保连接从一个特定的客户得到同样转发到仓

当你完成后,保存并关闭该文件。

创建服务使用kubectl应用- f:

kubectl应用- f prom_svc.yaml
服务/普罗米修斯创造了

检查你的工作使用kubectl得到:

kubectl得到服务
名字类型集群ip外部ip端口(S)年龄kubernetes ClusterIP 10.245.0.1 <无> 443 / TCP 27 h普罗米修斯ClusterIP 10.245.106.105 <无> 9090 / TCP 26小时prometheus-operated ClusterIP没有<无> 9090 / TCP 8 m52 prometheus-operator ClusterIP没有<无> 8080 / TCP 41米

普罗米修斯服务已经启动并运行。

让我们访问普罗米修斯服务器转发的普罗米修斯服务运行在本地端口Kubernetes集群:

9090年kubectl左前svc /普罗米修斯
转发来自127.0.0.1:9090 - > 9090转发(::1):9090 - > 9090

导航到http://localhost: 9090访问普罗米修斯界面:

普罗米修斯UI

从这里,点击状态然后目标看到任何刮配置目标。

这应该是空的,因为我们还没有配置任何刮伤。我们将在下一步中这样做。

创建一个普罗米修斯ServiceMonitor

在此步骤中,我们将创建一个ServiceMonitor,普罗米修斯服务器端点刮伤自己的指标。

普罗米修斯ServiceMonitor定义一组目标监视和刮伤。普罗米修斯算子的实现细节进行了抽象配置Kubernetes服务发现和刮目标使用这个ServiceMonitor资源。

普罗米修斯不用修改配置文件,更新ConfigMap对象,并推出新的配置,普罗米修斯操作符将自动在新ServiceMonitors钩你的跑步普罗米修斯部署。

首先创建一个文件prometheus_servicemonitor.yaml。粘贴在下面ServiceMonitor资源定义:

apiVersion: monitoring.coreos.com/v1: ServiceMonitor元数据:名称:prometheus-self标签:应用:普罗米修斯规范:端点:-间隔:30年代端口:web选择器:matchLabels:应用:普罗米修斯

在这里,我们定义以下参数:

  • 的名字ServiceMonitorprometheus-self
  • 给它一个应用:普罗米修斯标签
  • 设置刮间隔30年代,刮网络中定义的端口(普罗米修斯服务)
  • 选择普罗米修斯服务使用的刮matchLabels选择器与应用:普罗米修斯

当你完成后,保存并关闭该文件。

部署使用kubectl应用- f:

kubectl应用- f prometheus_servicemonitor.yaml
servicemonitor.monitoring.coreos.com/prometheus-self创建

普罗米修斯运营商通常立即更新您的普罗米修斯配置。在某些情况下,您可能需要等待一分钟左右更改传播。

验证您的更改由转发端口普罗米修斯服务器并检查其配置:

9090年kubectl左前svc /普罗米修斯

导航到状态然后目标普罗米修斯的界面:

普罗米修斯的目标

您应该看到两个普罗米修斯副本刮的目标。

导航到测试指标集合:

普罗米修斯图形用户界面

表达式框,输入prometheus_http_requests_total,点击输入。您应该看到一个刮指标和它们的值的列表。这是HTTP请求数为各种普罗米修斯服务器端点。

配置一个ServiceMonitor如果你有麻烦,请参阅故障排除ServiceMonitor变化

此时,您已经配置了普罗米修斯刮本身并存储在本地度量。在以下步骤中,您将配置普罗米修斯Grafana云船这些指标。

创建一个Kubernetes秘密存储Grafana云凭证

在配置普罗米修斯remote_write功能船指标Grafana云,您需要创建一个存储Grafana Kubernetes秘密云度量用户名和密码。

你可以找到你的用户名,导航到云中的堆栈门户和点击细节普罗米修斯面板旁边。

你的密码生成对应的API密匙的先决条件。你也可以生成一个在这个面板中点击现在生成

一旦你注意到云普罗米修斯的用户名和密码,创建Kubernetes秘密。您可以创建一个秘密使用清单文件或直接使用kubectl。在本指南,我们将直接使用创建它kubectl。了解更多关于Kubernetes秘密,请咨询秘密从Kubernetes文档。

运行以下命令创建一个秘密kubepromsecret:

kubectl创建秘密通用kubepromsecret \——文字=用户名= < your_grafana_cloud_prometheus_username > \密码——文字= = < your_grafana_cloud_API_key >的

注意:如果你部署监控堆栈以外的在一个名称空间中默认的,附加- n国旗与适当的名称空间上面的命令。

学习关于这个命令的更多信息,请参阅使用kubectl管理的秘密从官方Kubernetes文档。

现在,您已经创建了一个秘密存储Grafana云凭证,您可以继续修改您的普罗米修斯配置。

重复数据删除配置普罗米修斯remote_write和指标

在这个步骤中,您将配置remote_write船集群指标Grafana云。

普罗米修斯的remote_write特性允许您船指标为长期储存和聚合远程端点。Grafana云的重复数据删除功能允许您删除处理指标从普罗米修斯对高可用性,减少活性系列使用。

我们将使remote_write通过修改普罗米修斯在步骤3中创建的资源。打开prometheus.yaml使用你的编辑清单:

apiVersion: monitoring.coreos.com/v1类:普罗米修斯的元数据:名称:普罗米修斯标签:应用:普罗米修斯规范:形象:quay.io /普罗米修斯/普罗米修斯:v2.22.1 nodeSelector: kubernetes。io / os: linux副本:2资源:请求:内存:400 mi securityContext: fsGroup: 2000 runAsNonRoot:真正的runAsUser: 1000 serviceAccountName:普罗米修斯版本:v2.22.1 serviceMonitorSelector: {}

添加以下部分的资源定义:

。remoteWrite: url:“<度量实例remote_write端点>”basicAuth:用户名:名字:kubepromsecret关键:用户名密码:名称:kubepromsecret关键:密码replicaExternalLabelName:“__replica__”externalLabels:集群:“< choose_a_prom_cluster_name >”

在这里,我们配置以下参数:

  • 设置remote_write端点URL对应于Grafana云普罗米修斯的指标。你可以找到的/ api /舞会/推动为你的度量端点URL、用户名和密码点击细节普罗米修斯卡的云门户
  • 配置一个basicAuth用户名和密码引用前面步骤中创建的秘密kubepromsecret。选择用户名密码这个秘密的钥匙。
  • 重复数据删除使用配置Grafana云指标replicaExternalLabelNameexternalLabels字段。集集群普罗米修斯HA集群的值确定。要了解更多,请参阅从高可用性普罗米修斯对发送删除指标数据

保存并关闭该文件当你完成编辑。

推广使用的变化kubectl应用- f:

kubectl应用- f prometheus.yaml
prometheus.monitoring.coreos.com/prometheus配置

此时,您已经成功地配置了普罗米修斯实例remote_write刮度量Grafana云。您可以验证您的更改传播到你的跑步普罗米修斯实例使用左前:

9090年kubectl左前svc /普罗米修斯

导航到http://localhost: 9090在您的浏览器,然后状态配置。验证remote_writeexternal_labels块上面附加已经传播到你的跑步普罗米修斯实例。可能需要一两分钟普罗米修斯运营商拾取新的配置。

在最后一步中,您将查询您的集群指标Grafana云。

访问您的普罗米修斯指标Grafana云

现在,普罗米修斯实例船刮指标Grafana云,您可以查询和可视化这些指标从Grafana云平台。

从云门户,点击登录旁边Grafana Grafana卡登录。

从这里,点击探索在侧边栏(指南针):

Grafana探索图标

PromQL查询框,输入相同的指标测试步骤5中,prometheus_http_requests_total,点击SHIFT + ENTER

您应该看到一个图的时间序列数据对应不同的标签prometheus_http_requests_total指标。从Grafana Grafana查询这些数据云存储和度量数据你的本地集群。

从这里您可以创建仪表板和面板快速可视化和警报数据。要了解更多,请参阅仪表板概述板概述从Grafana文档。

总结

在这个指导您安装普罗米修斯运营商Kubernetes集群,2-replica公顷普罗米修斯设置部署到集群,并刮自己的配置/指标端点。然后配置普罗米修斯Grafana云船这个数据和删除处理两套系列,以减少指标使用。

从这里您可以添加额外的端点来刮,像Kubernetes API,或者kubelet从Kubernetes节点指标。看到一个完全配置普罗米修斯Kubernetes堆栈在行动,请参阅kube-prometheus项目。