SlideShare a Scribd company logo
Agenda: Seasoned Developers Track
WORKSHOPAGENDA
8:00 AM – 9:00 AM Breakfast
9:00 AM – 10:00 AM InfluxDB Functional Query Language (IFQL) Paul Dix
10:00 AM – 10:50 AM Writing a Telegraf Plugin Noah Crowley
10:50 AM – 11:20 AM Break
11:20 AM – 12:10 PM Using InfluxDB for Open Tracing Chris Goller
12:10 PM – 1:10 PM Lunch
1:10 PM – 2:00 PM Advanced Kapacitor Michael DeSa
2:00 PM – 2:10 PM Break
2:10 PM – 3:10 PM Setting Up InfluxData for IoT David Simmons
3:10 PM – 4:00 PM A True Story About Database Orchestration Gianluca Arbezzano
4:00 PM Pizza and Beer
Michael DeSa
Software Engineer
@mjdesa
Advanced Kapacitor
Michael DeSa is a Software Engineer at InfluxData who focuses
on increasing the performance capabilities of InfluxDB. He has
led the InfluxDB training course across the US, providing
students with an in depth understanding of how InfluxDB works
as well as sharing best practices. He has a degree in Math, with
a focus on Abstract Algebra, from the University of California, at
Berkeley and was an Instructor of the Web Development
Immersive series at General Assembly in San Francisco.
Kapacitor
© 2017 InfluxData. All rights reserved.4
Agenda
¨ What is Kapacitor
¨ Understand TICKscript
¨ Quoting rules
¨ Understand Batch vs Stream
¨ Use Kapacitor for
¨ Downsampling
¨ Alerting
¨ Creating Templated Tasks
¨ Using Topics
¨ Debugging TICKscript
¨ Examples
¨ Working with Telegraf Data
© 2017 InfluxData. All rights reserved.5
© 2017 InfluxData. All rights reserved.6
What is it?
¨ Native time-series processing engine
¨ Process stream and batch data from
InfluxDB
¨ Generates Alerts on dynamic criteria
¨ match metrics for patterns
¨ compute statistical anomalies
¨ perform specific actions
¨ Integrates with 15+ Alert Providers
¨ OpsGenie
¨ Sensu
¨ PagerDuty
¨ Slack
¨ and more.
© 2017 InfluxData. All rights reserved.7
Kapacitor Components
Server Daemon (kapacitord)
● Config for
inputs/outputs/services/ etc.
Tasks - units of work
● Defined by a TICKscript
● Stream or Batch
● DAG - pipeline
CLI (kapacitor)
● Calls for HTTP API or server
● Not interactive
Recordings - saved data
● Useful for isolated testing
Templates -
● Building many instances of a
templated task
Topics & topics handlers
● Generic rules for all alters
Defining Tasks
© 2017 InfluxData. All rights reserved.9
TICKScript
var measurement = 'requests'
var data = stream
|from()
.measurement(measurement)
|where(lambda: "is_up" == TRUE)
|where(lambda: "my_field" > 10)
|window()
.period(5m)
.every(5m)
// Count number of points in window
data
|count('value')
.as('the_count')
// Compute mean of data window
data
|mean('value')
.as('the_average')
● Chain invocation language
○ | chains together different nodes
○ . refers to specific attributes on a node
● Variables refer to values
○ Strings
○ Ints, Floats
○ Durations
○ Pipelines
© 2017 InfluxData. All rights reserved.10
TICKScript Syntax - Quoting Rules
// ' means the use the literal string value
var measurement = 'requests'
var data = stream
|from()
.measurement(measurement)
// " means use the reference value
|where(lambda: "is_up" == TRUE)
|where(lambda: "my_field" > 10)
|window()
.period(5m)
.every(5m)
// ' means the use the literal string value
data
|count('value')
.as('the_count')
● Double Quotes
○ References data in lambda expression
● Single Quotes
○ Literal String value
© 2017 InfluxData. All rights reserved.11
Create a Stream TICKscript
// cpu.tick
stream
|from()
.measurement('cpu')
|log()
● Logs all data from the measurement cpu
© 2017 InfluxData. All rights reserved.12
Create a Stream Task
$ kapacitor define cpu 
-tick cpu.tick 
dbrp “telegraf”.”autogen”
// cpu.tick
stream
|from()
.measurement('cpu')
|log()
© 2017 InfluxData. All rights reserved.13
Create a Stream Task
$ kapacitor define cpu 
-tick cpu.tick 
// cpu.tick
dbrp “telegraf”.”autogen”
dbrp “telegraf”.”not_autogen”
stream
|from()
.measurement('cpu')
.database(‘telegraf’)
.retentionPolicy(‘not_autogen’)
|log()
© 2017 InfluxData. All rights reserved.14
Show a Stream Task
$ kapacitor define cpu 
-tick cpu.tick 
-type stream 
-dbrp telegraf.autogen
$ kapacitor enable cpu
$ kapacitor show cpu
ID: cpu
Error:
Template:
Type: stream
Status: enabled
Executing: true
Created: 10 Oct 17 16:05 EDT
Modified: 10 Oct 17 16:05 EDT
LastEnabled: 01 Jan 01 00:00 UTC
Databases Retention Policies: ["telegraf"."autogen"]
TICKscript:
// cpu.tick
stream
|from()
.measurement('cpu')
|log()
DOT:
digraph cpu {
stream0 -> from1;
from1 -> log2;
}
© 2017 InfluxData. All rights reserved.15
Create a More Interesting Stream TICKscript
// cpu.tick
stream
|from()
.measurement('cpu')
|window()
.period(5m)
.every(1m)
|mean('usage_user')
.as('mean_usage_user')
|log()
● Create 5m windows of data that emit every 1m
● Compute the average of the field usage_user
● Log the result
© 2017 InfluxData. All rights reserved.16
An even more interesting TICKscript
// cpu.tick
stream
|from()
.measurement('cpu')
|where(lambda: "cpu" == 'cpu-total')
|window()
.period(5m)
.every(1m)
|mean('usage_user')
.as('mean_usage_user')
|log()
● Filter on the tag cpu=cpu-total
● Create 5m windows of data that emit every 1m
● Compute the average of the field usage_user
● Log the result
© 2017 InfluxData. All rights reserved.17
Adding Alerts
// cpu.tick
stream
|from()
.measurement('cpu')
|where(lambda: "cpu" == 'cpu-total')
|window()
.period(5m)
.every(1m)
|mean('usage_user')
.as('mean_usage_user')
|alert()
.crit(lambda: "mean_usage_user" > 80)
.message('cpu usage high!')
.slack()
.channel('alerts')
.email('oncall@example.com')
● Filter on the tag cpu=cpu-total
● Create 5m windows of data that emit every 1m
● Compute the average of the field usage_user
● Alert when mean_usage_user > 80
● Send alert to
○ Slack channel alerts
○ Email oncall@example.com
© 2017 InfluxData. All rights reserved.18
Create a Batch TICKscript
// batch_cpu.tick
batch
|query('''
SELECT mean("usage_user") AS mean_usage_user
FROM "telegraf"."autogen"."cpu"
''')
.period(5m)
.every(1m)
|log()
● Query 5m windows of data every 1m
● Compute the average of the field usage_user
● Log the result
© 2017 InfluxData. All rights reserved.19
Create a Batch Task
$ kapacitor define batch_cpu 
-tick batch_cpu.tick 
-type batch 
-dbrp telegraf.autogen
// cpu.tick
stream
|from()
.measurement('cpu')
|log()
// batch_cpu.tick
batch
|query('''
SELECT mean("usage_user") AS mean_usage_user
FROM "telegraf"."autogen"."cpu"
''')
.period(5m)
.every(1m)
|log()
© 2017 InfluxData. All rights reserved.20
Create a Batch TICKscript
// batch_cpu.tick
batch
|query('''
SELECT mean("usage_user") AS mean_usage_user
FROM "telegraf"."autogen"."cpu"
''')
.period(5m)
.every(1m)
|alert()
.crit(lambda: "mean_usage_user" > 80)
.message('cpu usage high!')
.slack()
.channel('alerts')
.email('oncall@example.com')
● Query 5m windows of data every 1m
● Compute the average of the field usage_user
● Alert when mean_usage_user > 80
● Send alert to
○ Slack channel alerts
○ Email oncall@example.com
© 2017 InfluxData. All rights reserved.21
Batching Streaming
● Queries InfluxDB periodically
● Does not buffer as much of data
in RAM
● Places additional query load on
InfluxDB
● Writes are mirrored onto the
InfluxDB instance
● Buffers all data in RAM
● Places additional write load on
Kapacitor
Using Kapacitor for
Downsampling
© 2017 InfluxData. All rights reserved.23
¨ Computing the average, max, min, etc of a window of data for a particular series
What is Downsampling?
Downsampling is the process of reducing a sequence of points in a series to a single
data point
© 2017 InfluxData. All rights reserved.24
¨ Faster queries
¨ Store less data
Why Downsample?
© 2017 InfluxData. All rights reserved.25
¨ Create a task that aggregates your data
¨ Can be stream or batch depending on your use-case
¨ Writes data back into InfluxDB
¨ Typically back into another retention policy
Downsample using Kapacitor
Offload computation to a separate host
© 2017 InfluxData. All rights reserved.26
Example
// batch_cpu.tick
batch
|query('''
SELECT mean("usage_user") AS usage_user
FROM "telegraf"."autogen"."cpu"
''')
.period(5m)
.every(5m)
|influxDBOut()
.database('telegraf')
.retenionPolicy('5m')
.tag('source', 'kapacitor')
● Downsample the data into 5m windows
● Store that data back into a the 5m retention
policy in the telegraf database
Defining Task Templates
© 2017 InfluxData. All rights reserved.28
Create a Stream Template
$ kapacitor define-template generic 
-tick generic.tick 
-type stream 
// generic.tick
var measurement string
var where_filter = lambda: TRUE
var groups = [*]
var field string
var crit lambda
var window = 5m
stream
|from()
.measurement(measurement)
.where(where_filter)
.groupBy(groups)
|window()
.period(window)
.every(window)
|mean(field)
|alert()
.crit(crit)
.slack()
.channel(slack_channel)
© 2017 InfluxData. All rights reserved.29
Create a Stream Task from a Template
$ kapacitor define generic_task 
-template generic 
-vars generic_vars.json
-dbrp telegraf.autogen// generic_vars.json
{
"measurement": {"type" : "string", "value" : "cpu" },
"where_filter": {"type": "lambda", "value": ""cpu" == 'cpu-total'"},
"groups": {"type": "list", "value": [{"type":"string", "value":"host"},{"type":"string", "value":"dc"}]},
"field": {"type" : "string", "value" : "usage_idle" },
"crit": {"type" : "lambda", "value" : ""mean" < 10.0" },
"window": {"type" : "duration", "value" : "1m" },
}
© 2017 InfluxData. All rights reserved.30
Show a Templated Task
$ kapacitor show generic_taskstream
|from()
.measurement(measurement)
.where(where_filter)
.groupBy(groups)
|window()
.period(window)
.every(window)
|mean(field)
|alert()
.warn(warn)
.crit(crit)
.slack()
.channel(slack_channel)
Vars:
Name Type Value
crit lambda "mean" < 10.0
field string usage_idle
groups list [host, dc]
measurement string cpu
warn lambda "mean" < 10.0
where_filter lambda "cpu" ==
'cpu-total'
window duration 1m0s
Kapacitor Topics
© 2017 InfluxData. All rights reserved.32
Kapacitor Topics
⠒ Specified in a Tickscript
⠒ Allows users to separate the handling of alerts from the task that
generates them
⠒ Gives users the ability to handle alerts in a more sophisticated way
⠒ Follows a publish/subscribe pattern
○ Alerts are published to a topic
○ Handlers subscribe to a topic
⠒ Handlers are scoped to a topic
© 2017 InfluxData. All rights reserved.33
Without Topics
● All alert handlers had to be
defined in tickscript
● Adding a new handler required
redefining the task
○ All current task state would be lost
● Couldn’t have cascading alerts
be triggered
● Simplistic condition matching
// example.tick
stream
|from()
.measurement('cpu')
.groupBy(*)
|alert()
.warn(lambda: "usage_idle" < 20)
.crit(lambda: "usage_idle" < 10)
.slack()
.channel('#alerts')
.slack()
.channel('#on_call')
© 2017 InfluxData. All rights reserved.34
With Topics: Creating/Using a topic
● Remove all handlers in the
tickscript
● Add a topic handler
Note: Using a topic in a tickscript
creates the topic.
// example.tick
stream
|from()
.measurement('cpu')
.groupBy(*)
|alert()
.warn(lambda: "usage_idle" < 20)
.crit(lambda: "usage_idle" < 10)
.topic('basic')
© 2017 InfluxData. All rights reserved.35
With Topics: List topics
● Shows
○ Topic Name - ID
○ Current Alert Level - Level
○ Number of Alerts Published -
Collected
$ kapacitor list topics
ID Level Collected
basic OK 245
© 2017 InfluxData. All rights reserved.36
With Topics: Show Topic
● Shows
○ Topic Name - ID
○ Current Alert Level - Level
○ Number of Alerts Published -
Collected
○ Sample of Collected Events - Events
$ kapacitor show-topic basic
ID: basic
Level: OK
Collected: 247
Handlers: []
Events:
Event Level Message Date
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:10 EDT
© 2017 InfluxData. All rights reserved.37
Creating Topic Handlers
● Defining a topic handlers
requires:
○ Topic Name
○ Handler Name
○ yaml File
● Yaml file specifies
○ Type of handler - kind
■ Typically the property method
name from tickscript (e.g.
slack, post, pagerduty, etc)
○ Required Parameters - options
■ Typically the property
methods from tickscript
// alerts.yaml
kind: slack
topic: basic
id: alerts-channel
options:
channel: "#alerts"
// on_call.yaml
kind: slack
topic: basic
id: on-call-chan
options:
channel: "#on_call"
$ kapacitor define-topic-handler alerts.yaml
$ kapacitor define-topic-handler alerts.yaml
$ kapacitor define-topic-handler on_call.yaml
© 2017 InfluxData. All rights reserved.38
With Topics: List topics handlers
● Shows
○ Topic Name - Topic
○ Handler Name - ID
○ Type of handler - Kind
$ kapacitor list topic-handlers
Topic ID Kind
basic alerts-channel slack
basic on-call-chan slack
© 2017 InfluxData. All rights reserved.39
With Topics: Show Topic Handler
● Shows
○ Handler Name - ID
○ Handler Topic - Topic
○ Type of handler - Kind
○ Matching logic for alerts - Match
○ Handler Options - Options
$ kapacitor show-topic-handler basic
alerts-channel
ID: alerts-channel
Topic: basic
Kind: slack
Match:
Options: {"channel":"#alerts"}
$ kapacitor show-topic-handler basic
on-call-chan
ID: on-call-chan
Topic: basic
Kind: slack
Match:
Options: {"channel":"#on_call"}
© 2017 InfluxData. All rights reserved.40
With Topics: Show Topic (again)
● Shows
○ Topic Name - ID
○ Current Alert Level - Level
○ Number of Alerts Published -
Collected
○ Current topic handlers - Handlers
○ Sample of Collected Events - Events
$ kapacitor show-topic basic
ID: basic
Level: OK
Collected: 285
Handlers: [alerts-channel, on-call-chan]
Events:
Event Level Message Date
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 20:55 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:05 EDT
cpu OK cpu ... 05 Jul 17 21:10 EDT
© 2017 InfluxData. All rights reserved.41
Chaining Topics using Handlers
● Topics can be chained together
using a publish action.
○ This allows you to further group your
alerts into various topics.
// chain.yaml
kind: publish
topic: basic
id: chain
options:
topics:
- ops_team
$ kapacitor define-topic-handler chain.yaml
© 2017 InfluxData. All rights reserved.42
Using Match Conditions in Handlers
● Conditions for matching a
handle may be set in the match
section of the yaml file
● Must be boolean expression
● Functions
○ Any built-in Kapacitor function
○ changed()
○ level()
○ name()
○ taskName()
○ duration()
// chain.yaml
kind: publish
topic: basic
id: chain
match: changed() == TRUE
options:
topics:
- ops_team
$ kapacitor define-topic-handler chain.yaml
© 2017 InfluxData. All rights reserved.43
With Topics: Show Topic Handler
● Shows
○ Handler Name - ID
○ Handler Topic - Topic
○ Type of handler - Kind
○ Matching logic for alerts - Match
○ Handler Options - Options
$ kapacitor show-topic-handler basic chain
ID: chain
Topic: basic
Kind: publish
Match: changed() == TRUE
Options: {"topics":["ops_team"]}
© 2017 InfluxData. All rights reserved.44
Summary
● Kapacitor users can utilize topics instead of explicitly handling alerts in
tickscript
○ Requires use of topic handlers
● Handlers are scoped to a topic
○ Typically referred to as topic handlers
● Topics may be chained together using the publish handler
● Handlers have additional matching logic to allow for more sophisticated
alert event handling
● For more information visit the documentation
http://docs.influxdata.com/kapacitor/v1.4/guides/using_alert_topics/
TICKscript Examples
© 2017 InfluxData. All rights reserved.46
¨ Join data from the same period of time, yesterday
Example
© 2017 InfluxData. All rights reserved.47
¨ Join the last hour of data with the last month of data
Example
© 2017 InfluxData. All rights reserved.48
¨ Minimize the amount of fields that the window node buffers
Example
© 2017 InfluxData. All rights reserved.49
¨ Gracefully handle data that is missing fields
Example
© 2017 InfluxData. All rights reserved.50
¨ Have an alert with an OK state that is based on the absence of data
Example
© 2017 InfluxData. All rights reserved.51
¨ Trigger an CRIT, WARN, and INFO level alert if the condition for each occurs more
than once
Example
Questions?
Thank You

More Related Content

What's hot

Uber Real Time Data Analytics
Uber Real Time Data AnalyticsUber Real Time Data Analytics
Uber Real Time Data Analytics
Ankur Bansal
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
Grafana Labs
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
Younghan Kim
 
Stephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large StateStephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large State
Flink Forward
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
Anton Babenko
 
Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Mark Myers
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark
Mostafa
 
Promises, promises, and then observables
Promises, promises, and then observablesPromises, promises, and then observables
Promises, promises, and then observables
Stefan Charsley
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
Brainhub
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
Gabriele Lana
 
Redux training
Redux trainingRedux training
Redux training
dasersoft
 
Rest api with node js and express
Rest api with node js and expressRest api with node js and express
Rest api with node js and express
GirlsInTechnology Nepal
 
Garbage First Garbage Collector: Where the Rubber Meets the Road!
Garbage First Garbage Collector: Where the Rubber Meets the Road!Garbage First Garbage Collector: Where the Rubber Meets the Road!
Garbage First Garbage Collector: Where the Rubber Meets the Road!
Monica Beckwith
 
Kafka for Real-Time Replication between Edge and Hybrid Cloud
Kafka for Real-Time Replication between Edge and Hybrid CloudKafka for Real-Time Replication between Edge and Hybrid Cloud
Kafka for Real-Time Replication between Edge and Hybrid Cloud
Kai Wähner
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
Altinity Ltd
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
Hamid Ghorbani
 
