Skip to content

Commit 784c798

Browse files
authored
[Documentation] Update README and add Exporter documentation (#731)
1 parent 44dea2c commit 784c798

File tree

3 files changed

+120
-4
lines changed

3 files changed

+120
-4
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## [master](https://github.com/arangodb/kube-arangodb/tree/master) (N/A)
44
- Add IP, DNS, ShortDNS, HeadlessService (Default) communication methods
5+
- Migrate ArangoExporter into Operator code
56

67
## [1.1.8](https://github.com/arangodb/kube-arangodb/tree/1.1.8) (2021-04-21)
78
- Prevent Single member recreation

README.md

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,30 @@ covers individual newer features separately.
3838

3939
| Platform | Kubernetes Version | ArangoDB Version | State | Remarks | Provider Remarks |
4040
|---------------------|--------------------|------------------|------------|-----------------------|------------------------------------|
41-
| Google GKE | 1.16 | >= 3.5.0 | Production | Don't use micro nodes | |
4241
| Google GKE | 1.17 | >= 3.5.0 | Production | Don't use micro nodes | |
43-
| Azure AKS | 1.16 | >= 3.5.0 | Production | | |
44-
| Azure AKS | 1.17 | >= 3.5.0 | Production | | |
42+
| Google GKE | 1.18 | >= 3.5.0 | Production | Don't use micro nodes | |
43+
| Google GKE | 1.19 | >= 3.5.0 | Production | Don't use micro nodes | |
44+
| Google GKE | 1.20 | >= 3.5.0 | Production | Don't use micro nodes | |
45+
| Azure AKS | 1.18 | >= 3.5.0 | Production | | |
46+
| Azure AKS | 1.19 | >= 3.5.0 | Production | | |
47+
| Azure AKS | 1.20 | >= 3.5.0 | Production | | |
4548
| Amazon EKS | 1.16 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
4649
| Amazon EKS | 1.17 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
47-
| IBM Cloud | 1.16 | >= 3.5.0 | Production | | |
50+
| Amazon EKS | 1.18 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
51+
| Amazon EKS | 1.19 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
52+
| Amazon EKS | 1.20 | >= 3.5.0 | Production | | [Amazon EKS](./docs/providers/eks) |
53+
| IBM Cloud | 1.17 | >= 3.5.0 | Deprecated | | |
54+
| IBM Cloud | 1.18 | >= 3.5.0 | Production | | |
55+
| IBM Cloud | 1.19 | >= 3.5.0 | Production | | |
56+
| IBM Cloud | 1.20 | >= 3.5.0 | Production | | |
4857
| OpenShift | 3.11 | >= 3.5.0 | Production | | |
4958
| OpenShift | 4.2 | >= 3.5.0 | Production | | |
5059
| BareMetal (kubeadm) | 1.16 | >= 3.5.0 | Production | | |
5160
| BareMetal (kubeadm) | 1.17 | >= 3.5.0 | Production | | |
61+
| BareMetal (kubeadm) | 1.18 | >= 3.5.0 | Production | | |
62+
| BareMetal (kubeadm) | 1.19 | >= 3.5.0 | Production | | |
63+
| BareMetal (kubeadm) | 1.20 | >= 3.5.0 | Production | | |
64+
| BareMetal (kubeadm) | 1.21 | >= 3.5.0 | Production | | |
5265
| Minikube | 1.14+ | >= 3.5.0 | Devel Only | | |
5366
| Other | 1.14+ | >= 3.5.0 | Devel Only | | |
5467

@@ -78,6 +91,7 @@ Feature-wise production readiness table:
7891
| Encryption Key Rotation Support | 1.1.0 | > 3.7.0 | Enterprise | Production | True | --deployment.feature.encryption-rotation | N/A |
7992
| Version Check | 1.1.4 | >= 3.5.0 | Community, Enterprise | Alpha | False | --deployment.feature.upgrade-version-check | N/A |
8093
| Operator Maintenance Management Support | 1.0.7 | >= 3.5.0 | Community, Enterprise | Alpha | False | --deployment.feature.maintenance | N/A |
94+
| Operator Internal Metrics Exporter | 1.1.9 | >= 3.6.0 | Community, Enterprise | Alpha | False | --deployment.feature.metrics-exporter | N/A |
8195

8296
## Release notes for 0.3.16
8397

@@ -187,3 +201,11 @@ kubectl apply -f manifests/arango-storage-dev.yaml
187201
# To use `ArangoDeploymentReplication`, also run
188202
kubectl apply -f manifests/arango-deployment-replication-dev.yaml
189203
```
204+
205+
## ArangoExporter
206+
207+
[ArangoExporter](https://github.com/arangodb-helper/arangodb-exporter) project has been merged with ArangoOperator.
208+
Starting from ArangoDB 3.6 Servers expose metrics endpoint with prometheus compatible format. From this point Exporter
209+
is used only for TLS and/or Authentication termination to be compatible with all Prometheus installations.
210+
211+
ArangoExporter documentation can be found [here](./docs/design/exporter.md)

docs/design/exporter.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# ArangoDB Exporter for Prometheus
2+
3+
This exporter exposes the statistics provided by a specific ArangoDB instance
4+
in a format compatible with prometheus.
5+
6+
## Usage
7+
8+
To use the ArangoDB Exporter, run the following:
9+
10+
```bash
11+
arangodb_operator exporter \
12+
--arangodb.endpoint=http://<your-database-host>:8529 \
13+
--arangodb.jwtsecret=<your-jwt-secret> \
14+
--ssl.keyfile=<your-optional-ssl-keyfile>
15+
```
16+
17+
This results in an ArangoDB Exporter exposing all statistics of
18+
the ArangoDB server (running at `http://<your-database-host>:8529`)
19+
at `http://<your-host-ip>:9101/metrics`.
20+
21+
## Exporter mode
22+
23+
Expose ArangoDB metrics for ArangoDB >= 3.6.0
24+
25+
In default mode metrics provided by ArangoDB `_admin/metrics` (<=3.7) or `_admin/metrics/v2` (3.8+) are exposed on Exporter port.
26+
27+
## Configuring Prometheus
28+
29+
There are several ways to configure Prometheus to fetch metrics from the ArangoDB Exporter.
30+
31+
Below you're find a sample Prometheus configuration file that can be used to fetch
32+
metrics from an ArangoDB exporter listening on localhost port 9101 (without TLS).
33+
34+
```yaml
35+
global:
36+
scrape_interval: 15s
37+
scrape_configs:
38+
- job_name: arangodb
39+
static_configs:
40+
- targets: ['localhost:9101']
41+
```
42+
43+
For more info on configuring Prometheus go to [its configuration documentation](https://prometheus.io/docs/prometheus/latest/configuration/configuration).
44+
45+
If you're using the [Prometheus Operator](https://github.com/coreos/prometheus-operator)
46+
in Kubernetes, you need to create an additional `Service` and a `ServiceMonitor` resource
47+
like this:
48+
49+
```yaml
50+
kind: Service
51+
apiVersion: v1
52+
metadata:
53+
name: arangodb-exporters-service
54+
labels:
55+
app: arangodb-exporter
56+
spec:
57+
selector:
58+
app: arangodb-exporter
59+
ports:
60+
- name: metrics
61+
port: 9101
62+
63+
---
64+
65+
apiVersion: monitoring.coreos.com/v1
66+
kind: ServiceMonitor
67+
metadata:
68+
name: arangodb-exporter
69+
namespace: monitoring
70+
labels:
71+
team: frontend
72+
prometheus: kube-prometheus
73+
spec:
74+
namespaceSelector:
75+
matchNames:
76+
- default
77+
selector:
78+
matchLabels:
79+
app: arangodb-exporter
80+
endpoints:
81+
- port: metrics
82+
scheme: https
83+
tlsConfig:
84+
insecureSkipVerify: true
85+
```
86+
87+
Note 1: that the typical deployment on the Prometheus operator is done in
88+
a namespace called `monitoring`. Make sure to match the `namespace`
89+
of the `ServiceMonitor` to match that.
90+
91+
Note 2: that the `Prometheus` custom resource has a field called `serviceMonitorSelector`.
92+
Make sure that the `matchLabels` selector in there matches the labels of
93+
your `ServiceMonitor`.

0 commit comments

Comments
 (0)