Commit graph

8823 commits

Author SHA1 Message Date
Zakhar Bessarab
1272a7f743
app/vminsert/netstorage: refactor snb rebuild
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 17:23:22 +04:00
Zakhar Bessarab
2b39ee785c
app/vmselect: send static empty node ID for multi-level setup
Multi-level vmselect setup is not intended to use storage node IDs, so it is safe to return 0 here.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:23 +04:00
Zakhar Bessarab
842bf78cb1
app/vminsert/netstorage: sync comment
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:23 +04:00
Zakhar Bessarab
5420989018
app/vminsert/netstorage: reinitialize snb on vmstorage connection restore
It is needed to rebuild snb in order to ensure that list of storage nodes and consistent hash are in sync.
Updating just consistent hash ring is not safe because it can cause misalignment of indexes of alive nodes in snb.sns and hash slots.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:23 +04:00
Zakhar Bessarab
9ff8b312bb
app/vminsert/netstorage: use correct snb reference
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
130b9cd04e
app/vminsert/netstorage: make linter happy
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
88bfad9535
app/vminsert/netstorage: exclude unavailable nodes from consistent hash on start
Exclude unhealthy storage nodes from consistent hash in case persistent storage node IDs are enabled.
This is needed in order to avoid uneven distribution of load due to default(uint64(0)) IDs assigned to storage nodes.

Remove generating fallback ID from node IP address as this will cause a re-distribution of series once storage node will become available and will change its ID.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
e44c6f38c2
app/vminsert/netstorage: print storage node IDs in logs
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
96a62a275a
lib/handshake: use a json payload for metadata exchange
Update the handshake to use an arbitrary JSON payload to transfer metadata.
Handshake sends the metadata length first as an uint64 and then the metadata itself.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
20b9c8007b
lib/storage: print node ID in startup log
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
3df456dd35
lib/storage: don't save persistent node ID on shutdown
It is supposed to be saved right after it was generated, there is no reason re-write it again.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
7402ee0801
lib/storage: fallback to address-based ID
Generate an ID based on storage node address if storage node is not available.
This is needed in order to prevent uneven load distribution if some storage nodes are not available when vminsert is starting.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
5ac1e77520
lib/storage: save storage ID after init
This helps to avoid re-creating a storage ID in case of unclean shutdown.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
71e729f3f8
app/vminsert: disable usage of persistent storage node ID by default
This is needed in order to avoid complete data re-sharding after the upgrade to a new version.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:22 +04:00
Zakhar Bessarab
8729ec174b
docs/changelog: add info about persisting vmstorage node ID
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:31:18 +04:00
Zakhar Bessarab
84184b707a
app/cluster: communicate node IDs when performing a handshake
Send a node ID of vmstorage as a part of vmselect and vminsert handshakes.
Use vmstorage node ID as an identifier for consistent hashing at vminsert.

Cluster native endpoints calculate vminsert and vmselect node IDs as a hash of all underlying storage node IDs, so that it will also remain consistent in case of address changes.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:29:20 +04:00
Zakhar Bessarab
41e217423f
lib/storage: store node ID in metadata so that it is included in the backups
Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:29:20 +04:00
Zakhar Bessarab
8d8073a24d
lib/storage: add storage node id
Generate random node ID on start if it is missing or load from disk. Save to storage on storage shutdown.

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-29 12:29:19 +04:00
Aliaksandr Valialkin
00b1ee6b5c
vendor: run make vendor-update 2024-07-27 13:52:55 +02:00
Aliaksandr Valialkin
9a3f44e79c
app/{vmselect,vlselect}: run make vmui-update vmui-logs-update after efd70b2c52 2024-07-27 13:51:02 +02:00
Aliaksandr Valialkin
5dc7ec058f
app/vmauth: verify how backend response headers are propagated to vmauth client 2024-07-27 13:45:07 +02:00
Aliaksandr Valialkin
d2a825279b
Revert "refactor(vmstorage): Refactor the code to reduce the time complexity of MustAddRows and improve readability (#6629)"
This reverts commit e280d90e9a.

Reason for revert: the updated code doesn't improve the performance of table.MustAddRows for the typical case
when rows contain timestamps belonging to ptws[0].

The performance may be improved in theory for the case when all the rows belong to partiton other than ptws[0],
but this partition is automatically moved to ptws[0] by the code at lines
6aad1d43e9/lib/storage/table.go (L287-L298) ,
so the next time the typical case will work.

Also the updated code makes the code harder to follow, since it introduces an additional level of indirection
with non-trivial semantics inside table.MustAddRows - the partition.TimeRangeInPartition() function.
This function needs to be inspected and understood when reading the code at table.MustAddRows().
This function depends on minTsInRows and maxTsInRows vars, which are defined and initialized
many lines above the partition.TimeRangeInPartition() call. This complicates reading and understanding
the code even more.

The previous code was using clearer loop over rows with the clear call to partition.HasTimestamp()
for every timestamp in the row. The partition.HasTimestamp() call is used in the table.MustAddRows()
function multiple times. This makes the use of partition.HasTimestamp() call more consistent,
easier to understand and easier to maintain comparing to the mix of partition.HasTimestamp() and partition.TimeRangeInPartition()
calls.

Aslo, there is no need in documenting some hardcore software engineering refactoring at docs/CHANGLELOG.md,
since the docs/CHANGELOG.md is intended for VictoriaMetrics users, who may not know software engineering.
The docs/CHANGELOG.md must document user-visible changes, and the docs must be concise and clear for VictoriaMetrics users.
See https://docs.victoriametrics.com/contributing/#pull-request-checklist for more details.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6629
2024-07-25 14:43:00 +02:00
Aliaksandr Valialkin
75411db0c7
docs/anomaly-detection/components/models.md: remove {width="800px"} in the same was as it was done in 4735d8803e 2024-07-25 14:42:27 +02:00
Aliaksandr Valialkin
eb2a33b6b3
docs/anomaly-detection: return back absolute links instead of relative links after ce4cc4cbb2
Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6677

Relative links in docs are much harder to maintain in consistent state comparing to absolute links:

- It is non-trivial to figure out the proper relative link path when creating and editing docs.
- Relative links break after moving the doc files to another paths, and it is non-trivial
  to figure which links are broken after that.

See also f357ee57ef , d5809f8e12 and 8cb1822b94
2024-07-25 14:42:09 +02:00
Aliaksandr Valialkin
f320efd5ad
docs/Makefile: simplify and document make docs-debug after ce4cc4cbb2
- Document `make docs-debug` command at https://docs.victoriametrics.com/#documentation

- Remove unneeded ROOTDIR, REPODIR and WORKDIR env vars from docs/Makefile ,
  since it is documented and expected that all the Makefile commands are run from the repository root.

- Use `docker --rm` for running Docker container with local docs server, so it is automatically
  removed after pressing `Ctrl+C`. This makes the container cleanup automatic.

Updates https://github.com/VictoriaMetrics/VictoriaMetrics/pull/6677
2024-07-25 14:41:41 +02:00
Aliaksandr Valialkin
a135a4dcfa
Revert "removed unneeded ref shortcodes, updated VM changelog to use relative markdown links (#6691)"
This reverts commit 2e9b1efeb9.

Reason for revert: relative links in docs are much harder to maintain in consistent state
comparing to absolute links:

- It is non-trivial to figure out the proper relative link path when creating and editing docs.
- Relative links break after moving the doc files to another paths, and it is non-trivial
  to figure which links are broken after that.
- The updated relative links do not work properly right now in the docs.
  For example, the https://docs.victoriametrics.com/victorialogs/quickstart.md#building-from-source-code
  link at https://docs.victoriametrics.com/victorialogs/changelog/ leads to 404 page.

This is documented at https://docs.victoriametrics.com/#images-in-documentation .
2024-07-25 14:41:13 +02:00
Aliaksandr Valialkin
83d53dfb0d
Revert "replaced global http refs with relative markdown ones (#6692)"
This reverts commit 537266363a.

Reason for revert: relative links in docs are much harder to maintain in consistent state
comparing to absolute links:

- It is non-trivial to figure out the proper relative link path when creating and editing docs.
- Relative links break after moving the doc files to another paths, and it is non-trivial
  to figure which links are broken after that.
- The updated relative links do not work properly right now in the docs.
  For example, the https://docs.victoriametrics.com/victorialogs/quickstart.md#building-from-source-code
  link at https://docs.victoriametrics.com/victorialogs/changelog/ leads to 404 page.

This is documented at https://docs.victoriametrics.com/#images-in-documentation .
2024-07-25 14:40:53 +02:00
Aliaksandr Valialkin
edc16e171e
Revert "fixed victorialogs relative links (#6693)"
This reverts commit 683a69d53d.

Reason for revert: relative links in docs are much harder to maintain in consistent state
comparing to absolute links:

- It is non-trivial to figure out the proper relative link path when creating and editing docs.
- Relative links break after moving the doc files to another paths, and it is non-trivial
  to figure which links are broken after that.
- The updated relative links do not work properly right now in the docs.
  For example, the https://docs.victoriametrics.com/victorialogs/quickstart.md#building-from-source-code
  link at https://docs.victoriametrics.com/victorialogs/changelog/ leads to 404 page.

This is documented at https://docs.victoriametrics.com/#images-in-documentation .
2024-07-25 14:40:31 +02:00
Github Actions
e4195f1b47
Automatic update Grafana datasource docs from VictoriaMetrics/victoriametrics-datasource@d25ea09 (#6698) 2024-07-25 14:39:46 +02:00
Github Actions
d7ce94c20d
Automatic update Grafana datasource docs from VictoriaMetrics/victorialogs-datasource@d6bfe49 (#6697) 2024-07-25 14:39:16 +02:00
Aliaksandr Valialkin
f17265b67d
docs/vmauth.md: typo fix 2024-07-25 14:38:28 +02:00
Artem Navoiev
1951555ffe
docs: fix link in logsql doc
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 14:38:11 +02:00
Ruixiang Tan
8e2ff15203
refactor(vmstorage): Refactor the code to reduce the time complexity of MustAddRows and improve readability (#6629)
### Describe Your Changes
The original logic is not only highly complex but also poorly readable,
so it can be modified to increase readability and reduce time
complexity.


---------

Co-authored-by: Zhu Jiekun <jiekun@victoriametrics.com>
2024-07-25 13:52:54 +02:00
Andrii Chubatiuk
d25f88b912
fixed victorialogs relative links (#6693)
### Describe Your Changes

Please provide a brief description of the changes you made. Be as
specific as possible to help others understand the purpose and impact of
your modifications.

### Checklist

The following checks are **mandatory**:

- [ ] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
2024-07-25 13:41:19 +02:00
Artem Navoiev
3f85306738
docs: guides remove unneeded menu item
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 13:40:47 +02:00
Artem Navoiev
571ecbb610
docs: anomaly detection remove html tags
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 13:40:25 +02:00
Artem Navoiev
61f9e3112d
docs: remove img width
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 13:38:25 +02:00
Artem Navoiev
85d624d6c2
docs: vmanomaly use absolute links in code comments
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 13:27:40 +02:00
Andrii Chubatiuk
b8d80ddae5
replaced global http refs with relative markdown ones (#6692)
### Describe Your Changes

Replaced global http links in docs with relative markdown ones

### Checklist

The following checks are **mandatory**:

- [ ] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
2024-07-25 13:26:51 +02:00
Andrii Chubatiuk
9a051fc80f
removed unneeded ref shortcodes, updated VM changelog to use relative markdown links (#6691)
### Describe Your Changes

Use relative markdown references, removed `{{< ref >}}` shortcodes

### Checklist

The following checks are **mandatory**:

- [ ] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
2024-07-25 13:20:05 +02:00
Andrii Chubatiuk
6b97044d8a
view documentation locally (#6677)
- moved files from root to VictoriaMetrics folder to be able to mount
operator docs and VictoriaMetrics docs independently
- added ability to run website locally

The following checks are **mandatory**:

- [ ] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
2024-07-25 12:27:05 +02:00
Andrii Chubatiuk
4a01709b90
added _index.md for hugo, which point to README.md (#6686)
### Describe Your Changes

Please provide a brief description of the changes you made. Be as
specific as possible to help others understand the purpose and impact of
your modifications.

### Checklist

The following checks are **mandatory**:

- [ ] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).
2024-07-25 12:20:40 +02:00
Hui Wang
e0c62e5c50
security: upgrade base docker image (Alpine) from 3.20.1 to 3.20.2 (#6684)
See https://www.alpinelinux.org/posts/Alpine-3.20.1-released.html

>including security fix for:
OpenSSL CVE-2024-5535
2024-07-25 11:02:23 +02:00
Zakhar Bessarab
9f5eb25150
app/vmauth: change response code when all backend are not available (#6676)
### Describe Your Changes

Change response code to 502 to align it with behaviour of other existing
reverse proxies. Currently, the following reverse proxies will return
502 in case an upstream is not available: nginx, traefik, caddy, apache.


Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-25 10:24:05 +02:00
Zhu Jiekun
bafdc9dd78
docs: [vmagent] Add docs for remote write protocol control in Kafka integration (#6682)
### Describe Your Changes

Improve documentation to help:
https://github.com/VictoriaMetrics/VictoriaMetrics/issues/6670

Currently, the documentation of Kafka Integration did not describe:
- How to switch between different remote write protocols in producer
side and consumer side.
2024-07-25 10:21:37 +02:00
Zakhar Bessarab
53c08cb8d7
docs/vmbackup: add a note for azure identity (#6675)
### Describe Your Changes

Add a note to clarify usage of azure credentials when multiple
credentials are available.

The user is required to specify AZURE_CLIENT_ID as otherwise Azure API
will return an error: "Multiple user assigned identities exist, please
specify the clientId / resourceId of the identity in the token request"

### Checklist

The following checks are **mandatory**:

- [x] My change adheres [VictoriaMetrics contributing
guidelines](https://docs.victoriametrics.com/contributing/).

Signed-off-by: Zakhar Bessarab <z.bessarab@victoriametrics.com>
2024-07-25 10:20:50 +02:00
Artem Navoiev
591c42fdbe
docs: fix broken links
Signed-off-by: Artem Navoiev <tenmozes@gmail.com>
2024-07-25 10:19:59 +02:00
Aliaksandr Valialkin
b65f32350e
docs/CHANGELOG.md: document keep_original_host option at vmauth
This option has been added in the commit add2db12b2
2024-07-20 11:48:58 +02:00
Aliaksandr Valialkin
339821f5ce
app/vmauth: test how User-Agent header is set in requests to backend 2024-07-20 11:43:36 +02:00
Aliaksandr Valialkin
b31bd5613f
app/vmauth: verify the correctness of X-Forwarded-For header processing at TestRequestHandler() 2024-07-20 11:43:36 +02:00