我们知道Prometheus使用的pull模式,但是在某些网络场景下(比如不在子网或防火墙内),Prometheus无法直接拉取监控指标数据。这时候,我们可能就需要一种能够主动推送的模式。Pushgateway是Prometheus生态系统中解决这个问题的工具。不过Pushgateway也不是万能的,它也有一些缺点:多个节点的数据聚合到pushgateway,如果pushgateway挂了,影响的范围会更大。Prometheuspullstatus只针对pushgateway,并不能对每个target都有效。由于Pushgateway可以持久化所有推送给它的监控数据,即使你的监控离线了,Prometheus还是会拉取旧的监控数据,你需要手动清理Pushgateway不要的数据。Pushgateway的存在是为了允许临时和批处理作业将其指标公开给Prometheus。由于这些类型的任务存在的时间可能不够长,无法被抓取,因此它们可以将指标推送到Pushgateway,然后后者将这些指标公开给Prometheus。我们需要了解的一点是,Pushgateway并不是主动向Prometheus推送指标,而是通过脚本主动向Pushgateway推送指标数据,Prometheus仍然采用pull方式抓取指标。前面我们也介绍过,node-exporter中的textfilecollector也可以用来收集指标。它似乎类似于Pushgateway。两者之间有什么区别吗?文本文件通常用于节点级指标,而Pushgateway用于服务级指标。安装Pushgateway的安装也非常简单,直接从Release页面下载适合你平台的二进制版本解压即可使用。如果想从源码编译,可以直接在代码根目录下执行make命令进行编译。直接执行Pushgateway二进制文件即可启动。要更改侦听地址,您可以使用--web.listen-address标志指定它(例如,0.0.0.0:9091或:9091)。默认情况下,Pushgateway不保留指标。但是--persistence.file标志允许我们指定一个文件来保存推送的指标,以便在Pushgateway重新启动时这些指标仍然存在。另外,当然我们也可以直接使用Docker镜像启动:dockerrun-d-p9091:9091prom/pushgateway同样,我们还是在Kubernetes集群中部署P??ushgateway,对应的资源列表文件如下:#pushgateway.yamlapiVersion:v1kind:PersistentVolumeClaimmetadata:name:pushgateway-datanamespace:kube-monspec:accessModes:-ReadWriteOnceresources:requests:storage:2GistorageClassName:local-path---apiVersion:apps/v1kind:Deploymentmetadata:name:pushgateway资源:命名空间:kube-mon标签:app:pushgatewayspec:选择器:matchLabels:app:pushgateway模板:元数据:标签:app:pushgateway规范:卷:-名称:数据persistentVolumeClaim:claimName:pushgateway-data容器:-名称:pushgateway图像:舞会/推送网关:v1.4.3imagePullPolicy:IfNotPresent参数:-“--persistence.file=/data”端口:-容器端口:9091名称:httpvolumeMounts:-mountPath:"/data"name:dataresources:requests:cpu:100mmemory:500Milimits:cpu:100mmemory:500Mi---apiVersion:v1kind:Servicemetadata:name:pushgateway命名空间:kube-mon标签:app:pushgatewayspec:selector:app:pushgatewaytype:NodePortports:-name:httpport:9091targetPort:http这里我们--persistence.file指定持久化文件,然后通过一个Service暴露服务,直接套用上面的Resourcemanifest文件:??kubectlapply-fhttps://p8s.io/docs/pushgateway/manifests/pushgateway.yaml??kubectlgetpods-nkube-mon-lapp=pushgatewayNAMEREADYSTATUSRESTARTSAGEpushgateway-7684cbb67d-6mbjn1/1运行099s??kubectlgetsvc-nkube-mon-lapp=pushgatewayNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEpushgatewayNodePort10.106.136.207
