VictoriaMetrics/deployment/docker
Aliaksandr Valialkin ae64be4f2c
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-11-07 14:40:24 +02: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: replace Prometheus with vmagent (#589) 2020-06-29 22:05:34 +03:00
alertmanager.yml docker-compose: add blackhole receiver for alertmanager (#999) 2021-01-07 23:33:53 +02:00
alerts.yml vmagent: expose metric vmagent_remotewrite_queues (#2871) (#3087) 2022-09-08 20:53:51 +03:00
docker-compose.yml app/vmalert/templates: properly escape all the special chars in quotesEscape function 2022-11-07 14:40:24 +02:00
Makefile deployment/docker: update Go builder from v1.19.2 to v1.19.3 2022-11-07 14:26:04 +02:00
prometheus.yml Vmalert metrics update (#1580) 2021-08-31 12:28:02 +03:00
README.md A good change for MD files (#2353) 2022-03-22 13:40:55 +02:00

Docker compose environment for VictoriaMetrics

To spin-up VictoriaMetrics, vmagent, vmalert, Alertmanager and Grafana run the following command:

docker-compose up

For clustered version check docker compose in cluster branch.

VictoriaMetrics

VictoriaMetrics will be accessible on the following ports:

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

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
  • Prometheus datasource
  • VictoriaMetrics overview dashboard