Skip to content
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@
/packages/rabbitmq @elastic/obs-service-integrations
/packages/radware @elastic/security-external-integrations
/packages/redis @elastic/obs-service-integrations
/packages/redisenterprise @elastic/obs-service-integrations
/packages/santa @elastic/security-external-integrations
/packages/security_detection_engine @elastic/protections
/packages/sentinel_one @elastic/security-external-integrations
Expand Down
3 changes: 3 additions & 0 deletions packages/redisenterprise/_dev/build/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
dependencies:
ecs:
reference: git@v8.2.1
23 changes: 23 additions & 0 deletions packages/redisenterprise/_dev/build/docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Redis Enterprise

Redis Enterprise integration provides monitoring of [redis](https://redis.com/) cluster. Monitoring is done via prometheus exported port of redis enterprise cluster. Once a redis enterprise [cluster](https://redis.com/redis-enterprise/technology/redis-enterprise-cluster-architecture/) is installed, prometheus port is available for monitoring. The url of the host:port(8070) needs to be passed to the hosts in the settings.

Redis Enterpise integration is tested with redislabs/redis:5.2.2-24 version.

# Metrics

## Node Metrics

Captures all the node specific exported metrics, matching pattern **"node_*"**

{{event "node"}}

{{fields "node"}}

## Proxy Metrics

Captures all the proxy specific exported metrics, matching pattern **"listener_*"**

{{event "proxy"}}

{{fields "proxy"}}
11 changes: 11 additions & 0 deletions packages/redisenterprise/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# newer versions go on top
- version: "0.1.1"
changes:
- description: Minor changes
type: enhancement
link: https://github.com/elastic/integrations/pull/3617
- version: "0.1.0"
changes:
- description: Initial working of the package
type: enhancement
link: https://github.com/elastic/integrations/pull/3617 # FIXME Replace with the real PR link
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
metricsets: ["collector"]
period: {{period}}

# Disable
use_types: false
rate_counters: false

hosts:
{{#each hosts}}
- {{this}}
{{/each}}

# Filters
metrics_filters.include : ["node_*"]
metrics_filters.exclude: ["^up$"]

# Empty path, since prometheus is available on seprate port.
metrics_path:

ssl.verification_mode: "none"

Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
description: Pipeline for parsing Redis Enterprise metrics
processors:
- set:
field: ecs.version
value: '8.2.1'
- rename:
field: prometheus
target_field: redisenterprise.node
ignore_missing: true
ignore_failure: true
- foreach:
field: redisenterprise.node.metrics
processor:
gsub:
field: "_ingest._key"
pattern: 'node_'
replacement: ''
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
- name: data_stream.type
type: constant_keyword
description: Data stream type.
- name: data_stream.dataset
type: constant_keyword
description: Data stream dataset.
- name: data_stream.namespace
type: constant_keyword
description: Data stream namespace.
- name: '@timestamp'
type: date
description: Event timestamp.
- name: event.module
type: constant_keyword
description: Event module
- name: event.dataset
type: constant_keyword
description: Event dataset
6 changes: 6 additions & 0 deletions packages/redisenterprise/data_stream/node/fields/ecs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- external: ecs
name: ecs.version
- external: ecs
name: service.address
- external: ecs
name: service.type
12 changes: 12 additions & 0 deletions packages/redisenterprise/data_stream/node/fields/fields.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
- name: redisenterprise.node
type: group
release: beta
fields:
- name: metrics.*
# use pattern for matching to ensure future extensibillity.
type: float
description: Node prometheus metrics
- name: labels.*
type: object
object_type: keyword
description: Label fields
13 changes: 13 additions & 0 deletions packages/redisenterprise/data_stream/node/manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
title: "node"
type: metrics
release: beta
streams:
- input: prometheus/metrics
template_path: stream.yml.hbs
title: Redis Enterprise Metrics
description: Collect node prometheus metrics from Redis Enterprise
vars:
- name: period
type: text
title: Period
default: 10s
119 changes: 119 additions & 0 deletions packages/redisenterprise/data_stream/node/sample_event.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
{
"agent": {
"name": "docker-fleet-agent",
"id": "56370311-c973-4a5b-b93b-e42fd47da568",
"ephemeral_id": "5d1146d0-7ec9-44be-baa0-3aefc54e6ffd",
"type": "metricbeat",
"version": "8.3.0"
},
"elastic_agent": {
"id": "56370311-c973-4a5b-b93b-e42fd47da568",
"version": "8.3.0",
"snapshot": true
},
"@timestamp": "2022-07-12T07:33:25.716Z",
"ecs": {
"version": "8.2.1"
},
"service": {
"address": "https://host.docker.internal:8070/metrics",
"type": "prometheus"
},
"data_stream": {
"namespace": "default",
"type": "metrics",
"dataset": "redisenterprise.node"
},
"host": {
"hostname": "docker-fleet-agent",
"os": {
"kernel": "5.10.104-linuxkit",
"codename": "focal",
"name": "Ubuntu",
"family": "debian",
"type": "linux",
"version": "20.04.4 LTS (Focal Fossa)",
"platform": "ubuntu"
},
"ip": [
"172.21.0.7"
],
"containerized": false,
"name": "docker-fleet-agent",
"mac": [
"02:42:ac:15:00:07"
],
"architecture": "x86_64"
},
"redisenterprise": {
"node": {
"metrics": {
"provisional_memory": 7075143156.111,
"cpu_nice_median": 0,
"cpu_system_min": 0.081,
"cpu_irqs_max": 0.003,
"persistent_storage_free": 224708261372814.22,
"cpu_user_min": 0.528,
"egress_bytes_median": 9161.667,
"cpu_user_median": 0.533,
"cpu_iowait_median": 0.001,
"ephemeral_storage_free": 195630087281.778,
"egress_bytes_min": 620.556,
"cpu_steal_median": 0,
"cpu_idle_min": 0.101,
"cpu_irqs_median": 0.002,
"ingress_bytes_min": 622.667,
"provisional_memory_no_overbooking": 7073454693.889,
"conns": 0,
"cpu_iowait_max": 0.001,
"cpu_steal_min": 0,
"cpu_steal": 0,
"cpu_iowait": 0.0006666666666666666,
"cpu_irqs": 0.0023333333333333335,
"egress_bytes_max": 18004,
"cpu_user": 0.6206666666666667,
"free_memory": 10688636245.333,
"ingress_bytes_max": 1340,
"available_memory_no_overbooking": 10632216778.889,
"ingress_bytes_median": 996.444,
"cpu_idle": 0.2823333333333333,
"cpu_nice_max": 0,
"cpu_system": 0.08666666666666667,
"cpu_idle_median": 0.373,
"cpu_iowait_min": 0,
"cpu_nice_min": 0,
"cur_aof_rewrites": 0,
"cpu_system_max": 0.092,
"persistent_storage_avail": 224708261372814.22,
"cpu_nice": 0,
"cpu_steal_max": 0,
"cpu_irqs_min": 0.002,
"cpu_idle_max": 0.373,
"available_memory": 10633905241.111,
"ingress_bytes": 986.3703333333333,
"ephemeral_storage_avail": 184875945073.778,
"egress_bytes": 9262.074333333332,
"cpu_user_max": 0.801,
"cpu_system_median": 0.087,
"total_req": 0
},
"labels": {
"cluster": "run1.local",
"node": "1",
"instance": "host.docker.internal:8070",
"job": "prometheus"
}
}
},
"metricset": {
"period": 10000,
"name": "collector"
},
"event": {
"duration": 182194083,
"agent_id_status": "verified",
"ingested": "2022-07-12T07:33:26Z",
"module": "prometheus",
"dataset": "redisenterprise.node"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
metricsets: ["collector"]
period: {{period}}

# disable
use_types: false
rate_counters: false

hosts:
{{#each hosts}}
- {{this}}
{{/each}}

# Filters
metrics_filters.include : ["listener_*"]
metrics_filters.exclude: ["^up$"]

# Empty path, since prometheus is available on seprate port.
metrics_path:

ssl.verification_mode: "none"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
description: Pipeline for parsing Redis Enterprise metrics
processors:
- set:
field: ecs.version
value: '8.2.1'
- rename:
field: prometheus
target_field: redisenterprise.proxy
ignore_missing: true
ignore_failure: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
- name: data_stream.type
type: constant_keyword
description: Data stream type.
- name: data_stream.dataset
type: constant_keyword
description: Data stream dataset.
- name: data_stream.namespace
type: constant_keyword
description: Data stream namespace.
- name: '@timestamp'
type: date
description: Event timestamp.
- name: event.module
type: constant_keyword
description: Event module
- name: event.dataset
type: constant_keyword
description: Event dataset
6 changes: 6 additions & 0 deletions packages/redisenterprise/data_stream/proxy/fields/ecs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
- external: ecs
name: ecs.version
- external: ecs
name: service.address
- external: ecs
name: service.type
12 changes: 12 additions & 0 deletions packages/redisenterprise/data_stream/proxy/fields/fields.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
- name: redisenterprise.proxy
type: group
release: beta
fields:
- name: metrics.listener_*
# use pattern for matching to ensure future extensibillity.
type: float
description: Proxy prometheus metrics
- name: labels.*
type: object
object_type: keyword
description: Label fields
13 changes: 13 additions & 0 deletions packages/redisenterprise/data_stream/proxy/manifest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
title: "proxy"
type: metrics
release: beta
streams:
- input: prometheus/metrics
template_path: stream.yml.hbs
title: Redis Enterprise Metrics
description: Collect proxy prometheus metrics from Redis Enterprise
vars:
- name: period
type: text
title: Period
default: 10s
Loading