Write your own telegraf plugin
Write your own telegraf pluginWrite your own telegraf plugin
Write your own telegraf plugin
InfluxData
 
Why TypeScript?
Why TypeScript?Why TypeScript?
Why TypeScript?
FITC
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
Yakov Fain
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
Databricks
 

What's hot (20)

Uber Real Time Data Analytics
Uber Real Time Data AnalyticsUber Real Time Data Analytics
Uber Real Time Data Analytics
 
Monitoring Kubernetes with Prometheus
Monitoring Kubernetes with PrometheusMonitoring Kubernetes with Prometheus
Monitoring Kubernetes with Prometheus
 
SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프SpringDataJPA - 스프링 캠프
SpringDataJPA - 스프링 캠프
 
Stephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large StateStephan Ewen - Scaling to large State
Stephan Ewen - Scaling to large State
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
 
Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling Vertical vs Horizontal Scaling
Vertical vs Horizontal Scaling
 
Programming in Spark using PySpark
Programming in Spark using PySpark      Programming in Spark using PySpark
Programming in Spark using PySpark
 
Promises, promises, and then observables
Promises, promises, and then observablesPromises, promises, and then observables
Promises, promises, and then observables
 
Introduction to RxJS
Introduction to RxJSIntroduction to RxJS
Introduction to RxJS
 
