VictoriaMetrics/docs/enterprise.md
Aliaksandr Valialkin dfc67aedcb
lib/license: cleanups and prettifications for log messages and docs related to licensing
- Make more clear the docs at docs/enterprise.md, so readers could figure out faster
  on how to obtain enterprise key and how to pass it to VictoriaMetrics Enterprise components.

- Fix examples at docs/enterprise.md, which were referring to non-existing `-license-file` command-line flag.
  The `-licenseFile` command-line flag must be used instead.

- Improve the description of `-license*` command-line flags, so users could understand
  faster how to use them.

- Improve the warning message, which is emitted when the deprecated -eula command-line flag is passed,
  so the user could figure out how to switch faster to -license* command-line flags.

- Disallow running VictoriaMetrics components with both -license and -licenseFile command-line flags.

- Disallow running VictoriaMetrics components when -licensFile points to an empty file.

- Consistently use the phrase "This flag is available only in Enterprise binaries" across
  all the enterprise-specific command-line flags.

- Remove unneeded level of indirection for `noLicenseMessage` and `expiredMessage` string contants
  in order to improve code readability and maintainability.

- Remove unneded `return` statements after `logger.Fatalf()` calls, since these calls exit the app and never return.

- Make sure that the info log message about successful license verification is emitted
  when the license is verified successfully. Previously the error message could be logged
  when the license payload is invalid or if it misses some required features.
2023-10-16 12:51:37 +02:00

13 KiB

sort weight title menu aliases
99 99 VictoriaMetrics Enterprise
docs
parent weight
victoriametrics 99
/enterprise.html

VictoriaMetrics Enterprise

VictoriaMetrics components are provided in two kinds - Community edition and Enterprise edition.

VictoriaMetrics community components are open source and are free to use - see the source code and the license.

VictoriaMetrics Enterprise components are available in binary form at releases page and at docker hub. Enterprise binaries and packages have enterprise suffix in their names.

Valid cases for VictoriaMetrics Enterprise

The use of VictoriaMetrics Enterprise components is permitted in the following cases:

  • Evaluation use in non-production setups. Please, request trial license here and then pass it via -license or -licenseFile command-line flags as described in these docs.

  • Production use if you have a valid enterprise contract or valid permit from VictoriaMetrics company. Please contact us via this page if you are intereseted in such a contract.

  • Managed VictoriaMetrics is built on top of VictoriaMetrics Enterprise.

See these docs for details on how to run VictoriaMetrics enterprise.

VictoriaMetrics enterprise features

VictoriaMetrics Enterprise includes all the features of the community edition, plus the following additional features:

On top of this, Enterprise package of VictoriaMetrics includes the following important Enterprise features:

  • First-class consulting and technical support provided by the core VictoriaMetrics dev team.
  • Monitoring of monitoring - this feature allows forecasting and preventing possible issues in VictoriaMetrics setups.
  • Enterprise security compliance.
  • Prioritizing of feature requests from Enterprise customers.

Contact us via this page if you are interested in VictoriaMetrics Enterprise.

Running VictoriaMetrics Enterprise

VictoriaMetrics Enterprise components are available in the following forms:

Binary releases

It is allowed to run VictoriaMetrics Enterprise components in cases listed here.

Binary releases of VictoriaMetrics Enterprise are available at the releases page. Enterprise binaries and packages have enterprise suffix in their names. For example, victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz.

In order to run binary release of VictoriaMetrics Enterprise component, please download the *-enterprise.tar.gz archive for your OS and architecture from the releases page and unpack it. Then run the unpacked binary.

All the VictoriaMetrics Enterprise components prior v1.94.0 release require -eula command-line flag to be passed to them. This flag acknowledges that your usage fits one of the cases listed here.

The -eula command-line flag is deprecated starting from v1.94.0 release in favor of new command-line flags:

  • -license - this flag accepts VictoriaMetrics Enterprise license key, which can be obtained at this page
  • -licenseFile - this flag accepts a path to file with VictoriaMetrics Enterprise license key, which can be obtained at this page . Use either -license or -licenseFile, but not both.
  • -license.forceOffline - enables offline verification of VictoriaMetrics Enterprise license key. Contact us via this page if you need license key, which can be verified offline without the need to connect to VictoriaMetrics license server.

For example, the following command runs VictoriaMetrics Enterprise binary with the Enterprise license obtained at this page:

wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.94.0/victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz
tar -xzf victoria-metrics-linux-amd64-v1.94.0-enterprise.tar.gz
./victoria-metrics-prod -license=BASE64_ENCODED_LICENSE_KEY

Alternatively, VictoriaMetrics Enterprise license can be stored in the file and then referred via -licenseFile command-line flag:

./victoria-metrics-prod -licenseFile=/path/to/vm-license

Docker images

It is allowed to run VictoriaMetrics Enterprise components in cases listed here.

Docker images for VictoriaMetrics Enterprise are available at VictoriaMetrics DockerHub. Enterprise docker images have enterprise suffix in their names. For example, victoriametrics/victoria-metrics:v1.94.0-enteprise.

In order to run Docker image of VictoriaMetrics Enterprise component, it is required to provide the license key via command-line flag as described here.

Enterprise license key can be obtained at this page.

For example, the following command runs VictoriaMetrics Enterprise Docker image with the specified license key:

docker run --name=victoria-metrics victoriametrics/victoria-metrics:v1.94.0-enteprise -license=BASE64_ENCODED_LICENSE_KEY

Alternatively, the license code can be stored in the file and then referred via -licenseFile command-line flag:

docker run --name=victoria-metrics -v /vm-license:/vm-license  victoriametrics/victoria-metrics:v1.94.0-enteprise -licenseFile=/path/to/vm-license

Example docker-compose configuration:

version: "3.5"
services:
  victoriametrics:
    container_name: victoriametrics
    image: victoriametrics/victoria-metrics:v1.94.0
    ports:
      - 8428:8428
    volumes:
      - vmdata:/storage
      - /vm-license:/vm-license
    command:
      - "-storageDataPath=/storage"
      - "-licenseFile=/vm-license"
volumes:
  vmdata: {}

The example assumes that the license file is stored at /vm-license on the host.

Helm charts

It is allowed to run VictoriaMetrics Enterprise components in cases listed here.

Helm charts for VictoriaMetrics Enterprise components are available here.

In order to run VictoriaMetrics Enterprise helm chart it is required to provide the license key via license value in values.yaml file and adjust the image tag to the Enterprise one as described here.

Enterprise license key can be obtained at this page.

For example, the following values file for VictoriaMetrics single-node chart is used to provide key in plain-text:

server:
  image:
    tag: v1.94.0-enterprise 

license:
  key: {BASE64_ENCODED_LICENSE_KEY}

In order to provide key via existing secret, the following values file is used:

server:
  image:
    tag: v1.94.0-enterprise 

license:
  secret:
    name: vm-license
    key: license

Example secret with license key:

apiVersion: v1
kind: Secret
metadata:
  name: vm-license
type: Opaque
data:
  license: {BASE64_ENCODED_LICENSE_KEY}

Or create secret via kubectl:

kubectl create secret generic vm-license --from-literal=license={BASE64_ENCODED_LICENSE_KEY}

Kubernetes operator

It is allowed to run VictoriaMetrics Enterprise components in cases listed here.

VictoriaMetrics Enterprise components can be deployed via VictoriaMetrics operator. In order to use Enterprise components it is required to provide the license key via license field and adjust the image tag to the enterprise one.

Enterprise license key can be obtained at this page.

For example, the following custom resource for VictoriaMetrics single-node is used to provide key in plain-text:

apiVersion: operator.victoriametrics.com/v1beta1
kind: VMSingle
metadata:
  name: example-vmsingle
spec:
  retentionPeriod: "1"
  license:
    key: {BASE64_ENCODED_LICENSE_KEY}
  image:
    tag: v1.94.0-enterprise 

In order to provide key via existing secret, the following custom resource is used:

apiVersion: operator.victoriametrics.com/v1beta1
kind: VMSingle
metadata:
  name: example-vmsingle
spec:
  retentionPeriod: "1"
  license:
    keyRef:
      name: vm-license
      key: license
  image:
    tag: v1.94.0-enterprise 

Example secret with license key:

apiVersion: v1
kind: Secret
metadata:
  name: vm-license
type: Opaque
data:
  license: {BASE64_ENCODED_LICENSE_KEY}

Or create secret via kubectl:

kubectl create secret generic vm-license --from-literal=license={BASE64_ENCODED_LICENSE_KEY}

See full list of CRD specifications here.

Monitoring license expiration

All the VictoriaMetrics Enterprise components expose the following metrics at the /metrics page:

  • vm_license_expires_at - license expiration date in unix timestamp format
  • vm_license_expires_in_seconds - the number of seconds left until the license expires

Example alerts for vmalert based on these metrics:

{% raw %}

groups:
  - name: vm-license
    # note the `job` label and update accordingly to your setup
    rules:
      - alert: LicenseExpiresInLessThan30Days
        expr: vm_license_expires_in_seconds < 30 * 24 * 3600
        labels:
          severity: warning
        annotations:
          summary: "{{ $labels.job }} instance {{ $labels.instance }} license expires in less than 30 days"
          description: "{{ $labels.instance }} of job {{ $labels.job }} license expires in {{ $value | humanizeDuration }}. 
            Please make sure to update the license before it expires."

      - alert: LicenseExpiresInLessThan7Days
        expr: vm_license_expires_in_seconds < 7 * 24 * 3600
        labels:
          severity: critical
        annotations:
          summary: "{{ $labels.job }} instance {{ $labels.instance }} license expires in less than 7 days"
          description: "{{ $labels.instance }} of job {{ $labels.job }} license expires in {{ $value | humanizeDuration }}. 
            Please make sure to update the license before it expires."

{% endraw %}