mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-05 17:27:51 +00:00
Merge pull request #158 from linux-on-ibm-z/cross-compile
Edited Makefile to add cross build support for s390x. Adding External Metrics Provider
This commit is contained in:
commit
c2e176bb23
17 changed files with 1913 additions and 1 deletions
|
|
@ -41,6 +41,7 @@ import (
|
|||
mprom "github.com/directxman12/k8s-prometheus-adapter/pkg/client/metrics"
|
||||
adaptercfg "github.com/directxman12/k8s-prometheus-adapter/pkg/config"
|
||||
cmprov "github.com/directxman12/k8s-prometheus-adapter/pkg/custom-provider"
|
||||
extprov "github.com/directxman12/k8s-prometheus-adapter/pkg/external-provider"
|
||||
resprov "github.com/directxman12/k8s-prometheus-adapter/pkg/resourceprovider"
|
||||
)
|
||||
|
||||
|
|
@ -171,6 +172,30 @@ func (cmd *PrometheusAdapter) makeProvider(promClient prom.Client, stopCh <-chan
|
|||
return cmProvider, nil
|
||||
}
|
||||
|
||||
func (cmd *PrometheusAdapter) makeExternalProvider(promClient prom.Client, stopCh <-chan struct{}) (provider.ExternalMetricsProvider, error) {
|
||||
if len(cmd.metricsConfig.ExternalRules) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
// grab the mapper
|
||||
mapper, err := cmd.RESTMapper()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to construct RESTMapper: %v", err)
|
||||
}
|
||||
|
||||
// collect series converters for adapter
|
||||
converters, errs := extprov.ConvertersFromConfig(cmd.metricsConfig, mapper)
|
||||
if len(errs) > 0 {
|
||||
return nil, fmt.Errorf("unable to construct naming scheme from metrics rules: %v", errs)
|
||||
}
|
||||
|
||||
// construct the provider and start it
|
||||
emProvider, runner := extprov.NewExternalPrometheusProvider(mapper, promClient, converters, cmd.MetricsRelistInterval)
|
||||
runner.RunUntil(stopCh)
|
||||
|
||||
return emProvider, nil
|
||||
}
|
||||
|
||||
func (cmd *PrometheusAdapter) addResourceMetricsAPI(promClient prom.Client) error {
|
||||
if cmd.metricsConfig.ResourceRules == nil {
|
||||
// bail if we don't have rules for setting things up
|
||||
|
|
@ -247,6 +272,17 @@ func main() {
|
|||
cmd.WithCustomMetrics(cmProvider)
|
||||
}
|
||||
|
||||
// construct the external provider
|
||||
emProvider, err := cmd.makeExternalProvider(promClient, wait.NeverStop)
|
||||
if err != nil {
|
||||
glog.Fatalf("unable to construct external metrics provider: %v", err)
|
||||
}
|
||||
|
||||
// attach the provider to the server, if it's needed
|
||||
if emProvider != nil {
|
||||
cmd.WithExternalMetrics(emProvider)
|
||||
}
|
||||
|
||||
// attach resource metrics support, if it's needed
|
||||
if err := cmd.addResourceMetricsAPI(promClient); err != nil {
|
||||
glog.Fatalf("unable to install resource metrics API: %v", err)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue