feat(ui): remove hipchat
parent
c7a2c1d05b
commit
698e64538a
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -32,7 +32,6 @@ interface Props {
|
|||
|
||||
interface HandlerKind {
|
||||
alerta?: number
|
||||
hipchat?: number
|
||||
httppost?: number
|
||||
influxdb?: number
|
||||
kafka?: number
|
||||
|
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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
|
|
@ -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,
|
||||
|
|
|
@ -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'],
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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])
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -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: [],
|
||||
|
|
|
@ -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: '',
|
||||
|
|
Loading…
Reference in New Issue