Nodejs Explained with Examples
Nodejs Explained with ExamplesNodejs Explained with Examples
Nodejs Explained with Examples
 
Redux training
Redux trainingRedux training
Redux training
 
Rest api with node js and express
Rest api with node js and expressRest api with node js and express
Rest api with node js and express
 
Garbage First Garbage Collector: Where the Rubber Meets the Road!
Garbage First Garbage Collector: Where the Rubber Meets the Road!Garbage First Garbage Collector: Where the Rubber Meets the Road!
Garbage First Garbage Collector: Where the Rubber Meets the Road!
 
Kafka for Real-Time Replication between Edge and Hybrid Cloud
Kafka for Real-Time Replication between Edge and Hybrid CloudKafka for Real-Time Replication between Edge and Hybrid Cloud
Kafka for Real-Time Replication between Edge and Hybrid Cloud
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
Write your own telegraf plugin
Write your own telegraf pluginWrite your own telegraf plugin
Write your own telegraf plugin
 
Why TypeScript?
Why TypeScript?Why TypeScript?
Why TypeScript?
 
TypeScript for Java Developers
TypeScript for Java DevelopersTypeScript for Java Developers
TypeScript for Java Developers
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
 

Similar to Advanced kapacitor

Virtual training Intro to Kapacitor
Virtual training  Intro to Kapacitor Virtual training  Intro to Kapacitor
Virtual training Intro to Kapacitor
InfluxData
 
DOWNSAMPLING DATA
DOWNSAMPLING DATADOWNSAMPLING DATA
DOWNSAMPLING DATA
InfluxData
 
Virtual training Intro to InfluxDB & Telegraf
Virtual training  Intro to InfluxDB & TelegrafVirtual training  Intro to InfluxDB & Telegraf
Virtual training Intro to InfluxDB & Telegraf
InfluxData
 
Monitoring InfluxEnterprise
Monitoring InfluxEnterpriseMonitoring InfluxEnterprise
Monitoring InfluxEnterprise
InfluxData
 
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
InfluxData
 
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
InfluxData
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
Verein FM Konferenz
 
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Databricks
 
Setting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your TestingSetting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your Testing
Jet Liu
 
IBM Monitoring and Diagnostic Tools - GCMV 2.8
IBM Monitoring and Diagnostic Tools - GCMV 2.8IBM Monitoring and Diagnostic Tools - GCMV 2.8
IBM Monitoring and Diagnostic Tools - GCMV 2.8
Chris Bailey
 
How to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita GalkinHow to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita Galkin
Sigma Software
 
Episode 3: Kubernetes and Big Data Services
Episode 3: Kubernetes and Big Data ServicesEpisode 3: Kubernetes and Big Data Services
Episode 3: Kubernetes and Big Data Services
Mesosphere Inc.
 
Finding OOMS in Legacy Systems with the Syslog Telegraf Plugin
Finding OOMS in Legacy Systems with the Syslog Telegraf PluginFinding OOMS in Legacy Systems with the Syslog Telegraf Plugin
Finding OOMS in Legacy Systems with the Syslog Telegraf Plugin
InfluxData
 
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Tom Diederich
 
Elastic Stack @ Swisscom Application Cloud
Elastic Stack @ Swisscom Application CloudElastic Stack @ Swisscom Application Cloud
Elastic Stack @ Swisscom Application Cloud
Lucas Bremgartner
 
iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)
Eran Duchan
 
Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01
Giridhar Addepalli
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
Yosuke Mizutani
 
nuclio Overview October 2017
nuclio Overview October 2017nuclio Overview October 2017
nuclio Overview October 2017
iguazio
 
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
InfluxData
 

Similar to Advanced kapacitor (20)

