Skip to content

Commit e1bf4ff

Browse files
nammnfealebenpae
authored andcommitted
CLOUDP-298173 - add telemetry and sending to segment (#4042)
## Ticket jira: https://jira.mongodb.org/browse/CLOUDP-298172 ## Description - Following the TD: REDACTED - mms part: 10gen/mms#120058 ## Patch - fully passing [patch](https://evergreen.mongodb.com/version/67bc44f4f98ec40007296f99?redirect_spruce_users=true) ## Proof - Manual Run - send to cloud-dev - source new context: `manual_telemetry_multi_cluster` - running locally against cloud-dev ``` 2025-02-17T11:31:28.678+0100 DEBUG telemetry/client.go:85 request: POST https://cloud-dev.mongodb.com/api/private/unauth/telemetry/events response: HTTP/1.1 202 Accepted Vary: Accept-Encoding Server: mdbws X-Xgen-Up-Proto: HTTP/2 Date: Mon, 17 Feb 2025 10:31:28 GMT X-Permitted-Cross-Domain-Policies: none X-Mongodb-Service-Version: gitHash=9aa461ae9a1f8c3cd18c3457914b99306449028b; versionString=master X-Frame-Options: DENY Strict-Transport-Security: max-age=31536000; includeSubdomains; Referrer-Policy: strict-origin-when-cross-origin X-Content-Type-Options: nosniff Content-Length: 0 {"module": "Telemetry"} 2025-02-17T11:31:28.782+0100 INFO memberwatch/memberwatch.go:92 Cluster kind-e2e-cluster-2 reported healthy 2025-02-17T11:31:28.812+0100 DEBUG telemetry/collector.go:114 Collecting Clusters telemetry {"module": "Telemetry"} ``` ![image](https://github.com/user-attachments/assets/701265e9-79c4-4726-bc88-3d720f23a4b4) ## Proof - Automated Run - send to cloud-dev - running against cloud-dev - [Test](https://spruce.mongodb.com/task/ops_manager_kubernetes_e2e_operator_race_ubi_with_telemetry_e2e_om_reconcile_race_patch_f316028ac429a42806039a834ce78906b5e2c1f1_67b347574f066300076b1be0_25_02_17_14_27_36/files?execution=0&sortBy=STATUS&sortDir=ASC) - [Configmap with Data](REDACTED) - [segment](https://app.segment.com/mongodb/sources/cloud_dev_backend/schema/events) - search for "Kubernetes Operator Usage Snapshot" ## Proof - Manual Run - Sending against MMS which is not deployed yet client logs just print them as debug ``` 2025-02-17T16:09:44.680+0100 DEBUG telemetry/collector.go:128 Collecting operator events! {"module": "Telemetry"} 2025-02-17T16:09:45.713+0100 DEBUG telemetry/client.go:85 request: POST https://cloud.mongodb.com/api/private/unauth/telemetry/events response: HTTP/1.1 400 Bad Request Date: Mon, 17 Feb 2025 15:09:45 GMT Referrer-Policy: strict-origin-when-cross-origin X-Content-Type-Options: nosniff X-Mongodb-Service-Version: gitHash=5b762cbda0932584a68a48029bd99606d717b4d1; versionString=v20250205 X-Frame-Options: DENY Content-Length: 305 X-Envoy-Upstream-Service-Time: 4 Server: mdbws Strict-Transport-Security: max-age=31536000; includeSubdomains; X-Permitted-Cross-Domain-Policies: none Content-Type: application/json ``` ## Proof - Automated Run - not sending to MMS (default) - this is the default case for all tests except for one test and variant as defined in the [TD](REDACTED) - `lastSendTimestamp<Type>` will default to the `initialValue` ``` - apiVersion: v1 data: lastSendPayloadClusters: '[{"timestamp":"2025-02-19T13:13:00.993772296Z","source":"Clusters","properties":{"kubernetesAPIVersion":"v1.30.4","kubernetesClusterID":"9e086ee1-c482-4695-a232-9822fa041e7c","kubernetesFlavour":"Test Cluster"}},{"timestamp":"2025-02-19T13:13:00.993775761Z","source":"Clusters","properties":{"kubernetesAPIVersion":"v1.30.4","kubernetesClusterID":"6cb8a37d-5e90-463a-b734-111f11794eca","kubernetesFlavour":"Unknown"}},{"timestamp":"2025-02-19T13:13:00.993779379Z","source":"Clusters","properties":{"kubernetesAPIVersion":"v1.30.4","kubernetesClusterID":"53aa9828-413c-4e44-ac67-81f1380e4dcd","kubernetesFlavour":"Unknown"}},{"timestamp":"2025-02-19T13:13:00.99378209Z","source":"Clusters","properties":{"kubernetesAPIVersion":"v1.30.4","kubernetesClusterID":"832aeec0-8568-4d6d-9040-a499ab287e76","kubernetesFlavour":"Unknown"}}]' lastSendPayloadDeployments: "null" lastSendPayloadOperators: '[{"timestamp":"2025-02-19T13:13:00.976844943Z","source":"Operators","properties":{"kubernetesClusterID":"9e086ee1-c482-4695-a232-9822fa041e7c","kubernetesClusterIDs":["53aa9828-413c-4e44-ac67-81f1380e4dcd","6cb8a37d-5e90-463a-b734-111f11794eca","832aeec0-8568-4d6d-9040-a499ab287e76"],"operatorID":"c2204fa1-85d2-4b05-82ee-6986b5047c46","operatorType":"MEKO","operatorVersion":"67b5d275ae3943000721076d"}}]' lastSendTimestampClusters: initialValue lastSendTimestampDeployments: initialValue lastSendTimestampOperators: initialValue operatorUUID: c2204fa1-85d2-4b05-82ee-6986b5047c46 kind: ConfigMap ```
1 parent ad08653 commit e1bf4ff

40 files changed

+2221
-68
lines changed

.evergreen-tasks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@ tasks:
11291129
- func: e2e_test
11301130

11311131
# this test is run, with an operator with race enabled
1132-
- name: e2e_om_reconcile_race
1132+
- name: e2e_om_reconcile_race_with_telemetry
11331133
tags: [ "patch-run" ]
11341134
commands:
11351135
- func: e2e_test

.evergreen.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -720,13 +720,14 @@ task_groups:
720720
- e2e_operator_upgrade_appdb_tls
721721
<<: *teardown_group
722722

723-
# e2e_operator_race_task_group includes the tests for testing the operator with race detector enabled
724-
- name: e2e_operator_race_task_group
723+
# e2e_operator_race_with_telemetry_task_group includes the tests for testing the operator with race detector enabled
724+
# additionally, it sends telemetry to cloud-dev; more here: https://wiki.corp.mongodb.com/display/MMS/Telemetry
725+
- name: e2e_operator_race_with_telemetry_task_group
725726
max_hosts: -1
726727
<<: *setup_group_multi_cluster
727728
<<: *setup_and_teardown_task
728729
tasks:
729-
- e2e_om_reconcile_race
730+
- e2e_om_reconcile_race_with_telemetry
730731
<<: *teardown_group
731732

732733
# e2e_operator_task_group includes the tests for the specific Operator configuration/behavior. They may deal with
@@ -1253,14 +1254,14 @@ buildvariants:
12531254
- name: e2e_static_ops_manager_kind_only_task_group
12541255
- name: e2e_static_ops_manager_kind_6_0_only_task_group
12551256

1256-
- name: e2e_operator_race_ubi
1257-
display_name: e2e_operator_race_ubi
1257+
- name: e2e_operator_race_ubi_with_telemetry
1258+
display_name: e2e_operator_race_ubi_with_telemetry
12581259
tags: [ "e2e_test_suite" ]
12591260
run_on:
12601261
- ubuntu1804-xlarge
12611262
<<: *base_om7_dependency
12621263
tasks:
1263-
- name: e2e_operator_race_task_group
1264+
- name: e2e_operator_race_with_telemetry_task_group
12641265

12651266
- name: e2e_smoke
12661267
display_name: e2e_smoke

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ docker/mongodb-enterprise-operator/content/mongodb-enterprise-operator
88
docker/mongodb-enterprise-database/content/mongodb-mms-automation-agent-version.properties
99
docker/mongodb-enterprise-database/content/readinessprobe
1010
docker/mongodb-enterprise-ops-manager/scripts/mmsconfiguration
11+
docker/mongodb-enterprise-tests/public
1112

1213
my-*
1314
.vscode

api/v1/mdb/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1/om/zz_generated.deepcopy.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1/status/zz_generated.deepcopy.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1/zz_generated.deepcopy.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/manager/manager.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,20 @@ spec:
4242
value: prod
4343
- name: MDB_DEFAULT_ARCHITECTURE
4444
value: non-static
45-
- name: WATCH_NAMESPACE
45+
- name: NAMESPACE
4646
valueFrom:
4747
fieldRef:
4848
fieldPath: metadata.namespace
49-
- name: NAMESPACE
49+
- name: WATCH_NAMESPACE
5050
valueFrom:
5151
fieldRef:
5252
fieldPath: metadata.namespace
5353
- name: MANAGED_SECURITY_CONTEXT
5454
value: 'true'
55+
- name: MDB_OPERATOR_TELEMETRY_SEND_FREQUENCY
56+
value: "168h"
57+
- name: MDB_OPERATOR_TELEMETRY_COLLECTION_FREQUENCY
58+
value: "1h"
5559
- name: CLUSTER_CLIENT_TIMEOUT
5660
value: "10"
5761
- name: IMAGE_PULL_POLICY

config/rbac/operator-roles.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,50 @@
11
---
22
# Source: enterprise-operator/templates/operator-roles.yaml
3+
---
4+
# Additional ClusterRole for clusterVersionDetection
5+
kind: ClusterRole
6+
apiVersion: rbac.authorization.k8s.io/v1
7+
metadata:
8+
name: mongodb-enterprise-operator-cluster-telemetry
9+
rules:
10+
11+
# Non-resource URL permissions
12+
- nonResourceURLs:
13+
- "/version"
14+
verbs:
15+
- get
16+
# Cluster-scoped resource permissions
17+
- apiGroups:
18+
- ''
19+
resources:
20+
- namespaces
21+
resourceNames:
22+
- kube-system
23+
verbs:
24+
- get
25+
- apiGroups:
26+
- ''
27+
resources:
28+
- nodes
29+
verbs:
30+
- list
31+
---
32+
# Source: enterprise-operator/templates/operator-roles.yaml
33+
# ClusterRoleBinding for clusterVersionDetection
34+
kind: ClusterRoleBinding
35+
apiVersion: rbac.authorization.k8s.io/v1
36+
metadata:
37+
name: mongodb-enterprise-operator-mongodb-cluster-telemetry-binding
38+
roleRef:
39+
apiGroup: rbac.authorization.k8s.io
40+
kind: ClusterRole
41+
name: mongodb-enterprise-operator-cluster-telemetry
42+
subjects:
43+
- kind: ServiceAccount
44+
name: mongodb-enterprise-operator
45+
namespace: mongodb
46+
---
47+
# Source: enterprise-operator/templates/operator-roles.yaml
348
kind: Role
449
apiVersion: rbac.authorization.k8s.io/v1
550
metadata:

docker/mongodb-enterprise-tests/kubetester/helm.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,11 @@ def process_run_and_check(args, **kwargs):
125125
except subprocess.CalledProcessError as exc:
126126
if exc.stdout is not None:
127127
stdout = exc.stdout.decode("utf-8")
128-
logger.info(stdout)
128+
logger.error(f"stdout: {stdout}")
129129
if exc.stderr is not None:
130130
stderr = exc.stderr.decode("utf-8")
131-
logger.info(stderr)
132-
logger.info(exc.output)
131+
logger.error(f"stderr: {stderr}")
132+
logger.error(f"output: {exc.output}")
133133
raise
134134

135135

0 commit comments

Comments
 (0)