diff --git a/packages/etcd/_dev/build/docs/README.md b/packages/etcd/_dev/build/docs/README.md index fb40552819e..d33db2be3e2 100644 --- a/packages/etcd/_dev/build/docs/README.md +++ b/packages/etcd/_dev/build/docs/README.md @@ -1,17 +1,21 @@ # etcd Integration -This integration is used to collect metrics from [etcd v2 and v3 servers](https://etcd.io/). -This integration periodically fetches metrics from [etcd monitoring server APIs](https://etcd.io/docs/v3.1/op-guide/monitoring/). +This integration is used to collect metrics from [etcd v2 and v3 instances](https://etcd.io/). + +It periodically fetches metrics from [etcd metrics APIs](https://etcd.io/docs/v3.1/op-guide/monitoring/). ## Compatibility -The etcd package was tested with etcd 3.5.1. +The etcd package was tested with etcd `3.5.x`. ## Metrics -When using etcd v2, metrics are collected using etcd v2 API. When using v3, metrics are retrieved from the /metrics endpoint. +For etcd v2, metrics are collected through the etcd v2 APIs, whereas for v3, they are fetched from the `/metrics` endpoint. + +When using v3, datasets are bundled within `metrics` data stream, while for v2, available datasets include `leader`, `self`, and `store`. + +The ETCD v2 APIs are not enabled by default. However, you can enable ETCD v2 APIs when using ETCD v3 and above by utilizing the --enable-v2 flag, provided it is supported. -When using v3, datasets are bundled into `metrics`. When using v2, datasets available are `leader`, `self` and `store`. ### metrics diff --git a/packages/etcd/_dev/deploy/docker/Dockerfile b/packages/etcd/_dev/deploy/docker/Dockerfile index ffe6776301d..392187e3b26 100644 --- a/packages/etcd/_dev/deploy/docker/Dockerfile +++ b/packages/etcd/_dev/deploy/docker/Dockerfile @@ -1,2 +1,3 @@ ARG SERVICE_VERSION=${SERVICE_VERSION:-3.5.1} FROM bitnami/etcd:${SERVICE_VERSION} +HEALTHCHECK --interval=15s --retries=90 CMD curl -f http://localhost:2379/metrics \ No newline at end of file diff --git a/packages/etcd/changelog.yml b/packages/etcd/changelog.yml index ae34f2f7ccb..d1f10de658b 100644 --- a/packages/etcd/changelog.yml +++ b/packages/etcd/changelog.yml @@ -1,4 +1,9 @@ # newer versions go on top +- version: "0.7.0" + changes: + - description: Switch to Prometheus metricset, add ECS fields, dimensions mappings and metric types. + type: enhancement + link: https://github.com/elastic/integrations/pull/8438 - version: 0.6.1 changes: - description: Fix incorrect field mappings in leader datastream diff --git a/packages/etcd/data_stream/leader/manifest.yml b/packages/etcd/data_stream/leader/manifest.yml index 31c10d3ae9b..6ef9b32dc22 100644 --- a/packages/etcd/data_stream/leader/manifest.yml +++ b/packages/etcd/data_stream/leader/manifest.yml @@ -19,3 +19,4 @@ streams: default: /metrics title: etcd leader metrics description: Collect etcd leader metrics + enabled: false \ No newline at end of file diff --git a/packages/etcd/data_stream/metrics/_dev/test/system/test-default-config.yml b/packages/etcd/data_stream/metrics/_dev/test/system/test-default-config.yml index 1e612501eca..9c1ce7d2b52 100755 --- a/packages/etcd/data_stream/metrics/_dev/test/system/test-default-config.yml +++ b/packages/etcd/data_stream/metrics/_dev/test/system/test-default-config.yml @@ -1,6 +1,3 @@ vars: hosts: - - http://{{Hostname}}:2379 -data_stream: - vars: - server_status_path: /metrics + - http://{{Hostname}}:2379/metrics \ No newline at end of file diff --git a/packages/etcd/data_stream/metrics/agent/stream/stream.yml.hbs b/packages/etcd/data_stream/metrics/agent/stream/stream.yml.hbs index 66ca7172632..e18af17c765 100755 --- a/packages/etcd/data_stream/metrics/agent/stream/stream.yml.hbs +++ b/packages/etcd/data_stream/metrics/agent/stream/stream.yml.hbs @@ -1,9 +1,13 @@ -metricsets: ["metrics"] +metricsets: ["collector"] hosts: {{#each hosts}} - {{this}} {{/each}} +metrics_filters.include: +{{#each metrics_filters.include}} + - {{this}} +{{/each}} +metrics_path: {{metrics_path}} period: {{period}} -{{#if server_status_path}} -server_status_path: {{server_status_path}} -{{/if}} \ No newline at end of file +use_types: true +rate_counters: false \ No newline at end of file diff --git a/packages/etcd/data_stream/metrics/elasticsearch/ingest_pipeline/default.yml b/packages/etcd/data_stream/metrics/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 00000000000..b009ca62fca --- /dev/null +++ b/packages/etcd/data_stream/metrics/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,133 @@ +--- +description: Pipeline for processing etcd v3 metrics. +processors: + - set: + field: event.module + value: etcd + - set: + field: ecs.version + value: "8.5.1" + - rename: + field: prometheus.etcd_mvcc_db_total_size_in_bytes.value + target_field: etcd.disk.mvcc_db_total_size.bytes + ignore_missing: true + - rename: + field: prometheus.etcd_disk_wal_fsync_duration_seconds.histogram + target_field: etcd.disk.wal_fsync_duration_seconds.histogram + ignore_missing: true + - rename: + field: prometheus.etcd_disk_backend_commit_duration_seconds.histogram + target_field: etcd.disk.backend_commit_duration_seconds.histogram + ignore_missing: true + - rename: + field: prometheus.go_memstats_alloc_bytes.value + target_field: etcd.memory.go_memstats_alloc.bytes + ignore_missing: true + - rename: + field: prometheus.go_memstats_alloc_bytes_total.counter + target_field: etcd.memory.go_memstats_alloc.total.bytes + ignore_missing: true + - rename: + field: prometheus.etcd_network_client_grpc_sent_bytes_total.counter + target_field: etcd.network.client_grpc_sent.bytes + ignore_missing: true + - rename: + field: prometheus.etcd_network_client_grpc_received_bytes_total.counter + target_field: etcd.network.client_grpc_received.bytes + ignore_missing: true + - rename: + field: prometheus.etcd_server_has_leader.value + target_field: etcd.server.has_leader.count + ignore_missing: true + - rename: + field: prometheus.etcd_server_leader_changes_seen_total.counter + target_field: etcd.server.leader_changes.count + ignore_missing: true + - rename: + field: prometheus.etcd_server_proposals_committed_total.value + target_field: etcd.server.proposals_committed.count + ignore_missing: true + - rename: + field: prometheus.etcd_server_proposals_pending.value + target_field: etcd.server.proposals_pending.count + ignore_missing: true + - rename: + field: prometheus.etcd_server_proposals_failed_total.counter + target_field: etcd.server.proposals_failed.count + ignore_missing: true + - rename: + field: prometheus.grpc_server_started_total.counter + target_field: etcd.server.grpc_started.count + ignore_missing: true + - rename: + field: prometheus.grpc_server_handled_total.counter + target_field: etcd.server.grpc_handled.count + ignore_missing: true + - rename: + field: prometheus.process_start_time_seconds.value + target_field: etcd.process_start_time.sec + ignore_missing: true + - rename: + field: prometheus.etcd_network_peer_round_trip_time_seconds.histogram + target_field: etcd.network.peer_round_trip_time_seconds.histogram + ignore_missing: true + - rename: + field: prometheus.etcd_server_proposals_applied_total.value + target_field: etcd.server.proposals_applied_total + ignore_missing: true + - rename: + field: prometheus.etcd_network_peer_received_bytes_total.counter + target_field: etcd.network.peer_received_bytes_total + ignore_missing: true + - rename: + field: prometheus.etcd_network_peer_sent_bytes_total.counter + target_field: etcd.network.peer_sent_bytes_total + ignore_missing: true + - rename: + field: prometheus.etcd_network_peer_sent_failures_total.counter + target_field: etcd.network.peer_sent_failures_total + ignore_missing: true + - rename: + field: prometheus.etcd_network_peer_received_failures_total.counter + target_field: etcd.network.peer_received_failures_total + ignore_missing: true + - rename: + field: prometheus.etcd_debugging_store_writes_total.counter + target_field: etcd.store.writes_total + ignore_missing: true + - rename: + field: prometheus.etcd_debugging_store_expires_total.counter + target_field: etcd.store.expires_total + ignore_missing: true + - rename: + field: prometheus.etcd_debugging_store_reads_total.counter + target_field: etcd.store.reads_total + ignore_missing: true + - rename: + field: prometheus.etcd_debugging_store_watchers.value + target_field: etcd.store.watchers + ignore_missing: true + - rename: + field: prometheus.labels + target_field: etcd.labels + ignore_missing: true + ignore_failure: true + - fingerprint: + fields: ["etcd.labels"] + target_field: "etcd.labels.fingerprint" + ignore_missing: true + - remove: + field: prometheus + ignore_missing: true + - set: + field: event.kind + value: pipeline_error + if: ctx.error?.message != null +on_failure: + - set: + field: error.message + value: "{{{_ingest.on_failure_message}}}" + - append: + field: event.kind + value: pipeline_error + allow_duplicates: false diff --git a/packages/etcd/data_stream/metrics/fields/ecs.yml b/packages/etcd/data_stream/metrics/fields/ecs.yml index aae79b4b9fc..ca9da4ea67c 100755 --- a/packages/etcd/data_stream/metrics/fields/ecs.yml +++ b/packages/etcd/data_stream/metrics/fields/ecs.yml @@ -1,8 +1,35 @@ -- external: ecs - name: host.ip -- external: ecs - name: ecs.version -- external: ecs - name: service.address -- external: ecs - name: service.type +- name: ecs.version + external: ecs +- name: event.duration + external: ecs +- name: event.kind + external: ecs +- name: service.type + external: ecs +- name: service.address + dimension: true + external: ecs +- name: agent.id + dimension: true + external: ecs +- name: cloud.account.id + dimension: true + external: ecs +- name: cloud.region + dimension: true + external: ecs +- name: cloud.availability_zone + dimension: true + external: ecs +- name: cloud.instance.id + dimension: true + external: ecs +- name: cloud.provider + dimension: true + external: ecs +- name: container.id + dimension: true + external: ecs +- name: host.name + dimension: true + external: ecs diff --git a/packages/etcd/data_stream/metrics/fields/fields.yml b/packages/etcd/data_stream/metrics/fields/fields.yml index 8eb5d4a0a27..1a368b46f6a 100755 --- a/packages/etcd/data_stream/metrics/fields/fields.yml +++ b/packages/etcd/data_stream/metrics/fields/fields.yml @@ -1,110 +1,148 @@ - name: etcd type: group fields: - - name: disk + - name: process_start_time.sec + type: long + metric_type: gauge + unit: s + description: | + Start time of the process since unix epoch in seconds. + - name: store type: group fields: - - name: mvcc_db_total_size.bytes + - name: writes_total type: long + metric_type: counter description: | - Size of stored data at MVCC - - name: wal_fsync_duration.ns.bucket.* + Total number of writes (e.g. set/compareAndDelete) seen by this member. + - name: expires_total type: long + metric_type: counter description: | - Latency for writing ahead logs to disk - - name: wal_fsync_duration.ns.count + Total number of expired keys. + - name: reads_total type: long + metric_type: counter description: | - Write ahead logs count - - name: wal_fsync_duration.ns.sum + Total number of reads action by (get/getRecursive), local to this member. + - name: watchers type: long + metric_type: gauge description: | - Write ahead logs latency sum - - name: backend_commit_duration.ns.bucket.* + Count of currently active watchers. + - name: disk + type: group + fields: + - name: mvcc_db_total_size.bytes type: long + unit: byte + metric_type: gauge description: | - Latency for writing backend changes to disk - - name: backend_commit_duration.ns.count - type: long + Size of stored data at MVCC + - name: wal_fsync_duration_seconds.histogram + type: histogram description: | - Backend commits count - - name: backend_commit_duration.ns.sum - type: long + Latency for writing ahead logs to disk + - name: backend_commit_duration_seconds.histogram + type: histogram description: | - Backend commits latency sum + Latency for writing backend changes to disk - name: memory type: group fields: - - name: go_memstats_alloc - type: group - fields: - - name: bytes - type: long - description: | - Memory allocated bytes as of MemStats Go + - name: go_memstats_alloc.bytes + type: long + metric_type: gauge + unit: byte + description: | + Current allocated bytes as of MemStats Go + - name: go_memstats_alloc.total.bytes + type: long + metric_type: counter + unit: byte + description: | + Total allocated bytes, including released memory as of MemStats Go - name: network type: group fields: - - name: client_grpc_sent - type: group - fields: - - name: bytes - type: long - description: | - gRPC sent bytes total - - name: client_grpc_received - type: group - fields: - - name: bytes - type: long - description: | - gRPC received bytes total + - name: client_grpc_sent.bytes + type: long + metric_type: counter + unit: byte + description: | + gRPC sent bytes total + - name: client_grpc_received.bytes + type: long + metric_type: counter + unit: byte + description: | + gRPC received bytes total + - name: peer_round_trip_time_seconds.histogram + type: histogram + description: | + Round-Trip-Time histogram between peers. + - name: peer_received_bytes_total + type: long + metric_type: counter + unit: byte + description: | + The total number of bytes received from peers. + - name: peer_sent_bytes_total + type: long + metric_type: counter + unit: byte + description: | + The total number of bytes sent to peers. + - name: peer_sent_failures_total + type: long + metric_type: counter + description: | + The total number of send failures from peers. + - name: peer_received_failures_total + type: long + metric_type: counter + description: | + The total number of receive failures from peers. - name: server type: group fields: - - name: has_leader - type: byte + - name: has_leader.count + type: long + metric_type: gauge description: | Whether a leader exists in the cluster - - name: leader_changes - type: group - fields: - - name: count - type: long - description: | - Number of leader changes seen at the cluster - - name: proposals_committed - type: group - fields: - - name: count - type: long - description: | - Number of consensus proposals commited - - name: proposals_pending - type: group - fields: - - name: count - type: long - description: | - Number of consensus proposals pending - - name: proposals_failed - type: group - fields: - - name: count - type: long - description: | - Number of consensus proposals failed - - name: grpc_started - type: group - fields: - - name: count - type: long - description: | - Number of sent gRPC requests - - name: grpc_handled - type: group - fields: - - name: count - type: long - description: | - Number of received gRPC requests + - name: leader_changes.count + type: long + metric_type: counter + description: | + Number of leader changes seen at the cluster + - name: proposals_committed.count + type: long + metric_type: gauge + description: | + Number of consensus proposals commited + - name: proposals_pending.count + type: long + metric_type: gauge + description: | + Number of consensus proposals pending + - name: proposals_failed.count + type: long + metric_type: counter + description: | + Number of consensus proposals failed + - name: grpc_started.count + type: long + metric_type: counter + description: | + Number of sent gRPC requests + - name: grpc_handled.count + type: long + metric_type: counter + description: | + Number of received gRPC requests + - name: proposals_applied_total + type: long + metric_type: gauge + description: | + The total number of consensus proposals applied. \ No newline at end of file diff --git a/packages/etcd/data_stream/metrics/fields/package-fields.yml b/packages/etcd/data_stream/metrics/fields/package-fields.yml index 579f6f7e662..60cd7ff47f4 100755 --- a/packages/etcd/data_stream/metrics/fields/package-fields.yml +++ b/packages/etcd/data_stream/metrics/fields/package-fields.yml @@ -1,7 +1,13 @@ - name: etcd type: group fields: - - name: api_version + - name: labels.* type: keyword - description: | - Etcd API version for metrics retrieval + object_type_mapping_type: "*" + description: >- + etcd labels. + - name: labels.fingerprint + type: keyword + dimension: true + description: >- + Unique fingerprint of the etcd labels. \ No newline at end of file diff --git a/packages/etcd/data_stream/metrics/manifest.yml b/packages/etcd/data_stream/metrics/manifest.yml index 124b1d87b06..54038d06ba7 100755 --- a/packages/etcd/data_stream/metrics/manifest.yml +++ b/packages/etcd/data_stream/metrics/manifest.yml @@ -1,7 +1,9 @@ -title: etcd metrics v3 +title: etcd v3 metrics type: metrics streams: - - input: etcd/metrics + - input: prometheus/metrics + title: etcd v3 metrics + description: Collect etcd v3 metrics. vars: - name: period type: text @@ -10,12 +12,17 @@ streams: required: true show_user: true default: 10s - - name: server_status_path + - name: metrics_path type: text - title: Server Status Path + title: Metrics Path multi: false - required: true - show_user: false + required: false + show_user: true default: /metrics - title: etcd metrics v3 - description: Collect etcd metrics v3 + - name: metrics_filters.include + type: text + title: Metrics Filters Include + multi: true + required: false + show_user: true + default: ["etcd_server_has_leader", "etcd_server_leader_changes_seen_total", "etcd_server_proposals_committed_total", "etcd_server_proposals_pending", "etcd_server_proposals_failed_total", "process_start_time_seconds", "grpc_server_started_total", "grpc_server_handled_total", "etcd_mvcc_db_total_size_in_bytes", "etcd_disk_wal_fsync_duration_seconds", "etcd_disk_backend_commit_duration_seconds", "go_memstats_alloc_bytes", "etcd_network_client_grpc_sent_bytes_total", "etcd_network_client_grpc_received_bytes_total", "etcd_network_peer_round_trip_time_seconds", "etcd_server_proposals_applied_total", "etcd_network_peer_received_bytes_total", "etcd_network_peer_sent_bytes_total", "etcd_network_peer_sent_failures_total", "etcd_network_peer_received_failures_total", "etcd_debugging_store_writes_total", "etcd_debugging_store_expires_total", "etcd_debugging_store_reads_total", "etcd_debugging_store_watchers"] diff --git a/packages/etcd/data_stream/metrics/sample_event.json b/packages/etcd/data_stream/metrics/sample_event.json index c4b209d189f..872a1c4a46d 100755 --- a/packages/etcd/data_stream/metrics/sample_event.json +++ b/packages/etcd/data_stream/metrics/sample_event.json @@ -1,11 +1,11 @@ { - "@timestamp": "2022-01-10T09:13:54.764Z", + "@timestamp": "2023-11-30T11:12:42.472Z", "agent": { - "ephemeral_id": "29a986b1-d5f3-4e9d-8544-4746db1415a6", - "id": "25ee0259-10b8-4a16-9f80-d18ce8ad6442", + "ephemeral_id": "422daded-456e-40fe-bd1f-a2913d37b309", + "id": "a4b14fa0-9721-4a94-8b4b-bebf87bd1ba4", "name": "docker-fleet-agent", "type": "metricbeat", - "version": "8.0.0-beta1" + "version": "8.12.0" }, "data_stream": { "dataset": "etcd.metrics", @@ -16,133 +16,61 @@ "version": "8.5.1" }, "elastic_agent": { - "id": "25ee0259-10b8-4a16-9f80-d18ce8ad6442", - "snapshot": false, - "version": "8.0.0-beta1" + "id": "a4b14fa0-9721-4a94-8b4b-bebf87bd1ba4", + "snapshot": true, + "version": "8.12.0" }, "etcd": { - "api_version": "3", - "disk": { - "backend_commit_duration": { - "ns": { - "bucket": { - "+Inf": 7, - "1000000": 0, - "1024000000": 7, - "128000000": 7, - "16000000": 6, - "2000000": 3, - "2048000000": 7, - "256000000": 7, - "32000000": 6, - "4000000": 4, - "4096000000": 7, - "512000000": 7, - "64000000": 7, - "8000000": 6, - "8192000000": 7 - }, - "count": 7, - "sum": 57776473 - } - }, - "mvcc_db_total_size": { - "bytes": 20480 - }, - "wal_fsync_duration": { - "ns": { - "bucket": { - "+Inf": 5, - "1000000": 0, - "1024000000": 5, - "128000000": 3, - "16000000": 2, - "2000000": 0, - "2048000000": 5, - "256000000": 5, - "32000000": 2, - "4000000": 2, - "4096000000": 5, - "512000000": 5, - "64000000": 2, - "8000000": 2, - "8192000000": 5 - }, - "count": 5, - "sum": 434507865.00000006 - } - } - }, - "memory": { - "go_memstats_alloc": { - "bytes": 6440232 - } - }, - "network": { - "client_grpc_received": { - "bytes": 4 - }, - "client_grpc_sent": { - "bytes": 188 - } + "labels": { + "fingerprint": "oB5wpx/JWEU93sgnFX12WX4GmEk=", + "grpc_code": "Aborted", + "grpc_method": "Authenticate", + "grpc_service": "etcdserverpb.Auth", + "grpc_type": "unary", + "instance": "elastic-package-service-etcd-1:2379", + "job": "prometheus" }, "server": { "grpc_handled": { "count": 0 - }, - "grpc_started": { - "count": 0 - }, - "has_leader": 1, - "leader_changes": { - "count": 1 - }, - "proposals_committed": { - "count": 4 - }, - "proposals_failed": { - "count": 0 - }, - "proposals_pending": { - "count": 0 } } }, "event": { "agent_id_status": "verified", "dataset": "etcd.metrics", - "duration": 171096760, - "ingested": "2022-01-10T09:13:56Z", + "duration": 15662716, + "ingested": "2023-11-30T11:12:52Z", "module": "etcd" }, "host": { "architecture": "x86_64", "containerized": true, "hostname": "docker-fleet-agent", - "id": "4ccba669f0df47fa3f57a9e4169ae7f1", + "id": "d03b51e638e64b05b5cf16c41d2058c0", "ip": [ "172.18.0.7" ], "mac": [ - "02:42:ac:12:00:07" + "02-42-AC-12-00-07" ], "name": "docker-fleet-agent", "os": { - "codename": "Core", - "family": "redhat", - "kernel": "5.11.0-43-generic", - "name": "CentOS Linux", - "platform": "centos", + "codename": "focal", + "family": "debian", + "kernel": "5.10.102.1-microsoft-standard-WSL2", + "name": "Ubuntu", + "platform": "ubuntu", "type": "linux", - "version": "7 (Core)" + "version": "20.04.6 LTS (Focal Fossa)" } }, "metricset": { - "name": "metrics", + "name": "collector", "period": 10000 }, "service": { "address": "http://elastic-package-service-etcd-1:2379/metrics", - "type": "etcd" + "type": "prometheus" } } \ No newline at end of file diff --git a/packages/etcd/data_stream/self/manifest.yml b/packages/etcd/data_stream/self/manifest.yml index 34771296cf0..a13eb9a602a 100644 --- a/packages/etcd/data_stream/self/manifest.yml +++ b/packages/etcd/data_stream/self/manifest.yml @@ -19,3 +19,4 @@ streams: default: /metrics title: etcd self metrics description: Collect etcd self metrics + enabled: false diff --git a/packages/etcd/data_stream/store/manifest.yml b/packages/etcd/data_stream/store/manifest.yml index ab1ea2dd6c4..d0047d04478 100644 --- a/packages/etcd/data_stream/store/manifest.yml +++ b/packages/etcd/data_stream/store/manifest.yml @@ -19,3 +19,4 @@ streams: default: /metrics title: etcd store metrics description: Collect etcd store metrics + enabled: false diff --git a/packages/etcd/docs/README.md b/packages/etcd/docs/README.md index d84ce6dc967..17bb7c91ea8 100644 --- a/packages/etcd/docs/README.md +++ b/packages/etcd/docs/README.md @@ -1,17 +1,21 @@ # etcd Integration -This integration is used to collect metrics from [etcd v2 and v3 servers](https://etcd.io/). -This integration periodically fetches metrics from [etcd monitoring server APIs](https://etcd.io/docs/v3.1/op-guide/monitoring/). +This integration is used to collect metrics from [etcd v2 and v3 instances](https://etcd.io/). + +It periodically fetches metrics from [etcd metrics APIs](https://etcd.io/docs/v3.1/op-guide/monitoring/). ## Compatibility -The etcd package was tested with etcd 3.5.1. +The etcd package was tested with etcd `3.5.x`. ## Metrics -When using etcd v2, metrics are collected using etcd v2 API. When using v3, metrics are retrieved from the /metrics endpoint. +For etcd v2, metrics are collected through the etcd v2 APIs, whereas for v3, they are fetched from the `/metrics` endpoint. + +When using v3, datasets are bundled within `metrics` data stream, while for v2, available datasets include `leader`, `self`, and `store`. + +The ETCD v2 APIs are not enabled by default. However, you can enable ETCD v2 APIs when using ETCD v3 and above by utilizing the --enable-v2 flag, provided it is supported. -When using v3, datasets are bundled into `metrics`. When using v2, datasets available are `leader`, `self` and `store`. ### metrics @@ -21,13 +25,13 @@ An example event for `metrics` looks as following: ```json { - "@timestamp": "2022-01-10T09:13:54.764Z", + "@timestamp": "2023-11-30T11:12:42.472Z", "agent": { - "ephemeral_id": "29a986b1-d5f3-4e9d-8544-4746db1415a6", - "id": "25ee0259-10b8-4a16-9f80-d18ce8ad6442", + "ephemeral_id": "422daded-456e-40fe-bd1f-a2913d37b309", + "id": "a4b14fa0-9721-4a94-8b4b-bebf87bd1ba4", "name": "docker-fleet-agent", "type": "metricbeat", - "version": "8.0.0-beta1" + "version": "8.12.0" }, "data_stream": { "dataset": "etcd.metrics", @@ -38,170 +42,116 @@ An example event for `metrics` looks as following: "version": "8.5.1" }, "elastic_agent": { - "id": "25ee0259-10b8-4a16-9f80-d18ce8ad6442", - "snapshot": false, - "version": "8.0.0-beta1" + "id": "a4b14fa0-9721-4a94-8b4b-bebf87bd1ba4", + "snapshot": true, + "version": "8.12.0" }, "etcd": { - "api_version": "3", - "disk": { - "backend_commit_duration": { - "ns": { - "bucket": { - "+Inf": 7, - "1000000": 0, - "1024000000": 7, - "128000000": 7, - "16000000": 6, - "2000000": 3, - "2048000000": 7, - "256000000": 7, - "32000000": 6, - "4000000": 4, - "4096000000": 7, - "512000000": 7, - "64000000": 7, - "8000000": 6, - "8192000000": 7 - }, - "count": 7, - "sum": 57776473 - } - }, - "mvcc_db_total_size": { - "bytes": 20480 - }, - "wal_fsync_duration": { - "ns": { - "bucket": { - "+Inf": 5, - "1000000": 0, - "1024000000": 5, - "128000000": 3, - "16000000": 2, - "2000000": 0, - "2048000000": 5, - "256000000": 5, - "32000000": 2, - "4000000": 2, - "4096000000": 5, - "512000000": 5, - "64000000": 2, - "8000000": 2, - "8192000000": 5 - }, - "count": 5, - "sum": 434507865.00000006 - } - } - }, - "memory": { - "go_memstats_alloc": { - "bytes": 6440232 - } - }, - "network": { - "client_grpc_received": { - "bytes": 4 - }, - "client_grpc_sent": { - "bytes": 188 - } + "labels": { + "fingerprint": "oB5wpx/JWEU93sgnFX12WX4GmEk=", + "grpc_code": "Aborted", + "grpc_method": "Authenticate", + "grpc_service": "etcdserverpb.Auth", + "grpc_type": "unary", + "instance": "elastic-package-service-etcd-1:2379", + "job": "prometheus" }, "server": { "grpc_handled": { "count": 0 - }, - "grpc_started": { - "count": 0 - }, - "has_leader": 1, - "leader_changes": { - "count": 1 - }, - "proposals_committed": { - "count": 4 - }, - "proposals_failed": { - "count": 0 - }, - "proposals_pending": { - "count": 0 } } }, "event": { "agent_id_status": "verified", "dataset": "etcd.metrics", - "duration": 171096760, - "ingested": "2022-01-10T09:13:56Z", + "duration": 15662716, + "ingested": "2023-11-30T11:12:52Z", "module": "etcd" }, "host": { "architecture": "x86_64", "containerized": true, "hostname": "docker-fleet-agent", - "id": "4ccba669f0df47fa3f57a9e4169ae7f1", + "id": "d03b51e638e64b05b5cf16c41d2058c0", "ip": [ "172.18.0.7" ], "mac": [ - "02:42:ac:12:00:07" + "02-42-AC-12-00-07" ], "name": "docker-fleet-agent", "os": { - "codename": "Core", - "family": "redhat", - "kernel": "5.11.0-43-generic", - "name": "CentOS Linux", - "platform": "centos", + "codename": "focal", + "family": "debian", + "kernel": "5.10.102.1-microsoft-standard-WSL2", + "name": "Ubuntu", + "platform": "ubuntu", "type": "linux", - "version": "7 (Core)" + "version": "20.04.6 LTS (Focal Fossa)" } }, "metricset": { - "name": "metrics", + "name": "collector", "period": 10000 }, "service": { "address": "http://elastic-package-service-etcd-1:2379/metrics", - "type": "etcd" + "type": "prometheus" } } ``` **Exported fields** -| Field | Description | Type | -|---|---|---| -| @timestamp | Event timestamp. | date | -| data_stream.dataset | Data stream dataset. | constant_keyword | -| data_stream.namespace | Data stream namespace. | constant_keyword | -| data_stream.type | Data stream type. | constant_keyword | -| ecs.version | ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. | keyword | -| etcd.api_version | Etcd API version for metrics retrieval | keyword | -| etcd.disk.backend_commit_duration.ns.bucket.\* | Latency for writing backend changes to disk | long | -| etcd.disk.backend_commit_duration.ns.count | Backend commits count | long | -| etcd.disk.backend_commit_duration.ns.sum | Backend commits latency sum | long | -| etcd.disk.mvcc_db_total_size.bytes | Size of stored data at MVCC | long | -| etcd.disk.wal_fsync_duration.ns.bucket.\* | Latency for writing ahead logs to disk | long | -| etcd.disk.wal_fsync_duration.ns.count | Write ahead logs count | long | -| etcd.disk.wal_fsync_duration.ns.sum | Write ahead logs latency sum | long | -| etcd.memory.go_memstats_alloc.bytes | Memory allocated bytes as of MemStats Go | long | -| etcd.network.client_grpc_received.bytes | gRPC received bytes total | long | -| etcd.network.client_grpc_sent.bytes | gRPC sent bytes total | long | -| etcd.server.grpc_handled.count | Number of received gRPC requests | long | -| etcd.server.grpc_started.count | Number of sent gRPC requests | long | -| etcd.server.has_leader | Whether a leader exists in the cluster | byte | -| etcd.server.leader_changes.count | Number of leader changes seen at the cluster | long | -| etcd.server.proposals_committed.count | Number of consensus proposals commited | long | -| etcd.server.proposals_failed.count | Number of consensus proposals failed | long | -| etcd.server.proposals_pending.count | Number of consensus proposals pending | long | -| event.dataset | Event dataset | constant_keyword | -| event.module | Event module | constant_keyword | -| host.ip | Host ip addresses. | ip | -| service.address | Address where data about this service was collected from. This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). | keyword | -| service.type | The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. | keyword | +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| agent.id | Unique identifier of this agent (if one exists). Example: For Beats this would be beat.id. | keyword | | | +| cloud.account.id | The cloud account or organization id used to identify different entities in a multi-tenant environment. Examples: AWS account id, Google Cloud ORG Id, or other unique identifier. | keyword | | | +| cloud.availability_zone | Availability zone in which this host, resource, or service is located. | keyword | | | +| cloud.instance.id | Instance ID of the host machine. | keyword | | | +| cloud.provider | Name of the cloud provider. Example values are aws, azure, gcp, or digitalocean. | keyword | | | +| cloud.region | Region in which this host, resource, or service is located. | keyword | | | +| container.id | Unique container id. | keyword | | | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. | keyword | | | +| etcd.disk.backend_commit_duration_seconds.histogram | Latency for writing backend changes to disk | histogram | | | +| etcd.disk.mvcc_db_total_size.bytes | Size of stored data at MVCC | long | byte | gauge | +| etcd.disk.wal_fsync_duration_seconds.histogram | Latency for writing ahead logs to disk | histogram | | | +| etcd.labels.\* | etcd labels. | keyword | | | +| etcd.labels.fingerprint | Unique fingerprint of the etcd labels. | keyword | | | +| etcd.memory.go_memstats_alloc.bytes | Current allocated bytes as of MemStats Go | long | byte | gauge | +| etcd.memory.go_memstats_alloc.total.bytes | Total allocated bytes, including released memory as of MemStats Go | long | byte | counter | +| etcd.network.client_grpc_received.bytes | gRPC received bytes total | long | byte | counter | +| etcd.network.client_grpc_sent.bytes | gRPC sent bytes total | long | byte | counter | +| etcd.network.peer_received_bytes_total | The total number of bytes received from peers. | long | byte | counter | +| etcd.network.peer_received_failures_total | The total number of receive failures from peers. | long | | counter | +| etcd.network.peer_round_trip_time_seconds.histogram | Round-Trip-Time histogram between peers. | histogram | | | +| etcd.network.peer_sent_bytes_total | The total number of bytes sent to peers. | long | byte | counter | +| etcd.network.peer_sent_failures_total | The total number of send failures from peers. | long | | counter | +| etcd.process_start_time.sec | Start time of the process since unix epoch in seconds. | long | s | gauge | +| etcd.server.grpc_handled.count | Number of received gRPC requests | long | | counter | +| etcd.server.grpc_started.count | Number of sent gRPC requests | long | | counter | +| etcd.server.has_leader.count | Whether a leader exists in the cluster | long | | gauge | +| etcd.server.leader_changes.count | Number of leader changes seen at the cluster | long | | counter | +| etcd.server.proposals_applied_total | The total number of consensus proposals applied. | long | | gauge | +| etcd.server.proposals_committed.count | Number of consensus proposals commited | long | | gauge | +| etcd.server.proposals_failed.count | Number of consensus proposals failed | long | | counter | +| etcd.server.proposals_pending.count | Number of consensus proposals pending | long | | gauge | +| etcd.store.expires_total | Total number of expired keys. | long | | counter | +| etcd.store.reads_total | Total number of reads action by (get/getRecursive), local to this member. | long | | counter | +| etcd.store.watchers | Count of currently active watchers. | long | | gauge | +| etcd.store.writes_total | Total number of writes (e.g. set/compareAndDelete) seen by this member. | long | | counter | +| event.dataset | Event dataset | constant_keyword | | | +| event.duration | Duration of the event in nanoseconds. If event.start and event.end are known this value should be the difference between the end and start time. | long | | | +| event.kind | This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. `event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. | keyword | | | +| event.module | Event module | constant_keyword | | | +| host.name | Name of the host. It can contain what `hostname` returns on Unix systems, the fully qualified domain name, or a name specified by the user. The sender decides which value to use. | keyword | | | +| service.address | Address where data about this service was collected from. This should be a URI, network address (ipv4:port or [ipv6]:port) or a resource path (sockets). | keyword | | | +| service.type | The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. | keyword | | | ### leader diff --git a/packages/etcd/img/metrics-overview.png b/packages/etcd/img/metrics-overview.png index 0a8f5fdec82..41b1bfd22fd 100644 Binary files a/packages/etcd/img/metrics-overview.png and b/packages/etcd/img/metrics-overview.png differ diff --git a/packages/etcd/kibana/dashboard/etcd-a2f2c8fd-f016-42c8-9dc1-4e5a36038e35.json b/packages/etcd/kibana/dashboard/etcd-a2f2c8fd-f016-42c8-9dc1-4e5a36038e35.json index cf23de9bb4b..77be24dbddf 100644 --- a/packages/etcd/kibana/dashboard/etcd-a2f2c8fd-f016-42c8-9dc1-4e5a36038e35.json +++ b/packages/etcd/kibana/dashboard/etcd-a2f2c8fd-f016-42c8-9dc1-4e5a36038e35.json @@ -4,37 +4,54 @@ "chainingSystem": "HIERARCHICAL", "controlStyle": "oneLine", "ignoreParentSettingsJSON": "{\"ignoreFilters\":false,\"ignoreQuery\":false,\"ignoreTimerange\":false,\"ignoreValidations\":false}", - "panelsJSON": "{\"239053c0-7b28-49ec-a014-24f4fc5a5dd9\":{\"order\":0,\"width\":\"medium\",\"grow\":true,\"type\":\"optionsListControl\",\"explicitInput\":{\"fieldName\":\"host.hostname\",\"title\":\"Hostname\",\"singleSelect\":true,\"id\":\"239053c0-7b28-49ec-a014-24f4fc5a5dd9\",\"enhancements\":{}}}}" + "panelsJSON": "{\"6eb9e0c7-609d-437e-8cd1-a00349df37de\":{\"order\":0,\"width\":\"medium\",\"grow\":false,\"type\":\"optionsListControl\",\"explicitInput\":{\"fieldName\":\"host.hostname\",\"title\":\"Hostname\",\"singleSelect\":true,\"id\":\"6eb9e0c7-609d-437e-8cd1-a00349df37de\",\"enhancements\":{}}}}" }, - "description": "Overview dashboard for the etcd integration in Metrics", - "hits": 0, + "description": "Overview of etcd Metrics", "kibanaSavedObjectMeta": { "searchSourceJSON": { - "filter": [], - "highlightAll": true, + "filter": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "field": "data_stream.dataset", + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", + "key": "data_stream.dataset", + "negate": false, + "params": { + "query": "etcd.metrics" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "data_stream.dataset": "etcd.metrics" + } + } + } + ], "query": { "language": "kuery", "query": "" - }, - "version": true + } } }, "optionsJSON": { - "darkTheme": false, "hidePanelTitles": false, "syncColors": true, + "syncCursor": true, + "syncTooltips": false, "useMargins": true }, "panelsJSON": [ { "embeddableConfig": { "attributes": { + "description": "", "references": [ - { - "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -42,8 +59,10 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { + "currentIndexPatternId": "metrics-*", "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -55,10 +74,10 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total proposals pending", + "label": "Proposals Applied", "operationType": "average", "scale": "ratio", - "sourceField": "etcd.server.proposals_pending.count" + "sourceField": "etcd.server.proposals_applied_total" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -66,6 +85,7 @@ "label": "@timestamp", "operationType": "date_histogram", "params": { + "dropPartials": true, "includeEmptyRows": true, "interval": "auto" }, @@ -73,12 +93,14 @@ "sourceField": "@timestamp" } }, - "incompleteColumns": {} + "incompleteColumns": {}, + "indexPatternId": "metrics-*" } } } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -86,7 +108,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -149,25 +171,20 @@ }, "gridData": { "h": 12, - "i": "3f46a2f5-0b3b-49bc-93b8-8377253d7df2", - "w": 23, + "i": "b5c8b22c-6ffd-4137-aa6c-9cfe5bb6fdab", + "w": 24, "x": 0, "y": 0 }, - "panelIndex": "3f46a2f5-0b3b-49bc-93b8-8377253d7df2", - "title": "Total proposals pending [Metrics etcd]", + "panelIndex": "b5c8b22c-6ffd-4137-aa6c-9cfe5bb6fdab", + "title": "Proposals Applied", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { "attributes": { "references": [ - { - "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -175,8 +192,9 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -188,10 +206,10 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total gRPC received requests", + "label": "Proposals Failed", "operationType": "average", "scale": "ratio", - "sourceField": "etcd.server.grpc_handled.count" + "sourceField": "etcd.server.proposals_failed.count" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -212,6 +230,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -219,7 +238,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -282,25 +301,20 @@ }, "gridData": { "h": 12, - "i": "ed08e927-bee2-4c64-9055-ca8bd5ee977f", - "w": 25, - "x": 23, + "i": "b9282ce0-a486-4231-8556-17f75e149723", + "w": 24, + "x": 24, "y": 0 }, - "panelIndex": "ed08e927-bee2-4c64-9055-ca8bd5ee977f", - "title": "Total gRPC received requests [Metrics etcd]", + "panelIndex": "b9282ce0-a486-4231-8556-17f75e149723", + "title": "Proposals Failed", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { "attributes": { "references": [ - { - "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -308,8 +322,9 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -321,10 +336,10 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total gRPC sent bytes", + "label": "Proposals Pending", "operationType": "average", "scale": "ratio", - "sourceField": "etcd.network.client_grpc_sent.bytes" + "sourceField": "etcd.server.proposals_pending.count" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -345,6 +360,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -352,7 +368,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -361,6 +377,7 @@ "yLeft": false, "yRight": true }, + "hideEndzones": false, "labelsOrientation": { "x": 0, "yLeft": 0, @@ -387,7 +404,6 @@ ], "legend": { "isVisible": true, - "legendSize": "auto", "position": "bottom", "showSingleSeries": true }, @@ -415,25 +431,20 @@ }, "gridData": { "h": 12, - "i": "15c7a771-ddcb-493b-b4a5-67dfa247425f", - "w": 23, + "i": "2f265850-c5cd-4113-8c1d-976eb2469457", + "w": 24, "x": 0, "y": 12 }, - "panelIndex": "15c7a771-ddcb-493b-b4a5-67dfa247425f", - "title": "Total gRPC sent bytes [Metrics etcd]", + "panelIndex": "2f265850-c5cd-4113-8c1d-976eb2469457", + "title": "Proposals Pending ", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { "attributes": { "references": [ - { - "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -441,8 +452,9 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -454,10 +466,10 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total gRPC sent requests", + "label": "Proposals Committed", "operationType": "average", "scale": "ratio", - "sourceField": "etcd.server.grpc_started.count" + "sourceField": "etcd.server.proposals_committed.count" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -478,6 +490,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -485,7 +498,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -548,25 +561,20 @@ }, "gridData": { "h": 12, - "i": "61eb6374-4035-4d0b-be54-547c32109847", - "w": 25, - "x": 23, + "i": "81c66cbb-0566-4f58-bbc6-e58ffab3d3c1", + "w": 24, + "x": 24, "y": 12 }, - "panelIndex": "61eb6374-4035-4d0b-be54-547c32109847", - "title": "Total gRPC sent requests [Metrics etcd]", + "panelIndex": "81c66cbb-0566-4f58-bbc6-e58ffab3d3c1", + "title": "Proposals Committed", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { "attributes": { "references": [ - { - "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -574,8 +582,9 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -587,10 +596,11 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total proposals failed", + "label": "gRPC Received Requests", "operationType": "average", + "params": {}, "scale": "ratio", - "sourceField": "etcd.server.proposals_failed.count" + "sourceField": "etcd.server.grpc_handled.count" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -611,6 +621,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -618,7 +629,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -681,15 +692,15 @@ }, "gridData": { "h": 12, - "i": "f1df951e-b730-41dd-b415-8233ac26ed36", - "w": 16, + "i": "37146018-2dbf-4262-afb5-08f85a490bea", + "w": 24, "x": 0, "y": 24 }, - "panelIndex": "f1df951e-b730-41dd-b415-8233ac26ed36", - "title": "Total proposals failed [Metrics etcd]", + "panelIndex": "37146018-2dbf-4262-afb5-08f85a490bea", + "title": "gRPC Received Requests", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { @@ -697,9 +708,134 @@ "references": [ { "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", + "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { + "columnOrder": [ + "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f", + "8872789d-32ab-4246-9cf8-ef5398022047" + ], + "columns": { + "8872789d-32ab-4246-9cf8-ef5398022047": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "gRPC Sent Requests", + "operationType": "average", + "scale": "ratio", + "sourceField": "etcd.server.grpc_started.count" + }, + "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": false, + "yRight": true + }, + "fittingFunction": "None", + "gridlinesVisibilitySettings": { + "x": false, + "yLeft": false, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "layers": [ + { + "accessors": [ + "8872789d-32ab-4246-9cf8-ef5398022047" + ], + "layerId": "2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f", + "yConfig": [ + { + "axisMode": "left", + "forAccessor": "8872789d-32ab-4246-9cf8-ef5398022047" + } + ] + } + ], + "legend": { + "isVisible": true, + "legendSize": "auto", + "position": "bottom", + "showSingleSeries": true + }, + "preferredSeriesType": "line", + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 12, + "i": "f90fef13-c6a3-4016-aab2-08e13c46e2da", + "w": 24, + "x": 24, + "y": 24 + }, + "panelIndex": "f90fef13-c6a3-4016-aab2-08e13c46e2da", + "title": "gRPC Sent Requests", + "type": "lens", + "version": "8.7.0" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -707,8 +843,9 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ @@ -720,10 +857,18 @@ "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total proposals committed", + "label": "Total gRPC Received Bytes", "operationType": "average", + "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + } + }, "scale": "ratio", - "sourceField": "etcd.server.proposals_committed.count" + "sourceField": "etcd.network.client_grpc_received.bytes" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -744,6 +889,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -751,7 +897,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -814,15 +960,15 @@ }, "gridData": { "h": 12, - "i": "9dc7c80d-2799-4f04-8ca3-391e4b6ad287", - "w": 16, - "x": 16, - "y": 24 + "i": "f01fbbef-2da7-4deb-b736-a321cd63016c", + "w": 24, + "x": 0, + "y": 36 }, - "panelIndex": "9dc7c80d-2799-4f04-8ca3-391e4b6ad287", - "title": "Total proposals committed [Metrics etcd]", + "panelIndex": "f01fbbef-2da7-4deb-b736-a321cd63016c", + "title": "Total gRPC Received Bytes", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" }, { "embeddableConfig": { @@ -830,9 +976,143 @@ "references": [ { "id": "metrics-*", - "name": "indexpattern-datasource-current-indexpattern", + "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" + } + ], + "state": { + "adHocDataViews": {}, + "datasourceStates": { + "formBased": { + "layers": { + "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { + "columnOrder": [ + "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f", + "8872789d-32ab-4246-9cf8-ef5398022047" + ], + "columns": { + "8872789d-32ab-4246-9cf8-ef5398022047": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Total gRPC Sent Bytes", + "operationType": "average", + "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + } + }, + "scale": "ratio", + "sourceField": "etcd.network.client_grpc_sent.bytes" + }, + "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } }, + "filters": [], + "internalReferences": [], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": false, + "yRight": true + }, + "fittingFunction": "None", + "gridlinesVisibilitySettings": { + "x": false, + "yLeft": false, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "layers": [ + { + "accessors": [ + "8872789d-32ab-4246-9cf8-ef5398022047" + ], + "layerId": "2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "xAccessor": "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f", + "yConfig": [ + { + "axisMode": "left", + "forAccessor": "8872789d-32ab-4246-9cf8-ef5398022047" + } + ] + } + ], + "legend": { + "isVisible": true, + "legendSize": "auto", + "position": "bottom", + "showSingleSeries": true + }, + "preferredSeriesType": "line", + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "valueLabels": "hide", + "yLeftExtent": { + "mode": "full" + }, + "yRightExtent": { + "mode": "full" + } + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 12, + "i": "50f22cf2-3027-4881-9ec2-1565f610600b", + "w": 24, + "x": 24, + "y": 36 + }, + "panelIndex": "50f22cf2-3027-4881-9ec2-1565f610600b", + "title": "Total gRPC Sent Bytes", + "type": "lens", + "version": "8.7.0" + }, + { + "embeddableConfig": { + "attributes": { + "description": "", + "references": [ { "id": "metrics-*", "name": "indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", @@ -840,23 +1120,39 @@ } ], "state": { + "adHocDataViews": {}, "datasourceStates": { - "indexpattern": { + "formBased": { "layers": { "2b8f22ba-7b51-4f1b-bbef-f08560edf500": { "columnOrder": [ "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f", - "8872789d-32ab-4246-9cf8-ef5398022047" + "8872789d-32ab-4246-9cf8-ef5398022047", + "3239ed83-9561-499e-b29d-3fb6be853c4f", + "e1c0e421-2ab3-40f4-b349-05dfe0a2c118", + "c95dcfc1-bf44-4c57-a93c-9d1f138ddf65" ], "columns": { + "3239ed83-9561-499e-b29d-3fb6be853c4f": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Store Writes", + "operationType": "median", + "params": { + "emptyAsNull": true + }, + "scale": "ratio", + "sourceField": "etcd.store.writes_total" + }, "8872789d-32ab-4246-9cf8-ef5398022047": { "customLabel": true, "dataType": "number", "isBucketed": false, - "label": "Total gRPC received bytes", + "label": "Store Expires", "operationType": "average", "scale": "ratio", - "sourceField": "etcd.network.client_grpc_received.bytes" + "sourceField": "etcd.store.expires_total" }, "c7e85f08-723f-4c6f-a422-7dcfc0e0cc3f": { "dataType": "date", @@ -864,11 +1160,36 @@ "label": "@timestamp", "operationType": "date_histogram", "params": { + "dropPartials": true, "includeEmptyRows": true, "interval": "auto" }, "scale": "interval", "sourceField": "@timestamp" + }, + "c95dcfc1-bf44-4c57-a93c-9d1f138ddf65": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Store Watchers", + "operationType": "median", + "params": { + "emptyAsNull": true + }, + "scale": "ratio", + "sourceField": "etcd.store.watchers" + }, + "e1c0e421-2ab3-40f4-b349-05dfe0a2c118": { + "customLabel": true, + "dataType": "number", + "isBucketed": false, + "label": "Store Reads", + "operationType": "median", + "params": { + "emptyAsNull": true + }, + "scale": "ratio", + "sourceField": "etcd.store.reads_total" } }, "incompleteColumns": {} @@ -877,6 +1198,7 @@ } }, "filters": [], + "internalReferences": [], "query": { "language": "kuery", "query": "" @@ -884,7 +1206,7 @@ "visualization": { "axisTitlesVisibilitySettings": { "x": true, - "yLeft": true, + "yLeft": false, "yRight": true }, "fittingFunction": "None", @@ -901,7 +1223,10 @@ "layers": [ { "accessors": [ - "8872789d-32ab-4246-9cf8-ef5398022047" + "8872789d-32ab-4246-9cf8-ef5398022047", + "3239ed83-9561-499e-b29d-3fb6be853c4f", + "e1c0e421-2ab3-40f4-b349-05dfe0a2c118", + "c95dcfc1-bf44-4c57-a93c-9d1f138ddf65" ], "layerId": "2b8f22ba-7b51-4f1b-bbef-f08560edf500", "layerType": "data", @@ -913,6 +1238,10 @@ { "axisMode": "left", "forAccessor": "8872789d-32ab-4246-9cf8-ef5398022047" + }, + { + "axisMode": "left", + "forAccessor": "c95dcfc1-bf44-4c57-a93c-9d1f138ddf65" } ] } @@ -947,100 +1276,81 @@ }, "gridData": { "h": 12, - "i": "14a2996f-7233-40d9-bab0-c3f85427d466", - "w": 16, - "x": 32, - "y": 24 + "i": "149bcef4-3870-4a40-82c9-06c3805e7ec4", + "w": 48, + "x": 0, + "y": 48 }, - "panelIndex": "14a2996f-7233-40d9-bab0-c3f85427d466", - "title": "Total gRPC received bytes [Metrics etcd]", + "panelIndex": "149bcef4-3870-4a40-82c9-06c3805e7ec4", + "title": "Store Metrics", "type": "lens", - "version": "8.3.0" + "version": "8.7.0" } ], "timeRestore": false, "title": "[Metrics etcd] Overview", "version": 1 }, - "coreMigrationVersion": "8.3.0", + "coreMigrationVersion": "8.7.0", + "created_at": "2023-11-29T11:53:37.930Z", "id": "etcd-a2f2c8fd-f016-42c8-9dc1-4e5a36038e35", "migrationVersion": { - "dashboard": "8.3.0" + "dashboard": "8.7.0" }, "references": [ { "id": "metrics-*", - "name": "3f46a2f5-0b3b-49bc-93b8-8377253d7df2:indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, - { - "id": "metrics-*", - "name": "3f46a2f5-0b3b-49bc-93b8-8377253d7df2:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", - "type": "index-pattern" - }, - { - "id": "metrics-*", - "name": "ed08e927-bee2-4c64-9055-ca8bd5ee977f:indexpattern-datasource-current-indexpattern", - "type": "index-pattern" - }, - { - "id": "metrics-*", - "name": "ed08e927-bee2-4c64-9055-ca8bd5ee977f:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", - "type": "index-pattern" - }, - { - "id": "metrics-*", - "name": "15c7a771-ddcb-493b-b4a5-67dfa247425f:indexpattern-datasource-current-indexpattern", + "name": "kibanaSavedObjectMeta.searchSourceJSON.filter[0].meta.index", "type": "index-pattern" }, { "id": "metrics-*", - "name": "15c7a771-ddcb-493b-b4a5-67dfa247425f:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "name": "b5c8b22c-6ffd-4137-aa6c-9cfe5bb6fdab:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "61eb6374-4035-4d0b-be54-547c32109847:indexpattern-datasource-current-indexpattern", + "name": "b9282ce0-a486-4231-8556-17f75e149723:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "61eb6374-4035-4d0b-be54-547c32109847:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "name": "2f265850-c5cd-4113-8c1d-976eb2469457:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "f1df951e-b730-41dd-b415-8233ac26ed36:indexpattern-datasource-current-indexpattern", + "name": "81c66cbb-0566-4f58-bbc6-e58ffab3d3c1:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "f1df951e-b730-41dd-b415-8233ac26ed36:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "name": "37146018-2dbf-4262-afb5-08f85a490bea:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "9dc7c80d-2799-4f04-8ca3-391e4b6ad287:indexpattern-datasource-current-indexpattern", + "name": "f90fef13-c6a3-4016-aab2-08e13c46e2da:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "9dc7c80d-2799-4f04-8ca3-391e4b6ad287:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "name": "f01fbbef-2da7-4deb-b736-a321cd63016c:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "14a2996f-7233-40d9-bab0-c3f85427d466:indexpattern-datasource-current-indexpattern", + "name": "50f22cf2-3027-4881-9ec2-1565f610600b:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "14a2996f-7233-40d9-bab0-c3f85427d466:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", + "name": "149bcef4-3870-4a40-82c9-06c3805e7ec4:indexpattern-datasource-layer-2b8f22ba-7b51-4f1b-bbef-f08560edf500", "type": "index-pattern" }, { "id": "metrics-*", - "name": "controlGroup_239053c0-7b28-49ec-a014-24f4fc5a5dd9:optionsListDataView", + "name": "controlGroup_6eb9e0c7-609d-437e-8cd1-a00349df37de:optionsListDataView", "type": "index-pattern" } ], diff --git a/packages/etcd/manifest.yml b/packages/etcd/manifest.yml index e510b9c6b17..44adf533a5c 100644 --- a/packages/etcd/manifest.yml +++ b/packages/etcd/manifest.yml @@ -1,15 +1,15 @@ format_version: "3.0.0" name: etcd title: etcd -version: "0.6.1" -description: Collect metrics from etcd servers with Elastic Agent. +version: "0.7.0" +description: Collect metrics from etcd instances with Elastic Agent. type: integration categories: - datastore - observability conditions: kibana: - version: "^8.3.0" + version: "^8.7.0" elastic: subscription: basic icons: @@ -22,23 +22,27 @@ screenshots: title: Metrics Overview size: 1826x750 type: image/png +vars: + - name: hosts + type: text + title: Hosts + multi: true + required: true + show_user: true + default: + - http://localhost:2379 policy_templates: - name: etcd title: etcd metrics description: Collect metrics from etcd instances inputs: - type: etcd/metrics - vars: - - name: hosts - type: text - title: Hosts - multi: true - required: true - show_user: true - default: - - http://localhost:2379 - title: Collect metrics from etcd instances - description: Collecting etcd metrics + title: Collect metrics from etcd v2 instances + description: Collecting metrics etcd v2 metrics + - type: prometheus/metrics + title: Collect metrics from etcd v3 instances + description: Collecting metrics from etcd v3 instances + input_group: metrics owner: github: elastic/obs-infraobs-integrations type: elastic