feat(ui): remove hipchat

pull/5700/head
Pavel Zavora 2021-03-11 22:17:33 +01:00
parent c7a2c1d05b
commit 698e64538a
13 changed files with 10 additions and 455 deletions

View File

@ -21,7 +21,6 @@ import {
import {
AlertaConfig,
HipChatConfig,
OpsGenieConfig,
PagerDutyConfig,
PagerDuty2Config,
@ -77,7 +76,6 @@ interface Section {
interface Sections {
alerta: Section
hipchat: Section
httppost: Section
influxdb: Section
kafka: Section
@ -234,15 +232,6 @@ class AlertTabs extends PureComponent<Props, State> {
enabled={this.getConfigEnabled(configSections, AlertTypes.alerta)}
/>
)
case AlertTypes.hipchat:
return (
<HipChatConfig
onSave={this.handleSaveConfig(AlertTypes.hipchat)}
config={this.getSectionElement(configSections, AlertTypes.hipchat)}
onTest={this.handleTestConfig(AlertTypes.hipchat)}
enabled={this.getConfigEnabled(configSections, AlertTypes.hipchat)}
/>
)
case AlertTypes.kafka:
return (
<KafkaConfigs

View File

@ -7,7 +7,6 @@ import {
LogHandler,
EmailHandler,
AlertaHandler,
HipchatHandler,
KafkaHandler,
OpsgenieHandler,
PagerdutyHandler,
@ -85,15 +84,6 @@ class HandlerOptions extends Component {
validationError={validationError}
/>
)
case 'hipChat':
return (
<HipchatHandler
selectedHandler={selectedHandler}
handleModifyHandler={handleModifyHandler}
onGoToConfig={onGoToConfig('hipchat')}
validationError={validationError}
/>
)
case 'kafka':
return (
<KafkaHandler

View File

@ -32,7 +32,6 @@ interface Props {
interface HandlerKind {
alerta?: number
hipchat?: number
httppost?: number
influxdb?: number
kafka?: number

View File

@ -1,159 +0,0 @@
import _ from 'lodash'
import React, {PureComponent, ChangeEvent} from 'react'
import QuestionMarkTooltip from 'src/shared/components/QuestionMarkTooltip'
import {HIPCHAT_TOKEN_TIP} from 'src/kapacitor/copy'
import RedactedInput from 'src/kapacitor/components/config/RedactedInput'
import {ErrorHandling} from 'src/shared/decorators/errors'
import {HipChatProperties} from 'src/types/kapacitor'
interface Config {
options: {
room: string
token: boolean
url: string
enabled: boolean
}
}
interface Props {
config: Config
onSave: (properties: HipChatProperties) => Promise<boolean>
onTest: (event: React.MouseEvent<HTMLButtonElement>) => void
enabled: boolean
}
interface State {
testEnabled: boolean
enabled: boolean
}
@ErrorHandling
class HipchatConfig extends PureComponent<Props, State> {
private room: HTMLInputElement
private token: HTMLInputElement
private url: HTMLInputElement
constructor(props) {
super(props)
this.state = {
testEnabled: this.props.enabled,
enabled: _.get(this.props, 'config.options.enabled', false),
}
}
public render() {
const {options} = this.props.config
const {url, room, token} = options
const {testEnabled, enabled} = this.state
const subdomain = url
.replace('https://', '')
.replace('.hipchat.com/v2/room', '')
return (
<form onSubmit={this.handleSubmit}>
<div className="form-group col-xs-12">
<label htmlFor="url">Subdomain</label>
<input
className="form-control"
id="url"
type="text"
placeholder="your-subdomain"
ref={r => (this.url = r)}
defaultValue={subdomain && subdomain.length ? subdomain : ''}
onChange={this.disableTest}
/>
</div>
<div className="form-group col-xs-12">
<label htmlFor="room">Room</label>
<input
className="form-control"
id="room"
type="text"
placeholder="your-hipchat-room"
ref={r => (this.room = r)}
defaultValue={room || ''}
onChange={this.disableTest}
/>
</div>
<div className="form-group col-xs-12">
<label htmlFor="token">
Token
<QuestionMarkTooltip tipID="token" tipContent={HIPCHAT_TOKEN_TIP} />
</label>
<RedactedInput
defaultValue={token}
id="token"
refFunc={this.handleTokenRef}
disableTest={this.disableTest}
isFormEditing={!testEnabled}
/>
</div>
<div className="form-group col-xs-12">
<div className="form-control-static">
<input
type="checkbox"
id="disabled"
checked={enabled}
onChange={this.handleEnabledChange}
/>
<label htmlFor="disabled">Configuration Enabled</label>
</div>
</div>
<div className="form-group form-group-submit col-xs-12 text-center">
<button
className="btn btn-primary"
type="submit"
disabled={this.state.testEnabled}
>
<span className="icon checkmark" />
Save Changes
</button>
<button
className="btn btn-primary"
disabled={!this.state.testEnabled || !enabled}
onClick={this.props.onTest}
>
<span className="icon pulse-c" />
Send Test Alert
</button>
</div>
</form>
)
}
private handleEnabledChange = (e: ChangeEvent<HTMLInputElement>) => {
this.setState({enabled: e.target.checked})
this.disableTest()
}
private handleSubmit = async e => {
e.preventDefault()
const properties: HipChatProperties = {
room: this.room.value,
url: `https://${this.url.value}.hipchat.com/v2/room`,
token: this.token.value,
enabled: this.state.enabled,
}
const success = await this.props.onSave(properties)
if (success) {
this.setState({testEnabled: true})
}
}
private disableTest = () => {
this.setState({testEnabled: false})
}
private handleTokenRef = r => (this.token = r)
}
export default HipchatConfig

View File

@ -1,5 +1,4 @@
import AlertaConfig from './AlertaConfig'
import HipChatConfig from './HipChatConfig'
import KafkaConfig from './KafkaConfig'
import OpsGenieConfig from './OpsGenieConfig'
import PagerDutyConfig from './PagerDutyConfig'
@ -17,7 +16,6 @@ import ServiceNowConfig from './ServiceNowConfig'
export {
AlertaConfig,
HipChatConfig,
KafkaConfig,
OpsGenieConfig,
PagerDutyConfig,

View File

@ -1,69 +0,0 @@
import React from 'react'
import PropTypes from 'prop-types'
import HandlerInput from 'src/kapacitor/components/HandlerInput'
import HandlerEmpty from 'src/kapacitor/components/HandlerEmpty'
const HipchatHandler = ({
selectedHandler,
handleModifyHandler,
onGoToConfig,
validationError,
}) =>
selectedHandler.enabled ? (
<div className="endpoint-tab-contents">
<div className="endpoint-tab--parameters">
<h4 className="u-flex u-jc-space-between">
Parameters from Kapacitor Configuration
<div className="btn btn-default btn-sm" onClick={onGoToConfig}>
<span className="icon cog-thick" />
{validationError
? 'Exit this Rule and Edit Configuration'
: 'Save this Rule and Edit Configuration'}
</div>
</h4>
<div className="faux-form">
<HandlerInput
selectedHandler={selectedHandler}
handleModifyHandler={handleModifyHandler}
fieldName="token"
fieldDisplay="Token:"
placeholder="ex: the_token"
redacted={true}
fieldColumns="col-md-12"
/>
<HandlerInput
selectedHandler={selectedHandler}
handleModifyHandler={handleModifyHandler}
fieldName="url"
fieldDisplay="Subdomain Url"
placeholder="ex: hipchat_subdomain"
disabled={true}
/>
<HandlerInput
selectedHandler={selectedHandler}
handleModifyHandler={handleModifyHandler}
fieldName="room"
fieldDisplay="Room:"
placeholder="ex: room_name"
/>
</div>
</div>
</div>
) : (
<HandlerEmpty
onGoToConfig={onGoToConfig}
validationError={validationError}
/>
)
const {func, shape, string} = PropTypes
HipchatHandler.propTypes = {
selectedHandler: shape({}).isRequired,
handleModifyHandler: func.isRequired,
onGoToConfig: func.isRequired,
validationError: string.isRequired,
}
export default HipchatHandler

View File

@ -3,7 +3,6 @@ import TcpHandler from './TcpHandler'
import ExecHandler from './ExecHandler'
import LogHandler from './LogHandler'
import AlertaHandler from './AlertaHandler'
import HipchatHandler from './HipchatHandler'
import KafkaHandler from './KafkaHandler'
import OpsgenieHandler from './OpsgenieHandler'
import PagerdutyHandler from './PagerdutyHandler'
@ -24,7 +23,6 @@ export {
LogHandler,
EmailHandler,
AlertaHandler,
HipchatHandler,
KafkaHandler,
OpsgenieHandler,
PagerdutyHandler,

View File

@ -11,7 +11,6 @@ import {
export enum AlertTypes {
seperator = '',
alerta = 'alerta',
hipchat = 'hipchat',
httppost = 'httppost',
influxdb = 'influxdb',
kafka = 'kafka',
@ -37,7 +36,6 @@ export enum AlertTypes {
export enum AlertDisplayText {
alerta = 'Alerta',
hipchat = 'HipChat',
kafka = 'Kafka',
opsgenie = 'OpsGenie',
opsgenie2 = 'OpsGenie2',
@ -55,7 +53,6 @@ export enum AlertDisplayText {
export const SupportedServices: string[] = [
'alerta',
'hipchat',
'kafka',
'opsgenie',
'opsgenie2',
@ -207,7 +204,6 @@ export const DEFAULT_HANDLERS: Handler[] = [
]
export const MAP_KEYS_FROM_CONFIG: KeyMappings = {
hipchat: 'hipChat',
opsgenie: 'opsGenie',
opsgenie2: 'opsGenie2',
pagerduty: 'pagerDuty',
@ -220,7 +216,6 @@ export const MAP_KEYS_FROM_CONFIG: KeyMappings = {
// ALERTS_FROM_CONFIG the array of fields to accept from Kapacitor Config
export const ALERTS_FROM_CONFIG: FieldsFromConfigAlerts = {
alerta: ['environment', 'origin', 'token'], // token = bool
hipChat: ['url', 'room', 'token'], // token = bool
kafka: ['id'],
opsGenie: ['api-key', 'teams', 'recipients'], // api-key = bool
opsGenie2: ['api-key', 'teams', 'recipients'], // api-key = bool
@ -247,7 +242,6 @@ export const ALERTS_FROM_CONFIG: FieldsFromConfigAlerts = {
export const MAP_FIELD_KEYS_FROM_CONFIG: ConfigKeyMaps = {
alerta: {},
hipChat: {},
opsGenie: {},
opsGenie2: {},
pagerDuty: {'service-key': 'serviceKey'},
@ -281,7 +275,6 @@ export const HANDLERS_TO_RULE_THEM_ALL: FieldsFromAllAlerts = {
'origin',
'service',
],
hipChat: ['room'],
kafka: ['id', 'cluster', 'kafka-topic', 'template'],
opsGenie: ['teams', 'recipients'],
opsGenie2: ['teams', 'recipients'],

View File

@ -1,8 +1,3 @@
// HipChat
const hipchatTokenLink =
'https://docs.influxdata.com/kapacitor/latest/guides/event-handler-setup/#hipchat-api-access-token'
export const HIPCHAT_TOKEN_TIP = `<p>Need help creating a token?<br/>Check out <a href='${hipchatTokenLink}' target='_blank'>these steps</a>.</p>`
// Pushover
const pushoverDocsLink =
'https://docs.influxdata.com/kapacitor/latest/nodes/alert_node/#pushover'

View File

@ -84,7 +84,6 @@ interface AlertNodes {
sensu: Sensu[]
slack: Slack[]
telegram: Telegram[]
hipChat: HipChat[]
alerta: Alerta[]
opsGenie: OpsGenie[]
opsGenie2?: OpsGenie[]
@ -159,12 +158,6 @@ interface PagerDuty2 {
routingKey: string
}
// HipChat sends alerts to stride.com
interface HipChat {
room: string
token: string
}
// Sensu sends alerts to sensu or sensuapp.org
interface Sensu {
source: string
@ -268,7 +261,6 @@ export interface RuleMessage {
}
export interface KeyMappings {
hipchat: string
opsgenie: string
opsgenie2: string
pagerduty: string
@ -280,7 +272,6 @@ export interface KeyMappings {
export interface FieldsFromConfigAlerts {
alerta: string[]
hipChat: string[]
kafka: string[]
opsGenie: string[]
opsGenie2: string[]
@ -339,13 +330,6 @@ export interface AlertaProperties {
enabled: boolean
}
export interface HipChatProperties {
room: string
url: string
token: string
enabled: boolean
}
export interface KafkaProperties {
id?: string
brokers: string[]
@ -442,7 +426,6 @@ export interface ServiceNowProperties {
export type ServiceProperties =
| AlertaProperties
| HipChatProperties
| KafkaProperties
| OpsGenieProperties
| PagerDutyProperties

View File

@ -48,7 +48,7 @@ describe('Kapacitor.Components.TasksTable', () => {
describe('checkbox', () => {
it('has the correct htmlFor its label', () => {
const task = kapacitorRules[3]
const task = kapacitorRules[2]
const tasks = [task]
const {wrapper} = setup({tasks})
@ -63,7 +63,7 @@ describe('Kapacitor.Components.TasksTable', () => {
describe('user interaction', () => {
it('calls onChangeRuleStatus when checkbox is effectively clicked', () => {
const task = kapacitorRules[3]
const task = kapacitorRules[2]
const tasks = [task]
const onChangeRuleStatus = jest.fn()
@ -74,7 +74,7 @@ describe('Kapacitor.Components.TasksTable', () => {
checkbox.simulate('change')
expect(onChangeRuleStatus).toHaveBeenCalledTimes(1)
expect(onChangeRuleStatus).toHaveBeenCalledWith(kapacitorRules[3])
expect(onChangeRuleStatus).toHaveBeenCalledWith(kapacitorRules[2])
})
})
})

View File

@ -191,7 +191,6 @@ export const kapacitorRules = [
],
slack: [],
telegram: [],
hipChat: [],
alerta: [],
opsGenie: [],
talk: [],
@ -276,7 +275,6 @@ export const kapacitorRules = [
sensu: [],
slack: [],
telegram: [],
hipChat: [],
alerta: [
{
token: '',
@ -323,89 +321,11 @@ export const kapacitorRules = [
'/chronograf/v1/sources/1/kapacitors/1/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-75b638b0-1530-4163-adab-c9631386e0a2%2Foutput',
},
},
{
id: 'chronograf-v1-7734918d-b8b6-460d-a416-34767ba76faa',
tickscript:
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: (\"host\" == 'Bobs-MacBook-Pro.local')\n\nvar period = 24h\n\nvar name = 'xena'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = ''\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 = 'deadman'\n\nvar threshold = 0.0\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n\nvar trigger = data\n |deadman(threshold, period)\n .stateChangesOnly()\n .message(message)\n .id(idVar)\n .idTag(idTag)\n .levelTag(levelTag)\n .messageField(messageField)\n .durationField(durationField)\n .hipChat()\n .room('asdf')\n\ntrigger\n |eval(lambda: \"emitted\")\n .as('value')\n .keep('value', messageField, durationField)\n |eval(lambda: float(\"value\"))\n .as('value')\n .keep()\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",
query: {
id: 'chronograf-v1-7734918d-b8b6-460d-a416-34767ba76faa',
database: 'telegraf',
measurement: 'cpu',
retentionPolicy: 'autogen',
fields: [],
tags: {
host: ['Bobs-MacBook-Pro.local'],
},
groupBy: {
time: '',
tags: [],
},
areTagsAccepted: true,
rawText: null,
range: null,
shifts: null,
},
every: '',
alertNodes: {
typeOf: 'alert',
stateChangesOnly: true,
useFlapping: false,
post: [],
tcp: [],
email: [],
exec: [],
log: [],
victorOps: [],
pagerDuty: [],
pushover: [],
sensu: [],
slack: [],
telegram: [],
hipChat: [
{
room: 'asdf',
token: '',
},
],
alerta: [],
opsGenie: [],
talk: [],
},
message: '',
details: '',
trigger: 'deadman',
values: {
period: '24h0m0s',
rangeValue: '',
},
name: 'xena',
type: 'stream',
dbrps: [
{
db: 'telegraf',
rp: 'autogen',
},
],
status: 'disabled',
executing: false,
error: '',
created: '2018-01-05T15:44:54.657212781-08:00',
modified: '2018-03-13T17:17:19.099800735-07:00',
'last-enabled': '2018-03-13T17:17:15.964357573-07:00',
links: {
self:
'/chronograf/v1/sources/1/kapacitors/1/rules/chronograf-v1-7734918d-b8b6-460d-a416-34767ba76faa',
kapacitor:
'/chronograf/v1/sources/1/kapacitors/1/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-7734918d-b8b6-460d-a416-34767ba76faa',
output:
'/chronograf/v1/sources/1/kapacitors/1/proxy?path=%2Fkapacitor%2Fv1%2Ftasks%2Fchronograf-v1-7734918d-b8b6-460d-a416-34767ba76faa%2Foutput',
},
},
{
// if rule has no `query` key, it will display as a tickscript task only
id: 'chronograf-v1-7734918d-b8b6-460d-a416-34767ba76aac',
tickscript:
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: (\"host\" == 'Bobs-MacBook-Pro.local')\n\nvar period = 24h\n\nvar name = 'xena'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = ''\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 = 'deadman'\n\nvar threshold = 0.0\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n\nvar trigger = data\n |deadman(threshold, period)\n .stateChangesOnly()\n .message(message)\n .id(idVar)\n .idTag(idTag)\n .levelTag(levelTag)\n .messageField(messageField)\n .durationField(durationField)\n .hipChat()\n .room('asdf')\n\ntrigger\n |eval(lambda: \"emitted\")\n .as('value')\n .keep('value', messageField, durationField)\n |eval(lambda: float(\"value\"))\n .as('value')\n .keep()\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",
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: (\"host\" == 'Bobs-MacBook-Pro.local')\n\nvar period = 24h\n\nvar name = 'xena'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = ''\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 = 'deadman'\n\nvar threshold = 0.0\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n\nvar trigger = data\n |deadman(threshold, period)\n .stateChangesOnly()\n .message(message)\n .id(idVar)\n .idTag(idTag)\n .levelTag(levelTag)\n .messageField(messageField)\n .durationField(durationField)\n .sensu()\n .source('Kapacitorsdfasdf')\n\n\ntrigger\n |eval(lambda: \"emitted\")\n .as('value')\n .keep('value', messageField, durationField)\n |eval(lambda: float(\"value\"))\n .as('value')\n .keep()\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",
every: '',
alertNodes: {
typeOf: 'alert',
@ -419,15 +339,14 @@ export const kapacitorRules = [
victorOps: [],
pagerDuty: [],
pushover: [],
sensu: [],
slack: [],
telegram: [],
hipChat: [
sensu: [
{
room: 'asdf',
token: '',
source: 'Kapacitorsdfasdf',
handlers: [],
},
],
slack: [],
telegram: [],
alerta: [],
opsGenie: [],
talk: [],

View File

@ -29,29 +29,6 @@ export const config = {
},
],
},
hipchat: {
link: {
rel: 'self',
href: '/kapacitor/v1/config/hipchat',
},
elements: [
{
link: {
rel: 'self',
href: '/kapacitor/v1/config/hipchat/',
},
options: {
enabled: true,
global: false,
room: 'hipchat',
'state-changes-only': false,
token: true,
url: 'https://hipchat.hipchat.com/v2/room',
},
redacted: ['token'],
},
],
},
influxdb: {
link: {
rel: 'self',
@ -400,13 +377,6 @@ export const configResponse = [
origin: 'alerta',
token: true,
},
{
type: 'hipChat',
enabled: true,
url: 'https://hipchat.hipchat.com/v2/room',
room: 'hipchat',
token: true,
},
{
type: 'opsGenie',
enabled: true,
@ -500,29 +470,6 @@ export const emptyConfig = {
},
],
},
hipchat: {
link: {
rel: 'self',
href: '/kapacitor/v1/config/hipchat',
},
elements: [
{
link: {
rel: 'self',
href: '/kapacitor/v1/config/hipchat/',
},
options: {
enabled: false,
global: false,
room: '',
'state-changes-only': false,
token: false,
url: '',
},
redacted: ['token'],
},
],
},
influxdb: {
link: {
rel: 'self',
@ -871,13 +818,6 @@ export const emptyConfigResponse = [
origin: '',
token: false,
},
{
type: 'hipChat',
enabled: false,
url: '',
room: '',
token: false,
},
{
type: 'opsGenie',
enabled: false,
@ -965,13 +905,6 @@ export const handlersfromConfig = [
origin: 'alerta',
token: true,
},
{
type: 'hipChat',
enabled: true,
url: 'https://hipchat.hipchat.com/v2/room',
room: 'hipchat',
token: true,
},
{
type: 'opsGenie',
enabled: true,
@ -1120,13 +1053,6 @@ export const handlersOnThisAlertExpected = [
alias: 'telegram-1',
type: 'telegram',
},
{
enabled: true,
room: 'room',
token: '',
alias: 'hipChat-1',
type: 'hipChat',
},
{
enabled: true,
token: '',
@ -1181,7 +1107,6 @@ export const handlersOfKindExpected = {
sensu: 1,
slack: 1,
telegram: 1,
hipChat: 1,
alerta: 1,
opsGenie: 2,
talk: 1,
@ -1190,7 +1115,7 @@ export const handlersOfKindExpected = {
export const rule = {
id: 'chronograf-v1-8e3ba5df-f5ca-4cf4-848e-7e4a4acde86e',
tickscript:
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: (\"host\" == 'denizs-MacBook-Pro.local')\n\nvar name = 'Untitled Rule'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = ''\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 = 'lkajsd;fl'\n\nvar crit = 30\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n |eval(lambda: \"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 .post('http://example.com')\n .header('key', 'val')\n .tcp('exampleendpoint.com:8082')\n .email()\n .to('bob@domain.com')\n .email()\n .to('asdfsdf')\n .exec('command', 'arg')\n .log('/tmp/log')\n .victorOps()\n .routingKey('victoropsasdf')\n .pagerDuty()\n .pushover()\n .device('asdf')\n .title('asdf')\n .sound('asdf')\n .sensu()\n .source('Kapacitor')\n .handlers('asdf')\n .slack()\n .channel('slack')\n .username('asdf')\n .iconEmoji('asdf')\n .telegram()\n .chatId('telegram')\n .parseMode('Markdown')\n .hipChat()\n .room('room')\n .alerta()\n .resource('alerta')\n .event('alerta')\n .environment('alerta')\n .group('alerta')\n .value('alerta')\n .origin('alerta')\n .services('alerta')\n .opsGenie()\n .teams('team')\n .recipients('recip')\n .opsGenie()\n .teams('team')\n .recipients('team')\n .talk()\n\ntrigger\n |eval(lambda: float(\"value\"))\n .as('value')\n .keep()\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",
"var db = 'telegraf'\n\nvar rp = 'autogen'\n\nvar measurement = 'cpu'\n\nvar groupBy = []\n\nvar whereFilter = lambda: (\"host\" == 'denizs-MacBook-Pro.local')\n\nvar name = 'Untitled Rule'\n\nvar idVar = name + ':{{.Group}}'\n\nvar message = ''\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 = 'lkajsd;fl'\n\nvar crit = 30\n\nvar data = stream\n |from()\n .database(db)\n .retentionPolicy(rp)\n .measurement(measurement)\n .groupBy(groupBy)\n .where(whereFilter)\n |eval(lambda: \"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 .post('http://example.com')\n .header('key', 'val')\n .tcp('exampleendpoint.com:8082')\n .email()\n .to('bob@domain.com')\n .email()\n .to('asdfsdf')\n .exec('command', 'arg')\n .log('/tmp/log')\n .victorOps()\n .routingKey('victoropsasdf')\n .pagerDuty()\n .pushover()\n .device('asdf')\n .title('asdf')\n .sound('asdf')\n .sensu()\n .source('Kapacitor')\n .handlers('asdf')\n .slack()\n .channel('slack')\n .username('asdf')\n .iconEmoji('asdf')\n .telegram()\n .chatId('telegram')\n .parseMode('Markdown')\n .alerta()\n .resource('alerta')\n .event('alerta')\n .environment('alerta')\n .group('alerta')\n .value('alerta')\n .origin('alerta')\n .services('alerta')\n .opsGenie()\n .teams('team')\n .recipients('recip')\n .opsGenie()\n .teams('team')\n .recipients('team')\n .talk()\n\ntrigger\n |eval(lambda: float(\"value\"))\n .as('value')\n .keep()\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",
query: {
id: 'chronograf-v1-8e3ba5df-f5ca-4cf4-848e-7e4a4acde86e',
database: 'telegraf',
@ -1294,12 +1219,6 @@ export const rule = {
disableNotification: false,
},
],
hipChat: [
{
room: 'room',
token: '',
},
],
alerta: [
{
token: '',