github.com/tototoman/operator-sdk@v0.8.2/doc/user/metrics/service-monitor.md (about) 1 ## Using the ServiceMonitor prometheus-operator CRD 2 3 [prometheus-operator][prom-operator] is an operator that creates, configures, and manages Prometheus clusters atop Kubernetes. 4 5 `ServiceMonitor` is a CustomResource of the prometheus-operator, which discovers the `Endpoints` in `Service` objects and configures Prometheus to monitor those pods. See the prometheus-operator [documentation][service-monitor] to learn more about `ServiceMonitor`. 6 7 The `GenerateServiceMonitor` function takes a `Service` object and generates a `ServiceMonitor` resource based on it. To add `Service` target discovery of your created monitoring `Service` you can use the `metrics.CreateServiceMonitor()` helper function, which accepts the newly created `Service`. 8 9 ### Prerequisites: 10 11 - [prometheus-operator][prom-quickstart] needs to be deployed in the cluster. 12 13 ### Usage example: 14 15 ```go 16 import( 17 "k8s.io/api/core/v1" 18 "github.com/operator-framework/operator-sdk/pkg/metrics" 19 ) 20 21 func main() { 22 23 ... 24 25 // Populate below with the Service(s) for which you want to create ServiceMonitors. 26 services := []*v1.Service{} 27 28 // Create one `ServiceMonitor` per application per namespace. 29 // Change below value to name of the Namespace you want the `ServiceMonitor` to be created in. 30 ns := "default" 31 32 // Pass the Service(s) to the helper function, which in turn returns the array of `ServiceMonitor` objects. 33 serviceMonitors, err := metrics.CreateServiceMonitors(restConfig, ns, services) 34 if err != nil { 35 // handle error here 36 } 37 38 ... 39 } 40 ``` 41 42 [prom-operator]: https://github.com/coreos/prometheus-operator 43 [service-monitor]: https://github.com/coreos/prometheus-operator/blob/7a25bf6b6bb2347dacb235659b73bc210117acc7/Documentation/design.md#servicemonitor 44 [prom-quickstart]: https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus#quickstart