亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用golang生成prometheus格式數(shù)據(jù)

 更新時間:2025年02月06日 09:10:39   作者:景天科技苑  
Prometheus是一個開源的監(jiān)控系統(tǒng),擁有許多Advanced?Feature,本文將介紹Primetheus?client的使用,并基于golang生成prometheus格式數(shù)據(jù),希望對大家有所幫助

Prometheus是一個開源的監(jiān)控系統(tǒng),擁有許多Advanced Feature,他會定期用HTTP協(xié)議來pull所監(jiān)控系統(tǒng)狀態(tài)進行數(shù)據(jù)收集,在加上timestamp等數(shù)據(jù)組織成time series data,用metric name和label來標識不同的time series,用戶可以將數(shù)據(jù)用可視化工具顯示出來,并設置報警閾值進行報警。

本文將介紹Primetheus client的使用,基于golang語言,golang client 是當pro收集所監(jiān)控的系統(tǒng)的數(shù)據(jù)時,用于響應pro的請求,按照一定的格式給pro返回數(shù)據(jù),說白了就是一個http server。

1. 何為exporter

Prometheus 監(jiān)控基于一個很簡單的模型: 主動抓取目標的指標接口(HTTP 協(xié)議)獲取監(jiān)控指標, 再存儲到本地或遠端的時序數(shù)據(jù)庫. Prometheus 對于指標接口有一套固定的格式要求, 格式大致如下:

# HELP http_requests_total The total number of HTTP requests.
# TYPE http_requests_total counter
http_requests_total{method="post",code="200"} 1027
http_requests_total{method="post",code="400"} 3

對于自己寫的代碼, 我們當然可以使用 Prometheus 的 SDK 暴露出上述格式的指標. 但對于大量現(xiàn)有服務, 系統(tǒng)甚至硬件, 它們并不會暴露 Prometheus 格式的指標.

