-
Notifications
You must be signed in to change notification settings - Fork 124
/
Copy pathmongodb-atlas-curl.yml
78 lines (78 loc) · 4.6 KB
/
mongodb-atlas-curl.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# MongoDB Atlas Monitoring API Documentation https://docs.atlas.mongodb.com/reference/api/monitoring-and-logs
# Special thanks to Haihong Ren for the assistance.
integrations:
# Retrieve the list of processes. Then for each process, retrieve related databases.
- name: nri-flex
config:
name: mongoAtlas
apis:
- name: MongoDbAtlasProcessList
event_type: MongoDbAtlasProcessListSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL"
strip_keys:
- links
ignore_output: true
- name: MongoDbAtlasProcess
event_type: MongoDbAtlasProcessSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL/${lookup.MongoDbAtlasProcessListSample:id}/measurements?granularity=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&period=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&pretty=true"
jq: .measurements | map(select(.dataPoints[0].value != null)) | map({(.name):.dataPoints[0].value})|add
custom_attributes:
processId: ${lookup.MongoDbAtlasProcessListSample:id}
userAlias: ${lookup.MongoDbAtlasProcessListSample:userAlias}
- name: MongoDbAtlasDatabaseList
event_type: MongoDbAtlasDatabaseListSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL/${lookup.MongoDbAtlasProcessListSample:id}/databases"
strip_keys:
- links
ignore_output: true
add_attribute:
dblink: ${lookup.MongoDbAtlasProcessListSample:id}/databases/${databaseName}
custom_attributes:
processId: ${lookup.MongoDbAtlasProcessListSample:id}
userAlias: ${lookup.MongoDbAtlasProcessListSample:userAlias}
- name: MongoDbAtlasDatabase
event_type: MongoDbAtlasDatabaseSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL/${lookup.MongoDbAtlasDatabaseListSample:dblink}/measurements?granularity=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&period=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&pretty=true"
jq: .measurements | map(select(.dataPoints[0].value != null)) | map({(.name):.dataPoints[0].value}) | add
custom_attributes:
databaseName: ${lookup.MongoDbAtlasDatabaseListSample:databaseName}
processId: ${lookup.MongoDbAtlasDatabaseListSample:processId}
userAlias: ${lookup.MongoDbAtlasDatabaseListSample:userAlias}
# To circumvent a weird "index out of range" exception, the process list needs to be retrieved again. Then for each process, retrieve related disks.
- name: nri-flex
config:
name: mongoAtlas
apis:
- name: MongoDbAtlasProcessList2
event_type: MongoDbAtlasProcessListSample2
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL"
strip_keys:
- links
ignore_output: true
- name: MongoDbAtlasDiskList
event_type: MongoDbAtlasDiskListSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL/${lookup.MongoDbAtlasProcessListSample2:id}/disks"
strip_keys:
- links
ignore_output: true
add_attribute:
disklink: ${lookup.MongoDbAtlasProcessListSample2:id}/disks/${partitionName}
custom_attributes:
processId: ${lookup.MongoDbAtlasProcessListSample2:id}
userAlias: ${lookup.MongoDbAtlasProcessListSample2:userAlias}
- name: MongoDbAtlasDisk
event_type: MongoDbAtlasDiskSample
commands:
- run: curl -s -u "$$MONGODB_ATLAS_API_PUBLIC_KEY:$$MONGODB_ATLAS_API_PRIVATE_KEY" --digest "$$MONGODB_ATLAS_BASE_URL/${lookup.MongoDbAtlasDiskListSample:disklink}/measurements?granularity=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&period=$$MONGODB_ATLAS_PERIOD_AND_GRANULARITY&pretty=true"
jq: >-
.measurements | map(select(.dataPoints[0].value != null)) | map({(.name):.dataPoints[0].value}) | add
custom_attributes:
partitionName: ${lookup.MongoDbAtlasDiskListSample:partitionName}
processId: ${lookup.MongoDbAtlasDiskListSample:processId}
userAlias: ${lookup.MongoDbAtlasDiskListSample:userAlias}