cribl-control-plane 0.0.13__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of cribl-control-plane might be problematic. Click here for more details.
- cribl_control_plane/__init__.py +17 -0
- cribl_control_plane/_hooks/__init__.py +5 -0
- cribl_control_plane/_hooks/clientcredentials.py +211 -0
- cribl_control_plane/_hooks/registration.py +13 -0
- cribl_control_plane/_hooks/sdkhooks.py +81 -0
- cribl_control_plane/_hooks/types.py +112 -0
- cribl_control_plane/_version.py +15 -0
- cribl_control_plane/auth_sdk.py +184 -0
- cribl_control_plane/basesdk.py +358 -0
- cribl_control_plane/errors/__init__.py +60 -0
- cribl_control_plane/errors/apierror.py +38 -0
- cribl_control_plane/errors/criblcontrolplaneerror.py +26 -0
- cribl_control_plane/errors/error.py +24 -0
- cribl_control_plane/errors/healthstatus_error.py +38 -0
- cribl_control_plane/errors/no_response_error.py +13 -0
- cribl_control_plane/errors/responsevalidationerror.py +25 -0
- cribl_control_plane/health.py +166 -0
- cribl_control_plane/httpclient.py +126 -0
- cribl_control_plane/models/__init__.py +7305 -0
- cribl_control_plane/models/addhectokenrequest.py +34 -0
- cribl_control_plane/models/authtoken.py +13 -0
- cribl_control_plane/models/createinputhectokenbyidop.py +45 -0
- cribl_control_plane/models/createinputop.py +24 -0
- cribl_control_plane/models/createoutputop.py +24 -0
- cribl_control_plane/models/createoutputtestbyidop.py +46 -0
- cribl_control_plane/models/criblevent.py +14 -0
- cribl_control_plane/models/deleteinputbyidop.py +37 -0
- cribl_control_plane/models/deleteoutputbyidop.py +37 -0
- cribl_control_plane/models/deleteoutputpqbyidop.py +36 -0
- cribl_control_plane/models/getinputbyidop.py +37 -0
- cribl_control_plane/models/getoutputbyidop.py +37 -0
- cribl_control_plane/models/getoutputpqbyidop.py +36 -0
- cribl_control_plane/models/getoutputsamplesbyidop.py +37 -0
- cribl_control_plane/models/healthstatus.py +36 -0
- cribl_control_plane/models/input.py +199 -0
- cribl_control_plane/models/inputappscope.py +448 -0
- cribl_control_plane/models/inputazureblob.py +308 -0
- cribl_control_plane/models/inputcollection.py +208 -0
- cribl_control_plane/models/inputconfluentcloud.py +585 -0
- cribl_control_plane/models/inputcribl.py +165 -0
- cribl_control_plane/models/inputcriblhttp.py +341 -0
- cribl_control_plane/models/inputcribllakehttp.py +342 -0
- cribl_control_plane/models/inputcriblmetrics.py +175 -0
- cribl_control_plane/models/inputcribltcp.py +299 -0
- cribl_control_plane/models/inputcrowdstrike.py +410 -0
- cribl_control_plane/models/inputdatadogagent.py +364 -0
- cribl_control_plane/models/inputdatagen.py +180 -0
- cribl_control_plane/models/inputedgeprometheus.py +551 -0
- cribl_control_plane/models/inputelastic.py +494 -0
- cribl_control_plane/models/inputeventhub.py +360 -0
- cribl_control_plane/models/inputexec.py +213 -0
- cribl_control_plane/models/inputfile.py +259 -0
- cribl_control_plane/models/inputfirehose.py +341 -0
- cribl_control_plane/models/inputgooglepubsub.py +247 -0
- cribl_control_plane/models/inputgrafana_union.py +1247 -0
- cribl_control_plane/models/inputhttp.py +403 -0
- cribl_control_plane/models/inputhttpraw.py +407 -0
- cribl_control_plane/models/inputjournalfiles.py +208 -0
- cribl_control_plane/models/inputkafka.py +581 -0
- cribl_control_plane/models/inputkinesis.py +363 -0
- cribl_control_plane/models/inputkubeevents.py +182 -0
- cribl_control_plane/models/inputkubelogs.py +256 -0
- cribl_control_plane/models/inputkubemetrics.py +233 -0
- cribl_control_plane/models/inputloki.py +468 -0
- cribl_control_plane/models/inputmetrics.py +290 -0
- cribl_control_plane/models/inputmodeldriventelemetry.py +274 -0
- cribl_control_plane/models/inputmsk.py +654 -0
- cribl_control_plane/models/inputnetflow.py +224 -0
- cribl_control_plane/models/inputoffice365mgmt.py +384 -0
- cribl_control_plane/models/inputoffice365msgtrace.py +449 -0
- cribl_control_plane/models/inputoffice365service.py +377 -0
- cribl_control_plane/models/inputopentelemetry.py +516 -0
- cribl_control_plane/models/inputprometheus.py +464 -0
- cribl_control_plane/models/inputprometheusrw.py +470 -0
- cribl_control_plane/models/inputrawudp.py +207 -0
- cribl_control_plane/models/inputs3.py +416 -0
- cribl_control_plane/models/inputs3inventory.py +440 -0
- cribl_control_plane/models/inputsecuritylake.py +425 -0
- cribl_control_plane/models/inputsnmp.py +274 -0
- cribl_control_plane/models/inputsplunk.py +387 -0
- cribl_control_plane/models/inputsplunkhec.py +478 -0
- cribl_control_plane/models/inputsplunksearch.py +537 -0
- cribl_control_plane/models/inputsqs.py +320 -0
- cribl_control_plane/models/inputsyslog_union.py +759 -0
- cribl_control_plane/models/inputsystemmetrics.py +533 -0
- cribl_control_plane/models/inputsystemstate.py +417 -0
- cribl_control_plane/models/inputtcp.py +359 -0
- cribl_control_plane/models/inputtcpjson.py +334 -0
- cribl_control_plane/models/inputwef.py +498 -0
- cribl_control_plane/models/inputwindowsmetrics.py +457 -0
- cribl_control_plane/models/inputwineventlogs.py +222 -0
- cribl_control_plane/models/inputwiz.py +334 -0
- cribl_control_plane/models/inputzscalerhec.py +439 -0
- cribl_control_plane/models/listinputop.py +24 -0
- cribl_control_plane/models/listoutputop.py +24 -0
- cribl_control_plane/models/logininfo.py +16 -0
- cribl_control_plane/models/output.py +229 -0
- cribl_control_plane/models/outputazureblob.py +471 -0
- cribl_control_plane/models/outputazuredataexplorer.py +660 -0
- cribl_control_plane/models/outputazureeventhub.py +321 -0
- cribl_control_plane/models/outputazurelogs.py +386 -0
- cribl_control_plane/models/outputclickhouse.py +650 -0
- cribl_control_plane/models/outputcloudwatch.py +273 -0
- cribl_control_plane/models/outputconfluentcloud.py +591 -0
- cribl_control_plane/models/outputcriblhttp.py +494 -0
- cribl_control_plane/models/outputcribllake.py +396 -0
- cribl_control_plane/models/outputcribltcp.py +387 -0
- cribl_control_plane/models/outputcrowdstrikenextgensiem.py +410 -0
- cribl_control_plane/models/outputdatadog.py +472 -0
- cribl_control_plane/models/outputdataset.py +437 -0
- cribl_control_plane/models/outputdefault.py +55 -0
- cribl_control_plane/models/outputdevnull.py +50 -0
- cribl_control_plane/models/outputdiskspool.py +89 -0
- cribl_control_plane/models/outputdls3.py +560 -0
- cribl_control_plane/models/outputdynatracehttp.py +454 -0
- cribl_control_plane/models/outputdynatraceotlp.py +486 -0
- cribl_control_plane/models/outputelastic.py +494 -0
- cribl_control_plane/models/outputelasticcloud.py +407 -0
- cribl_control_plane/models/outputexabeam.py +297 -0
- cribl_control_plane/models/outputfilesystem.py +357 -0
- cribl_control_plane/models/outputgooglechronicle.py +486 -0
- cribl_control_plane/models/outputgooglecloudlogging.py +557 -0
- cribl_control_plane/models/outputgooglecloudstorage.py +499 -0
- cribl_control_plane/models/outputgooglepubsub.py +274 -0
- cribl_control_plane/models/outputgrafanacloud_union.py +1024 -0
- cribl_control_plane/models/outputgraphite.py +225 -0
- cribl_control_plane/models/outputhoneycomb.py +369 -0
- cribl_control_plane/models/outputhumiohec.py +389 -0
- cribl_control_plane/models/outputinfluxdb.py +523 -0
- cribl_control_plane/models/outputkafka.py +581 -0
- cribl_control_plane/models/outputkinesis.py +312 -0
- cribl_control_plane/models/outputloki.py +425 -0
- cribl_control_plane/models/outputminio.py +512 -0
- cribl_control_plane/models/outputmsk.py +654 -0
- cribl_control_plane/models/outputnetflow.py +80 -0
- cribl_control_plane/models/outputnewrelic.py +424 -0
- cribl_control_plane/models/outputnewrelicevents.py +401 -0
- cribl_control_plane/models/outputopentelemetry.py +669 -0
- cribl_control_plane/models/outputprometheus.py +485 -0
- cribl_control_plane/models/outputring.py +121 -0
- cribl_control_plane/models/outputrouter.py +83 -0
- cribl_control_plane/models/outputs3.py +556 -0
- cribl_control_plane/models/outputsamplesresponse.py +14 -0
- cribl_control_plane/models/outputsecuritylake.py +505 -0
- cribl_control_plane/models/outputsentinel.py +488 -0
- cribl_control_plane/models/outputsentineloneaisiem.py +505 -0
- cribl_control_plane/models/outputservicenow.py +543 -0
- cribl_control_plane/models/outputsignalfx.py +369 -0
- cribl_control_plane/models/outputsnmp.py +80 -0
- cribl_control_plane/models/outputsns.py +274 -0
- cribl_control_plane/models/outputsplunk.py +383 -0
- cribl_control_plane/models/outputsplunkhec.py +434 -0
- cribl_control_plane/models/outputsplunklb.py +558 -0
- cribl_control_plane/models/outputsqs.py +328 -0
- cribl_control_plane/models/outputstatsd.py +224 -0
- cribl_control_plane/models/outputstatsdext.py +225 -0
- cribl_control_plane/models/outputsumologic.py +378 -0
- cribl_control_plane/models/outputsyslog.py +415 -0
- cribl_control_plane/models/outputtcpjson.py +413 -0
- cribl_control_plane/models/outputtestrequest.py +15 -0
- cribl_control_plane/models/outputtestresponse.py +29 -0
- cribl_control_plane/models/outputwavefront.py +369 -0
- cribl_control_plane/models/outputwebhook.py +689 -0
- cribl_control_plane/models/outputxsiam.py +415 -0
- cribl_control_plane/models/schemeclientoauth.py +24 -0
- cribl_control_plane/models/security.py +36 -0
- cribl_control_plane/models/updatehectokenrequest.py +31 -0
- cribl_control_plane/models/updateinputbyidop.py +44 -0
- cribl_control_plane/models/updateinputhectokenbyidandtokenop.py +52 -0
- cribl_control_plane/models/updateoutputbyidop.py +44 -0
- cribl_control_plane/outputs.py +1615 -0
- cribl_control_plane/py.typed +1 -0
- cribl_control_plane/sdk.py +164 -0
- cribl_control_plane/sdkconfiguration.py +36 -0
- cribl_control_plane/sources.py +1355 -0
- cribl_control_plane/types/__init__.py +21 -0
- cribl_control_plane/types/basemodel.py +39 -0
- cribl_control_plane/utils/__init__.py +187 -0
- cribl_control_plane/utils/annotations.py +55 -0
- cribl_control_plane/utils/datetimes.py +23 -0
- cribl_control_plane/utils/enums.py +74 -0
- cribl_control_plane/utils/eventstreaming.py +238 -0
- cribl_control_plane/utils/forms.py +223 -0
- cribl_control_plane/utils/headers.py +136 -0
- cribl_control_plane/utils/logger.py +27 -0
- cribl_control_plane/utils/metadata.py +118 -0
- cribl_control_plane/utils/queryparams.py +205 -0
- cribl_control_plane/utils/requestbodies.py +66 -0
- cribl_control_plane/utils/retries.py +217 -0
- cribl_control_plane/utils/security.py +207 -0
- cribl_control_plane/utils/serializers.py +249 -0
- cribl_control_plane/utils/unmarshal_json_response.py +24 -0
- cribl_control_plane/utils/url.py +155 -0
- cribl_control_plane/utils/values.py +137 -0
- cribl_control_plane-0.0.13.dist-info/METADATA +489 -0
- cribl_control_plane-0.0.13.dist-info/RECORD +197 -0
- cribl_control_plane-0.0.13.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
from cribl_control_plane import utils
|
|
5
|
+
from cribl_control_plane.types import BaseModel
|
|
6
|
+
from cribl_control_plane.utils import validate_open_enum
|
|
7
|
+
from enum import Enum
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic.functional_validators import PlainValidator
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class InputEdgePrometheusType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
15
|
+
EDGE_PROMETHEUS = "edge_prometheus"
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class InputEdgePrometheusConnectionTypedDict(TypedDict):
|
|
19
|
+
output: str
|
|
20
|
+
pipeline: NotRequired[str]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class InputEdgePrometheusConnection(BaseModel):
|
|
24
|
+
output: str
|
|
25
|
+
|
|
26
|
+
pipeline: Optional[str] = None
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class InputEdgePrometheusMode(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
30
|
+
r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
|
|
31
|
+
|
|
32
|
+
SMART = "smart"
|
|
33
|
+
ALWAYS = "always"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class InputEdgePrometheusPqCompression(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
37
|
+
r"""Codec to use to compress the persisted data"""
|
|
38
|
+
|
|
39
|
+
NONE = "none"
|
|
40
|
+
GZIP = "gzip"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class InputEdgePrometheusPqTypedDict(TypedDict):
|
|
44
|
+
mode: NotRequired[InputEdgePrometheusMode]
|
|
45
|
+
r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
|
|
46
|
+
max_buffer_size: NotRequired[float]
|
|
47
|
+
r"""The maximum number of events to hold in memory before writing the events to disk"""
|
|
48
|
+
commit_frequency: NotRequired[float]
|
|
49
|
+
r"""The number of events to send downstream before committing that Stream has read them"""
|
|
50
|
+
max_file_size: NotRequired[str]
|
|
51
|
+
r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
|
|
52
|
+
max_size: NotRequired[str]
|
|
53
|
+
r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
|
|
54
|
+
path: NotRequired[str]
|
|
55
|
+
r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
|
|
56
|
+
compress: NotRequired[InputEdgePrometheusPqCompression]
|
|
57
|
+
r"""Codec to use to compress the persisted data"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class InputEdgePrometheusPq(BaseModel):
|
|
61
|
+
mode: Annotated[
|
|
62
|
+
Optional[InputEdgePrometheusMode], PlainValidator(validate_open_enum(False))
|
|
63
|
+
] = InputEdgePrometheusMode.ALWAYS
|
|
64
|
+
r"""With Smart mode, PQ will write events to the filesystem only when it detects backpressure from the processing engine. With Always On mode, PQ will always write events directly to the queue before forwarding them to the processing engine."""
|
|
65
|
+
|
|
66
|
+
max_buffer_size: Annotated[
|
|
67
|
+
Optional[float], pydantic.Field(alias="maxBufferSize")
|
|
68
|
+
] = 1000
|
|
69
|
+
r"""The maximum number of events to hold in memory before writing the events to disk"""
|
|
70
|
+
|
|
71
|
+
commit_frequency: Annotated[
|
|
72
|
+
Optional[float], pydantic.Field(alias="commitFrequency")
|
|
73
|
+
] = 42
|
|
74
|
+
r"""The number of events to send downstream before committing that Stream has read them"""
|
|
75
|
+
|
|
76
|
+
max_file_size: Annotated[Optional[str], pydantic.Field(alias="maxFileSize")] = (
|
|
77
|
+
"1 MB"
|
|
78
|
+
)
|
|
79
|
+
r"""The maximum size to store in each queue file before closing and optionally compressing. Enter a numeral with units of KB, MB, etc."""
|
|
80
|
+
|
|
81
|
+
max_size: Annotated[Optional[str], pydantic.Field(alias="maxSize")] = "5GB"
|
|
82
|
+
r"""The maximum disk space that the queue can consume (as an average per Worker Process) before queueing stops. Enter a numeral with units of KB, MB, etc."""
|
|
83
|
+
|
|
84
|
+
path: Optional[str] = "$CRIBL_HOME/state/queues"
|
|
85
|
+
r"""The location for the persistent queue files. To this field's value, the system will append: /<worker-id>/inputs/<input-id>"""
|
|
86
|
+
|
|
87
|
+
compress: Annotated[
|
|
88
|
+
Optional[InputEdgePrometheusPqCompression],
|
|
89
|
+
PlainValidator(validate_open_enum(False)),
|
|
90
|
+
] = InputEdgePrometheusPqCompression.NONE
|
|
91
|
+
r"""Codec to use to compress the persisted data"""
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class InputEdgePrometheusDiscoveryType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
95
|
+
r"""Target discovery mechanism. Use static to manually enter a list of targets."""
|
|
96
|
+
|
|
97
|
+
STATIC = "static"
|
|
98
|
+
DNS = "dns"
|
|
99
|
+
EC2 = "ec2"
|
|
100
|
+
K8S_NODE = "k8s-node"
|
|
101
|
+
K8S_PODS = "k8s-pods"
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class InputEdgePrometheusPersistenceCompression(
|
|
105
|
+
str, Enum, metaclass=utils.OpenEnumMeta
|
|
106
|
+
):
|
|
107
|
+
r"""Data compression format. Default is gzip."""
|
|
108
|
+
|
|
109
|
+
NONE = "none"
|
|
110
|
+
GZIP = "gzip"
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class InputEdgePrometheusDiskSpoolingTypedDict(TypedDict):
|
|
114
|
+
enable: NotRequired[bool]
|
|
115
|
+
r"""Spool events on disk for Cribl Edge and Search. Default is disabled."""
|
|
116
|
+
time_window: NotRequired[str]
|
|
117
|
+
r"""Time period for grouping spooled events. Default is 10m."""
|
|
118
|
+
max_data_size: NotRequired[str]
|
|
119
|
+
r"""Maximum disk space that can be consumed before older buckets are deleted. Examples: 420MB, 4GB. Default is 1GB."""
|
|
120
|
+
max_data_time: NotRequired[str]
|
|
121
|
+
r"""Maximum amount of time to retain data before older buckets are deleted. Examples: 2h, 4d. Default is 24h."""
|
|
122
|
+
compress: NotRequired[InputEdgePrometheusPersistenceCompression]
|
|
123
|
+
r"""Data compression format. Default is gzip."""
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
class InputEdgePrometheusDiskSpooling(BaseModel):
|
|
127
|
+
enable: Optional[bool] = False
|
|
128
|
+
r"""Spool events on disk for Cribl Edge and Search. Default is disabled."""
|
|
129
|
+
|
|
130
|
+
time_window: Annotated[Optional[str], pydantic.Field(alias="timeWindow")] = "10m"
|
|
131
|
+
r"""Time period for grouping spooled events. Default is 10m."""
|
|
132
|
+
|
|
133
|
+
max_data_size: Annotated[Optional[str], pydantic.Field(alias="maxDataSize")] = "1GB"
|
|
134
|
+
r"""Maximum disk space that can be consumed before older buckets are deleted. Examples: 420MB, 4GB. Default is 1GB."""
|
|
135
|
+
|
|
136
|
+
max_data_time: Annotated[Optional[str], pydantic.Field(alias="maxDataTime")] = "24h"
|
|
137
|
+
r"""Maximum amount of time to retain data before older buckets are deleted. Examples: 2h, 4d. Default is 24h."""
|
|
138
|
+
|
|
139
|
+
compress: Annotated[
|
|
140
|
+
Optional[InputEdgePrometheusPersistenceCompression],
|
|
141
|
+
PlainValidator(validate_open_enum(False)),
|
|
142
|
+
] = InputEdgePrometheusPersistenceCompression.GZIP
|
|
143
|
+
r"""Data compression format. Default is gzip."""
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class InputEdgePrometheusMetadatumTypedDict(TypedDict):
|
|
147
|
+
name: str
|
|
148
|
+
value: str
|
|
149
|
+
r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
class InputEdgePrometheusMetadatum(BaseModel):
|
|
153
|
+
name: str
|
|
154
|
+
|
|
155
|
+
value: str
|
|
156
|
+
r"""JavaScript expression to compute field's value, enclosed in quotes or backticks. (Can evaluate to a constant.)"""
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
class InputEdgePrometheusAuthTypeAuthenticationMethod(
|
|
160
|
+
str, Enum, metaclass=utils.OpenEnumMeta
|
|
161
|
+
):
|
|
162
|
+
r"""Enter credentials directly, or select a stored secret"""
|
|
163
|
+
|
|
164
|
+
MANUAL = "manual"
|
|
165
|
+
SECRET = "secret"
|
|
166
|
+
KUBERNETES = "kubernetes"
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
class TargetProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
170
|
+
r"""Protocol to use when collecting metrics"""
|
|
171
|
+
|
|
172
|
+
HTTP = "http"
|
|
173
|
+
HTTPS = "https"
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class TargetTypedDict(TypedDict):
|
|
177
|
+
host: str
|
|
178
|
+
r"""Name of host from which to pull metrics."""
|
|
179
|
+
protocol: NotRequired[TargetProtocol]
|
|
180
|
+
r"""Protocol to use when collecting metrics"""
|
|
181
|
+
port: NotRequired[float]
|
|
182
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
183
|
+
path: NotRequired[str]
|
|
184
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
class Target(BaseModel):
|
|
188
|
+
host: str
|
|
189
|
+
r"""Name of host from which to pull metrics."""
|
|
190
|
+
|
|
191
|
+
protocol: Annotated[
|
|
192
|
+
Optional[TargetProtocol], PlainValidator(validate_open_enum(False))
|
|
193
|
+
] = TargetProtocol.HTTP
|
|
194
|
+
r"""Protocol to use when collecting metrics"""
|
|
195
|
+
|
|
196
|
+
port: Optional[float] = 9090
|
|
197
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
198
|
+
|
|
199
|
+
path: Optional[str] = "/metrics"
|
|
200
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
class InputEdgePrometheusRecordType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
204
|
+
r"""DNS Record type to resolve"""
|
|
205
|
+
|
|
206
|
+
SRV = "SRV"
|
|
207
|
+
A = "A"
|
|
208
|
+
AAAA = "AAAA"
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class ScrapeProtocolProtocol(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
212
|
+
r"""Protocol to use when collecting metrics"""
|
|
213
|
+
|
|
214
|
+
HTTP = "http"
|
|
215
|
+
HTTPS = "https"
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
class InputEdgePrometheusSearchFilterTypedDict(TypedDict):
|
|
219
|
+
name: str
|
|
220
|
+
r"""Search filter attribute name, see: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html for more information. Attributes can be manually entered if not present in the drop down list"""
|
|
221
|
+
values: List[str]
|
|
222
|
+
r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
class InputEdgePrometheusSearchFilter(BaseModel):
|
|
226
|
+
name: Annotated[str, pydantic.Field(alias="Name")]
|
|
227
|
+
r"""Search filter attribute name, see: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html for more information. Attributes can be manually entered if not present in the drop down list"""
|
|
228
|
+
|
|
229
|
+
values: Annotated[List[str], pydantic.Field(alias="Values")]
|
|
230
|
+
r"""Search Filter Values, if empty only \"running\" EC2 instances will be returned"""
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod(
|
|
234
|
+
str, Enum, metaclass=utils.OpenEnumMeta
|
|
235
|
+
):
|
|
236
|
+
r"""AWS authentication method. Choose Auto to use IAM roles."""
|
|
237
|
+
|
|
238
|
+
AUTO = "auto"
|
|
239
|
+
MANUAL = "manual"
|
|
240
|
+
SECRET = "secret"
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class InputEdgePrometheusSignatureVersion(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
244
|
+
r"""Signature version to use for signing EC2 requests"""
|
|
245
|
+
|
|
246
|
+
V2 = "v2"
|
|
247
|
+
V4 = "v4"
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
class PodFilterTypedDict(TypedDict):
|
|
251
|
+
filter_: str
|
|
252
|
+
r"""JavaScript expression applied to pods objects. Return 'true' to include it."""
|
|
253
|
+
description: NotRequired[str]
|
|
254
|
+
r"""Optional description of this rule's purpose"""
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
class PodFilter(BaseModel):
|
|
258
|
+
filter_: Annotated[str, pydantic.Field(alias="filter")]
|
|
259
|
+
r"""JavaScript expression applied to pods objects. Return 'true' to include it."""
|
|
260
|
+
|
|
261
|
+
description: Optional[str] = None
|
|
262
|
+
r"""Optional description of this rule's purpose"""
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
class InputEdgePrometheusTypedDict(TypedDict):
|
|
266
|
+
type: InputEdgePrometheusType
|
|
267
|
+
id: NotRequired[str]
|
|
268
|
+
r"""Unique ID for this input"""
|
|
269
|
+
disabled: NotRequired[bool]
|
|
270
|
+
pipeline: NotRequired[str]
|
|
271
|
+
r"""Pipeline to process data from this Source before sending it through the Routes"""
|
|
272
|
+
send_to_routes: NotRequired[bool]
|
|
273
|
+
r"""Select whether to send data to Routes, or directly to Destinations."""
|
|
274
|
+
environment: NotRequired[str]
|
|
275
|
+
r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
|
|
276
|
+
pq_enabled: NotRequired[bool]
|
|
277
|
+
r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
|
|
278
|
+
streamtags: NotRequired[List[str]]
|
|
279
|
+
r"""Tags for filtering and grouping in @{product}"""
|
|
280
|
+
connections: NotRequired[List[InputEdgePrometheusConnectionTypedDict]]
|
|
281
|
+
r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
|
|
282
|
+
pq: NotRequired[InputEdgePrometheusPqTypedDict]
|
|
283
|
+
dimension_list: NotRequired[List[str]]
|
|
284
|
+
r"""Other dimensions to include in events"""
|
|
285
|
+
discovery_type: NotRequired[InputEdgePrometheusDiscoveryType]
|
|
286
|
+
r"""Target discovery mechanism. Use static to manually enter a list of targets."""
|
|
287
|
+
interval: NotRequired[float]
|
|
288
|
+
r"""How often in seconds to scrape targets for metrics."""
|
|
289
|
+
timeout: NotRequired[float]
|
|
290
|
+
r"""Timeout, in milliseconds, before aborting HTTP connection attempts; 1-60000 or 0 to disable"""
|
|
291
|
+
persistence: NotRequired[InputEdgePrometheusDiskSpoolingTypedDict]
|
|
292
|
+
metadata: NotRequired[List[InputEdgePrometheusMetadatumTypedDict]]
|
|
293
|
+
r"""Fields to add to events from this input"""
|
|
294
|
+
auth_type: NotRequired[InputEdgePrometheusAuthTypeAuthenticationMethod]
|
|
295
|
+
r"""Enter credentials directly, or select a stored secret"""
|
|
296
|
+
description: NotRequired[str]
|
|
297
|
+
targets: NotRequired[List[TargetTypedDict]]
|
|
298
|
+
name_list: NotRequired[List[str]]
|
|
299
|
+
r"""List of DNS names to resolve"""
|
|
300
|
+
record_type: NotRequired[InputEdgePrometheusRecordType]
|
|
301
|
+
r"""DNS Record type to resolve"""
|
|
302
|
+
scrape_protocol: NotRequired[ScrapeProtocolProtocol]
|
|
303
|
+
r"""Protocol to use when collecting metrics"""
|
|
304
|
+
scrape_path: NotRequired[str]
|
|
305
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
306
|
+
use_public_ip: NotRequired[bool]
|
|
307
|
+
r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
|
|
308
|
+
scrape_port: NotRequired[float]
|
|
309
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
310
|
+
search_filter: NotRequired[List[InputEdgePrometheusSearchFilterTypedDict]]
|
|
311
|
+
r"""EC2 Instance Search Filter"""
|
|
312
|
+
aws_authentication_method: NotRequired[
|
|
313
|
+
InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod
|
|
314
|
+
]
|
|
315
|
+
r"""AWS authentication method. Choose Auto to use IAM roles."""
|
|
316
|
+
aws_secret_key: NotRequired[str]
|
|
317
|
+
region: NotRequired[str]
|
|
318
|
+
r"""Region where the EC2 is located"""
|
|
319
|
+
endpoint: NotRequired[str]
|
|
320
|
+
r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
|
|
321
|
+
signature_version: NotRequired[InputEdgePrometheusSignatureVersion]
|
|
322
|
+
r"""Signature version to use for signing EC2 requests"""
|
|
323
|
+
reuse_connections: NotRequired[bool]
|
|
324
|
+
r"""Reuse connections between requests, which can improve performance"""
|
|
325
|
+
reject_unauthorized: NotRequired[bool]
|
|
326
|
+
r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
|
|
327
|
+
enable_assume_role: NotRequired[bool]
|
|
328
|
+
r"""Use Assume Role credentials to access EC2"""
|
|
329
|
+
assume_role_arn: NotRequired[str]
|
|
330
|
+
r"""Amazon Resource Name (ARN) of the role to assume"""
|
|
331
|
+
assume_role_external_id: NotRequired[str]
|
|
332
|
+
r"""External ID to use when assuming role"""
|
|
333
|
+
duration_seconds: NotRequired[float]
|
|
334
|
+
r"""Duration of the assumed role's session, in seconds. Minimum is 900 (15 minutes), default is 3600 (1 hour), and maximum is 43200 (12 hours)."""
|
|
335
|
+
scrape_protocol_expr: NotRequired[str]
|
|
336
|
+
r"""Protocol to use when collecting metrics"""
|
|
337
|
+
scrape_port_expr: NotRequired[str]
|
|
338
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
339
|
+
scrape_path_expr: NotRequired[str]
|
|
340
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
341
|
+
pod_filter: NotRequired[List[PodFilterTypedDict]]
|
|
342
|
+
r"""Add rules to decide which pods to discover for metrics.
|
|
343
|
+
Pods are searched if no rules are given or of all the rules'
|
|
344
|
+
expressions evaluate to true.
|
|
345
|
+
|
|
346
|
+
"""
|
|
347
|
+
username: NotRequired[str]
|
|
348
|
+
r"""Username for Prometheus Basic authentication"""
|
|
349
|
+
password: NotRequired[str]
|
|
350
|
+
r"""Password for Prometheus Basic authentication"""
|
|
351
|
+
credentials_secret: NotRequired[str]
|
|
352
|
+
r"""Select or create a secret that references your credentials"""
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
class InputEdgePrometheus(BaseModel):
|
|
356
|
+
type: Annotated[InputEdgePrometheusType, PlainValidator(validate_open_enum(False))]
|
|
357
|
+
|
|
358
|
+
id: Optional[str] = None
|
|
359
|
+
r"""Unique ID for this input"""
|
|
360
|
+
|
|
361
|
+
disabled: Optional[bool] = False
|
|
362
|
+
|
|
363
|
+
pipeline: Optional[str] = None
|
|
364
|
+
r"""Pipeline to process data from this Source before sending it through the Routes"""
|
|
365
|
+
|
|
366
|
+
send_to_routes: Annotated[Optional[bool], pydantic.Field(alias="sendToRoutes")] = (
|
|
367
|
+
True
|
|
368
|
+
)
|
|
369
|
+
r"""Select whether to send data to Routes, or directly to Destinations."""
|
|
370
|
+
|
|
371
|
+
environment: Optional[str] = None
|
|
372
|
+
r"""Optionally, enable this config only on a specified Git branch. If empty, will be enabled everywhere."""
|
|
373
|
+
|
|
374
|
+
pq_enabled: Annotated[Optional[bool], pydantic.Field(alias="pqEnabled")] = False
|
|
375
|
+
r"""Use a disk queue to minimize data loss when connected services block. See [Cribl Docs](https://docs.cribl.io/stream/persistent-queues) for PQ defaults (Cribl-managed Cloud Workers) and configuration options (on-prem and hybrid Workers)."""
|
|
376
|
+
|
|
377
|
+
streamtags: Optional[List[str]] = None
|
|
378
|
+
r"""Tags for filtering and grouping in @{product}"""
|
|
379
|
+
|
|
380
|
+
connections: Optional[List[InputEdgePrometheusConnection]] = None
|
|
381
|
+
r"""Direct connections to Destinations, and optionally via a Pipeline or a Pack"""
|
|
382
|
+
|
|
383
|
+
pq: Optional[InputEdgePrometheusPq] = None
|
|
384
|
+
|
|
385
|
+
dimension_list: Annotated[
|
|
386
|
+
Optional[List[str]], pydantic.Field(alias="dimensionList")
|
|
387
|
+
] = None
|
|
388
|
+
r"""Other dimensions to include in events"""
|
|
389
|
+
|
|
390
|
+
discovery_type: Annotated[
|
|
391
|
+
Annotated[
|
|
392
|
+
Optional[InputEdgePrometheusDiscoveryType],
|
|
393
|
+
PlainValidator(validate_open_enum(False)),
|
|
394
|
+
],
|
|
395
|
+
pydantic.Field(alias="discoveryType"),
|
|
396
|
+
] = InputEdgePrometheusDiscoveryType.STATIC
|
|
397
|
+
r"""Target discovery mechanism. Use static to manually enter a list of targets."""
|
|
398
|
+
|
|
399
|
+
interval: Optional[float] = 15
|
|
400
|
+
r"""How often in seconds to scrape targets for metrics."""
|
|
401
|
+
|
|
402
|
+
timeout: Optional[float] = 5000
|
|
403
|
+
r"""Timeout, in milliseconds, before aborting HTTP connection attempts; 1-60000 or 0 to disable"""
|
|
404
|
+
|
|
405
|
+
persistence: Optional[InputEdgePrometheusDiskSpooling] = None
|
|
406
|
+
|
|
407
|
+
metadata: Optional[List[InputEdgePrometheusMetadatum]] = None
|
|
408
|
+
r"""Fields to add to events from this input"""
|
|
409
|
+
|
|
410
|
+
auth_type: Annotated[
|
|
411
|
+
Annotated[
|
|
412
|
+
Optional[InputEdgePrometheusAuthTypeAuthenticationMethod],
|
|
413
|
+
PlainValidator(validate_open_enum(False)),
|
|
414
|
+
],
|
|
415
|
+
pydantic.Field(alias="authType"),
|
|
416
|
+
] = InputEdgePrometheusAuthTypeAuthenticationMethod.MANUAL
|
|
417
|
+
r"""Enter credentials directly, or select a stored secret"""
|
|
418
|
+
|
|
419
|
+
description: Optional[str] = None
|
|
420
|
+
|
|
421
|
+
targets: Optional[List[Target]] = None
|
|
422
|
+
|
|
423
|
+
name_list: Annotated[Optional[List[str]], pydantic.Field(alias="nameList")] = None
|
|
424
|
+
r"""List of DNS names to resolve"""
|
|
425
|
+
|
|
426
|
+
record_type: Annotated[
|
|
427
|
+
Annotated[
|
|
428
|
+
Optional[InputEdgePrometheusRecordType],
|
|
429
|
+
PlainValidator(validate_open_enum(False)),
|
|
430
|
+
],
|
|
431
|
+
pydantic.Field(alias="recordType"),
|
|
432
|
+
] = InputEdgePrometheusRecordType.SRV
|
|
433
|
+
r"""DNS Record type to resolve"""
|
|
434
|
+
|
|
435
|
+
scrape_protocol: Annotated[
|
|
436
|
+
Annotated[
|
|
437
|
+
Optional[ScrapeProtocolProtocol], PlainValidator(validate_open_enum(False))
|
|
438
|
+
],
|
|
439
|
+
pydantic.Field(alias="scrapeProtocol"),
|
|
440
|
+
] = ScrapeProtocolProtocol.HTTP
|
|
441
|
+
r"""Protocol to use when collecting metrics"""
|
|
442
|
+
|
|
443
|
+
scrape_path: Annotated[Optional[str], pydantic.Field(alias="scrapePath")] = (
|
|
444
|
+
"/metrics"
|
|
445
|
+
)
|
|
446
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
447
|
+
|
|
448
|
+
use_public_ip: Annotated[Optional[bool], pydantic.Field(alias="usePublicIp")] = True
|
|
449
|
+
r"""Use public IP address for discovered targets. Set to false if the private IP address should be used."""
|
|
450
|
+
|
|
451
|
+
scrape_port: Annotated[Optional[float], pydantic.Field(alias="scrapePort")] = 9090
|
|
452
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
453
|
+
|
|
454
|
+
search_filter: Annotated[
|
|
455
|
+
Optional[List[InputEdgePrometheusSearchFilter]],
|
|
456
|
+
pydantic.Field(alias="searchFilter"),
|
|
457
|
+
] = None
|
|
458
|
+
r"""EC2 Instance Search Filter"""
|
|
459
|
+
|
|
460
|
+
aws_authentication_method: Annotated[
|
|
461
|
+
Annotated[
|
|
462
|
+
Optional[InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod],
|
|
463
|
+
PlainValidator(validate_open_enum(False)),
|
|
464
|
+
],
|
|
465
|
+
pydantic.Field(alias="awsAuthenticationMethod"),
|
|
466
|
+
] = InputEdgePrometheusAwsAuthenticationMethodAuthenticationMethod.AUTO
|
|
467
|
+
r"""AWS authentication method. Choose Auto to use IAM roles."""
|
|
468
|
+
|
|
469
|
+
aws_secret_key: Annotated[Optional[str], pydantic.Field(alias="awsSecretKey")] = (
|
|
470
|
+
None
|
|
471
|
+
)
|
|
472
|
+
|
|
473
|
+
region: Optional[str] = None
|
|
474
|
+
r"""Region where the EC2 is located"""
|
|
475
|
+
|
|
476
|
+
endpoint: Optional[str] = None
|
|
477
|
+
r"""EC2 service endpoint. If empty, defaults to the AWS Region-specific endpoint. Otherwise, it must point to EC2-compatible endpoint."""
|
|
478
|
+
|
|
479
|
+
signature_version: Annotated[
|
|
480
|
+
Annotated[
|
|
481
|
+
Optional[InputEdgePrometheusSignatureVersion],
|
|
482
|
+
PlainValidator(validate_open_enum(False)),
|
|
483
|
+
],
|
|
484
|
+
pydantic.Field(alias="signatureVersion"),
|
|
485
|
+
] = InputEdgePrometheusSignatureVersion.V4
|
|
486
|
+
r"""Signature version to use for signing EC2 requests"""
|
|
487
|
+
|
|
488
|
+
reuse_connections: Annotated[
|
|
489
|
+
Optional[bool], pydantic.Field(alias="reuseConnections")
|
|
490
|
+
] = True
|
|
491
|
+
r"""Reuse connections between requests, which can improve performance"""
|
|
492
|
+
|
|
493
|
+
reject_unauthorized: Annotated[
|
|
494
|
+
Optional[bool], pydantic.Field(alias="rejectUnauthorized")
|
|
495
|
+
] = True
|
|
496
|
+
r"""Reject certificates that cannot be verified against a valid CA, such as self-signed certificates"""
|
|
497
|
+
|
|
498
|
+
enable_assume_role: Annotated[
|
|
499
|
+
Optional[bool], pydantic.Field(alias="enableAssumeRole")
|
|
500
|
+
] = False
|
|
501
|
+
r"""Use Assume Role credentials to access EC2"""
|
|
502
|
+
|
|
503
|
+
assume_role_arn: Annotated[Optional[str], pydantic.Field(alias="assumeRoleArn")] = (
|
|
504
|
+
None
|
|
505
|
+
)
|
|
506
|
+
r"""Amazon Resource Name (ARN) of the role to assume"""
|
|
507
|
+
|
|
508
|
+
assume_role_external_id: Annotated[
|
|
509
|
+
Optional[str], pydantic.Field(alias="assumeRoleExternalId")
|
|
510
|
+
] = None
|
|
511
|
+
r"""External ID to use when assuming role"""
|
|
512
|
+
|
|
513
|
+
duration_seconds: Annotated[
|
|
514
|
+
Optional[float], pydantic.Field(alias="durationSeconds")
|
|
515
|
+
] = 3600
|
|
516
|
+
r"""Duration of the assumed role's session, in seconds. Minimum is 900 (15 minutes), default is 3600 (1 hour), and maximum is 43200 (12 hours)."""
|
|
517
|
+
|
|
518
|
+
scrape_protocol_expr: Annotated[
|
|
519
|
+
Optional[str], pydantic.Field(alias="scrapeProtocolExpr")
|
|
520
|
+
] = "metadata.annotations['prometheus.io/scheme'] || 'http'"
|
|
521
|
+
r"""Protocol to use when collecting metrics"""
|
|
522
|
+
|
|
523
|
+
scrape_port_expr: Annotated[
|
|
524
|
+
Optional[str], pydantic.Field(alias="scrapePortExpr")
|
|
525
|
+
] = "metadata.annotations['prometheus.io/port'] || 9090"
|
|
526
|
+
r"""The port number in the metrics URL for discovered targets."""
|
|
527
|
+
|
|
528
|
+
scrape_path_expr: Annotated[
|
|
529
|
+
Optional[str], pydantic.Field(alias="scrapePathExpr")
|
|
530
|
+
] = "metadata.annotations['prometheus.io/path'] || '/metrics'"
|
|
531
|
+
r"""Path to use when collecting metrics from discovered targets"""
|
|
532
|
+
|
|
533
|
+
pod_filter: Annotated[
|
|
534
|
+
Optional[List[PodFilter]], pydantic.Field(alias="podFilter")
|
|
535
|
+
] = None
|
|
536
|
+
r"""Add rules to decide which pods to discover for metrics.
|
|
537
|
+
Pods are searched if no rules are given or of all the rules'
|
|
538
|
+
expressions evaluate to true.
|
|
539
|
+
|
|
540
|
+
"""
|
|
541
|
+
|
|
542
|
+
username: Optional[str] = None
|
|
543
|
+
r"""Username for Prometheus Basic authentication"""
|
|
544
|
+
|
|
545
|
+
password: Optional[str] = None
|
|
546
|
+
r"""Password for Prometheus Basic authentication"""
|
|
547
|
+
|
|
548
|
+
credentials_secret: Annotated[
|
|
549
|
+
Optional[str], pydantic.Field(alias="credentialsSecret")
|
|
550
|
+
] = None
|
|
551
|
+
r"""Select or create a secret that references your credentials"""
|