github.com/polarismesh/polaris@v1.17.8/common/metrics/default.go (about) 1 /** 2 * Tencent is pleased to support the open source community by making Polaris available. 3 * 4 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. 5 * 6 * Licensed under the BSD 3-Clause License (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * https://opensource.org/licenses/BSD-3-Clause 11 * 12 * Unless required by applicable law or agreed to in writing, software distributed 13 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 14 * CONDITIONS OF ANY KIND, either express or implied. See the License for the 15 * specific language governing permissions and limitations under the License. 16 */ 17 18 package metrics 19 20 import ( 21 "net/http" 22 23 "github.com/prometheus/client_golang/prometheus" 24 "github.com/prometheus/client_golang/prometheus/collectors" 25 "github.com/prometheus/client_golang/prometheus/promhttp" 26 ) 27 28 var ( 29 registry = prometheus.NewRegistry() 30 ) 31 32 // GetRegistry 获取 metrics 的 registry 33 func GetRegistry() *prometheus.Registry { 34 return registry 35 } 36 37 // GetHttpHandler 获取 handler 38 func GetHttpHandler() http.Handler { 39 // 添加 Golang runtime metrics 40 registry.MustRegister(collectors.NewGoCollector( 41 collectors.WithGoCollections(collectors.GoRuntimeMetricsCollection), 42 )) 43 return promhttp.HandlerFor(registry, promhttp.HandlerOpts{EnableOpenMetrics: true}) 44 } 45 46 var ( 47 metricsPort int32 48 ) 49 50 func SetMetricsPort(port int32) { 51 metricsPort = port 52 } 53 54 func GetMetricsPort() int32 { 55 return metricsPort 56 } 57 58 // InitMetrics 初始化 metrics 的所有指标 59 func InitMetrics() { 60 registerSysMetrics() 61 registerClientMetrics() 62 registerConfigFileMetrics() 63 registerDiscoveryMetrics() 64 }