SignalFx
Publish TenXSummary instance values as metric counters to an SignalFx Micrometer registry.
Availability
This implementation is only available by default in the 10x Engine Cloud flavor to reduce the footprint of the edge/JIT-edge flavors.
Configuration
To configure the SignalFx metrics output module, Edit these settings.
Below is the default configuration from: signalFx/config.yaml (* Required Fields).
ewogICJ0eXBlIiA6ICJvYmplY3QiLAogICJwcm9wZXJ0aWVzIiA6IHsKICAgICJpbmNsdWRlIiA6IHsKICAgICAgInR5cGUiIDogInN0cmluZyIKICAgIH0sCiAgICAidGVueCIgOiB7CiAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICB9LAogICAgInNpZ25hbGZ4IiA6IHsKICAgICAgInR5cGUiIDogImFycmF5IiwKICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAidHlwZSIgOiAib2JqZWN0IiwKICAgICAgICAiYWRkaXRpb25hbFByb3BlcnRpZXMiIDogZmFsc2UsCiAgICAgICAgInByb3BlcnRpZXMiIDogewogICAgICAgICAgImVuYWJsZWQiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImJvb2xlYW4iLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJFbmFibGUgdGhpcyBvdXRwdXRcblxuRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBvdXRwdXQuIChBY2NlcHRzIGJvb2xlYW4gb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiB0cnVlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IHRydWUKICAgICAgICAgIH0sCiAgICAgICAgICAiYWNjZXNzVG9rZW4iIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJTaWduYWxGeCBhY2Nlc3MgdG9rZW5cblxuU2V0cyB0aGUgU2lnbmFsRnggYWNjZXNzIHRva2VuLiBUbyBsZWFybiBtb3JlIHNlZTogW1NwbHVuayB0b2tlbnNdKGh0dHBzOi8vZGV2LnNwbHVuay5jb20vb2JzZXJ2YWJpbGl0eS9yZWZlcmVuY2UvYXBpL29yZ190b2tlbnMvbGF0ZXN0KSIKICAgICAgICAgIH0sCiAgICAgICAgICAic291cmNlIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJzdHJpbmciLAogICAgICAgICAgICAgICJudWxsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiVmFsdWUgdG8gbWFwIHRvIFwiaG9zdFwiIHdoZW4gc2hpcHBpbmcgbWV0cmljcyB0byBTaWduYWxGeFxuXG5TZXRzIHRoZSB2YWx1ZSB0byBtYXAgdG8gXCJob3N0XCIgd2hlbiBzaGlwcGluZyBtZXRyaWNzIHRvIHNpZ25hbEZ4LiAoRGVmYXVsdDogbG9jYWwgaG9zdG5hbWUpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogImxvY2FsIGhvc3RuYW1lIgogICAgICAgICAgfSwKICAgICAgICAgICJzb3VyY2VVcmkiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJVUkkgb2YgYW4gaW50ZXJuYWwgcHJveHkgZW4gcm91dGUgdG8gU2lnbmFsRnhcblxuU2V0cyB0aGUgVVJJIG9mIGFuIGludGVybmFsIHByb3h5IGVuIHJvdXRlIHRvIFNpZ25hbEZ4LiAoRGVmYXVsdDogaHR0cHM6Ly9pbmdlc3Quc2lnbmFsZnguY29tKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICJodHRwczovL2luZ2VzdC5zaWduYWxmeC5jb20iCiAgICAgICAgICB9LAogICAgICAgICAgIm5hbWVGaWVsZCIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGlkZW50aWZ5aW5nIHRoZSBtZXRyaWNcblxuRGVmaW5lcyB0aGUgbmFtZSBvZiB0aGUgVGVuWFN1bW1hcnkgZmllbGQgd2hvc2UgdmFsdWUgaWRlbnRpZmllcyBhIG1ldHJpYyBjb3VudGVyLiBEZWZhdWx0cyB0byB0aGUgW3N1bW1hcnlWYWx1ZXNdKGh0dHBzOi8vZG9jLmxvZzEweC5jb20vYXBpL2pzLyNUZW5YU3VtbWFyeStzdW1tYXJ5VmFsdWVzKSBmaWVsZCB3aGljaCBob2xkcyB0aGUgdmFsdWUocykgYnkgd2hpY2ggVGVuWE9iamVjdHMgYXJlIGdyb3VwZWQgaW50byB0aGUgY3VycmVudCBUZW5YU3VtbWFyeSBpbnN0YW5jZS4gVG8gbGVhcm4gbW9yZSBzZWUgW21pY3JvbWV0ZXIgY291bnRlcnNdKGh0dHBzOi8vd3d3LmJhZWxkdW5nLmNvbS9taWNyb21ldGVyIzItY291bnRlcikgKERlZmF1bHQ6IFtzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykpIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogIltzdW1tYXJ5VmFsdWVzXShodHRwczovL2RvYy5sb2cxMHguY29tL2FwaS9qcy8jVGVuWFN1bW1hcnkrc3VtbWFyeVZhbHVlcykiCiAgICAgICAgICB9LAogICAgICAgICAgImNvdW50ZXJGaWVsZHMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIk5hbWVzIG9mIHRoZSBUZW5YU3VtbWFyeSBmaWVsZHMgdXNlZCB0byBpbmNyZW1lbnQgdGhlIG1ldHJpYyBjb3VudGVyIHZhbHVlXG5cbkRlZmluZXMgdGhlIG5hbWUgb2YgdGhlIFRlblhTdW1tYXJ5IGZpZWxkIGJ5IHdob3NlIHZhbHVlIHRvIGluY3JlbWVudCB0aGUgY291bnRlci4iLAogICAgICAgICAgICAiaXRlbXMiIDogewogICAgICAgICAgICAgICJ0eXBlIiA6ICJzdHJpbmciCiAgICAgICAgICAgIH0KICAgICAgICAgIH0sCiAgICAgICAgICAidGFnRmllbGRzIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJMaXN0IG9mIFRlblhTdW1tYXJ5IGZpZWxkcyB0byB1c2UgYXMgbWV0cmljIHRhZyB2YWx1ZXNcblxuRGVmaW5lcyB0aGUgVGVuWFN1bW1hcnkgZmllbGQgbmFtZXMgdG8gdXNlIGFzIGB0YWdgIHZhbHVlcy4gVGFncyBhcmUgZGltZW5zaW9ucyB0aGF0IGVuYWJsZSBzbGljaW5nIGEgcGFydGljdWxhciBuYW1lZCBtZXRyaWMgdG8gZHJpbGwgZG93biB0byByZWFzb24gYWJvdXQgaXRzIHZhbHVlLiBUbyBsZWFybiBtb3JlIHNlZSBbbWljcm9tZXRlciB0YWdzXShodHRwczovL3d3dy5iYWVsZHVuZy5jb20vbWljcm9tZXRlciMxLXRhZ3MpIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgInRhZ0ZpZWxkTmFtZXMiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIHVzZSBmb3IgVGVuWFN1bW1hcnkgZmllbGRzLlxuXG5EZWZpbmVzIHRoZSBhIGxpc3Qgb2YgY3VzdG9tIG5hbWVzIHRvIGdpdmUgZmllbGRzIHdoZW4gcmVwb3J0aW5nIHRoZW0uIEZvcm1hdCBhcyBhIGxpc3Qgb2YgbmFtZTEsIGN1c3RvbTEsIG5hbWUyLCBjdXN0b20yLiAgRm9yIGV4YW1wbGUsIHRvIHNldCBhIGN1c3RvbSBuYW1lIG9mICdNeS1DdXN0b20tRmllbGQnIHRvIGFuIGV4aXN0aW5nICdpbnRyaW5zaWMtZmllbGQnOiBgYGAgeWFtbCBzaWduYWxmeDogICB0YWdGaWVsZE5hbWVzOiAgICAgLSBpbnRyaW5zaWMtZmllbGQgICAgIC0gTXktQ3VzdG9tLUZpZWxkIiwKICAgICAgICAgICAgIml0ZW1zIiA6IHsKICAgICAgICAgICAgICAidHlwZSIgOiAic3RyaW5nIgogICAgICAgICAgICB9CiAgICAgICAgICB9LAogICAgICAgICAgImZpbHRlciIgOiB7CiAgICAgICAgICAgICJ0eXBlIiA6IFsKICAgICAgICAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAibnVsbCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgIm1hcmtkb3duRGVzY3JpcHRpb24iIDogIkEgSmF2YVNjcmlwdCBleHByZXNzaW9uIGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgJ3RydXRoeScgYWdhaW5zdCB0byBiZSB3cml0dGVuIHRvIHRoaXMgb3V0cHV0XG5cblNwZWNpZmllcyBhIEphdmFTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGFuIFRlblhTdW1tYXJ5IG11c3QgZXZhbHVhdGUgYXMgdHJ1dGh5IHRvIHdyaXRlIGl0cyBpbnN0YW5jZS90ZW1wbGF0ZSBmaWVsZCB2YWx1ZXMgdG8gdGhlIHRhcmdldCBjb3VudGVyLiAgRm9yIGV4YW1wbGUsIHRvIG9ubHkgZW1pdCBUZW5YU3VtbWFyaWVzIHByb2R1Y2VkIGJ5IHRoZSAnbXlNZXRyaWMnIGFnZ3JlZ2F0b3IsIHNwZWNpZnk6IGBgYCB5YW1sIHNpZ25hbGZ4OiAgIGZpbHRlcjogdGhpcy5pbnB1dE5hbWUgPT0gXCJteU1ldHJpY1wiIGBgYCAgVG8gbGVhcm4gbW9yZSBzZWUgW2lucHV0TmFtZV0oaHR0cHM6Ly9kb2MubG9nMTB4LmNvbS9hcGkvanMvI1RlblhCYXNlT2JqZWN0K2lucHV0TmFtZSkiCiAgICAgICAgICB9LAogICAgICAgICAgIm1heENhcmRpbmFsaXR5IiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJudW1iZXIiLAogICAgICAgICAgICAgICJzdHJpbmciCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJNYXhpbXVtIG51bWJlciBvZiB1bmlxdWUgbWV0cmljIGNvbWJpbmF0aW9ucyBhbGxvd2VkXG5cblNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBtZXRyaWMgY29tYmluYXRpb25zIChjYXJkaW5hbGl0eSkgYWxsb3dlZCBmb3IgdGhpcyBvdXRwdXQuIFdoZW4gZXhjZWVkZWQsIG1ldHJpY3Mgd2lsbCBiZSBkcm9wcGVkIHRvIHByZXZlbnQgZXhjZXNzaXZlIGNhcmRpbmFsaXR5LiAoQWNjZXB0cyBudW1iZXIgb3Igc3RyaW5nIHdpdGggJD0gcHJlZml4IGZvciBydW50aW1lIGV2YWx1YXRpb24pIChEZWZhdWx0OiA1MDApIiwKICAgICAgICAgICAgImRlZmF1bHQiIDogNTAwCiAgICAgICAgICB9LAogICAgICAgICAgInB1Ymxpc2hDdW11bGF0aXZlSGlzdG9ncmFtIiA6IHsKICAgICAgICAgICAgInR5cGUiIDogWwogICAgICAgICAgICAgICJib29sZWFuIiwKICAgICAgICAgICAgICAic3RyaW5nIgogICAgICAgICAgICBdLAogICAgICAgICAgICAibWFya2Rvd25EZXNjcmlwdGlvbiIgOiAiU2V0IHdoZXRoZXIgdG8gZW1pdCBjdW11bGF0aXZlIGhpc3RvZ3JhbVxuXG5TZXQgd2hldGhlciB0aGUgU2lnbmFsRnggcmVnaXN0cnkgc2hvdWxkIGVtaXQgYSBjdW11bGF0aXZlIGhpc3RvZ3JhbS4gKEFjY2VwdHMgYm9vbGVhbiBvciBzdHJpbmcgd2l0aCAkPSBwcmVmaXggZm9yIHJ1bnRpbWUgZXZhbHVhdGlvbikgKERlZmF1bHQ6IGZhbHNlKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6IGZhbHNlCiAgICAgICAgICB9LAogICAgICAgICAgInN0ZXAiIDogewogICAgICAgICAgICAidHlwZSIgOiBbCiAgICAgICAgICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgIm51bGwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJtYXJrZG93bkRlc2NyaXB0aW9uIiA6ICJUaGUgaW50ZXJ2YWwgYXQgd2hpY2ggdG8gcHVibGlzaCBtZXRyaWNzIHRvIG91dHB1dFxuXG5TZXRzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0byBwdWJsaXNoIG1ldHJpY3MgdG8gdGhlIHRpbWUtc2VyaWVzIGRlc3RpbmF0aW9uIChlLmcuLCAnMW0nKS4gVG8gbGVhcm4gbW9yZSBzZWUgW3JhdGUtYWdncmVnYXRpb25dKGh0dHBzOi8vbWljcm9tZXRlci5pby9kb2NzL2NvbmNlcHRzI3JhdGUtYWdncmVnYXRpb24pIChEZWZhdWx0OiAxbWluKSIsCiAgICAgICAgICAgICJkZWZhdWx0IiA6ICIxbWluIgogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogIH0sCiAgImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiA6IGZhbHNlCn0=
# 🔟❎ 'run' SignalFx metric output configuration
# Configures SignalFx remote write metric counter outputs.
# To learn more see https://doc.log10x.com/run/output/metric/signalFx/
# Set the 10x pipeline to 'run'
tenx: run
# =============================== Dependencies ================================
include: run/modules/output/metric/signalFx
# ============================ SignalFx Options ===============================
# Define multiple SignalFx metric outputs below
signalfx:
# --------------------------- Connection Options --------------------------
# 'accessToken' sets the SignalFx access token.
# To learn more see https://dev.splunk.com/observability/reference/api/org_tokens/latest
- accessToken: $=TenXEnv.get("SIGNALFX_ACCESS_TOKEN") # (❗ EnvVar REQUIRED)
# 'source' sets the value to map to "host" when shipping metrics to SignalFx.
# Defaults to local hostname
source: null
# 'sourceUri' sets the URI of an internal proxy en route to signalFx.
sourceUri: https://ingest.signalfx.com
# ---------------------------- Counter Options ----------------------------
# 'nameField' sets the TenXSummary field whose value identifies the micrometer counter to increment.
# The 'inputName' field returns the name of the aggregator that produced the target TenXSummary instance.
# To learn more see https://doc.log10x.com/run/aggregate
nameField: inputName
# 'counterFields' specifies the TenXSummary fields whose values are used to increment the counter.
# To learn more see https://doc.log10x.com/run/aggregate/#summary-fields
counterFields:
- summaryVolume
- summaryBytes
- summaryTotals
# 'tagFields' sets the TenXSummary fields used as the counter tag dimension values.
# Defaults to https://doc.log10x.com/run/initialize/#enrichmentFields
tagFields:
- $=yield TenXEnv.get("enrichmentFields")
# 'tagFieldNames' allows setting custom names to aggregated fields for metrics reporting.
# Defaults to https://doc.log10x.com/run/initialize/#metricFieldNames
tagFieldNames:
- $=yield TenXEnv.get("metricFieldNames")
# 'filter' sets a JavaScript expression that TenXSummaries must evaluate as truthy to write to the output.
# To learn more see https://doc.log10x.com/run/output/regulate/#filter-expressions
filter: isSummary
# ---------------------------- Publish Options ----------------------------
# 'step' sets the interval to send metrics to SignalFx (e.g., '1m').
# To learn more see https://micrometer.io/docs/concepts#rate-aggregation
# 'publishCumulativeHistogram' sets whether the SignalFx registry should emit cumulative histogram
publishCumulativeHistogram: false
Options
Specify the options below to configure multiple SignalFx metrics output:
| Name | Description | Category |
|---|---|---|
| signalfxEnabled | Enable this output | General |
| signalfxAccessToken | SignalFx access token | Authentication |
| signalfxSource | Value to map to "host" when shipping metrics to SignalFx | Authentication |
| signalfxSourceUri | URI of an internal proxy en route to SignalFx | Authentication |
| signalfxNameField | Name of the TenXSummary field identifying the metric | Counter |
| signalfxCounterFields | Names of the TenXSummary fields used to increment the metric counter value | Counter |
| signalfxTagFields | List of TenXSummary fields to use as metric tag values | Counter |
| signalfxTagFieldNames | List of custom names to use for TenXSummary fields. | Counter |
| signalfxFilter | A JavaScript expression an TenXSummary must evaluate as 'truthy' against to be written to this output | Counter |
| signalfxMaxCardinality | Maximum number of unique metric combinations allowed | Counter |
| signalfxPublishCumulativeHistogram | Set whether to emit cumulative histogram | Counter |
| signalfxStep | The interval at which to publish metrics to output | Counter |
General
signalfxEnabled
Enable this output.
| Type | Default | Category |
|---|---|---|
| Boolean | true | General |
Enable or disable this output.
Authentication
signalfxAccessToken
SignalFx access token.
| Type | Default | Category |
|---|---|---|
| String | "" | Authentication |
Sets the SignalFx access token. To learn more see: Splunk tokens.
signalfxSource
Value to map to "host" when shipping metrics to SignalFx.
| Type | Default | Category |
|---|---|---|
| String | local hostname | Authentication |
Sets the value to map to "host" when shipping metrics to signalFx.
signalfxSourceUri
URI of an internal proxy en route to SignalFx.
| Type | Default | Category |
|---|---|---|
| String | https://ingest.signalfx.com | Authentication |
Sets the URI of an internal proxy en route to SignalFx.
Counter
signalfxNameField
Name of the TenXSummary field identifying the metric.
| Type | Default | Category |
|---|---|---|
| String | summaryValues | Counter |
Defines the name of the TenXSummary field whose value identifies a metric counter. Defaults to the summaryValues field which holds the value(s) by which TenXObjects are grouped into the current TenXSummary instance. To learn more see micrometer counters.
signalfxCounterFields
Names of the TenXSummary fields used to increment the metric counter value.
| Type | Default | Category |
|---|---|---|
| List | summaryVolume | Counter |
Defines the name of the TenXSummary field by whose value to increment the counter.
signalfxTagFields
List of TenXSummary fields to use as metric tag values.
| Type | Default | Category |
|---|---|---|
| List | [] | Counter |
Defines the TenXSummary field names to use as tag values.
Tags are dimensions that enable slicing a particular named metric to drill down to reason about its value.
To learn more see micrometer tags.
signalfxTagFieldNames
List of custom names to use for TenXSummary fields.
| Type | Default | Category |
|---|---|---|
| List | [] | Counter |
Defines the a list of custom names to give fields when reporting them. Format as a list of name1, custom1, name2, custom2.
For example, to set a custom name of 'My-Custom-Field' to an existing 'intrinsic-field':
signalfxFilter
A JavaScript expression an TenXSummary must evaluate as 'truthy' against to be written to this output.
| Type | Default | Category |
|---|---|---|
| String | "" | Counter |
Specifies a JavaScript expression that an TenXSummary must evaluate as truthy to write its instance/template field values to the target counter.
For example, to only emit TenXSummaries produced by the 'myMetric' aggregator, specify:
To learn more see inputName.
signalfxMaxCardinality
Maximum number of unique metric combinations allowed.
| Type | Default | Category |
|---|---|---|
| Number | 500 | Counter |
Sets the maximum number of unique metric combinations (cardinality) allowed for this output. When exceeded, metrics will be dropped to prevent excessive cardinality.
signalfxPublishCumulativeHistogram
Set whether to emit cumulative histogram.
| Type | Default | Category |
|---|---|---|
| Boolean | false | Counter |
Set whether the SignalFx registry should emit a cumulative histogram.
signalfxStep
The interval at which to publish metrics to output.
| Type | Default | Category |
|---|---|---|
| String | 1min | Counter |
Sets the interval at which to publish metrics to the time-series destination (e.g., '1m'). To learn more see rate-aggregation.
This module is defined in signalFx/module.yaml.