From 11c5b5d3ab343113b53c983fce129d6655cd812b Mon Sep 17 00:00:00 2001 From: Fred Navruzov Date: Sun, 21 Jan 2024 18:33:59 +0100 Subject: [PATCH] docs: vmanomaly - add component interaction diagram (#5652) * add interaction diagram for vmanomaly components * small docs fixes * resolve suggestions --- docs/anomaly-detection/FAQ.md | 6 ++++-- docs/anomaly-detection/README.md | 2 +- docs/anomaly-detection/components/README.md | 7 ++++++- .../components/vmanomaly-components.webp | Bin 0 -> 61254 bytes docs/anomaly-detection/components/writer.md | 4 ++-- docs/anomaly-detection/guides/README.md | 2 +- .../guides/guide-vmanomaly-vmalert.md | 5 +++-- 7 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 docs/anomaly-detection/components/vmanomaly-components.webp diff --git a/docs/anomaly-detection/FAQ.md b/docs/anomaly-detection/FAQ.md index 73d577be5..bc2dbfe74 100644 --- a/docs/anomaly-detection/FAQ.md +++ b/docs/anomaly-detection/FAQ.md @@ -23,12 +23,14 @@ Among the metrics produced by `vmanomaly` (as detailed in [vmanomaly output metr The decision to set the changepoint at `1.0` is made to ensure consistency across various models and alerting configurations, such that a score above `1.0` consistently signifies an anomaly, thus, alerting rules are maintained more easily. -> Note: `anomaly_score` is a metric itself, which preserves all labels found in input data and (optionally) appends [custom labels, specified in writer](/anomaly-detection/components/writer.html#metrics-formatting) - follow the link detailed output example +> Note: `anomaly_score` is a metric itself, which preserves all labels found in input data and (optionally) appends [custom labels, specified in writer](/anomaly-detection/components/writer.html#metrics-formatting) - follow the link for detailed output example. ## How does vmanomaly work? `vmanomaly` applies built-in (or custom) [anomaly detection algorithms](/anomaly-detection/components/models.html), specified in a config file. Although a single config file supports one model, running multiple instances of `vmanomaly` with different configs is possible and encouraged for parallel processing or better support for your use case (i.e. simpler model for simple metrics, more sophisticated one for metrics with trends and seasonalities). -Please refer to [about](/anomaly-detection/overview.html#about) section to find out more. +1. For more detailed information, please visit the [overview section](/anomaly-detection/Overview.html#about). +2. To view a diagram illustrating the interaction of components, please explore the [components section](/anomaly-detection/components/). + ## What data does vmanomaly operate on? `vmanomaly` operates on data fetched from VictoriaMetrics, where you can leverage full power of [MetricsQL](https://docs.victoriametrics.com/MetricsQL.html) for data selection, sampling, and processing. Users can also [apply global filters](https://docs.victoriametrics.com/#prometheus-querying-api-enhancements) for more targeted data analysis, enhancing scope limitation and tenant visibility. diff --git a/docs/anomaly-detection/README.md b/docs/anomaly-detection/README.md index 04e02ee3b..f2dbdc55a 100644 --- a/docs/anomaly-detection/README.md +++ b/docs/anomaly-detection/README.md @@ -26,7 +26,7 @@ Begin your VictoriaMetrics Anomaly Detection journey with ease using our guides ## Key Components Explore the integral components that configure VictoriaMetrics Anomaly Detection: -* [Get familiar with components](/anomaly-detection/components) +* [Explore components and their interation](/anomaly-detection/components) - [Models](/anomaly-detection/components/models.html) - [Reader](/anomaly-detection/components/reader.html) - [Scheduler](/anomaly-detection/components/scheduler.html) diff --git a/docs/anomaly-detection/components/README.md b/docs/anomaly-detection/components/README.md index e79c54c14..0c00f65ed 100644 --- a/docs/anomaly-detection/components/README.md +++ b/docs/anomaly-detection/components/README.md @@ -21,5 +21,10 @@ This chapter describes different components, that correspond to respective secti - [Writer section](writer.html) - Required - [Monitoring section](monitoring.html) - Optional +> **Note**: starting from [v1.7.0](/anomaly-detection/CHANGELOG.html#v172), once the service starts, automated config validation is performed. Please see container logs for errors that need to be fixed to create fully valid config, visiting sections above for examples and documentation. -> **Note**: starting from [v1.7.0](../CHANGELOG.md#v172), once the service starts, automated config validation is performed. Please see container logs for errors that need to be fixed to create fully valid config, visiting sections above for examples and documentation. \ No newline at end of file +Below, you will find an example illustrating how the components of `vmanomaly` interact with each other and with a single-node VictoriaMetrics setup. + +> **Note**: [Reader](/anomaly-detection/components/reader.html#vm-reader) and [Writer](/anomaly-detection/components/writer.html#vm-writer) also support [multitenancy](/Cluster-VictoriaMetrics.html#multitenancy), so you can read/write from/to different locations - see `tenant_id` param description. + +vmanomaly-components \ No newline at end of file diff --git a/docs/anomaly-detection/components/vmanomaly-components.webp b/docs/anomaly-detection/components/vmanomaly-components.webp new file mode 100644 index 0000000000000000000000000000000000000000..ac9e875288f4b041e2c59fdd6ccd6091fae366bf GIT binary patch literal 61254 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 literal 0 HcmV?d00001 diff --git a/docs/anomaly-detection/components/writer.md b/docs/anomaly-detection/components/writer.md index 29a14ac36..aa8cea188 100644 --- a/docs/anomaly-detection/components/writer.md +++ b/docs/anomaly-detection/components/writer.md @@ -12,7 +12,7 @@ aliases: # Writer -For exporting data, VictoriaMetrics Anomaly Detection (`vmanomaly`) primarily employs the [VmWriter](#vm-writer), which writes produces anomaly scores (preserving initial labelset and optionally applying additional ones) back to VictoriaMetrics. This writer is tailored for smooth data export within the VictoriaMetrics ecosystem. +For exporting data, VictoriaMetrics Anomaly Detection (`vmanomaly`) primarily employs the [VmWriter](#vm-writer), which writes produced anomaly scores **(preserving initial labelset and optionally applying additional ones)** back to VictoriaMetrics. This writer is tailored for smooth data export within the VictoriaMetrics ecosystem. Future updates will introduce additional export methods, offering users more flexibility in data handling and integration. @@ -141,7 +141,7 @@ custom_label_1: label_name_1 custom_label_2: label_name_2 ``` -Apart from specified labels, output metrics will return labels inherited from input metrics returned by [queries](/anomaly-detection/components/reader.html#config-parameters). +Apart from specified labels, output metrics will return **labels inherited from input metrics returned by [queries](/anomaly-detection/components/reader.html#config-parameters)**. For example if input data contains labels such as `cpu=1, device=eth0, instance=node-exporter:9100` all these labels will be present in vmanomaly output metrics. So if metric_format section was set up like this: diff --git a/docs/anomaly-detection/guides/README.md b/docs/anomaly-detection/guides/README.md index deabdf399..d72bb9a94 100644 --- a/docs/anomaly-detection/guides/README.md +++ b/docs/anomaly-detection/guides/README.md @@ -16,4 +16,4 @@ This section holds guides of how to set up and use VictoriaMetrics Anomaly Detec Guides: -* [vmanomaly integration](/anomaly-detection/guides/guide-vmanomaly-vmalert.html) \ No newline at end of file +* [Anomaly Detection & Alerting Setup](/anomaly-detection/guides/guide-vmanomaly-vmalert.html) \ No newline at end of file diff --git a/docs/anomaly-detection/guides/guide-vmanomaly-vmalert.md b/docs/anomaly-detection/guides/guide-vmanomaly-vmalert.md index e52a8147f..b0d1b738b 100644 --- a/docs/anomaly-detection/guides/guide-vmanomaly-vmalert.md +++ b/docs/anomaly-detection/guides/guide-vmanomaly-vmalert.md @@ -1,7 +1,7 @@ --- weight: 1 sort: 1 -title: vmanomaly integration +title: Anomaly Detection and Alerting Setup menu: docs: parent: "anomaly-detection-guides" @@ -10,9 +10,10 @@ aliases: - /anomaly-detection/guides/guide-vmanomaly-vmalert.html - /guides/guide-vmanomaly-vmalert.html - /gides/vmanomaly-integration.html +- /guides/anomaly-detection-and-alerting-setup.html --- -# vmanomaly integration +# Anomaly Detection and Alerting Setup **Prerequisites**: