Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions calico-cloud/_includes/content/_license.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ Yes. The license indicator in the web console (top right banner) turns red when
- Node limits are not currently enforced
- All $[prodname] features still work

**How do I get information about my license? Monitor the expiration date?**
**How do I monitor my license?**

- [Prometheus!](../../operations/monitor/metrics/license-agent.mdx). Monitor days till expiration, nodes available, and nodes used.
- Use `kubectl` to get [license key information](../../reference/resources/licensekey.mdx#viewing-information-about-your-license-key)
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
4 changes: 0 additions & 4 deletions calico-cloud/releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,6 @@
"image": "tigera/l7-collector",
"version": "v3.21.0-1.0"
},
"license-agent": {
"image": "tigera/license-agent",
"version": "v3.21.0-1.0"
},
"linseed": {
"image": "tigera/linseed",
"version": "v3.21.0-1.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
4 changes: 2 additions & 2 deletions calico-enterprise/_includes/content/_license.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ $[prodname] stops reporting flow logs, DNS logs, and $[prodname] metrics, which

Yes.

### How do I get information about my license? Monitor the expiration date?
### How do I monitor my license?

- [Prometheus!](../../operations/monitor/metrics/license-agent.mdx).
- [License metrics and alerts](../../operations/license-options.mdx#license-metrics)
- Use `kubectl` to get [license key information](../../reference/resources/licensekey.mdx#viewing-information-about-your-license-key)
1 change: 0 additions & 1 deletion calico-enterprise/operations/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ Post-installation tasks for managing Calico Enterprise.
<DocCardLink docId='operations/monitor/prometheus/alertmanager' />
<DocCardLink docId='operations/monitor/metrics/recommended-metrics' />
<DocCardLink docId='operations/monitor/metrics/bgp-metrics' />
<DocCardLink docId='operations/monitor/metrics/license-agent' />
<DocCardLink docId='operations/monitor/metrics/policy-metrics' />
<DocCardLink docId='operations/monitor/metrics/elasticsearch-and-fluentd-metrics' />
</DocCardLinkLayout>
Expand Down
36 changes: 32 additions & 4 deletions calico-enterprise/operations/license-options.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,38 @@ import License from '@site/calico-enterprise/_includes/content/_license.mdx';

Review options for tracking $[prodname] license expiration.

## Concepts

We highly recommend using the [license agent using Prometheus](monitor/metrics/license-agent.mdx) to get alerts on your $[prodname] license expiration day to avoid disruption to services. Regardless of whether you using the alerting feature, here are some things you should know.

### FAQ

<License />

## License metrics

The $[prodname] operator automatically exposes license metrics through its Prometheus metrics endpoint. No additional components need to be installed. The following metrics are available:

| Metric | Description |
|---|---|
| `tigera_operator_license_expiry_timestamp_seconds` | Unix timestamp of license expiration |
| `tigera_operator_license_valid` | Whether the license is valid (`1`) or not (`0`) |

These metrics are scraped by the built-in Prometheus instance via the `tigera-operator-metrics` ServiceMonitor.

### Built-in alerts

$[prodname] installs PrometheusRule resources with alerting rules for license expiration. You can view them with:

```bash
kubectl -n tigera-prometheus get prometheusrule calico-prometheus-dp-rate -o yaml
```
Comment on lines +30 to +34
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This command references calico-prometheus-dp-rate, which is the denied-packets PrometheusRule example used in the Prometheus configuration docs, not a license-expiration rule. It will mislead readers trying to inspect license alert rules; update the example to reference the actual license PrometheusRule name (or show how to discover it, e.g., by listing PrometheusRules and filtering for license-related ones).

Copilot uses AI. Check for mistakes.

The built-in rules include:

- **LicenseExpiringWarning**: fires when the license expires in less than 30 days
- **LicenseExpiringCritical**: fires when the license expires in less than 7 days, or is invalid

To route these alerts, see [Configure Alertmanager](monitor/prometheus/alertmanager.mdx).

## Additional resources

- [LicenseKey resource](../../reference/resources/licensekey.mdx)
Copy link

Copilot AI Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The relative link to the LicenseKey resource looks incorrect for a doc located at calico-enterprise/operations/license-options.mdx. ../../reference/... would resolve outside the calico-enterprise/ docs tree; this should likely be ../reference/resources/licensekey.mdx (consistent with other top-level operations/*.mdx pages like operations/decommissioning-a-node.mdx).

Suggested change
- [LicenseKey resource](../../reference/resources/licensekey.mdx)
- [LicenseKey resource](../reference/resources/licensekey.mdx)

Copilot uses AI. Check for mistakes.
- [Configure Alertmanager](monitor/prometheus/alertmanager.mdx)
- [Configure Prometheus](monitor/prometheus/configure-prometheus.mdx)
92 changes: 0 additions & 92 deletions calico-enterprise/operations/monitor/metrics/license-agent.mdx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ $[prodname] uses the Prometheus monitoring tool to scrape metrics from instrumen
- kube-controllers
- felix
- typha (not enabled by default)
- operator

## Before you begin

Expand Down Expand Up @@ -350,6 +351,47 @@ kubectl apply -f $[filesUrl]/manifests/prometheus/typha-metrics-service-monitor

The .yamls have no namespace defined so when you apply `kubectl`, it is applied in the $NAMESPACE.

</TabItem>
<TabItem label="operator" value="operator-6">

**Configure TLS certificates**

1. Copy the required secret and configmap to your namespace.
2. Save the manifest of the required TLS secret and CA configmap.

```bash
kubectl get secret calico-node-prometheus-client-tls -n tigera-prometheus -o yaml > calico-node-prometheus-client-tls.yaml
```

```bash
kubectl get configmap -n tigera-prometheus tigera-ca-bundle -o yaml > tigera-ca-bundle.yaml
```

3. Edit `calico-node-prometheus-client-tls.yaml` and `tigera-ca-bundle.yaml` by changing the namespace to the namespace where your prometheus instance is running.
4. Apply the manifests to your cluster.

```bash
kubectl apply -f calico-node-prometheus-client-tls.yaml
```

```bash
kubectl apply -f tigera-ca-bundle.yaml
```

**Create the service monitor**

Apply the ServiceMonitor to the namespace where Prometheus is running.

```bash
export NAMESPACE=<my-prometheus-namespace>
```

```bash
kubectl apply -f $[filesUrl]/manifests/prometheus/operator-metrics-service-monitor.yaml -n $NAMESPACE
```

The .yamls have no namespace defined so when you apply `kubectl`, it is applied in the $NAMESPACE.

</TabItem>
</Tabs>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ defined by the `ruleSelector` field of the Prometheus manifest.

As an example, to fire an alert when the number of peering connections with a status other than “Established”
is increasing at a non-zero rate in the cluster (over the last 5 minutes), save the following to a file, say
`tigera-peer-status-not-established.yaml`.
`calico-peer-status-not-established.yaml`.

```yaml
apiVersion: monitoring.coreos.com/v1
Expand All @@ -143,7 +143,7 @@ metadata:
labels:
prometheus: calico-node-prometheus
role: tigera-prometheus-rules
name: tigera-prometheus-peer-status-not-established
name: calico-prometheus-peer-status-not-established
namespace: tigera-prometheus
spec:
groups:
Expand All @@ -163,7 +163,7 @@ spec:
Then create/apply this manifest in kubernetes.

```bash
kubectl apply -f tigera-peer-status-not-established.yaml
kubectl apply -f calico-peer-status-not-established.yaml
```

Your changes should be applied in a few seconds by the prometheus-config-reloader
Expand Down Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
4 changes: 0 additions & 4 deletions calico-enterprise/releases.json
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,6 @@
"image": "tigera/l7-collector",
"version": "master"
},
"license-agent": {
"image": "tigera/license-agent",
"version": "master"
},
"linseed": {
"image": "tigera/linseed",
"version": "master"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ As an example on what to update, the interval in this ServiceMonitor manifest
is 5 seconds (`5s`).

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand All @@ -302,7 +302,7 @@ To update $[prodname] Prometheus' scrape interval to 10 seconds modify the manif
to this:

```yaml
apiVersion: monitoring.coreos.com/v1alpha1
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: calico-node-monitor
Expand Down
Loading
Loading