You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package metrics
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
// PrometheusExporter 将内部指标导出为 Prometheus 文本格式。
|
|
type PrometheusExporter struct {
|
|
metrics Metrics
|
|
}
|
|
|
|
// NewPrometheusExporter 创建 Prometheus 导出器。
|
|
func NewPrometheusExporter(m Metrics) *PrometheusExporter {
|
|
return &PrometheusExporter{
|
|
metrics: m,
|
|
}
|
|
}
|
|
|
|
// Export 将指标写入指定的 io.Writer。
|
|
func (e *PrometheusExporter) Export(w io.Writer) error {
|
|
// 连接数
|
|
fmt.Fprintf(w, "# HELP nnet_connections Current number of connections\n")
|
|
fmt.Fprintf(w, "# TYPE nnet_connections gauge\n")
|
|
fmt.Fprintf(w, "nnet_connections %d\n", e.metrics.GetConnections())
|
|
|
|
// 请求数
|
|
fmt.Fprintf(w, "# HELP nnet_requests Total number of requests\n")
|
|
fmt.Fprintf(w, "# TYPE nnet_requests counter\n")
|
|
fmt.Fprintf(w, "nnet_requests %d\n", e.metrics.GetRequests())
|
|
|
|
// 错误数
|
|
fmt.Fprintf(w, "# HELP nnet_errors Total number of errors\n")
|
|
fmt.Fprintf(w, "# TYPE nnet_errors counter\n")
|
|
fmt.Fprintf(w, "nnet_errors %d\n", e.metrics.GetErrors())
|
|
|
|
// 接收字节数
|
|
fmt.Fprintf(w, "# HELP nnet_bytes_received Total bytes received\n")
|
|
fmt.Fprintf(w, "# TYPE nnet_bytes_received counter\n")
|
|
fmt.Fprintf(w, "nnet_bytes_received %d\n", e.metrics.GetBytesReceived())
|
|
|
|
// 发送字节数
|
|
fmt.Fprintf(w, "# HELP nnet_bytes_sent Total bytes sent\n")
|
|
fmt.Fprintf(w, "# TYPE nnet_bytes_sent counter\n")
|
|
fmt.Fprintf(w, "nnet_bytes_sent %d\n", e.metrics.GetBytesSent())
|
|
|
|
return nil
|
|
}
|