VictoriaMetrics/deployment/docker
Aliaksandr Valialkin a018b1d75e
app/vmalert/templates: properly escape all the special chars in quotesEscape function
Previously the `quotesEscape` function was escaping only double quotes.
This wasn't enough, since the input string could contain other special chars,
which must be escaped when put inside JSON string. For example, carriage return and line feed chars (\n\r),
backslash char, etc. This led to the following issues, which were improperly fixed:

- https://github.com/VictoriaMetrics/VictoriaMetrics/issues/890 - this issue
  was "fixed" by introducing the `crlfEscape` function, which led to unnecessary
  complications in user templates, while not fixing various corner cases
  such as backslash chars in the input string.
  See 1de15ad490

- https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3139 - this issue
  was "fixed" by urlencoding the whole string passed to -external.alert.source
  command-line flag. This led to invalid urls, which couldn't be parsed by Grafana.
  See 00c838353d
  and 4bd0244599

This commit properly encodes the input string passed to `quotesEscape`, so it can be safely embedded inside JSON strings.

This commit deprecates crlfEscape template function and adds the following new template functions:

- strvalue and stripDomain - these functions are supported by Prometheus, so they were added
  for compatibility purposes.
- jsonEscape and htmlEscape for converting the input string to valid quoted JSON string
  and for html-escaping the input string, so it could be safely embedded as a plaintext
  into html.

This commit also documents all supported template functions at https://docs.victoriametrics.com/vmalert.html#template-functions
The deprecated crlfEscape function isn't documented on purpose, since its usefulness is negative in general case.
2022-10-28 00:01:16 +03:00
..
base deployment/docker: embed tzdata into prod Go app instead of installing it into base docker image 2021-02-12 04:54:27 +02:00
builder deployment/docker: upgrade Go builder for production builds from v1.17.7 to v1.18.0 2022-03-16 14:07:43 +02:00
provisioning deployment/docker: move cluster compose env to master branch (#3130) 2022-09-21 11:48:38 +03:00
alertmanager.yml docker-compose: add blackhole receiver for alertmanager (#999) 2021-01-07 23:33:53 +02:00
alerts-cluster.yml docker-compose: move TooManyLogs into vm-health alerts set (#3199) 2022-10-05 19:23:36 +02:00
alerts-health.yml docker-compose: move TooManyLogs into vm-health alerts set (#3199) 2022-10-05 19:23:36 +02:00
alerts-vmagent.yml deployment/docker: move cluster compose env to master branch (#3130) 2022-09-21 11:48:38 +03:00
alerts.yml docker-compose: move TooManyLogs into vm-health alerts set (#3199) 2022-10-05 19:23:36 +02:00
docker-compose-cluster.yml app/vmalert/templates: properly escape all the special chars in quotesEscape function 2022-10-28 00:01:16 +03:00
docker-compose.yml app/vmalert/templates: properly escape all the special chars in quotesEscape function 2022-10-28 00:01:16 +03:00
Makefile deployment/docker: update Go builder from v1.19.1 to v1.19.2 2022-10-06 02:01:32 +03:00
prometheus-cluster.yml deployment/docker: move cluster compose env to master branch (#3130) 2022-09-21 11:48:38 +03:00
prometheus.yml Vmalert metrics update (#1580) 2021-08-31 12:28:02 +03:00
README.md deployment/docker: move cluster compose env to master branch (#3130) 2022-09-21 11:48:38 +03:00

Docker compose environment for VictoriaMetrics

Docker compose environment for VictoriaMetrics includes VictoriaMetrics components, Alertmanager and Grafana.

For starting the docker-compose environment ensure you have docker installed and running and access to the Internet. All commands should be executed from the root directory of this repo.

To spin-up environment for single server VictoriaMetrics run the following command :

make docker-single-up

To shutdown the docker compose environment for single server run the following command:

make docker-single-down

For cluster version the command will be the following:

make docker-cluster-up

To shutdown the docker compose environment for cluster version run the following command:

make docker-cluster-down

VictoriaMetrics single server

VictoriaMetrics will be accessible on the following ports:

  • --graphiteListenAddr=:2003
  • --opentsdbListenAddr=:4242
  • --httpListenAddr=:8428

The communication scheme between components is the following:

  • vmagent sends scraped metrics to VictoriaMetrics;
  • grafana is configured with datasource pointing to VictoriaMetrics;
  • vmalert is configured to query VictoriaMetrics and send alerts state and recording rules back to it;
  • alertmanager is configured to receive notifications from vmalert.

To access vmalert via vmselect use link http://localhost:8428/vmalert.

To access vmui use link http://localhost:8428/vmui.

VictoriaMetrics cluster

VictoriaMetrics cluster environemnt consists of vminsert, vmstorage and vmselect components. vmselect has exposed port :8481, vminsert has exposed port :8480 and the rest of components are available only inside of environment.

The communication scheme between components is the following:

  • vmagent sends scraped metrics to vminsert;
  • vminsert forwards data to vmstorage;
  • vmselect is connected to vmstorage for querying data;
  • grafana is configured with datasource pointing to vmselect;
  • vmalert is configured to query vmselect and send alerts state and recording rules to vminsert;
  • alertmanager is configured to receive notifications from vmalert.

To access vmalert via vmselect use link http://localhost:8481/select/0/prometheus/vmalert.

To access vmui use link http://localhost:8481/select/0/prometheus/vmui.

vmagent

vmagent is used for scraping and pushing timeseries to VictoriaMetrics instance. It accepts Prometheus-compatible configuration prometheus.yml with listed targets for scraping.

Web interface link.

vmalert

vmalert evaluates alerting rules (alerts.yml) to track VictoriaMetrics health state. It is connected with AlertManager for firing alerts, and with VictoriaMetrics for executing queries and storing alert's state.

Web interface link.

alertmanager

AlertManager accepts notifications from vmalert and fires alerts. All notifications are blackholed according to alertmanager.yml config.

Web interface link.

Grafana

To access service open following link.

Default credential:

  • login - admin
  • password - admin

Grafana is provisioned by default with following entities:

  • VictoriaMetrics datasource
  • VictoriaMetrics - cluster datasource
  • VictoriaMetrics overview dashboard
  • VictoriaMetrics - cluster dashboard
  • VictoriaMetrics - vmagent dashboard
  • VictoriaMetrics - vmalert dashboard

Remember to pick VictoriaMetrics - cluster datasource when viewing VictoriaMetrics - cluster dashboard.