Virtual training Intro to Kapacitor
Virtual training  Intro to Kapacitor Virtual training  Intro to Kapacitor
Virtual training Intro to Kapacitor
 
DOWNSAMPLING DATA
DOWNSAMPLING DATADOWNSAMPLING DATA
DOWNSAMPLING DATA
 
Virtual training Intro to InfluxDB & Telegraf
Virtual training  Intro to InfluxDB & TelegrafVirtual training  Intro to InfluxDB & Telegraf
Virtual training Intro to InfluxDB & Telegraf
 
Monitoring InfluxEnterprise
Monitoring InfluxEnterpriseMonitoring InfluxEnterprise
Monitoring InfluxEnterprise
 
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
Lessons Learned Running InfluxDB Cloud and Other Cloud Services at Scale by T...
 
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
Lessons Learned: Running InfluxDB Cloud and Other Cloud Services at Scale | T...
 
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menannoFMK2019 being an optimist in a pessimistic world by vincenzo menanno
FMK2019 being an optimist in a pessimistic world by vincenzo menanno
 
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
Accelerating Spark MLlib and DataFrame with Vector Processor “SX-Aurora TSUBASA”
 
Setting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your TestingSetting Up a TIG Stack for Your Testing
Setting Up a TIG Stack for Your Testing
 
IBM Monitoring and Diagnostic Tools - GCMV 2.8
IBM Monitoring and Diagnostic Tools - GCMV 2.8IBM Monitoring and Diagnostic Tools - GCMV 2.8
IBM Monitoring and Diagnostic Tools - GCMV 2.8
 
How to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita GalkinHow to make a high-quality Node.js app, Nikita Galkin
How to make a high-quality Node.js app, Nikita Galkin
 
Episode 3: Kubernetes and Big Data Services
Episode 3: Kubernetes and Big Data ServicesEpisode 3: Kubernetes and Big Data Services
Episode 3: Kubernetes and Big Data Services
 
Finding OOMS in Legacy Systems with the Syslog Telegraf Plugin
Finding OOMS in Legacy Systems with the Syslog Telegraf PluginFinding OOMS in Legacy Systems with the Syslog Telegraf Plugin
Finding OOMS in Legacy Systems with the Syslog Telegraf Plugin
 
Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)Ingesting streaming data for analysis in apache ignite (stream sets theme)
Ingesting streaming data for analysis in apache ignite (stream sets theme)
 
Elastic Stack @ Swisscom Application Cloud
Elastic Stack @ Swisscom Application CloudElastic Stack @ Swisscom Application Cloud
Elastic Stack @ Swisscom Application Cloud
 
iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)
 
Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
 
nuclio Overview October 2017
nuclio Overview October 2017nuclio Overview October 2017
nuclio Overview October 2017
 
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
Anais Dotis-Georgiou & Faith Chikwekwe [InfluxData] | Top 10 Hurdles for Flux...
 

More from InfluxData

Announcing InfluxDB Clustered
Announcing InfluxDB ClusteredAnnouncing InfluxDB Clustered
Announcing InfluxDB Clustered
InfluxData
 
Best Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow EcosystemBest Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow Ecosystem
InfluxData
 
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
InfluxData
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDB
InfluxData
 
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
InfluxData
 
Build an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING StackBuild an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING Stack
InfluxData
 
Meet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using RustMeet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using Rust
InfluxData
 
Introducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud DedicatedIntroducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud Dedicated
InfluxData
 
Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB
InfluxData
 
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
InfluxData
 
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
InfluxData
 
Introducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage EngineIntroducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage Engine
InfluxData
 
Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena
InfluxData
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage Engine
InfluxData
 
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDBStreamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
InfluxData
 
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
InfluxData
 
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
InfluxData
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
InfluxData
 
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
InfluxData
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
InfluxData
 

More from InfluxData (20)

Announcing InfluxDB Clustered
Announcing InfluxDB ClusteredAnnouncing InfluxDB Clustered
Announcing InfluxDB Clustered
 
Best Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow EcosystemBest Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow Ecosystem
 
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDB
 
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
 
Build an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING StackBuild an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING Stack
 
Meet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using RustMeet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using Rust
 
Introducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud DedicatedIntroducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud Dedicated
 
Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB
 
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
 
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
 
Introducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage EngineIntroducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage Engine
 
Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage Engine
 
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDBStreamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
 
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
 
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
 
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
 

Recently uploaded

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
3ipehhoa
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
3ipehhoa
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
bseovas
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
cuobya
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
ufdana
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
zoowe
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
harveenkaur52
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
nhiyenphan2005
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
SEO Article Boost
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
Laura Szabó
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
ukwwuq
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
Trish Parr
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
eutxy
 
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
cuobya
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
3ipehhoa
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
hackersuli
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
ysasp1
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
keoku
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Florence Consulting
 

Recently uploaded (20)

急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
急速办(bedfordhire毕业证书)英国贝德福特大学毕业证成绩单原版一模一样
 
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
1比1复刻(bath毕业证书)英国巴斯大学毕业证学位证原版一模一样
 
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
不能毕业如何获得(USYD毕业证)悉尼大学毕业证成绩单一比一原版制作
 
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
假文凭国外(Adelaide毕业证)澳大利亚国立大学毕业证成绩单办理
 
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
一比一原版(CSU毕业证)加利福尼亚州立大学毕业证成绩单专业办理
 
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
国外证书(Lincoln毕业证)新西兰林肯大学毕业证成绩单不能毕业办理
 
Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027Italy Agriculture Equipment Market Outlook to 2027
Italy Agriculture Equipment Market Outlook to 2027
 
Bài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docxBài tập unit 1 English in the world.docx
Bài tập unit 1 English in the world.docx
 
Understanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdfUnderstanding User Behavior with Google Analytics.pdf
Understanding User Behavior with Google Analytics.pdf
 
Gen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needsGen Z and the marketplaces - let's translate their needs
Gen Z and the marketplaces - let's translate their needs
 
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
制作原版1:1(Monash毕业证)莫纳什大学毕业证成绩单办理假
 
