当前位置: 首页 > 科技观察

《云原生》PrometheusPushgetway讲解与实操

时间:2023-03-15 20:44:22 科技观察

一、概述Pushgateway是Prometheus的一个组件。Prometheusserver默认通过Exporter主动获取数据(默认使用pull来拉取数据),Pushgateway通过exporter主动推送数据到Pushgateway,Prometheus会主动拉取Pushgateway数据,用户可以自己写一些自定义的监控脚本发送将要监控的数据发送到Pushgateway。从prometheusserver的角度来看,prometheusserver主动从各种数据源(如Exporter和Pushgateway)拉取数据。1、Pushgateway的优点:Prometheus默认使用定时拉取方式拉取targets数据,但是如果不在子网或防火墙内,prometheus无法拉取targets数据,所以可以使用每个target在pushgateway上推送数据,然后prometheus去pushgateway定期拉取数据。在监控业务数据时,需要对不同的数据进行汇总,汇总后的数据可以通过pushgateway收集,再由Prometheus拉取,减轻Prometheus的压力。自定义集合指标很简单。2.Pushgateway的缺点:Prometheus只对pushgateway拉状态,不是对每个节点都拉状态。如果Pushgateway有问题,那么整个收集的数据都会有问题。Pushgateway可以持久化所有推送给它的监控数据。所以即使你的监控离线了,prometheus还是会拉取旧的监控数据,你需要手动清理pushgateway不要的数据。官方文档:https://prometheus.io/docs/prometheus/PrometheusGitHub地址:https://github.com/prometheus/prometheus/PushgetwayGitHub地址:https://github.com/prometheus/pushgateway/关于Prometheus作为整体介绍可以参考我的文章:Prometheus原理详解二、Pushgateway架构Pushgateway是一个数据中转站。提供API支持数据生产者随时推送数据过来。Pushgateway提供exporter功能,promethusserver拉取数据时,将自己保存的数据反馈给promethusserver。3、Prometheus服务器安装Prometheus基于Golang编写,编译后的软件包不依赖任何第三方依赖。用户只需下载相应平台的二进制包,解压并添加基本配置即可正常启动PrometheusServer。1)下载下载地址:https://prometheus.io/download/wgethttps://github.com/prometheus/prometheus/releases/download/v2.40.6/prometheus-2.40.6.linux-amd64.tar.gztar-xfprometheus-2.40.6.linux-amd64.tar.gz2)配置解压后,当前目录会包含默认的Prometheus配置文件promethes.yml。下面简单分析一下配置文件:#全局配置global:scrape_interval:15s#设置爬取间隔,默认1分钟evaluation_interval:15s#评估规则的默认周期,规则每15秒计算一次。默认1分钟#scrape_timeout#默认抓取超时时间,默认10s#alertmanager相关配置alerting:alertmanagers:-static_configs:-targets:#-alertmanager:9093#规则文件列表,使用'evaluation_interval'参数抓取rule_files:#-"first_rules.yml"#-"second_rules.yml"#抓取配置列表scrape_configs:-job_name:'prometheus'static_configs:-targets:['localhost:9090']3)启动服务#查看帮助./prometheus-h#直接启动服务,但是不推荐这样做,因为退出控制台服务也会退出。虽然可以加nohup启动,但是不是特别友好。下面将配置prometheus.server启动#默认端口为:9090,如果需要修改默认端口,可以使用--web.listen-address=:9099,也可以指定配置文件--config.file=prometheus.yml./prometheus配置prometheus.service启动脚本cat>/usr/lib/systemd/system/prometheus.service<]Flags:--web.listen-address=":9091"Web界面、API和遥测的侦听地址。--web.telemetry-path="/metrics"公开指标的路径。--web.external-url=从外部访问Pushgateway的URL。--web.route-prefix=""Web端点内部路由的前缀。默认为--web.external-url的路径。--persistence.file=""用于保存指标的文件。如果为空,则指标仅保存在内存中。--persistence.interval=5m写入持久性文件的最小间隔。--log.level="info"仅记录具有给定严重性或更高严重性的消息。有效级别:[debug、info、warn、error、fatal]--log.format="logger:stderr"设置日志目标和格式。示例:“logger:syslog?appname=bob&local=7”或“logger:stdout?json=true”--version显示应用程序版本。配置pushgateway.service启动脚本cat>/usr/lib/systemd/system/pushgateway.service<{//}其中job为必填参数,label_name可选,URL中的作业和标签的组合唯一标识推送网关中的组。2.推送数据部分,格式定义如下:##TYPEmetric_nametypemetric_name{lable_name="label_value",...}value1)pushdatapushagroupdefinedas{job="some_job"}dataecho"some_metric3.14"|curl--data-binary@-http://192.168.182.110:9091/metrics/job/some_job推送定义为{job="some_job",instance="some_instance"}#--data-binary表示发送二进制数据,注意:它是使用POST发送的!猫<disk_usage_metris.sh<1{print$NF"="int($(NF-1))}'`dodisk_name=`echo$line|awk-F'=''{print$1}'`disk_usage=`echo$line|awk-F'=''{print$2}'`metrics="$metrics\ndisk_usage{instance=\"$hostname\",job=\"disk\",disk_name=\"$disk_name\"}$disk_usage"doneecho-e"#直方图,在文本中有相当复杂的表示格式:\n#HELPhttp_request_duration_seconds请求持续时间的直方图。\n#TYPEhttp_request_duration_seconds直方图\n$metrics"|curl--data-binary@-http://192.168.182.110:9091/metrics/job/pushgateway/instance/disk_usageEOF查看Pushgetwayweb查看Prometheusweb

猜你喜欢