- Cisco Observability Platform
- Guides
- Access Management
- Knowledge Store
- Introduction
- Define a Knowledge Type
- Define a Knowledge Object
- Use References in Knowledge Types and Objects
- Manage Secrets in the Knowledge Store
- Create a Knowledge Object
- List all Knowledge Objects of a Given Type
- Fetch a Knowledge Object by ID
- Update a Knowledge Object
- Delete a Knowledge Object
- Create a Patch
- Solutions
- Introduction
- Create a Solution
- Add a Knowledge Type to a Solution
- Add a Knowledge Object to a Solution
- Tag a Solution
- Validate a Solution
- Fork a Solution
- Deploy a Solution to Your Tenant
- Subscribe to a Solution
- Check the Solution Upload and Subscription Status
- Update the Manifest File of a Solution
- Deploy a Solution to the Cisco Observability Platform Exchange
- Bump the Solution Version
- List the Available Solutions
- List All Files in a Solution
- Delete the Knowledge Types and Objects of a Solution
- Delete a Solution
- Check the Solution Deletion Status
- Troubleshoot Solutions
- Data Modeling
- Solution Services
- Data Ingestion
- Data Queries
- Codex
- Health Rules
- Actions
- UI Enhancements
- Example Solutions
- Reference
- Cisco Observability Platform CLI
- Cisco Observability Platform REST APIs
- Alphabetical Reference
- Introduction
- actions:httpactiontemplate
- codex:workflow
- dashui:entityPage
- dashui:entityPagePropSet
- dashui:entityPresentation
- dashui:form
- dashui:navPresentation
- dashui:settingsConfig
- dashui:template
- dashui:templatePropsExtension
- fmm:adConfigOobTemplate
- fmm:associationDeclaration
- fmm:associationDerivation
- fmm:attributePromotion
- fmm:enrichment
- fmm:entity
- fmm:entityGrouping
- fmm:entityPriority
- fmm:extension
- fmm:event
- fmm:extensionDerivation
- fmm:metric
- fmm:metricAggregation
- fmm:metricAttributeMapping
- fmm:metricDerivation
- fmm:metricMapping
- fmm:namespace
- fmm:resourceMapping
- fmm:sourceMapping
- fmm:tagPropagation
- healthrule:healthRuleScopeOverrides
- healthrule:healthRuleTemplate
- iam:Permission
- iam:Role
- iam:RoleToPermissionMapping
- iam:SolutionPermissions
- logs:dataMaskingExpression
- logs:dataMaskingRule
- logs:dataMaskingRuleV1
- logs:logParsingRule
- solutionsecret:solutionSecret
- zodiac:egressHosts
- zodiac:function
- zodiac:secret
- zodiac:solutionCron
- zodiac:subscriptionCronConfig
- Community and Support
This documentation and the Cisco Observability Platform functionalities it describes are subject to change. Data saved on the platform may disappear and APIs may change without notice.
CloudEvents for Codex
Cisco Codex consumes or produces events while transforming MELT data. These events must conform to the CloudEvents® specification. CloudEvents® is a vendor-neutral specification that defines the format of event data. For information, see CloudEvents - Version 1.0.2.
CloudEvents Category
The category of CloudEvents® defines the event type that is produced or consumed in the Codex data processing pipeline. The following table lists the categories of CloudEvents®:
Category | Description |
---|---|
data:observation |
This event type is produced by Codex workflows. |
data:trigger |
This event type is consumed by Codex workflows. |
Supported CloudEvents
This section lists the supported CloudEvents® types, their categories, and the schemas.
Cloud Event | Category |
---|---|
association.observed.v1 | data:observation |
entity.observed.v1 | data:observation |
event.enriched.v1 | data.trigger |
event.received.v1 | data:observation |
extension.observed.v1 | data:observation |
measurement.received.v1 | data:observation |
metric.enriched.v1 | data:trigger |
metric.processed.v1 | data:observation |
trace.enriched.v1 | data:trigger |
association.observed.v1
This event indicates that an association is observed. Use this event when you are processing data to observe new associations.
Catergory:
data:observation
Type Definition:
The event has the following type definition:
Copy
{
"type" : "association.observed.v1",
"description" : "Event indicating that an association was observed",
"dataschema" : "contracts:jsonSchema/platform:observed_association.v1",
"category" : "data:observation"
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Observed Association",
"$id" : "observed_association.v1",
"type" : "object",
"required" : [
"from",
"to",
"type",
"observedAt"
],
"properties" : {
"from" : {
"$ref" : "#/definitions/EntityReference"
},
"to" : {
"$ref" : "#/definitions/EntityReference"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"observedAt" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
}
},
"additionalProperties" : false,
"definitions" : {
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type reference or fully qualified type reference of the association",
"example" : [
"k8s:pod",
"common:consists_of"
]
}
}
}
**Use:**
To use the event in your Codex workflow:
```json
{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:association.observed.v1",
"kind" : "produced"
}
entity.observed.v1
This event indicates that an entity is observed. Use this event when you are processing data to observe new entities. These entities can be associated with MELT data and can be ingested into the topology store.
Category:
data:observation
Type Definition:
The event has the following type definition:
Copy
{
"type" : "entity.observed.v1",
"description" : "Event indicating that an entity was observed. It does not indicate whether this entity already exists or is newly created",
"dataschema" : "contracts:jsonSchema/platform:observed_entity.v1",
"category" : "data:observation",
"extensions" : [
"contracts:cloudeventExtension/platform:entitytype"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Observed Entity",
"$id" : "observed_entity.v1",
"type" : "object",
"required" : [
"id",
"type",
"observedAt"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"description" : "A fully qualified Flexible Meta Model (FMM) entity type",
"type" : "string"
},
"observedAt" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"attributes" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean"
]
}
},
"tags" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
}
},
"additionalProperties" : false
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:entity.observed.v1",
"kind" : "produced"
}
event.enriched.v1
Indicates that an event is enriched with topology tags. Use this event when you need to consume the event and produce it to other MELT data. You can not change any attributes of the input events. You can create only new observations.
Category:
data:trigger
Type Definition:
Copy{
"type" : "event.enriched.v1",
"description" : "Indicates that an event was enriched with topology tags",
"dataschema" : "contracts:jsonSchema/platform:event.v1",
"category" : "data:trigger",
"extensions" : [
"contracts:cloudeventExtension/platform:entitytypes",
"contracts:cloudeventExtension/platform:source"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Event",
"$id" : "event.v1",
"type" : "object",
"required" : [
"entities",
"type",
"timestamp"
],
"properties" : {
"entities" : {
"type" : "array",
"minItems": 1,
"items" : {
"$ref" : "#/definitions/EntityReference"
}
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"spanId" : {
"type" : "string",
"description" : "Span id"
},
"traceId" : {
"type" : "string",
"description" : "Trace id"
},
"raw" : {
"type" : "string",
"description" : "The raw body of the event record"
},
"attributes" : {
"$ref" : "#/definitions/Attributes"
},
"tags" : {
"$ref" : "#/definitions/Tags"
}
},
"additionalProperties" : false,
"definitions" : {
"Tags" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"Attributes" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean",
"object",
"array"
]
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type reference",
"example" : "k8s:pod"
}
}
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:event.enriched.v1",
"kind" : "consumed"
}
event.received.v1
Indicates that the event is received. Used this event when you need to create an event data from other MELT data. This event is ingested back into the Cisco Codex pipeline to be available in the event store eventually.
Category:
data:observation
Type Definition:
The event has the following type definition:
Copy{
"type" : "event.received.v1",
"description" : "Indicates that an event was received",
"dataschema" : "contracts:jsonSchema/platform:event.v1",
"category" : "data:observation",
"extensions" : [
"contracts:cloudeventExtension/platform:entitytypes",
"contracts:cloudeventExtension/platform:source"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Event",
"$id" : "event.v1",
"type" : "object",
"required" : [
"entities",
"type",
"timestamp"
],
"properties" : {
"entities" : {
"type" : "array",
"minItems": 1,
"items" : {
"$ref" : "#/definitions/EntityReference"
}
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"spanId" : {
"type" : "string",
"description" : "Span id"
},
"traceId" : {
"type" : "string",
"description" : "Trace id"
},
"raw" : {
"type" : "string",
"description" : "The raw body of the event record"
},
"attributes" : {
"$ref" : "#/definitions/Attributes"
},
"tags" : {
"$ref" : "#/definitions/Tags"
}
},
"additionalProperties" : false,
"definitions" : {
"Tags" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"Attributes" : {
"type" : "object",
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean",
"object",
"array"
]
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type reference",
"example" : "k8s:pod"
}
}
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:event.received.v1",
"kind" : "consumed"
}
Note that the supported kind is consumed or produced.
extension.observed.v1
Indicates that the extension is observed.
Category:
data:observation
Type Definition:
The event has the following type definition:
Copy{
"type" : "extension.observed.v1",
"description" : "Event indicating that an extension was observed",
"dataschema" : "contracts:jsonSchema/platform:observed_extension.v1",
"category" : "data:observation",
"extensions" : [
"contracts:cloudeventExtension/platform:entitytype"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Observed Extension",
"$id" : "observed_extension.v1",
"type" : "object",
"required" : [
"entityId",
"type",
"observedAt",
"attributes"
],
"properties" : {
"entityId" : {
"type" : "string",
"description" : "Entity identifier for which this extension will be applied, which must already exist"
},
"type" : {
"type" : "string",
"description" : "A fully qualified FMM extension type"
},
"observedAt" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"attributes" : {
"type" : "object",
"minProperties" : 1,
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean"
]
}
}
},
"additionalProperties" : false
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:extension.observed.v1",
"kind" : "produced"
}
measurement.received.v1
Indicates that measurements are received. The measurements are then aggregated into a metric.
Category:
data:observation
Type Definition:
The event has the following type definition:
Copy{
"type" : "measurement.received.v1",
"description" : "Indicates that measurements were received. Measurements are then aggregated into a metric.",
"dataschema" : "contracts:jsonSchema/platform:measurement.v1",
"category" : "data:observation",
"extensions" : [
"contracts:cloudeventExtension/platform:source"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Measurements for a specific metric",
"$id" : "measurement.v1",
"type" : "object",
"required" : [
"entity",
"type",
"measurements"
],
"properties" : {
"entity" : {
"$ref" : "#/definitions/EntityReference"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"attributes" : {
"$ref" : "#/definitions/Attributes"
},
"measurements" : {
"type" : "array",
"minItems" : 1,
"description" : "Measurement values with timestamp to be used for metric computation",
"items" : {
"type" : "object",
"required" : [
"timestamp"
],
"oneOf" : [
{
"required" : [
"intValue"
]
},
{
"required" : [
"doubleValue"
]
}
],
"properties" : {
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"intValue" : {
"type" : "integer",
"description" : "Long value to be used for metric computation."
},
"doubleValue" : {
"type" : "number",
"description" : "Double Measurement value to be used for metric computation."
}
},
"additionalProperties" : false
}
}
},
"additionalProperties" : false,
"definitions" : {
"Attributes" : {
"type" : "object",
"propertyNames": {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean"
]
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type name",
"example" : "k8s:pod"
}
}
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:measurement.received.v1",
"kind" : "produced"
}
metric.enriched.v1
Indicates that a metric is enriched with topology tags. Use this event when you need to consume a metric data to produce it to other MELT data. You can not change any attributes of the input events. You can create only new observations.
Category:
data:trigger
Type Definition:
The event has the following type definition:
Copy{
"type" : "metric.enriched.v1",
"description" : "Indicates that a metric was enriched with topology tags",
"dataschema" : "contracts:jsonSchema/platform:metric.v1",
"category" : "data:trigger",
"extensions" : [
"contracts:cloudeventExtension/platform:entitytypes",
"contracts:cloudeventExtension/platform:source"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Metric",
"$id" : "metric.v1",
"type" : "object",
"required" : [
"entities",
"type"
],
"oneOf" : [
{
"required" : [
"gauge"
]
},
{
"required" : [
"sum"
]
},
{
"required" : [
"summary"
]
},
{
"required" : [
"distribution"
]
},
{
"required" : [
"histogram"
]
}
],
"properties" : {
"entities" : {
"type" : "array",
"minItems": 1,
"items" : {
"$ref" : "#/definitions/EntityReference"
}
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"gauge" : {
"$ref" : "#/definitions/Gauge"
},
"sum" : {
"$ref" : "#/definitions/Sum"
},
"summary" : {
"$ref" : "#/definitions/Summary"
},
"distribution" : {
"$ref" : "#/definitions/Distribution"
},
"histogram" : {
"$ref" : "#/definitions/Histogram"
},
"tags" : {
"$ref" : "#/definitions/Tags"
}
},
"additionalProperties" : false,
"definitions" : {
"Tags" : {
"type" : "object",
"minProperties" : 1,
"propertyNames": {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"Attributes" : {
"type" : "object",
"minProperties" : 1,
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type name",
"example" : "k8s:pod"
},
"AggregationTemporality" : {
"type" : "string",
"enum" : [
"CUMULATIVE",
"DELTA"
],
"default" : "DELTA",
"description" : "Defines how a metric aggregator reports aggregated\nvalues. It describes how those values relate to the time interval over\nwhich they are aggregated.\n - DELTA is an AggregationTemporality for a metric aggregator which reports\nchanges since last report time. Successive metrics contain aggregation of\nvalues from continuous and non-overlapping intervals.\nThe values for a DELTA metric are based only on the time interval\nassociated with one measurement cycle. There is no dependency on\nprevious measurements like is the case for CUMULATIVE metrics.\n - CUMULATIVE is an AggregationTemporality for a metric aggregator which\nreports changes since a fixed start time. This means that current values\nof a CUMULATIVE metric depend on all previous measurements since the\nstart time. Because of this, the sender is required to retain this state\nin some form. If this state is lost or invalidated, the CUMULATIVE metric\nvalues MUST be reset and a new fixed start time following the last\nreported measurement time sent MUST be used."
},
"Gauge" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/NumberDataPoint"
}
}
},
"description" : "Gauge represents the type of a double scalar metric that always exports the\n\"current value\" for every data point. It should be used for an \"unknown\"\naggregation.\n\nA Gauge does not support different aggregation temporalities. Given the\naggregation is unknown, points cannot be combined using the same\naggregation, regardless of aggregation temporalities. Therefore,\nAggregationTemporality is not included. Consequently, this also means\n\"StartTimeUnixMillis\" is ignored for all data points."
},
"Sum" : {
"type" : "object",
"description" : "Sum represents the type of a numeric double scalar metric that is calculated\nas a sum of all reported measurements over a time interval.",
"properties" : {
"aggregationTemporality" : {
"$ref" : "#/definitions/AggregationTemporality"
},
"isMonotonic" : {
"description" : "Defines the monotonicity. If not specified, we default it to false.",
"type" : "boolean",
"default" : false
},
"dataPoints" : {
"description" : "List of values for this measurement.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/NumberDataPoint"
}
}
},
"additionalProperties" : false
},
"Summary" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/SummaryDataPoint"
}
}
},
"description" : "Summary metric data are used to convey quantile summaries,\na Prometheus (see: https://prometheus.io/docs/concepts/metric_types/#summary)\nand OpenMetrics (see: https://github.com/OpenObservability/OpenMetrics/blob/4dbf6075567ab43296eed941037c12951faafb92/protos/prometheus.proto#L45)\ndata type. These data points cannot always be merged in a meaningful way.\nWhile they can be useful in some applications, histogram data points are\nrecommended for new applications."
},
"Distribution" : {
"type" : "object",
"properties" : {
"aggregationTemporality" : {
"$ref" : "#/definitions/AggregationTemporality"
},
"isMonotonic" : {
"description" : "Defines the monotonicity. If not specified, we default it to false.",
"type" : "boolean",
"default" : false
},
"dataPoints" : {
"description" : "List of values for this measurement.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/DistributionDataPoint"
}
}
},
"additionalProperties" : false
},
"Histogram" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/HistogramDataPoint"
}
}
},
"additionalProperties" : false
},
"HistogramDataPoint" : {
"type" : "object",
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"histogramName" : {
"type" : "string",
"description" : "Represents an algorithm name used to create percentile summary object."
},
"histogramValue" : {
"description" : "Represents a percentile summary object (a digest).",
"type" : "string",
"format": "byte"
}
},
"description" : "Represents a single histogram object",
"additionalProperties" : false
},
"NumberDataPoint" : {
"type" : "object",
"required" : [
"timestamp"
],
"oneOf" : [
{
"required" : [
"asDouble"
]
},
{
"required" : [
"asInt"
]
}
],
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"asDouble" : {
"type" : "number"
},
"asInt" : {
"type" : "integer"
},
"count" : {
"type" : "integer",
"description" : "Number of values in the population. Must be non-negative.",
"default" : 1,
"minimum" : 0
}
},
"additionalProperties" : false
},
"SummaryDataPoint" : {
"type" : "object",
"description" : "Summary metric data are used to convey quantile summaries,\na Prometheus (see: https://prometheus.io/docs/concepts/metric_types/#summary)\nand OpenMetrics (see: https://github.com/OpenObservability/OpenMetrics/blob/4dbf6075567ab43296eed941037c12951faafb92/protos/prometheus.proto#L45)\ndata type. These data points cannot always be merged in a meaningful way.\nWhile they can be useful in some applications, histogram data points are\nrecommended for new applications",
"required" : [
"timestamp",
"sum",
"count"
],
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"sum" : {
"description" : "Sum of all the values.",
"type" : "number"
},
"count" : {
"description" : "Number of values in the population. Must be non-negative.",
"type" : "integer",
"minimum" : 0
},
"quantileValues" : {
"description" : "Sum value reported by agent.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/QuantileDataPoint"
}
}
},
"additionalProperties" : false
},
"QuantileDataPoint" : {
"type" : "object",
"description" : "Represents a single value at quantile.",
"properties" : {
"quantile" : {
"description" : "quantile of a distribution. Must be in the interval [0.0, 1.0].",
"type" : "number",
"minimum" : 0,
"maximum" : 1
},
"value" : {
"description" : "value at the given quantile of a distribution.",
"type" : "number"
}
},
"additionalProperties" : false
},
"DistributionDataPoint" : {
"description" : "Contains distribution values reported by Agent within a time interval and some aggregation related fields.",
"type" : "object",
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"distributionValue" : {
"oneOf" : [
{
"$ref" : "#/definitions/LongDistributionValue"
},
{
"$ref" : "#/definitions/DoubleDistributionValue"
}
]
},
"groupCount" : {
"description" : "Number of values in the population. Must be non-negative.",
"type" : "integer",
"default" : 1,
"minimum" : 0
}
},
"additionalProperties" : false
},
"LongDistributionValue" : {
"description" : "Distribution values in long reported by Agent within a time interval.",
"type" : "object",
"required" : [
"intSum",
"count",
"max",
"min"
],
"properties" : {
"intSum" : {
"description" : "Sum of all the reported values within that time interval.",
"type" : "integer"
},
"count" : {
"description" : "Number of values reported during that time interval.",
"type" : "integer"
},
"max" : {
"description" : "Maximum reported value within that time interval.",
"type" : "integer"
},
"min" : {
"description" : "Minimum reported value within that time interval.",
"type" : "integer"
}
},
"additionalProperties" : false
},
"DoubleDistributionValue" : {
"description" : "Distribution values in double reported by Agent within a time interval.",
"type" : "object",
"required" : [
"doubleSum",
"count",
"max",
"min"
],
"properties" : {
"doubleSum" : {
"description" : "Sum of all the reported values within that time interval.",
"type" : "number"
},
"count" : {
"description" : "Number of values reported during that time interval.",
"type" : "integer"
},
"max" : {
"description" : "Maximum reported value within that time interval.",
"type" : "number"
},
"min" : {
"description" : "Minimum reported value within that time interval.",
"type" : "number"
}
},
"additionalProperties" : false
}
}
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:metric.enriched.v1",
"kind" : "consumed"
}
metric.processed.v1
Indicates that a metric was processed. Use this event when you need to create new metric data by consuming any other produced cloud event.
Category:
data:observation
Type Definition:
The event has the following type definition:
Copy{
"type" : "metric.processed.v1",
"description" : "Indicates that a metric was processed by all plugins, and associated with a FMM metric type",
"dataschema" : "contracts:jsonSchema/platform:metric.v1",
"category" : "data:observation",
"extensions" : [
"contracts:cloudeventExtension/platform:source"
]
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Metric",
"$id" : "metric.v1",
"type" : "object",
"required" : [
"entities",
"type"
],
"oneOf" : [
{
"required" : [
"gauge"
]
},
{
"required" : [
"sum"
]
},
{
"required" : [
"summary"
]
},
{
"required" : [
"distribution"
]
},
{
"required" : [
"histogram"
]
}
],
"properties" : {
"entities" : {
"type" : "array",
"minItems": 1,
"items" : {
"$ref" : "#/definitions/EntityReference"
}
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"gauge" : {
"$ref" : "#/definitions/Gauge"
},
"sum" : {
"$ref" : "#/definitions/Sum"
},
"summary" : {
"$ref" : "#/definitions/Summary"
},
"distribution" : {
"$ref" : "#/definitions/Distribution"
},
"histogram" : {
"$ref" : "#/definitions/Histogram"
},
"tags" : {
"$ref" : "#/definitions/Tags"
}
},
"additionalProperties" : false,
"definitions" : {
"Tags" : {
"type" : "object",
"minProperties" : 1,
"propertyNames": {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"Attributes" : {
"type" : "object",
"minProperties" : 1,
"propertyNames" : {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type name",
"example" : "k8s:pod"
},
"AggregationTemporality" : {
"type" : "string",
"enum" : [
"CUMULATIVE",
"DELTA"
],
"default" : "DELTA",
"description" : "Defines how a metric aggregator reports aggregated\nvalues. It describes how those values relate to the time interval over\nwhich they are aggregated.\n - DELTA is an AggregationTemporality for a metric aggregator which reports\nchanges since last report time. Successive metrics contain aggregation of\nvalues from continuous and non-overlapping intervals.\nThe values for a DELTA metric are based only on the time interval\nassociated with one measurement cycle. There is no dependency on\nprevious measurements like is the case for CUMULATIVE metrics.\n - CUMULATIVE is an AggregationTemporality for a metric aggregator which\nreports changes since a fixed start time. This means that current values\nof a CUMULATIVE metric depend on all previous measurements since the\nstart time. Because of this, the sender is required to retain this state\nin some form. If this state is lost or invalidated, the CUMULATIVE metric\nvalues MUST be reset and a new fixed start time following the last\nreported measurement time sent MUST be used."
},
"Gauge" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/NumberDataPoint"
}
}
},
"description" : "Gauge represents the type of a double scalar metric that always exports the\n\"current value\" for every data point. It should be used for an \"unknown\"\naggregation.\n\nA Gauge does not support different aggregation temporalities. Given the\naggregation is unknown, points cannot be combined using the same\naggregation, regardless of aggregation temporalities. Therefore,\nAggregationTemporality is not included. Consequently, this also means\n\"StartTimeUnixMillis\" is ignored for all data points."
},
"Sum" : {
"type" : "object",
"description" : "Sum represents the type of a numeric double scalar metric that is calculated\nas a sum of all reported measurements over a time interval.",
"properties" : {
"aggregationTemporality" : {
"$ref" : "#/definitions/AggregationTemporality"
},
"isMonotonic" : {
"description" : "Defines the monotonicity. If not specified, we default it to false.",
"type" : "boolean",
"default" : false
},
"dataPoints" : {
"description" : "List of values for this measurement.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/NumberDataPoint"
}
}
},
"additionalProperties" : false
},
"Summary" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/SummaryDataPoint"
}
}
},
"description" : "Summary metric data are used to convey quantile summaries,\na Prometheus (see: https://prometheus.io/docs/concepts/metric_types/#summary)\nand OpenMetrics (see: https://github.com/OpenObservability/OpenMetrics/blob/4dbf6075567ab43296eed941037c12951faafb92/protos/prometheus.proto#L45)\ndata type. These data points cannot always be merged in a meaningful way.\nWhile they can be useful in some applications, histogram data points are\nrecommended for new applications."
},
"Distribution" : {
"type" : "object",
"properties" : {
"aggregationTemporality" : {
"$ref" : "#/definitions/AggregationTemporality"
},
"isMonotonic" : {
"description" : "Defines the monotonicity. If not specified, we default it to false.",
"type" : "boolean",
"default" : false
},
"dataPoints" : {
"description" : "List of values for this measurement.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/DistributionDataPoint"
}
}
},
"additionalProperties" : false
},
"Histogram" : {
"type" : "object",
"properties" : {
"dataPoints" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/HistogramDataPoint"
}
}
},
"additionalProperties" : false
},
"HistogramDataPoint" : {
"type" : "object",
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"histogramName" : {
"type" : "string",
"description" : "Represents an algorithm name used to create percentile summary object."
},
"histogramValue" : {
"description" : "Represents a percentile summary object (a digest).",
"type" : "string",
"format": "byte"
}
},
"description" : "Represents a single histogram object",
"additionalProperties" : false
},
"NumberDataPoint" : {
"type" : "object",
"required" : [
"timestamp"
],
"oneOf" : [
{
"required" : [
"asDouble"
]
},
{
"required" : [
"asInt"
]
}
],
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"asDouble" : {
"type" : "number"
},
"asInt" : {
"type" : "integer"
},
"count" : {
"type" : "integer",
"description" : "Number of values in the population. Must be non-negative.",
"default" : 1,
"minimum" : 0
}
},
"additionalProperties" : false
},
"SummaryDataPoint" : {
"type" : "object",
"description" : "Summary metric data are used to convey quantile summaries,\na Prometheus (see: https://prometheus.io/docs/concepts/metric_types/#summary)\nand OpenMetrics (see: https://github.com/OpenObservability/OpenMetrics/blob/4dbf6075567ab43296eed941037c12951faafb92/protos/prometheus.proto#L45)\ndata type. These data points cannot always be merged in a meaningful way.\nWhile they can be useful in some applications, histogram data points are\nrecommended for new applications",
"required" : [
"timestamp",
"sum",
"count"
],
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"sum" : {
"description" : "Sum of all the values.",
"type" : "number"
},
"count" : {
"description" : "Number of values in the population. Must be non-negative.",
"type" : "integer",
"minimum" : 0
},
"quantileValues" : {
"description" : "Sum value reported by agent.",
"type" : "array",
"items" : {
"$ref" : "#/definitions/QuantileDataPoint"
}
}
},
"additionalProperties" : false
},
"QuantileDataPoint" : {
"type" : "object",
"description" : "Represents a single value at quantile.",
"properties" : {
"quantile" : {
"description" : "quantile of a distribution. Must be in the interval [0.0, 1.0].",
"type" : "number",
"minimum" : 0,
"maximum" : 1
},
"value" : {
"description" : "value at the given quantile of a distribution.",
"type" : "number"
}
},
"additionalProperties" : false
},
"DistributionDataPoint" : {
"description" : "Contains distribution values reported by Agent within a time interval and some aggregation related fields.",
"type" : "object",
"properties" : {
"attributes" : {
"description" : "A list of attributes that uniquely identifies this data point.",
"$ref" : "#/definitions/Attributes"
},
"timestamp" : {
"type" : "integer",
"description" : "The timestamp in milliseconds"
},
"granularitySecs" : {
"description" : "Granularity of this content in seconds.",
"type" : "integer"
},
"distributionValue" : {
"oneOf" : [
{
"$ref" : "#/definitions/LongDistributionValue"
},
{
"$ref" : "#/definitions/DoubleDistributionValue"
}
]
},
"groupCount" : {
"description" : "Number of values in the population. Must be non-negative.",
"type" : "integer",
"default" : 1,
"minimum" : 0
}
},
"additionalProperties" : false
},
"LongDistributionValue" : {
"description" : "Distribution values in long reported by Agent within a time interval.",
"type" : "object",
"required" : [
"intSum",
"count",
"max",
"min"
],
"properties" : {
"intSum" : {
"description" : "Sum of all the reported values within that time interval.",
"type" : "integer"
},
"count" : {
"description" : "Number of values reported during that time interval.",
"type" : "integer"
},
"max" : {
"description" : "Maximum reported value within that time interval.",
"type" : "integer"
},
"min" : {
"description" : "Minimum reported value within that time interval.",
"type" : "integer"
}
},
"additionalProperties" : false
},
"DoubleDistributionValue" : {
"description" : "Distribution values in double reported by Agent within a time interval.",
"type" : "object",
"required" : [
"doubleSum",
"count",
"max",
"min"
],
"properties" : {
"doubleSum" : {
"description" : "Sum of all the reported values within that time interval.",
"type" : "number"
},
"count" : {
"description" : "Number of values reported during that time interval.",
"type" : "integer"
},
"max" : {
"description" : "Maximum reported value within that time interval.",
"type" : "number"
},
"min" : {
"description" : "Minimum reported value within that time interval.",
"type" : "number"
}
},
"additionalProperties" : false
}
}
}
Use:
To use the event in your Codex workflow:
Copy{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:metric.processed.v1",
"kind" : "consumed"
}
Note that the supported kind can be consumed or produced.
trace.enriched.v1
Indicates that a trace is enriched with topology tags. Use this event when you need to consume trace data to produce it to other MELT data. You can not change any attributes of the input events. You can create only new observations.
Category:
data:trigger
Type Definition:
The event has the following type definition:
Copy{
"type" : "trace.enriched.v1",
"description" : "Indicates that a trace was enriched with topology tags",
"dataschema" : "contracts:jsonSchema/platform:trace.v1",
"category" : "data:trigger"
}
Schema:
The schema of the event is as follows:
Copy{
"$schema" : "http://json-schema.org/draft-07/schema#",
"title" : "Trace",
"$id": "trace.v1",
"type" : "object",
"required" : [
"traceId",
"groupedSpans"
],
"properties" : {
"traceId": {
"type": "string",
"description": "Represents unique identifier of the trace."
},
"groupedSpans": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/GroupedSpans"
},
"description": "Collection of one or more spans related to this trace."
}
},
"additionalProperties" : false,
"definitions" : {
"GroupedSpans": {
"type": "object",
"properties" : {
"attributes": {
"$ref": "#/definitions/Attributes",
"description" : "List of attributes/key-value of Resource/InstrumentationScope shared by the spans"
},
"spans": {
"description" : "Collection of one or more spans",
"type" : "array",
"minItems": 1,
"items" : {
"$ref": "#/definitions/Span"
}
}
}
},
"Span": {
"type": "object",
"required" : [
"entities",
"spanId",
"traceId"
],
"properties": {
"spanId": {
"type": "string",
"description": "Represents unique identifier of span."
},
"traceId": {
"type": "string",
"description": "Represents unique identifier of the trace."
},
"parentId": {
"type": [
"null",
"string"
],
"description": "Represents unique identifier of parent span."
},
"name": {
"type": "string",
"description": "Represents the span name. A description of the spans operation."
},
"spanKind": {
"type": "string",
"enum": [
"UNKNOWN",
"INTERNAL",
"SERVER",
"CLIENT",
"PRODUCER",
"CONSUMER"
],
"description": "Represents the kind of a span. Span kinds : UNKNOWN, INTERNAL, SERVER, CLIENT, PRODUCER, CONSUMER"
},
"entities" : {
"type" : "array",
"minItems": 1,
"items" : {
"$ref" : "#/definitions/EntityReference"
}
},
"startedAt": {
"type" : "integer",
"description": "Represents start time of the span. The value is UNIX Epoch time in milliseconds since 00:00:00 UTC on 1 January 1970."
},
"endedAt": {
"type" : "integer",
"description": "Represents end time of the span. The value is UNIX Epoch time in milliseconds since 00:00:00 UTC on 1 January 1970. It is expected that endedAt >= startedAt."
},
"attributes": {
"$ref": "#/definitions/Attributes"
},
"tags": {
"$ref": "#/definitions/Tags"
},
"events": {
"$ref": "#/definitions/EventData"
},
"statusCode": {
"type": "string",
"enum": [
"UNSET",
"OK",
"ERROR"
],
"description": "Represents the span status. Type of the span status codes : UNSET, OK, ERROR"
},
"errorMessage": {
"type": "string",
"description": "Represents a developer-facing human readable error message."
},
"links": {
"$ref": "#/definitions/LinkData"
},
"traceState": {
"type": "string",
"description": "The trace state associated with this span, expected to be in w3c-trace-context format."
}
},
"additionalProperties" : false
},
"EventData": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Represents a name for an event."
},
"timestamp" : {
"type" : "integer",
"description" : "The time the event occurred in milliseconds"
},
"attributes": {
"$ref": "#/definitions/Attributes"
},
"droppedAttributesCount": {
"type": "integer",
"description": "Number of dropped attributes. If the value is 0, then no attributes were dropped.",
"minimum": 0
}
},
"additionalProperties": false
}
},
"Attributes" : {
"type" : "object",
"minProperties" : 1,
"propertyNames": {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : [
"string",
"number",
"boolean"
]
}
},
"Tags" : {
"type" : "object",
"minProperties" : 1,
"propertyNames": {
"minLength" : 1,
"maxLength" : 256
},
"additionalProperties" : {
"type" : "string"
}
},
"EntityReference" : {
"type" : "object",
"required" : [
"id",
"type"
],
"properties" : {
"id" : {
"type" : "string"
},
"type" : {
"$ref" : "#/definitions/TypeReference"
},
"additionalProperties" : false
}
},
"TypeReference" : {
"type" : "string",
"description" : "A fully qualified FMM type name",
"example" : "k8s:pod"
},
"LinkData": {
"type": "array",
"description": "Represents a zero or more related spans which are references from this span to a span in the same or different trace.",
"items": {
"type": "object",
"properties": {
"traceId": {
"type": "string",
"description": "Represents unique identifier of the trace."
},
"spanId": {
"type": "string",
"description": "Indicates an event time."
},
"attributes": {
"$ref": "#/definitions/Attributes"
}
},
"additionalProperties": false
}
}
}
}
Use:
To use the event in your Codex workflow:
Copy
{
"name" : "<name>",
"type" : "contracts:cloudevent/platform:trace.enriched.v1",
"kind" : "consumed"
}
Disclaimer: CloudEvents® are the trademarks of The Linux Foundation®.