Search Result Showing My Post is Now Buried
Search Result Showing My Post is Now BuriedSearch Result Showing My Post is Now Buried
Search Result Showing My Post is Now Buried
 
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
一比一原版(LBS毕业证)伦敦商学院毕业证成绩单专业办理
 
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
制作毕业证书(ANU毕业证)莫纳什大学毕业证成绩单官方原版办理
 
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
原版仿制(uob毕业证书)英国伯明翰大学毕业证本科学历证书原版一模一样
 
[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024[HUN][hackersuli] Red Teaming alapok 2024
[HUN][hackersuli] Red Teaming alapok 2024
 
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
成绩单ps(UST毕业证)圣托马斯大学毕业证成绩单快速办理
 
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
APNIC Foundation, presented by Ellisha Heppner at the PNG DNS Forum 2024
 
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
一比一原版(SLU毕业证)圣路易斯大学毕业证成绩单专业办理
 
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdfMeet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
Meet up Milano 14 _ Axpo Italia_ Migration from Mule3 (On-prem) to.pdf
 

Advanced kapacitor

  • 1. Agenda: Seasoned Developers Track WORKSHOPAGENDA 8:00 AM – 9:00 AM Breakfast 9:00 AM – 10:00 AM InfluxDB Functional Query Language (IFQL) Paul Dix 10:00 AM – 10:50 AM Writing a Telegraf Plugin Noah Crowley 10:50 AM – 11:20 AM Break 11:20 AM – 12:10 PM Using InfluxDB for Open Tracing Chris Goller 12:10 PM – 1:10 PM Lunch 1:10 PM – 2:00 PM Advanced Kapacitor Michael DeSa 2:00 PM – 2:10 PM Break 2:10 PM – 3:10 PM Setting Up InfluxData for IoT David Simmons 3:10 PM – 4:00 PM A True Story About Database Orchestration Gianluca Arbezzano 4:00 PM Pizza and Beer
  • 2. Michael DeSa Software Engineer @mjdesa Advanced Kapacitor Michael DeSa is a Software Engineer at InfluxData who focuses on increasing the performance capabilities of InfluxDB. He has led the InfluxDB training course across the US, providing students with an in depth understanding of how InfluxDB works as well as sharing best practices. He has a degree in Math, with a focus on Abstract Algebra, from the University of California, at Berkeley and was an Instructor of the Web Development Immersive series at General Assembly in San Francisco.
  • 4. © 2017 InfluxData. All rights reserved.4 Agenda ¨ What is Kapacitor ¨ Understand TICKscript ¨ Quoting rules ¨ Understand Batch vs Stream ¨ Use Kapacitor for ¨ Downsampling ¨ Alerting ¨ Creating Templated Tasks ¨ Using Topics ¨ Debugging TICKscript ¨ Examples ¨ Working with Telegraf Data
  • 5. © 2017 InfluxData. All rights reserved.5
  • 6. © 2017 InfluxData. All rights reserved.6 What is it? ¨ Native time-series processing engine ¨ Process stream and batch data from InfluxDB ¨ Generates Alerts on dynamic criteria ¨ match metrics for patterns ¨ compute statistical anomalies ¨ perform specific actions ¨ Integrates with 15+ Alert Providers ¨ OpsGenie ¨ Sensu ¨ PagerDuty ¨ Slack ¨ and more.
  • 7. © 2017 InfluxData. All rights reserved.7 Kapacitor Components Server Daemon (kapacitord) ● Config for inputs/outputs/services/ etc. Tasks - units of work ● Defined by a TICKscript ● Stream or Batch ● DAG - pipeline CLI (kapacitor) ● Calls for HTTP API or server ● Not interactive Recordings - saved data ● Useful for isolated testing Templates - ● Building many instances of a templated task Topics & topics handlers ● Generic rules for all alters
  • 9. © 2017 InfluxData. All rights reserved.9 TICKScript var measurement = 'requests' var data = stream |from() .measurement(measurement) |where(lambda: "is_up" == TRUE) |where(lambda: "my_field" > 10) |window() .period(5m) .every(5m) // Count number of points in window data |count('value') .as('the_count') // Compute mean of data window data |mean('value') .as('the_average') ● Chain invocation language ○ | chains together different nodes ○ . refers to specific attributes on a node ● Variables refer to values ○ Strings ○ Ints, Floats ○ Durations ○ Pipelines
  • 10. © 2017 InfluxData. All rights reserved.10 TICKScript Syntax - Quoting Rules // ' means the use the literal string value var measurement = 'requests' var data = stream |from() .measurement(measurement) // " means use the reference value |where(lambda: "is_up" == TRUE) |where(lambda: "my_field" > 10) |window() .period(5m) .every(5m) // ' means the use the literal string value data |count('value') .as('the_count') ● Double Quotes ○ References data in lambda expression ● Single Quotes ○ Literal String value
  • 11. © 2017 InfluxData. All rights reserved.11 Create a Stream TICKscript // cpu.tick stream |from() .measurement('cpu') |log() ● Logs all data from the measurement cpu
  • 12. © 2017 InfluxData. All rights reserved.12 Create a Stream Task $ kapacitor define cpu -tick cpu.tick dbrp “telegraf”.”autogen” // cpu.tick stream |from() .measurement('cpu') |log()
  • 13. © 2017 InfluxData. All rights reserved.13 Create a Stream Task $ kapacitor define cpu -tick cpu.tick // cpu.tick dbrp “telegraf”.”autogen” dbrp “telegraf”.”not_autogen” stream |from() .measurement('cpu') .database(‘telegraf’) .retentionPolicy(‘not_autogen’) |log()
  • 14. © 2017 InfluxData. All rights reserved.14 Show a Stream Task $ kapacitor define cpu -tick cpu.tick -type stream -dbrp telegraf.autogen $ kapacitor enable cpu $ kapacitor show cpu ID: cpu Error: Template: Type: stream Status: enabled Executing: true Created: 10 Oct 17 16:05 EDT Modified: 10 Oct 17 16:05 EDT LastEnabled: 01 Jan 01 00:00 UTC Databases Retention Policies: ["telegraf"."autogen"] TICKscript: // cpu.tick stream |from() .measurement('cpu') |log() DOT: digraph cpu { stream0 -> from1; from1 -> log2; }
  • 15. © 2017 InfluxData. All rights reserved.15 Create a More Interesting Stream TICKscript // cpu.tick stream |from() .measurement('cpu') |window() .period(5m) .every(1m) |mean('usage_user') .as('mean_usage_user') |log() ● Create 5m windows of data that emit every 1m ● Compute the average of the field usage_user ● Log the result
  • 16. © 2017 InfluxData. All rights reserved.16 An even more interesting TICKscript // cpu.tick stream |from() .measurement('cpu') |where(lambda: "cpu" == 'cpu-total') |window() .period(5m) .every(1m) |mean('usage_user') .as('mean_usage_user') |log() ● Filter on the tag cpu=cpu-total ● Create 5m windows of data that emit every 1m ● Compute the average of the field usage_user ● Log the result
  • 17. © 2017 InfluxData. All rights reserved.17 Adding Alerts // cpu.tick stream |from() .measurement('cpu') |where(lambda: "cpu" == 'cpu-total') |window() .period(5m) .every(1m) |mean('usage_user') .as('mean_usage_user') |alert() .crit(lambda: "mean_usage_user" > 80) .message('cpu usage high!') .slack() .channel('alerts') .email('oncall@example.com') ● Filter on the tag cpu=cpu-total ● Create 5m windows of data that emit every 1m ● Compute the average of the field usage_user ● Alert when mean_usage_user > 80 ● Send alert to ○ Slack channel alerts ○ Email oncall@example.com
  • 18. © 2017 InfluxData. All rights reserved.18 Create a Batch TICKscript // batch_cpu.tick batch |query(''' SELECT mean("usage_user") AS mean_usage_user FROM "telegraf"."autogen"."cpu" ''') .period(5m) .every(1m) |log() ● Query 5m windows of data every 1m ● Compute the average of the field usage_user ● Log the result
  • 19. © 2017 InfluxData. All rights reserved.19 Create a Batch Task $ kapacitor define batch_cpu -tick batch_cpu.tick -type batch -dbrp telegraf.autogen // cpu.tick stream |from() .measurement('cpu') |log() // batch_cpu.tick batch |query(''' SELECT mean("usage_user") AS mean_usage_user FROM "telegraf"."autogen"."cpu" ''') .period(5m) .every(1m) |log()
  • 20. © 2017 InfluxData. All rights reserved.20 Create a Batch TICKscript // batch_cpu.tick batch |query(''' SELECT mean("usage_user") AS mean_usage_user FROM "telegraf"."autogen"."cpu" ''') .period(5m) .every(1m) |alert() .crit(lambda: "mean_usage_user" > 80) .message('cpu usage high!') .slack() .channel('alerts') .email('oncall@example.com') ● Query 5m windows of data every 1m ● Compute the average of the field usage_user ● Alert when mean_usage_user > 80 ● Send alert to ○ Slack channel alerts ○ Email oncall@example.com
  • 21. © 2017 InfluxData. All rights reserved.21 Batching Streaming ● Queries InfluxDB periodically ● Does not buffer as much of data in RAM ● Places additional query load on InfluxDB ● Writes are mirrored onto the InfluxDB instance ● Buffers all data in RAM ● Places additional write load on Kapacitor
  • 23. © 2017 InfluxData. All rights reserved.23 ¨ Computing the average, max, min, etc of a window of data for a particular series What is Downsampling? Downsampling is the process of reducing a sequence of points in a series to a single data point
  • 24. © 2017 InfluxData. All rights reserved.24 ¨ Faster queries ¨ Store less data Why Downsample?
  • 25. © 2017 InfluxData. All rights reserved.25 ¨ Create a task that aggregates your data ¨ Can be stream or batch depending on your use-case ¨ Writes data back into InfluxDB ¨ Typically back into another retention policy Downsample using Kapacitor Offload computation to a separate host
  • 26. © 2017 InfluxData. All rights reserved.26 Example // batch_cpu.tick batch |query(''' SELECT mean("usage_user") AS usage_user FROM "telegraf"."autogen"."cpu" ''') .period(5m) .every(5m) |influxDBOut() .database('telegraf') .retenionPolicy('5m') .tag('source', 'kapacitor') ● Downsample the data into 5m windows ● Store that data back into a the 5m retention policy in the telegraf database
  • 28. © 2017 InfluxData. All rights reserved.28 Create a Stream Template $ kapacitor define-template generic -tick generic.tick -type stream // generic.tick var measurement string var where_filter = lambda: TRUE var groups = [*] var field string var crit lambda var window = 5m stream |from() .measurement(measurement) .where(where_filter) .groupBy(groups) |window() .period(window) .every(window) |mean(field) |alert() .crit(crit) .slack() .channel(slack_channel)
  • 29. © 2017 InfluxData. All rights reserved.29 Create a Stream Task from a Template $ kapacitor define generic_task -template generic -vars generic_vars.json -dbrp telegraf.autogen// generic_vars.json { "measurement": {"type" : "string", "value" : "cpu" }, "where_filter": {"type": "lambda", "value": ""cpu" == 'cpu-total'"}, "groups": {"type": "list", "value": [{"type":"string", "value":"host"},{"type":"string", "value":"dc"}]}, "field": {"type" : "string", "value" : "usage_idle" }, "crit": {"type" : "lambda", "value" : ""mean" < 10.0" }, "window": {"type" : "duration", "value" : "1m" }, }
  • 30. © 2017 InfluxData. All rights reserved.30 Show a Templated Task $ kapacitor show generic_taskstream |from() .measurement(measurement) .where(where_filter) .groupBy(groups) |window() .period(window) .every(window) |mean(field) |alert() .warn(warn) .crit(crit) .slack() .channel(slack_channel) Vars: Name Type Value crit lambda "mean" < 10.0 field string usage_idle groups list [host, dc] measurement string cpu warn lambda "mean" < 10.0 where_filter lambda "cpu" == 'cpu-total' window duration 1m0s
  • 32. © 2017 InfluxData. All rights reserved.32 Kapacitor Topics ⠒ Specified in a Tickscript ⠒ Allows users to separate the handling of alerts from the task that generates them ⠒ Gives users the ability to handle alerts in a more sophisticated way ⠒ Follows a publish/subscribe pattern ○ Alerts are published to a topic ○ Handlers subscribe to a topic ⠒ Handlers are scoped to a topic
  • 33. © 2017 InfluxData. All rights reserved.33 Without Topics ● All alert handlers had to be defined in tickscript ● Adding a new handler required redefining the task ○ All current task state would be lost ● Couldn’t have cascading alerts be triggered ● Simplistic condition matching // example.tick stream |from() .measurement('cpu') .groupBy(*) |alert() .warn(lambda: "usage_idle" < 20) .crit(lambda: "usage_idle" < 10) .slack() .channel('#alerts') .slack() .channel('#on_call')
  • 34. © 2017 InfluxData. All rights reserved.34 With Topics: Creating/Using a topic ● Remove all handlers in the tickscript ● Add a topic handler Note: Using a topic in a tickscript creates the topic. // example.tick stream |from() .measurement('cpu') .groupBy(*) |alert() .warn(lambda: "usage_idle" < 20) .crit(lambda: "usage_idle" < 10) .topic('basic')
  • 35. © 2017 InfluxData. All rights reserved.35 With Topics: List topics ● Shows ○ Topic Name - ID ○ Current Alert Level - Level ○ Number of Alerts Published - Collected $ kapacitor list topics ID Level Collected basic OK 245
  • 36. © 2017 InfluxData. All rights reserved.36 With Topics: Show Topic ● Shows ○ Topic Name - ID ○ Current Alert Level - Level ○ Number of Alerts Published - Collected ○ Sample of Collected Events - Events $ kapacitor show-topic basic ID: basic Level: OK Collected: 247 Handlers: [] Events: Event Level Message Date cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:10 EDT
  • 37. © 2017 InfluxData. All rights reserved.37 Creating Topic Handlers ● Defining a topic handlers requires: ○ Topic Name ○ Handler Name ○ yaml File ● Yaml file specifies ○ Type of handler - kind ■ Typically the property method name from tickscript (e.g. slack, post, pagerduty, etc) ○ Required Parameters - options ■ Typically the property methods from tickscript // alerts.yaml kind: slack topic: basic id: alerts-channel options: channel: "#alerts" // on_call.yaml kind: slack topic: basic id: on-call-chan options: channel: "#on_call" $ kapacitor define-topic-handler alerts.yaml $ kapacitor define-topic-handler alerts.yaml $ kapacitor define-topic-handler on_call.yaml
  • 38. © 2017 InfluxData. All rights reserved.38 With Topics: List topics handlers ● Shows ○ Topic Name - Topic ○ Handler Name - ID ○ Type of handler - Kind $ kapacitor list topic-handlers Topic ID Kind basic alerts-channel slack basic on-call-chan slack
  • 39. © 2017 InfluxData. All rights reserved.39 With Topics: Show Topic Handler ● Shows ○ Handler Name - ID ○ Handler Topic - Topic ○ Type of handler - Kind ○ Matching logic for alerts - Match ○ Handler Options - Options $ kapacitor show-topic-handler basic alerts-channel ID: alerts-channel Topic: basic Kind: slack Match: Options: {"channel":"#alerts"} $ kapacitor show-topic-handler basic on-call-chan ID: on-call-chan Topic: basic Kind: slack Match: Options: {"channel":"#on_call"}
  • 40. © 2017 InfluxData. All rights reserved.40 With Topics: Show Topic (again) ● Shows ○ Topic Name - ID ○ Current Alert Level - Level ○ Number of Alerts Published - Collected ○ Current topic handlers - Handlers ○ Sample of Collected Events - Events $ kapacitor show-topic basic ID: basic Level: OK Collected: 285 Handlers: [alerts-channel, on-call-chan] Events: Event Level Message Date cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 20:55 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:05 EDT cpu OK cpu ... 05 Jul 17 21:10 EDT
  • 41. © 2017 InfluxData. All rights reserved.41 Chaining Topics using Handlers ● Topics can be chained together using a publish action. ○ This allows you to further group your alerts into various topics. // chain.yaml kind: publish topic: basic id: chain options: topics: - ops_team $ kapacitor define-topic-handler chain.yaml
  • 42. © 2017 InfluxData. All rights reserved.42 Using Match Conditions in Handlers ● Conditions for matching a handle may be set in the match section of the yaml file ● Must be boolean expression ● Functions ○ Any built-in Kapacitor function ○ changed() ○ level() ○ name() ○ taskName() ○ duration() // chain.yaml kind: publish topic: basic id: chain match: changed() == TRUE options: topics: - ops_team $ kapacitor define-topic-handler chain.yaml
  • 43. © 2017 InfluxData. All rights reserved.43 With Topics: Show Topic Handler ● Shows ○ Handler Name - ID ○ Handler Topic - Topic ○ Type of handler - Kind ○ Matching logic for alerts - Match ○ Handler Options - Options $ kapacitor show-topic-handler basic chain ID: chain Topic: basic Kind: publish Match: changed() == TRUE Options: {"topics":["ops_team"]}
  • 44. © 2017 InfluxData. All rights reserved.44 Summary ● Kapacitor users can utilize topics instead of explicitly handling alerts in tickscript ○ Requires use of topic handlers ● Handlers are scoped to a topic ○ Typically referred to as topic handlers ● Topics may be chained together using the publish handler ● Handlers have additional matching logic to allow for more sophisticated alert event handling ● For more information visit the documentation http://docs.influxdata.com/kapacitor/v1.4/guides/using_alert_topics/
  • 46. © 2017 InfluxData. All rights reserved.46 ¨ Join data from the same period of time, yesterday Example
  • 47. © 2017 InfluxData. All rights reserved.47 ¨ Join the last hour of data with the last month of data Example
  • 48. © 2017 InfluxData. All rights reserved.48 ¨ Minimize the amount of fields that the window node buffers Example
  • 49. © 2017 InfluxData. All rights reserved.49 ¨ Gracefully handle data that is missing fields Example
  • 50. © 2017 InfluxData. All rights reserved.50 ¨ Have an alert with an OK state that is based on the absence of data Example
  • 51. © 2017 InfluxData. All rights reserved.51 ¨ Trigger an CRIT, WARN, and INFO level alert if the condition for each occurs more than once Example