mirror of https://github.com/knative/docs.git
Adds instructions link for exporting JSON definitions from Grafana UI (#464)
This helps readers easily get the instructions for exporting JSON definitions from Grafana UI.
This commit is contained in:
parent
9abdd31e94
commit
7597b85cb3
32
telemetry.md
32
telemetry.md
|
|
@ -12,13 +12,13 @@ bazel run config/monitoring:everything-dev.apply
|
||||||
```
|
```
|
||||||
|
|
||||||
## Accessing logs
|
## Accessing logs
|
||||||
Run,
|
Run,
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
kubectl proxy
|
kubectl proxy
|
||||||
```
|
```
|
||||||
Then open Kibana UI at this [link](http://localhost:8001/api/v1/namespaces/monitoring/services/kibana-logging/proxy/app/kibana)
|
Then open Kibana UI at this [link](http://localhost:8001/api/v1/namespaces/monitoring/services/kibana-logging/proxy/app/kibana)
|
||||||
(*it might take a couple of minutes for the proxy to work*).
|
(*it might take a couple of minutes for the proxy to work*).
|
||||||
When Kibana is opened the first time, it will ask you to create an index. Accept the default options as is. As logs get ingested,
|
When Kibana is opened the first time, it will ask you to create an index. Accept the default options as is. As logs get ingested,
|
||||||
new fields will be discovered and to have them indexed, go to Management -> Index Patterns -> Refresh button (on top right) -> Refresh fields.
|
new fields will be discovered and to have them indexed, go to Management -> Index Patterns -> Refresh button (on top right) -> Refresh fields.
|
||||||
|
|
||||||
|
|
@ -80,25 +80,25 @@ Then browse to http://localhost:9090 to access the UI:
|
||||||
|
|
||||||
## Generating metrics
|
## Generating metrics
|
||||||
|
|
||||||
See [Telemetry Sample](../sample/telemetrysample/README.md) for deploying a dedicated instance of Prometheus
|
See [Telemetry Sample](../sample/telemetrysample/README.md) for deploying a dedicated instance of Prometheus
|
||||||
and emitting metrics to it.
|
and emitting metrics to it.
|
||||||
|
|
||||||
If you want to generate metrics within Elafros services and send them to shared instance of Prometheus,
|
If you want to generate metrics within Elafros services and send them to shared instance of Prometheus,
|
||||||
follow the steps below. We will create a counter metric below:
|
follow the steps below. We will create a counter metric below:
|
||||||
1. Go through [Prometheus Documentation](https://prometheus.io/docs/introduction/overview/)
|
1. Go through [Prometheus Documentation](https://prometheus.io/docs/introduction/overview/)
|
||||||
and read [Data model](https://prometheus.io/docs/concepts/data_model/) and
|
and read [Data model](https://prometheus.io/docs/concepts/data_model/) and
|
||||||
[Metric types](https://prometheus.io/docs/concepts/metric_types/) sections.
|
[Metric types](https://prometheus.io/docs/concepts/metric_types/) sections.
|
||||||
2. Create a top level variable in your go file and initialize it in init() - example:
|
2. Create a top level variable in your go file and initialize it in init() - example:
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "github.com/prometheus/client_golang/prometheus"
|
import "github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
var myCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
|
var myCounter = prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||||
Namespace: "elafros",
|
Namespace: "elafros",
|
||||||
Name: "mycomponent_something_count",
|
Name: "mycomponent_something_count",
|
||||||
Help: "Counter to keep track of something in my component",
|
Help: "Counter to keep track of something in my component",
|
||||||
}, []string{"status"})
|
}, []string{"status"})
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
prometheus.MustRegister(myCounter)
|
prometheus.MustRegister(myCounter)
|
||||||
}
|
}
|
||||||
|
|
@ -113,13 +113,13 @@ and read [Data model](https://prometheus.io/docs/concepts/data_model/) and
|
||||||
myCounter.With(prometheus.Labels{"status": "failure"}).Inc()
|
myCounter.With(prometheus.Labels{"status": "failure"}).Inc()
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
4. Start an http listener to serve as the metrics endpoint for Prometheus scraping (_this step and onwards are needed
|
4. Start an http listener to serve as the metrics endpoint for Prometheus scraping (_this step and onwards are needed
|
||||||
only once in a service. ela-controller is already setup for metrics scraping and you can skip rest of these steps
|
only once in a service. ela-controller is already setup for metrics scraping and you can skip rest of these steps
|
||||||
if you are targeting ela-controller_):
|
if you are targeting ela-controller_):
|
||||||
|
|
||||||
```go
|
```go
|
||||||
import "github.com/prometheus/client_golang/prometheus/promhttp"
|
import "github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
|
|
||||||
// In your main() func
|
// In your main() func
|
||||||
srv := &http.Server{Addr: ":9090"}
|
srv := &http.Server{Addr: ":9090"}
|
||||||
http.Handle("/metrics", promhttp.Handler())
|
http.Handle("/metrics", promhttp.Handler())
|
||||||
|
|
@ -170,7 +170,7 @@ metadata:
|
||||||
namespace: monitoring
|
namespace: monitoring
|
||||||
labels:
|
labels:
|
||||||
monitor-category: ela-system # Shared Prometheus instance only targets 'k8s', 'istio', 'node',
|
monitor-category: ela-system # Shared Prometheus instance only targets 'k8s', 'istio', 'node',
|
||||||
# 'prometheus' or 'ela-system' - if you pick something else,
|
# 'prometheus' or 'ela-system' - if you pick something else,
|
||||||
# you need to deploy your own Prometheus instance or edit shared
|
# you need to deploy your own Prometheus instance or edit shared
|
||||||
# instance to target the new category
|
# instance to target the new category
|
||||||
spec:
|
spec:
|
||||||
|
|
@ -186,15 +186,15 @@ spec:
|
||||||
interval: 30s
|
interval: 30s
|
||||||
```
|
```
|
||||||
|
|
||||||
7. Add a dashboard for your metrics - you can see examples of it under
|
7. Add a dashboard for your metrics - you can see examples of it under
|
||||||
config/grafana/dashboard-definition folder. An easy way to generate JSON
|
config/grafana/dashboard-definition folder. An easy way to generate JSON
|
||||||
definitions is to use Grafana UI (make sure to login with as admin user) and export JSON from it.
|
definitions is to use Grafana UI (make sure to login with as admin user) and [export JSON](http://docs.grafana.org/reference/export_import) from it.
|
||||||
|
|
||||||
8. Add the YAML files to BUILD files.
|
8. Add the YAML files to BUILD files.
|
||||||
|
|
||||||
9. Deploy changes with bazel.
|
9. Deploy changes with bazel.
|
||||||
|
|
||||||
10. Validate the metrics flow either by Grafana UI or Prometheus UI (see Troubleshooting section
|
10. Validate the metrics flow either by Grafana UI or Prometheus UI (see Troubleshooting section
|
||||||
above to enable Prometheus UI)
|
above to enable Prometheus UI)
|
||||||
|
|
||||||
## Generating logs
|
## Generating logs
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue