当前位置:首页 > 科技  > 软件

Go 语言开发的基于指标的监控系统 Prometheus

来源: 责编: 时间:2023-11-06 08:54:16 440观看
导读01 介绍Go 语言开发的基于指标的监控系统 Prometheus,主要采用拉取方式收集监控数据,通过 Pushgateway 也可以采用推送方式收集监控数据。关于 Prometheus 的客户端库和 PromQL 的使用,是 Go 开发者重点需要掌握的部分。

01 介绍

Go 语言开发的基于指标的监控系统 Prometheus,主要采用拉取方式收集监控数据,通过 Pushgateway 也可以采用推送方式收集监控数据。POH28资讯网——每日最新资讯28at.com

关于 Prometheus 的客户端库和 PromQL 的使用,是 Go 开发者重点需要掌握的部分。POH28资讯网——每日最新资讯28at.com

本文我们介绍通过使用 Prometheus 官方提供的 golang 客户端库,使用 Counter 数据类型记录 HTTP 接口的调用量。POH28资讯网——每日最新资讯28at.com

02 安装、启动 Prometheus server

Prometheus server 可以直接使用二进制文件的方式安装,在 Prometheus 官网[1]下载二进制文件,示例:POH28资讯网——每日最新资讯28at.com

  1. 下载二进制文件。
  2. 解压缩二进制文件。
  3. 启动 Prometheus server。
cd ~/Downloadwget https://github.com/prometheus/prometheus/releases/download/v2.48.0-rc.2/prometheus-2.48.0-rc.2.darwin-amd64.tar.gztar zxvf prometheus-2.48.0-rc.2.darwin-amd64.tar.gzcd prometheus-2.48.0-rc.2.darwin-amd64lltotal 472152-rw-r--r--@ 1 frank  staff      11357 10 13 00:41 LICENSE-rw-r--r--@ 1 frank  staff       3773 10 13 00:41 NOTICEdrwxr-xr-x@ 4 frank  staff        128 10 13 00:41 console_librariesdrwxr-xr-x@ 9 frank  staff        288 10 13 00:41 consoles-rwxr-xr-x@ 1 frank  staff  123733776 10 13 00:09 prometheus-rw-r--r--@ 1 frank  staff        934 10 13 00:41 prometheus.yml-rwxr-xr-x@ 1 frank  staff  117982832 10 13 00:11 promtool./prometheus --config.file=prometheus.yaml

启动 Prometheus server 后,可以在浏览器访问 http://localhost:9090/graph,查看 Prometheus 提供的可视化控制面板,也可以使用 Grafana。POH28资讯网——每日最新资讯28at.com

03 Golang 客户端库

安装并成功启动 Prometheus server 后,我们就可以通过 Prometheus 官方提供的 Golang 客户端库在我们的 Go 项目代码埋点。POH28资讯网——每日最新资讯28at.com

Prometheus client 支持 4 种数据类型,分别是 Counter、Gauge、Histogram 和 Summary。POH28资讯网——每日最新资讯28at.com

本文我们以 Counter 数据类型为例,介绍如何在 Go 项目中使用 Prometheus go client 库的函数埋点。POH28资讯网——每日最新资讯28at.com

所谓埋点,就是在我们的 Go 项目中,导入 github.com/prometheus/client_golang/prometheus,调用库函数,记录监控数据。POH28资讯网——每日最新资讯28at.com

示例代码:POH28资讯网——每日最新资讯28at.com

package promimport "github.com/prometheus/client_golang/prometheus"var ( labelNames     = []string{"service", "code", "path", "method"} RequestCounter = prometheus.NewCounterVec(  prometheus.CounterOpts{   Name: "http_request_count_total",   Help: "Total number of HTTP requests made.",  }, labelNames, ))func init() { prometheus.MustRegister(RequestCounter)}

阅读上面这段代码,我们调用 prometheus.NewCounterVec(),记录 HTTP 接口的调用量。POH28资讯网——每日最新资讯28at.com

我们为 HTTP 接口定义 4 个标签,分别是 service,code,path,method。POH28资讯网——每日最新资讯28at.com

然后通过 /metrics 接口,让 Prometheus server 拉取数据。POH28资讯网——每日最新资讯28at.com

curl http://localhost:8080/metrics// ...# HELP http_request_count_total Total number of HTTP requests made.# TYPE http_request_count_total counterhttp_request_count_total{code="200",method="GET",path="/metrics",service="example-service"} 3http_request_count_total{code="200",method="GET",path="/ping",service="example-service"} 2// ...

04 修改配置文件

接下来,我们需要修改 YAML 格式的配置文件 prometheus.yaml,添加一个 job。POH28资讯网——每日最新资讯28at.com

scrape_configs:  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.  - job_name: "prometheus"    # metrics_path defaults to '/metrics'    # scheme defaults to 'http'.    static_configs:      - targets: ["localhost:9090"]  # Example service  - job_name: "example-service"    static_configs:      - targets: ["localhost:8080"]

阅读上面这段代码,我们在 prometheus.yaml 的 scrape_configs 部分,添加一个 job。POH28资讯网——每日最新资讯28at.com

然后重启 Prometheus server,使修改后的配置文件生效。POH28资讯网——每日最新资讯28at.com

05 总结

本文我们通过示例,介绍怎么使用 Prometheus 监控 Go 项目,读者朋友们可以参照文章,动手操作一遍。POH28资讯网——每日最新资讯28at.com

感兴趣的读者朋友们,阅读 Prometheus golang client[2] 官方文档,了解更多。POH28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-17179-0.htmlGo 语言开发的基于指标的监控系统 Prometheus

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Ydata_Profiling:自动生成数据探索报告的Python库

下一篇: ListUtils技巧大全:提升你的Java列表操作效率

标签:
  • 热门焦点
  • 6月iOS设备好评榜:第一蝉联榜首近一年

    作为安兔兔各种榜单里变化最小的那个,2023年6月的iOS好评榜和上个月相比没有任何排名上的变化,仅仅是部分设备好评率的下降,长年累月的用户评价和逐渐退出市场的老款机器让这
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 分享六款相见恨晚的PPT模版网站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS网站旨在为全球Office用户提供丰富的高品质原创PPT模板、实用文档、数据图表及个性化定制服务。优点:OfficePLUS是微软官方网站,囊括PPT模板、Word模
  • 谷歌KDD'23工作:如何提升推荐系统Ranking模型训练稳定性

    谷歌在KDD 2023发表了一篇工作,探索了推荐系统ranking模型的训练稳定性问题,分析了造成训练稳定性存在问题的潜在原因,以及现有的一些提升模型稳定性方法的不足,并提出了一种新
  • 梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的&ldquo;征求意见版&rdquo;:1、取消P序列
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top