From 99c13454be2ee1660325de7fdb11e05089806310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Drouet?= Date: Tue, 23 Nov 2021 08:53:53 +0000 Subject: [PATCH] create a working example of vector internal metrics monitoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Drouet --- internal-metrics-monitoring/README.md | 8 ++++++ .../docker-compose.yml | 24 +++++++++++++++++ .../prometheus/prometheus.yml | 27 +++++++++++++++++++ .../vector/vector.toml | 15 +++++++++++ 4 files changed, 74 insertions(+) create mode 100644 internal-metrics-monitoring/README.md create mode 100644 internal-metrics-monitoring/docker-compose.yml create mode 100644 internal-metrics-monitoring/prometheus/prometheus.yml create mode 100644 internal-metrics-monitoring/vector/vector.toml diff --git a/internal-metrics-monitoring/README.md b/internal-metrics-monitoring/README.md new file mode 100644 index 0000000..df0751d --- /dev/null +++ b/internal-metrics-monitoring/README.md @@ -0,0 +1,8 @@ +# Vector internal metrics monitoring + +This demo shows how to monitor Vector's [internal metrics](https://vector.dev/docs/reference/configuration/sources/internal_metrics/) using [Prometheus](https://prometheus.io/). + +## How to start it + +To start it, you first need to clone this repository, go into the `internal-metrics-monitoring` folder and run `docker-compose up`. + diff --git a/internal-metrics-monitoring/docker-compose.yml b/internal-metrics-monitoring/docker-compose.yml new file mode 100644 index 0000000..d08406b --- /dev/null +++ b/internal-metrics-monitoring/docker-compose.yml @@ -0,0 +1,24 @@ +version: '3.9' + +services: + vector: + image: timberio/vector:latest-alpine + environment: + - LOG=info + networks: + - backend + volumes: + - ./vector:/etc/vector:ro + + prometheus: + image: bitnami/prometheus:latest + networks: + - backend + ports: + - 9090:9090 + volumes: + - ./prometheus/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml:ro + +networks: + backend: {} + diff --git a/internal-metrics-monitoring/prometheus/prometheus.yml b/internal-metrics-monitoring/prometheus/prometheus.yml new file mode 100644 index 0000000..f7d0875 --- /dev/null +++ b/internal-metrics-monitoring/prometheus/prometheus.yml @@ -0,0 +1,27 @@ +# my global config +global: + scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute. + evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. + # scrape_timeout is set to the global default (10s). + + # Attach these labels to any time series or alerts when communicating with + # external systems (federation, remote storage, Alertmanager). + external_labels: + monitor: 'vector-monitor' + +# Load rules once and periodically evaluate them according to the global 'evaluation_interval'. +rule_files: + # - "first.rules" + # - "second.rules" + +# A scrape configuration containing exactly one endpoint to scrape: +# Here it's Prometheus itself. +scrape_configs: + # The job name is added as a label `job=` to any timeseries scraped from this config. + - job_name: 'activity' + + # metrics_path defaults to '/metrics' + # scheme defaults to 'http'. + + static_configs: + - targets: ['vector:9090'] diff --git a/internal-metrics-monitoring/vector/vector.toml b/internal-metrics-monitoring/vector/vector.toml new file mode 100644 index 0000000..50701c3 --- /dev/null +++ b/internal-metrics-monitoring/vector/vector.toml @@ -0,0 +1,15 @@ +[sources.random] +type = "demo_logs" +format = "json" + +[sinks.blackhole] +type = "blackhole" +inputs = ["random"] + +[sources.internal_metrics] +type = "internal_metrics" + +[sinks.prometheus] +type = "prometheus_exporter" +inputs = ["internal_metrics"] +address = "0.0.0.0:9090"