Telemetry - script API

StackState Self-hosted v4.6.x

This page describes StackState version 4.6.

Go to the documentation for the latest StackState release.

Function query

A telemetry query is a conjunction of equality conditions. For example, name = 'system.load.norm.15' and host='localhost'. There are several builder methods available that help to refine the query time range, limit the number of points returned, or set a metric field.

Telemetry.query(dataSourceName: String, query: String)

Telemetry queries only support metric queries. If you need event queries, please enter a feature request at support.stackstate.com

Args:

  • dataSourceName - name of the data source.

  • query - set of equality conditions.

Returns:

AsyncScriptResult[TelemetryScriptApiQueryResponse]

Builder methods:

  • .groupBy(fieldName: String) - optional. Used to return grouped results from Elasticsearch. Requires .aggregation() to be used. If there is no aggregation, a plain metric stream will be returned.

  • aggregation(method: String, bucketSize: String) - returns aggregated telemetry using method and bucketSize. See the available aggregation methods.

  • start(time: Instant) - sets the start time of the query, for example -3h.

  • end(time: Instant) - sets the end time of the query, for example -1h.

  • window(start: Instant, end: Instant) - sets query time range. Use only start to get all telemetry up to now or only end to get all telemetry up to an instant in time.

  • limit(points: Int) - limits the number of points returned, applicable to none aggregated queries.

  • metricField(fieldName: String) - optional, but may be required for some data sources. Sets a field that holds metric value.

  • compileQuery() - returns the telemetry query that was created with this function and the builder methods. After this builder method no more builder methods can be called.

Examples:

  • Get metrics aggregated using Mean with bucket size 15 minutes and grouped by the field host:

Telemetry
  .query("StackState Multi Metrics", "")
  .groupBy("host")
  .metricField("jvm_threads_current")
  .start("-15m")
  .aggregation("mean", "15m")
  • Get raw metric by query

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
  • Get metric aggregated using Mean with bucket size 1 minute:

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
      .aggregation("99th percentile", "1m") // get 99th percentile of each minute
  • Query metrics starting 3 hours ago till now:

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
      .start("-3h") // starting from 3 hours ago
  • Query metrics starting beginning of the data till last hour ago:

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
      .end("-1h") // ending 1 hour ago
  • Query metrics within time range starting 3 hours ago up to 1 hour ago:

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
      .window("-3h", "-1h") // from 3 hours ago to 1 hour ago
  • Query metrics from field "value" and limits points returned:

    Telemetry
      .query("StackState Metrics", "name='system.load.norm' and host='host1'")
      .metricField("value")
      .limit(100)

Last updated