v1

latestSwagger 2.02026-07-178567199.3 KB
sources
kapacitors
rules

Create kapacitor alert rule

post/sources/{id}/kapacitors/{kapa_id}/rules

Path parameters

idstring required

ID of the source

kapa_idstring required

ID of the kapacitor backend.

Request body

idstring

ID for this rule; the ID is shared with kapacitor

namestring

User facing name of the alerting rule

everystring required

Golang duration string specifying how often the alert condition is checked

messagestring

Message to send when alert occurs.

detailsstring

Template for constructing a detailed HTML message for the alert. (Currently, only used for email/smtp

trigger'deadman' | 'relative' | 'threshold' required

Trigger defines the alerting structure; deadman alert if no data are received for the specified time range; relative alert if the data change relative to the data in a different time range; threshold alert if the data cross a boundary

tickscriptstring

TICKscript representing this rule

status'enabled' | 'disabled'

Represents if this rule is enabled or disabled in kapacitor

executingboolean

Whether the task is currently executing.

type'stream' | 'batch'

Represents the task type where stream is data streamed to kapacitor and batch is queried by kapacitor.

errorstring

Any error encountered when kapacitor executes the task.

createdstring

Date the task was first created

modifiedstring

Date the task was last modified

last-enabledstring

Date the task was last set to status enabled

template-idstring

Template ID when created from template

varsobject

task external variables

Example request

{
  "id": "chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
  "query": {
    "id": "ce72917d-1ecb-45ea-a6cb-4c122deb93c7",
    "database": "telegraf",
    "measurement": "cpu",
    "retentionPolicy": "autogen",
    "fields": [
      {
        "value": "max",
        "type": "func",
        "args": [
          {
            "value": "usage_system",
            "type": "field"
          }
        ]
      }
    ],
    "tags": {},
    "groupBy": {
      "time": "10m",
      "tags": []
    },
    "areTagsAccepted": true
  },
  "every": "30s",
  "alertNodes": {
    "typeOf": "alert",
    "stateChangesOnly": true,
    "noRecoveries": false,
    "useFlapping": false,
    "post": [],
    "tcp": [],
    "email": [],
    "exec": [],
    "log": [],
    "victorOps": [],
    "pagerDuty": [],
    "pagerDuty2": [],
    "pushover": [],
    "sensu": [],
    "slack": [],
    "telegram": [],
    "alerta": [
      {
        "token": "",
        "resource": "res",
        "event": "evt",
        "environment": "env",
        "group": "grp",
        "value": "val",
        "origin": "kapacitor",
        "service": [
          "svc"
        ]
      }
    ],
    "opsGenie": [],
    "opsGenie2": [],
    "talk": [],
    "kafka": [],
    "serviceNow": null,
    "bigPanda": null,
    "teams": null,
    "zenoss": null
  },
  "message": "too much spam",
  "details": "muh body",
  "trigger": "threshold",
  "values": {
    "operator": "greater than",
    "value": "10"
  },
  "name": "Untitled Rule",
  "tickscript": "var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: TRUE\n\nvar period = 10m\n\nvar every = 30s\n\nvar name = 'Untitled Rule'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = 'too much spam'\n\nvar idTag = 'alertID'\n\nvar levelTag = 'level'\n\nvar messageField = 'message'\n\nvar durationField = 'duration'\n\nvar outputDB = 'chronograf'\n\nvar outputRP = 'autogen'\n\nvar outputMeasurement = 'alerts'\n\nvar triggerType = 'threshold'\n\nvar details = 'muh body'\n\nvar crit = 10\n\nvar data = stream\n    |from()\n        .database(db)\n        .retentionPolicy(rp)\n        .measurement(measurement)\n        .groupBy(groupBy)\n        .where(whereFilter)\n    |window()\n        .period(period)\n        .every(every)\n        .align()\n    |max('usage_system')\n        .as('value')\n\nvar trigger = data\n    |alert()\n        .crit(lambda: \"value\" > crit)\n        .stateChangesOnly()\n        .message(message)\n        .id(idVar)\n        .idTag(idTag)\n        .levelTag(levelTag)\n        .messageField(messageField)\n        .durationField(durationField)\n        .details(details)\n        .alerta()\n        .resource('res')\n        .event('evt')\n        .environment('env')\n        .group('grp')\n        .value('val')\n        .origin('kapacitor')\n        .services('svc')\n        .correlated()\n\ntrigger\n    |influxDBOut()\n        .create()\n        .database(outputDB)\n        .retentionPolicy(outputRP)\n        .measurement(outputMeasurement)\n        .tag('alertName', name)\n        .tag('triggerType', triggerType)\n\ntrigger\n    |httpOut('output')\n",
  "type": "stream",
  "dbrps": [
    {
      "db": "telegraf",
      "rp": "autogen"
    }
  ],
  "status": "disabled",
  "executing": false,
  "error": "",
  "created": "2017-05-05T16:16:03.471138388-05:00",
  "modified": "2017-05-23T15:57:42.625909746-05:00",
  "last-enabled": "2017-05-05T16:16:25.890210217-05:00",
  "links": {
    "self": "/chronograf/v1/sources/5/kapacitors/5/rules/chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
    "kapacitor": "/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
    "output": "/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38%2Foutput"
  }
}

Response

Kapacitor alert rule successfully created

idstring

ID for this rule; the ID is shared with kapacitor

namestring

User facing name of the alerting rule

everystring required

Golang duration string specifying how often the alert condition is checked

messagestring

Message to send when alert occurs.

detailsstring

Template for constructing a detailed HTML message for the alert. (Currently, only used for email/smtp

trigger'deadman' | 'relative' | 'threshold' required

Trigger defines the alerting structure; deadman alert if no data are received for the specified time range; relative alert if the data change relative to the data in a different time range; threshold alert if the data cross a boundary

tickscriptstring

TICKscript representing this rule

status'enabled' | 'disabled'

Represents if this rule is enabled or disabled in kapacitor

executingboolean

Whether the task is currently executing.

type'stream' | 'batch'

Represents the task type where stream is data streamed to kapacitor and batch is queried by kapacitor.

errorstring

Any error encountered when kapacitor executes the task.

createdstring

Date the task was first created

modifiedstring

Date the task was last modified

last-enabledstring

Date the task was last set to status enabled

template-idstring

Template ID when created from template

varsobject

task external variables

Example response

{
  "id": "chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
  "query": {
    "id": "ce72917d-1ecb-45ea-a6cb-4c122deb93c7",
    "database": "telegraf",
    "measurement": "cpu",
    "retentionPolicy": "autogen",
    "fields": [
      {
        "value": "max",
        "type": "func",
        "args": [
          {
            "value": "usage_system",
            "type": "field"
          }
        ]
      }
    ],
    "tags": {},
    "groupBy": {
      "time": "10m",
      "tags": []
    },
    "areTagsAccepted": true
  },
  "every": "30s",
  "alertNodes": {
    "typeOf": "alert",
    "stateChangesOnly": true,
    "noRecoveries": false,
    "useFlapping": false,
    "post": [],
    "tcp": [],
    "email": [],
    "exec": [],
    "log": [],
    "victorOps": [],
    "pagerDuty": [],
    "pagerDuty2": [],
    "pushover": [],
    "sensu": [],
    "slack": [],
    "telegram": [],
    "alerta": [
      {
        "token": "",
        "resource": "res",
        "event": "evt",
        "environment": "env",
        "group": "grp",
        "value": "val",
        "origin": "kapacitor",
        "service": [
          "svc"
        ]
      }
    ],
    "opsGenie": [],
    "opsGenie2": [],
    "talk": [],
    "kafka": [],
    "serviceNow": null,
    "bigPanda": null,
    "teams": null,
    "zenoss": null
  },
  "message": "too much spam",
  "details": "muh body",
  "trigger": "threshold",
  "values": {
    "operator": "greater than",
    "value": "10"
  },
  "name": "Untitled Rule",
  "tickscript": "var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: TRUE\n\nvar period = 10m\n\nvar every = 30s\n\nvar name = 'Untitled Rule'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = 'too much spam'\n\nvar idTag = 'alertID'\n\nvar levelTag = 'level'\n\nvar messageField = 'message'\n\nvar durationField = 'duration'\n\nvar outputDB = 'chronograf'\n\nvar outputRP = 'autogen'\n\nvar outputMeasurement = 'alerts'\n\nvar triggerType = 'threshold'\n\nvar details = 'muh body'\n\nvar crit = 10\n\nvar data = stream\n    |from()\n        .database(db)\n        .retentionPolicy(rp)\n        .measurement(measurement)\n        .groupBy(groupBy)\n        .where(whereFilter)\n    |window()\n        .period(period)\n        .every(every)\n        .align()\n    |max('usage_system')\n        .as('value')\n\nvar trigger = data\n    |alert()\n        .crit(lambda: \"value\" > crit)\n        .stateChangesOnly()\n        .message(message)\n        .id(idVar)\n        .idTag(idTag)\n        .levelTag(levelTag)\n        .messageField(messageField)\n        .durationField(durationField)\n        .details(details)\n        .alerta()\n        .resource('res')\n        .event('evt')\n        .environment('env')\n        .group('grp')\n        .value('val')\n        .origin('kapacitor')\n        .services('svc')\n        .correlated()\n\ntrigger\n    |influxDBOut()\n        .create()\n        .database(outputDB)\n        .retentionPolicy(outputRP)\n        .measurement(outputMeasurement)\n        .tag('alertName', name)\n        .tag('triggerType', triggerType)\n\ntrigger\n    |httpOut('output')\n",
  "type": "stream",
  "dbrps": [
    {
      "db": "telegraf",
      "rp": "autogen"
    }
  ],
  "status": "disabled",
  "executing": false,
  "error": "",
  "created": "2017-05-05T16:16:03.471138388-05:00",
  "modified": "2017-05-23T15:57:42.625909746-05:00",
  "last-enabled": "2017-05-05T16:16:25.890210217-05:00",
  "links": {
    "self": "/chronograf/v1/sources/5/kapacitors/5/rules/chronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
    "kapacitor": "/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38",
    "output": "/chronograf/v1/sources/5/kapacitors/5/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-b2b065ea-79bd-4e4f-8c0d-d0ef68477d38%2Foutput"
  }
}