Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 49 additions & 1 deletion Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions pkg/generator/deploy_tmpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8080
name: metrics
`

const rbacYamlTmpl = `kind: Role
Expand Down
3 changes: 3 additions & 0 deletions pkg/generator/gen_deploy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- containerPort: 8080
name: metrics
`

const rbacYamlExp = `kind: Role
Expand Down
1 change: 1 addition & 0 deletions pkg/generator/generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func printVersion() {

func main() {
printVersion()
sdk.RegisterMetrics()

resource := "app.example.com/v1alpha1"
kind := "AppService"
Expand Down
1 change: 1 addition & 0 deletions pkg/generator/main_tmpl.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func printVersion() {

func main() {
printVersion()
sdk.RegisterMetrics()

resource := "{{.APIVersion}}"
kind := "{{.Kind}}"
Expand Down
16 changes: 16 additions & 0 deletions pkg/sdk/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@ package sdk

import (
"context"
"net/http"

"github.com/operator-framework/operator-sdk/pkg/k8sclient"
sdkHandler "github.com/operator-framework/operator-sdk/pkg/sdk/handler"
sdkInformer "github.com/operator-framework/operator-sdk/pkg/sdk/informer"
sdkMetrics "github.com/operator-framework/operator-sdk/pkg/sdk/metrics"
_ "github.com/operator-framework/operator-sdk/pkg/sdk/pprof"

"github.com/sirupsen/logrus"
)
Expand Down Expand Up @@ -64,3 +67,16 @@ func Run(ctx context.Context) {
}
<-ctx.Done()
}

func RegisterMetrics() {
addr := ":8080"
if err := sdkMetrics.Register(); err != nil {
logrus.Errorf("failed to register metrics: %v", err)
panic(err)
}
// pprof was registered to http.DefaultServeMutex just by importing the package
go func() {
logrus.Println(http.ListenAndServe(addr, nil))
}()
logrus.Infof("Metrics and pprof registered on: %s", addr)
}
12 changes: 12 additions & 0 deletions pkg/sdk/metrics/metrics.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package metrics

import (
"net/http"

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

func Register() error {
http.Handle("/metrics", promhttp.Handler())
return nil
}
5 changes: 5 additions & 0 deletions pkg/sdk/pprof/pprof.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package pprof

import (
_ "net/http/pprof"
)