比如說:

  • Linux 的很多指標信息以文件形式記錄在 proc 下的各個目錄中, 如 /proc/meminfo 里記錄內(nèi)存信息, /proc/stat 里記錄 CPU 信息;
  • Redis 的監(jiān)控信息需要通過 INFO 命令獲取;
  • 路由器等硬件的監(jiān)控信息需要通過 `SNMP 協(xié)議獲取;

要監(jiān)控這些目標, 我們有兩個辦法, 一是改動目標系統(tǒng)的代碼, 讓它主動暴露 Prometheus 格式的指標, 當然, 對于上述幾個場景這種辦法完全是不現(xiàn)實的.
這時候就只能采用第二種辦法:

編寫一個代理服務, 將其它監(jiān)控信息轉(zhuǎn)化為 Prometheus 格式的指標——這個代理服務就是exporter

2. exporter簡介

廣義上講所有可以向Prometheus提供監(jiān)控樣本數(shù)據(jù)的程序都可以被稱為一個Exporter。而Exporter的一個實例稱為target。

從Exporter的來源上來講,主要分為兩類:

1.社區(qū)提供的

Prometheus社區(qū)提供了豐富的Exporter實現(xiàn),涵蓋了從基礎設施,中間件以及網(wǎng)絡等各個方面的監(jiān)控功能。這些Exporter可以實現(xiàn)大部分通用的監(jiān)控需求。

https://exporterhub.io/

2.用戶自定義的

除了直接使用社區(qū)提供的Exporter程序以外,用戶還可以基于Prometheus提供的Client Library創(chuàng)建自己的Exporter程序,目前Promthues社區(qū)官方提供了對以下編程語言的支持:Go、Java/Scala、Python、Ruby。同時還有第三方實現(xiàn)的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。

prometheus四種類型的指標Counter 計數(shù),Gauge 觀測類,Histogram 直方,Summary 摘要 用golang語言如何構造這4種類型對應的指標,二是搞清楚修改指標值的場景和方式。

在prometheus中如果要監(jiān)控服務器和應用的各種指標,需要用各種各樣的exporter服務,例如node_exportes、mysql_exportes、pgsql_exportes等。這些都是官方或者第三方已經(jīng)提供好的。

但是如果自己想要監(jiān)控一些其它exportes沒有的指標,則就需要自己去構建一個屬于自己的exportes,好在官方提供相關的庫,目前支持以下語言:

官方支持語言:

  • Go
  • Java or Scala
  • Python
  • Ruby
  • Rust

3. exporter編寫指導

Prometheus 官方文檔中 Writing Exporter 這篇寫得非常全面, 假如你要寫 exporter 推薦先通讀一遍, 限于篇幅, 這里只概括一下:

做到開箱即用(默認配置就可以直接開始用)

推薦使用 YAML 作為配置格式

指標使用下劃線命名

為指標提供 HELP String (指標上的 # HELP 注釋, 事實上這點大部分 exporter 都沒做好)

為 Exporter 本身的運行狀態(tài)提供指標

可以提供一個落地頁

metric的類型

在開始之前需要了解下metric的類型劃分

要在Golang中生成Prometheus數(shù)據(jù),你可以使用Prometheus的官方客戶端庫 prometheus/client_golang。這個庫允許你定義和暴露自定義的指標,并通過HTTP端點將這些指標暴露給Prometheus服務器。

以下是一個簡單的示例,展示如何使用Golang生成Prometheus數(shù)據(jù):

4. 安裝依賴

首先,你需要安裝Prometheus的Golang客戶端庫:

go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp

5. 編寫代碼

接下來,編寫一個簡單的Golang程序來生成和暴露Prometheus指標。

package main

import (
	"net/http"
	"time"

	"github.com/prometheus/client_golang/prometheus"
	"github.com/prometheus/client_golang/prometheus/promhttp"
)

func main() {
	// 創(chuàng)建一個自定義的Gauge指標
	customMetric := prometheus.NewGauge(prometheus.GaugeOpts{
		Name: "my_custom_metric",
		Help: "This is a custom metric",
	})

	// 注冊指標
	prometheus.MustRegister(customMetric)

	// 啟動一個goroutine來更新指標值
	go func() {
		for {
			// 模擬一些業(yè)務邏輯,更新指標值
			customMetric.Set(float64(time.Now().Unix()))
			time.Sleep(10 * time.Second)
		}
	}()

	// 暴露指標端點
	http.Handle("/metrics", promhttp.Handler())
	http.ListenAndServe(":8080", nil)
}

6. 運行程序

運行這個Golang程序:

go run main.go

程序?qū)⒃诒镜氐?080端口上啟動一個HTTP服務器,并暴露 /metrics 端點。

7. 訪問指標

你可以通過瀏覽器或 curl 命令訪問 http://localhost:8080/metrics,查看生成的Prometheus指標。

curl http://localhost:8080/metrics

你應該會看到類似以下的輸出:

# HELP my_custom_metric This is a custom metric
# TYPE my_custom_metric gauge
my_custom_metric 1.623456789e+09

8. 配置Prometheus

最后,你需要在Prometheus的配置文件中添加這個目標,以便Prometheus服務器可以定期抓取這些指標。

在 prometheus.yml 中添加以下內(nèi)容:

scrape_configs:
  - job_name: 'my_golang_app'
    static_configs:
      - targets: ['localhost:8080']

然后重啟Prometheus服務器,它將會開始抓取你的Golang應用程序暴露的指標。

9. 總結(jié)

通過使用 prometheus/client_golang 庫,你可以輕松地在Golang中生成和暴露Prometheus指標。這個示例展示了如何創(chuàng)建一個簡單的Gauge指標,并通過HTTP端點暴露它。你可以根據(jù)需要擴展這個示例,添加更多的指標類型(如Counter、Histogram等)和更復雜的業(yè)務邏輯。

到此這篇關于使用golang生成prometheus格式數(shù)據(jù)的文章就介紹到這了,更多相關golang生成prometheus數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺析Golang中調(diào)度器的關鍵機制與性能

    淺析Golang中調(diào)度器的關鍵機制與性能

    Golang的調(diào)度器是其并發(fā)模型的核心組件,負責管理Goroutine的調(diào)度和執(zhí)行,本文將從理論和代碼層面分析Golang調(diào)度器的關鍵機制,感興趣的可以了解下
    2025-03-03
  • Go語言文件操作的方法

    Go語言文件操作的方法

    這篇文章主要介紹了Go語言文件操作的方法,涉及文件的讀寫及關閉等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • 如何使用工具自動監(jiān)測SSL證書有效期并發(fā)送提醒郵件

    如何使用工具自動監(jiān)測SSL證書有效期并發(fā)送提醒郵件

    本文介紹了如何開發(fā)一個工具,用于每日檢測SSL證書剩余有效天數(shù)并通過郵件發(fā)送提醒,工具基于命令行,通過SMTP協(xié)議發(fā)送郵件,需配置SMTP連接信息,本文還提供了配置文件樣例及代碼實現(xiàn),幫助用戶輕松部署和使用該工具
    2024-10-10
  • golang 定時任務方面time.Sleep和time.Tick的優(yōu)劣對比分析

    golang 定時任務方面time.Sleep和time.Tick的優(yōu)劣對比分析

    這篇文章主要介紹了golang 定時任務方面time.Sleep和time.Tick的優(yōu)劣對比分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Golang中panic與recover的區(qū)別

    Golang中panic與recover的區(qū)別

    這篇文章主要介紹了Golang中panic與recover的區(qū)別,文章基于Golang的基礎內(nèi)容展開panic與recover的區(qū)別介紹,需要的小伙伴可以參考一下
    2022-06-06
  • 使用Go實現(xiàn)在命令行輸出好看的表格

    使用Go實現(xiàn)在命令行輸出好看的表格

    這篇文章主要介紹了使用Go實現(xiàn)在命令行輸出好看的表格方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Golang基礎常識性面試中常見的六大陷阱及應對技巧總結(jié)

    Golang基礎常識性面試中常見的六大陷阱及應對技巧總結(jié)

    Go是一門簡單有趣的語言,但與其他語言類似,它會有一些技巧,這篇文章主要給大家介紹了關于Golang基礎常識性面試中常見的六大陷阱及應對技巧的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • GoLand編寫 TCP 端口掃描器的詳細過程

    GoLand編寫 TCP 端口掃描器的詳細過程

    TCP,也就是傳輸控制協(xié)議(Transmission Control Protocol),這篇文章主要介紹了Go語言(Golang)編寫 TCP 端口掃描器,需要的朋友可以參考下
    2023-05-05
  • Go?gin框架加載Html模板文件的方法

    Go?gin框架加載Html模板文件的方法

    這篇文章主要介紹了Go?gin框架加載Html模板文件的方法,Gin框架沒有內(nèi)置靜態(tài)文件服務,但可以使用gin.Static或gin.StaticFS中間件來提供靜態(tài)文件服務,文中有相關的代碼示例供大家參考,需要的朋友可以參考下
    2024-03-03
  • Golang實現(xiàn)Redis事務深入探究

    Golang實現(xiàn)Redis事務深入探究

    這篇文章主要介紹了Golang實現(xiàn)Redis事務深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01

最新評論