Kapacitor 命令行客户端
两个关键的可执行文件作为Kapacitor的一部分被打包。kapacitord守护进程运行Kapacitor服务器,包括其HTTP接口。kapacitor命令行接口(CLI)利用HTTP接口和其他资源,以提供访问许多Kapacitor功能的方式。
在Kapacitor入门中介绍了kapacitor客户端的一般概念。
当执行时,客户端可以选择两个选项和一个命令,后面跟着适用于该命令的参数。
kapacitor [options] [command] [args]
本文件提供了kapacitor CLI提供的命令概述:
常规选项
默认情况下,客户端尝试与运行在localhost的9092端口的服务器进行HTTP通信。服务器也可以启用SSL进行部署。两个命令行选项使得可以覆盖默认的通信设置,并使客户端能够与任何Kapacitor服务器进行交互。
-url
“-url” 选项提供一个 HTTP url 字符串 (http(s)://host:port) 到 Kapacitor 服务器。当在命令行中未设置时,将使用环境变量 KAPACITOR_URL 的值。这可以用来在远程 Kapacitor 服务器上运行 kapacitor 命令。
在Kapacitor URL中包含身份验证凭证
如果在 InfluxDB 和 Kapacitor 上启用了身份验证,请在 Kapacitor URL 中包含您的 InfluxDB 用户名和密码作为查询参数,分别为 u 和 p。为了方便和安全,InfluxData 建议将这些凭据作为 KAPACITOR_URL 环境变量的一部分存储在 Kapacitor URL 中。
export KAPACITOR_URL=https://192.168.67.88:9092?u=username&p=password
# When KAPACITOR_URL is defined, the -url flag isn't necessary.
kapacitor list tasks
-skipVerify
使用 -skipVerify 选项禁用 SSL 验证。
当连接到使用自签名 SSL 证书的 Kapacitor 服务器时,应使用此选项。
如果在命令行中未设置,则使用环境变量 KAPACITOR_UNSAFE_SSL 的值。
使用命令行选项
$ kapacitor -skipVerify -url https://192.168.67.88:9093 list tasks
ID Type Status Executing Databases and Retention Policies
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
cpu_alert stream disabled false ["telegraf"."autogen"]
cpu_alert_topic stream disabled false ["telegraf"."autogen"]
top_scores stream disabled false ["game"."autogen"]
核心命令
核心命令是指在命令行应用程序中最常见的命令或使用频率最高的命令。
help
这个 help 命令会显示帮助信息。要获取关于任何命令的更详细帮助,输入 kapacitor help 。
version
此 version 命令打印出 kapacitor 客户端的发布版本。
list
可以使用list命令打印出不同的Kapacitor工件列表。
delete
可以使用 delete 命令来删除不同的 Kapacitor 物件。
命令 list 和 delete 在以下章节中将更详细地介绍。
服务器管理
kapacitor 客户端可用于调查服务器的各个方面,备份其数据和处理日志。一个计划中的功能将是将任务定义推送到其他服务器。
backup
该 backup 命令在指定的文件路径下创建 Kapacitor 数据库的备份。
# Syntax
kapacitor backup [PATH_TO_BACKUP_FILE]
# Example
kapacitor backup ~/bak/kapacitor-20180101.db
该命令将静默成功。控制台不会返回状态消息。 如权限不足或目录不存在等错误将被报告。 要验证结果,请检查文件系统。
stats
该 stats 命令显示关于 Kapacitor 服务器的统计信息。
它需要 general 或 ingress 参数。
# Syntax
kapacitor stats <general|ingress>
stats general
使用 kapacitor stats general 来查看服务器 ID 或主机名等值,以及 Kapacitor 使用的任务和订阅数量等计数。
$ kapacitor stats general
ClusterID: ef3b3f9d-0997-4c0b-b1b6-5d0fb37fe509
ServerID: 90582c9c-2e25-4654-903e-0acfc48fb5da
Host: localhost
Tasks: 8
Enabled Tasks: 2
Subscriptions: 12
Version: 1.7.6~n201711280812
stats ingress
使用 kapacitor stats ingress 命令查看 InfluxDB 测量值和通过 Kapacitor 服务器的数据点数量。此命令可用于确保 InfluxDB 数据被写入 Kapacitor。
$ kapacitor stats ingress
Database Retention Policy Measurement Points Received
_internal monitor cq 5274
_internal monitor database 52740
_internal monitor httpd 5274
_internal monitor queryExecutor 5274
_internal monitor runtime 5274
_internal monitor shard 300976
_internal monitor subscriber 126576
_internal monitor tsm1_cache 300976
_internal monitor tsm1_engine 300976
_internal monitor tsm1_filestore 300976
_internal monitor tsm1_wal 300976
_internal monitor write 5274
_kapacitor autogen edges 26370
_kapacitor autogen ingress 73817
_kapacitor autogen kapacitor 2637
_kapacitor autogen load 2637
_kapacitor autogen nodes 23733
_kapacitor autogen runtime 2637
_kapacitor autogen topics 73836
chronograf autogen alerts 1560
telegraf autogen cpu 47502
telegraf autogen disk 31676
telegraf autogen diskio 52800
telegraf autogen kernel 5280
telegraf autogen mem 5280
telegraf autogen processes 5280
telegraf autogen swap 10560
telegraf autogen system 15840
vars
该 vars 命令显示与 Kapacitor 服务器相关的各种变量。结果以 JSON 格式输出。
$ kapacitor vars
{"cluster_id": "39545771-7b64-4692-ab8f-1796c07f3314",
"cmdline": ["kapacitord"],
"host": "localhost",
"kapacitor": {"795eb8bd-00b5-4a78-9a10-6190546e0a08": {"name": "nodes", "tags": {"host": ...
# Output example has been truncated
为了使输出更易读,将命令通过管道传递给JSON格式化工具。
# Example using a Python JSON formatter
kapacitor vars | python -m json.tool
push
命令push保留用于一个计划特性,该特性将允许任务从一个Kapacitor服务器推送到另一个。
服务
服务是Kapacitor服务器的功能模块,处理与第三方应用程序的通信、服务器配置,以及数据的发现和抓取。有关服务的更多信息,请参阅配置文档。
list service-tests
这个 list service-tests 列出当前在服务器上可用的所有服务测试。
# Syntax
kapacitor list service-tests [ <SERVICE_NAME> | <PATTERN> ]
# Example
kapacitor list service-tests
PATTERN 可以是类似于 grep 的模式。例如,要运行所有以字母 'a' 开头的服务的测试,可以使用字符串 'a*'。
根据您使用的终端,您可能需要将模式作为字符串传递,方法是将其用引号括起来。例如: "a*"。
示例列表 服务-测试 输出
Service Name
alerta
azure
consul
dns
ec2
file-discovery
gce
hipchat
httppost
influxdb
kubernetes
marathon
mqtt
nerve
opsgenie
pagerduty
pushover
scraper
sensu
serverset
slack
smtp
snmptrap
static-discovery
swarm
talk
telegram
triton
victorops
service-tests
该 service-tests 命令执行一个或多个可用的服务测试。
kapacitor service-tests [ <SERVICE_NAME> | <PATTERN> ]
PATTERN 可以是类似于 grep 的模式。比如,要运行所有以字母 ‘a’ 开头的服务的测试,请使用字符串 ‘a*’。
根据您使用的终端,您可能需要将模式作为字符串传递,通过用引号将它们括起来。例如: "a*"。
运行服务测试的示例
$ kapacitor service-tests slack talk smtp
Service Success Message
slack true
talk false service is not enabled
smtp false service is not enabled
通过结合 list service-tests 和 service-tests 命令,可以在 Linux 系统上使用以下命令测试所有服务:
kapacitor list service-tests | xargs kapacitor service-tests
日志记录
Kapacitor 记录了关于它自己、它的服务和任务的大量信息。 有关配置日志的信息可在 Configuration 文档中找到。
logs
命令 logs 输出整个 Kapacitor 日志流或特定服务的日志流。
日志流可以按日志级别进行过滤。
# Syntax
kapacitor logs [service=<SERVICE_ID>] [lvl=<LEVEL>]
lvl的值可以是以下之一:
debuginfoerror
默认情况下,这将仅返回选定级别的消息。要查看选定级别及更高级别的消息,请在字符串的末尾添加一个 + 字符。
监控HTTP服务的DEBUG级别及以上的日志消息
$ kapacitor logs service=http lvl=debug+
ts=2018-01-15T10:47:10.017+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:47:10.014048161+01:00 method=POST uri=/write?consistency=&db=_internal&precision=ns&rp=monitor protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0e3c47c4-f9d9-11e7-85c5-000000000000 duration=3.234836ms
ts=2018-01-15T10:47:10.020+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:47:10.013091282+01:00 method=POST uri=/write?consistency=&db=_internal&precision=ns&rp=monitor protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0e3c2267-f9d9-11e7-85c4-000000000000 duration=7.555256ms
ts=2018-01-15T10:47:10.301+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:47:10.301315013+01:00 method=POST uri=/write?consistency=&db=telegraf&precision=ns&rp=autogen protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0e681d20-f9d9-11e7-85c7-000000000000 duration=306.967µs
ts=2018-01-15T10:47:10.301+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:47:10.301249656+01:00 method=POST uri=/write?consistency=&db=telegraf&precision=ns&rp=autogen protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0e681a95-f9d9-11e7-85c6-000000000000 duration=387.042µs
# ...
尾部Kapacitor日志
要查看所有Kapacitor日志,请在没有service和level参数的情况下运行该命令。
$ kapacitor logs
ts=2018-01-15T10:54:07.884+01:00 lvl=info msg="created log session" service=sessions id=33a21e96-49d5-4891-aad8-0bc96099d148 content-type=
ts=2018-01-15T10:54:10.017+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:54:10.014885535+01:00 method=POST uri=/write?consistency=&db=_internal&precision=ns&rp=monitor protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0893527c-f9da-11e7-8672-000000000000 duration=2.870539ms
ts=2018-01-15T10:54:10.020+01:00 lvl=info msg="http request" service=http host=127.0.0.1 username=- start=2018-01-15T10:54:10.017509083+01:00 method=POST uri=/write?consistency=&db=_internal&precision=ns&rp=monitor protocol=HTTP/1.1 status=204 referer=- user-agent=InfluxDBClient request-id=0893b8f6-f9da-11e7-8673-000000000000 duration=2.920775ms
# ...
level
命令 level 设置从 Kapacitor 服务器写入日志文件的 Kapacitor 日志流的日志级别。
在 Linux 系统中,此文件默认位于 /var/log/kapacitor/kapacitor.log。
它的格式如下:
kapacitor level <LEVEL>
LEVEL的值可以是以下之一:
debuginfoerror
要查看命令生效,请尾随日志文件(例如,$sudo tail -f -n 128 /var/log/kapacitor/kapacitor.log),然后将日志级别设置为错误。
将Kapacitor日志级别设置为错误
kapacitor level error
Kapacitor 日志的流应停止。要再次激活它,请将日志级别重置为 debug。
将日志级别设置为调试
kapacitor level debug
尾部流应该再次变得活跃。
watch
该 watch 命令跟踪与一个 任务 相关的日志。
这与 logs 命令不同,该命令允许跟踪与服务相关的日志。
# Syntax
kapacitor watch <TASK_ID> [<TAGS> ...]
来自 cpu_alert 任务的 Steam 日志**
$ kapacitor watch cpu_alert
ts=2018-01-15T11:31:30.301+01:00 lvl=debug msg="alert triggered" service=kapacitor task_master=main task=cpu_alert node=alert2 level=CRITICAL id=cpu:nil event_message="cpu:nil is CRITICAL" data="&{cpu map[cpu:cpu6 host:algonquin] [time usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user] [[2018-01-15 10:31:30 +0000 UTC 0 0 0 0 0 0 0 0 0 100.00000000000199]]}"
ts=2018-01-15T11:31:30.315+01:00 lvl=debug msg="alert triggered" service=kapacitor task_master=main task=cpu_alert node=alert2 level=OK id=cpu:nil event_message="cpu:nil is OK" data="&{cpu map[cpu:cpu7 host:algonquin] [time usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user] [[2018-01-15 10:31:30 +0000 UTC 0 0 99.89989989990681 0 0 0 0 0 0 0.1001001001001535]]}"
ts=2018-01-15T11:31:30.325+01:00 lvl=debug msg="alert triggered" service=kapacitor task_master=main task=cpu_alert node=alert2 level=CRITICAL id=cpu:nil event_message="cpu:nil is CRITICAL" data="&{cpu map[host:algonquin cpu:cpu6] [time usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user] [[2018-01-15 10:31:30 +0000 UTC 0 0 0 0 0 0 0 0 0 100.00000000000199]]}"
ts=2018-01-15T11:31:30.335+01:00 lvl=debug msg="alert triggered" service=kapacitor task_master=main task=cpu_alert node=alert2 level=OK id=cpu:nil event_message="cpu:nil is OK" data="&{cpu map[host:algonquin cpu:cpu7] [time usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user] [[2018-01-15 10:31:30 +0000 UTC 0 0 99.89989989990681 0 0 0 0 0 0 0.1001001001001535]]}"
# ...
数据采样
有时记录数据样本或查询以在启用任务之前进行故障排除会很有用。Kapacitor命令行客户端包括许多用于管理数据采样的有用命令。
record
该 record 命令可以用于记录数据的快照或将 InfluxDB 查询的结果记录到 Kapacitor 数据库中。数据快照稍后可以通过其 recording-id 进行访问。可用的录制类型有三种: batch、 stream 和 query。
record batch
kapacitor record batch 记录了用于 batch 类型任务的 InfluxDB 查询结果。
它需要一个时间值作为来自 now 的过去数据窗口,由参数
-past 定义,或者由参数 -start 和 -stop 定义的过去区间。
-recording-id 是可选的,如果未提供,将自动生成。
-task 参数及其 TASK_ID 也是必需的。可选的布尔
参数 -no-wait 将在单独的进程中启动重放并退出,让它在后台运行。
# Syntax
kapacitor record batch (-no-wait) [-past <WINDOW_IN_PAST> | -start <START_TIME> -stop <STOP_TIME>] [-recording-id <ID>] -task <TASK_ID>
# Example
kapacitor record batch -past 5m -recording-id BlueJaySilverTree -task batch_load_test
record stream
kapacitor record stream 记录实时数据流。它需要一个 -duration 值来确定录音将运行多长时间。 -task 参数用于标识目标任务也是必需的。 -recording-id 值是可选的。当未提供时将自动生成。可选的布尔参数 -no-wait 将在单独的进程中启动重播并退出,使其在后台运行。
此命令与 stream 选项结合使用,将运行直至时间持续时间到期。它在控制台中返回录音ID。
# Syntax
kapacitor record stream -duration <DURATION> (-no-wait) (-recording-id <ID> ) -task <TASK_ID>
# Example
kapacitor record stream -duration 1m -task cpu_alert
record query
kapacitor record query 记录一个 InfluxDB 查询。
它需要通过 -query 参数提供一个 InfluxDB 查询。
它还要求 -type 的值为 batch 或 stream。
可以提供 -recording-id,如果未提供,将生成一个。
可选的布尔参数 -no-wait 将会在一个单独的
进程中启动回放并退出,留下它在后台运行。
# Syntax
kapacitor record query [-cluster <INFLUXDB_CLUSTER_NAME>] [-no-wait] -query <QUERY> [-recording-id <RECORDING_ID>] -type <stream|batch>
# Example
$ kapacitor record query -query 'SELECT cpu, usage_idle from "telegraf"."autogen"."cpu" where time > now() - 5m' -type stream
replay
命令 replay 将录音重放到一个任务中,以验证该任务的行为。
它需要通过 -recording 参数提供录音 ID,并通过 -task 参数提供任务 ID。
可选的布尔参数 -real-clock 将根据录音中时间戳之间的间隔切换重放数据。
可选的布尔参数 -rec-time 将
切换使用实际录制的时间,而不是当前时间。使用当前时间是默认行为。还可以提供可选的 -replay-id,如果未提供,将生成。可选的布尔参数 -no-wait 将
使重放在一个单独的进程中生成并退出,让它在后台运行。
# Syntax
kapacitor replay [-no-wait] [-real-clock] [-rec-time] -recording <ID> [-replay-id <REPLAY_ID>] -task <TASK_ID>
# Example
$ kapacitor replay -recording 4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 -task cpu_alert
replay-live
该 replay-live 命令允许实时播放数据以验证任务行为。
它可以针对 batch 或 query 录制进行执行。
Kapacitor 不会在其数据库中保存或记录数据。
replay-live query
使用查询参数,重播对任务执行一个InfluxDB查询。 查询应包括数据库、保留策略和测量字符串。
# Syntax
kapacitor replay-live query [-cluster <CLUSTER_URL>] [-no-wait] -query <QUERY> [-real-clock] [-rec-time] [-replay-id <REPLAY_ID>] -task <TASK_ID>
# Example
kapacitor replay-live query -task cpu_alert -query 'select cpu, usage_idle from "telegraf"."autogen"."cpu" where time > now() - 5m'
此命令需要通过 -query 参数提供的 InfluxDB 查询。
它还需要一个通过 -task 参数识别的任务。
-replay-id 是可选的,但如果未提供,将自动生成。
可选的布尔参数 -no-wait 将在单独的进程中启动重放,并在后台运行时退出。
可选的布尔参数 -real-clock 将根据时间戳之间的间隔切换重放数据。
可选的布尔参数 -rec-time 将切换使用实际记录的时间而不是当前时间。
使用当前时间是默认行为。
replay-live batch
使用批处理参数,重放会执行已存储到InfluxDB的批处理数据任务。它的格式如下:
# Syntax
kapacitor replay-live batch [-no-wait] [ -past <TIME_WINDOW> | -start <START_TIME> -stop <STOP_TIME> ] [-real-clock] [-rec-time] [-replay-id <REPLAY_ID>] -task <TASK_ID>
# Example
kapacitor replay-live batch -start 2018-01-16T00:00:00Z -stop 2018-01-16T12:00:00Z -replay-id GoldRoosterColdBridge180116 -task batch_load_test
此命令需要一个过去数据窗口的时间值,来源于 now,由参数 -past 定义,或者一个由参数 -start 和 -stop 定义的过去时间间隔。-replay-id 是可选的,如果未提供,将会生成。-task 参数及其 TASK_ID 也是必需的。可选的布尔参数 -no-wait 将在单独的进程中生成重放,并退出,留给它在后台运行。可选的布尔参数 -real-clock 将根据时间戳之间的间隔切换重放数据。可选的布尔参数 -rec-time 将切换使用实际记录的时间,而不是当前时间。使用当前时间是默认行为。
list recordings
可以使用list recordings命令列出现有的录音和重播。
$ kapacitor list recordings
ID Type Status Size Date
0970bcb5-685c-48cc-9a92-741633633f1f stream finished 3.2 kB 15 Jan 18 16:37 CET
78d3a26e-ea1f-4c52-bd56-2016997313fe stream finished 23 B 15 Jan 18 15:33 CET
4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 stream finished 2.2 kB 15 Jan 18 15:25 CET
BlueJaySilverTree batch finished 1.0 kB 15 Jan 18 15:18 CET
7d30caff-e443-4d5f-a0f2-6a933ea35284 batch finished 998 B 15 Jan 18 15:17 CET
list replays
用 list replays 命令列出所有回放。
$ kapacitor list replays
ID Task Recording Status Clock Date
d861ee94-aec1-43b8-b362-5c3d9a036aff cpu_alert 4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 running real 16 Jan 18 11:02 CET
GoldRoosterColdBridge180116 batch_load_test finished fast 16 Jan 18 10:23 CET
2d9be22c-647a-425e-89fb-40543bdd3670 cpu_alert finished fast 16 Jan 18 10:12 CET
b972582b-5be9-4626-87b7-c3d9bfc67981 batch_load_test finished fast 15 Jan 18 17:26 CET
c060f960-6b02-49a7-9376-0ee55952a7f0 cpu_alert finished fast 15 Jan 18 17:25 CET
4a43565c-4678-4c98-94b7-e534efdff860 cpu_alert 4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 finished fast 15 Jan 18 16:52 CET
31f8ea34-455b-4eee-abf2-ed1eb60166a5 cpu_alert 4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 finished real 15 Jan 18 16:50 CET
bbe8567c-a642-4da9-83ef-2a7d32ad5eb1 cpu_alert 4e0f09c5-1426-4778-8f9b-c4a88f5c2b66 finished fast 15 Jan 18 16:49 CET
delete recordings
命令 delete recordings 删除一个或多个录音。
# Syntax
kapacitor delete recordings <Recording-ID | Pattern>
# Examples
kapacitor delete recordings d861ee94-aec1-43b8-b362-5c3d9a036aff
kapacitor delete recordings "test*"
ID 需要是录音的完整 ID,最好从 list recordings 命令的结果中复制并粘贴。
Pattern 可以是一个类似于 grep 的模式,用于识别一组录音。比如,如果值 test0 被分配给多个 recording-id(例如 test01、test02、test03),那么所有 test 录音可以通过模式 "test*" 被移除。
此命令不返回状态或其他消息。
它悄无声息地失败或成功。
要验证结果,请使用 list recordings 命令。
delete replays
删除 delete replays 命令会删除一个或多个重放。
# Syntax
kapacitor delete replays <Replay-ID | Pattern>
# Examples
kapacitor delete replays d861ee94-aec1-43b8-b362-5c3d9a036aff
kapacitor delete replays "jan-run*"
ID需要是回放的完整ID,最好是从list replays命令的结果中复制并粘贴。
Pattern 可以是一个类似于 grep 的模式,用于识别一组回放。例如,如果值 test0 被分配给多个 replay-ids(例如 jan-run01,jan-run02,jan-run03),那么可以使用模式 "jan-run*" 删除所有 run 回放。
此命令不返回状态或其他消息。
它静默地失败或成功。
要验证结果,请使用 list replays 命令。
主题和主题处理器
主题是警报可以发布消息的主题类,其他服务可以订阅这些主题以接收消息。主题处理程序将主题绑定到服务,从而允许通过各种方式转发消息。
处理主题和主题处理程序在 使用警报主题文档中介绍。
主题是通过 TICKscripts 中 AlertNode 的 topic() 方法创建的。
define-topic-handler
该 define-topic-handler 命令根据主题处理脚本的内容定义或重新定义一个主题处理器。
# Syntax
kapacitor define-topic-handler <PATH_TO_HANDLER_SCRIPT>
# Example
$ kapacitor define-topic-handler ./slack_cpu_handler.yaml
此命令不返回状态或其他消息。
它静默地失败或成功。
要验证结果,请使用 list topic-handlers 命令。
list topics
该 list topics 显示当前由 Kapacitor 存储的所有主题。
$ kapacitor list topics
ID Level Collected
1252f40d-c998-430d-abaf-277c43d390e1:cpu_alert:alert2 OK 0
32fdb276-4d60-42bc-8f5d-c093e97bd3d0:batch_cpu_alert:alert2 OK 0
666c444c-a33e-42b5-af4d-732311b0e148:batch_cpu_alert:alert2 CRITICAL 0
cpu OK 0
main:batch_load_test:alert2 OK 7
main:chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54:alert3 OK 1028
main:chronograf-v1-e77137c5-dcce-4fd5-a612-3cdaa5f98ef9:alert7 OK 0
main:cpu-alert-test:alert3 OK 0
list topic-handlers
该 list topic-handlers 命令显示由 Kapacitor 存储的处理程序。
$ kapacitor list topic-handlers
Topic ID Kind
cpu slack slack
show-topic
使用 show-topic 命令查看主题的详细信息。
# Syntax
kapacitor show-topic [TOPIC_ID]
# Example
$ kapacitor show-topic 1252f40d-c998-430d-abaf-277c43d390e1:cpu_alert:alert2
ID: 1252f40d-c998-430d-abaf-277c43d390e1:cpu_alert:alert2
Level: OK
Collected: 0
Handlers: []
Events:
Event Level Message Date
cpu:nil OK cpu:nil is OK 13 Nov 17 13:34 CET
show-topic-handler
该 show-topic-handler 命令将主题处理器的内容输出到控制台。
# Syntax
kapacitor show-topic-handler [TOPIC_ID] [HANDLER_ID]
# Example
$ kapacitor show-topic-handler cpu slack
ID: slack
Topic: cpu
Kind: slack
Match:
Options: {"channel":"#kapacitor"}
delete topics
使用 delete topics 命令来删除一个或多个主题。
# Syntax
kapacitor delete topics <Topic-ID | Pattern>
# Examples
kapacitor delete topics 1252f40d-c998-430d-abaf-277c43d390e1:cpu_alert:alert2
kapacitor delete topics "cluster*"
Pattern 可以是用于识别一组主题的类似grep的模式。 例如,如果值 cluster0 被分配给多个 topic(例如, cluster01, cluster02, cluster03),那么可以通过模式 "cluster*" 删除所有 cluster 主题。
该命令不返回状态或额外消息。
它静默地失败或成功。
要验证结果,请使用 list topics 命令。
delete topic-handlers
该 topic-handlers 命令移除一个主题处理器。
# Syntax
kapacitor delete topic-handlers [TOPIC_ID] [HANDLER_ID]
# Example
kapacitor delete topic-handlers cpu slack
可以使用list命令确定TOPIC_ID和HANDLER_ID的值。
此命令不返回状态或其他消息。
它静默地失败或成功。
要验证结果,请使用 list topics 命令。
任务和任务模板
任务和任务定义构成了Kapacitor的核心功能。 任务在入门指南中介绍,并与TICKscript一起详细探讨。
任务模板使得重用通用任务结构变得简单,从而创建一系列相似的任务。它们在模板任务文档中介绍。
define
define 命令用于从 TICKscript 创建一个新任务。它有以下三种形式之一:
定义一个简单的任务
# Syntax
kapacitor define <TASK_ID> -tick <PATH_TO_TICKSCRIPT> -type <stream|batch> [-no-reload] -dbrp <DATABASE>.<RETENTION_POLICY>
# Example
kapacitor define sandbox -tick sandbox.tick -type stream -dbrp "telegraf"."autogen"
这种形式的 define 命令需要在 define 令牌后面立即提供一个新的或现有的任务标识符。 如果标识符在Kapacitor中尚不存在,将会创建一个新的任务。 如果标识符已经存在,现有的任务将被更新。 通过参数 tick 提供一个必需的TICKscript路径。 任务的 -type 也是必需的,目标数据库和通过参数 -dbrp 确定的保留策略也是必需的。 可选的布尔参数 -no-reload 将阻止将任务重新加载到内存中。 默认行为是重新加载更新的任务。
此命令不返回状态或其他消息。
一些与格式错误或无效的TICKscripts 相关的错误消息可能会被返回。
要验证结果,请使用 list tasks 命令。
从模板定义一个任务
# Syntax
kapacitor define <TASK_ID> -template <TEMPLATE_ID> -vars <PATH_TO_VARS_FILE> [-no-reload] -dbrp <DATABASE>.<RETENTION_POLICY>
# Example
kapacitor define cpu_idle -template generic_mean_alert -vars cpu_vars.json -dbrp "telegraf"."autogen"
这种形式的 define 命令需要在 define 关键字后面立即提供一个新的或现有的任务标识符。如果该标识符在 Kapacitor 中尚不存在,将创建一个新任务。如果该标识符已经存在,将更新现有任务。必需使用的模板由 -template 参数标识。由参数 -dbrp 标识的目标数据库和保留策略也是必需的,以及由 -var 参数标识的包含变量定义的文件路径。可选的布尔参数 -no-reload 将防止将任务重新加载到内存中。默认行为是重新加载更新的任务。
此任务不返回状态或其他消息。
要验证结果,使用list tasks命令。
从模板和描述文件定义任务
# Syntax
kapacitor define <TASK_ID> -file <PATH_TO_TEMPLATE_FILE> [-no-reload]
# Example
kapacitor define mem_alert -file mem_alert_from_template.json
这种define命令的形式需要一个新的或现有的任务标识符,该标识符紧跟在define标记后面。如果标识符尚不存在于Kapacitor中,将创建一个新任务。如果标识符已经存在,则现有任务将被更新。需要一个指向定义模板、数据库、保留策略和变量的文件的路径,并通过-file参数提供。可选的布尔参数-no-reload将防止将任务重新加载到内存中。默认行为是重新加载更新后的任务。
此任务不返回状态或其他消息。
要验证结果,请使用list tasks命令。
define-template
使用此命令将任务模板加载到Kapacitor。它的形式如下:
# Syntax
kapacitor define-template <TEMPLATE_ID> -tick <PATH_TO_TICKSCRIPT> -type <string|batch>
# Example
kapacitor define-template generic_mean_alert -tick template-task.tick -type stream
此命令需要一个新的或现有的模板标识符,该标识符在define-template令牌后立即提供。如果该标识符在Kapacitor中尚不存在,将创建一个新模板。如果该标识符已经存在,则现有的模板将被更新。还需要提供一个定义模板的TICKscript的路径,通过参数-tick提供。最后还必须定义任务的-type。
此任务不返回状态或其他消息。
要验证结果,请使用 list templates 命令。
enable
该 enable 命令启用一个或多个任务。 当任务首次创建时,它们处于 disabled 状态。
# Syntax
kapacitor enable <TASK_ID>
# Example
kapacitor enable cpu_alert
该命令不返回状态或附加消息。
要验证结果,请使用 list tasks 命令。
disable
禁用 disable 命令会禁用一个或多个活动任务。
# Syntax
kapacitor disable <TASK_ID>...
# Examples
kapacitor disable cpu_alert
kapacitor disable cpu_alert cpu_alert_topic sandbox
该命令不返回状态或其他消息。
要验证结果,请使用 list tasks 命令。
reload
此 reload 命令禁用然后重新启用一个或多个任务。 在排查任务故障时,停止并重新启动它非常有用。
# Syntax
kapacitor reload <TASK_ID>
kapacitor reload cpu_alert
该命令不返回状态或附加消息。
要验证结果,请使用 list tasks 命令。
如果在排除故障和对任务进行更改时,在重新加载之前,请使用更新的 TICKscript、模板或模板文件,通过 define 命令重新定义。
list tasks
命令list tasks显示当前由Kapacitor存储的所有任务。
$ kapacitor list tasks
ID Type Status Executing Databases and Retention Policies
8405b862-e488-447d-a021-b1b7fe0d7194 stream disabled false ["telegraf"."autogen"]
batch_load_test batch enabled true ["telegraf"."autogen"]
chronograf-v1-b12b2554-cf38-4d7e-af24-5b0cd3cecc54 stream enabled true ["telegraf"."autogen"]
cpu_alert stream enabled true ["telegraf"."autogen"]
cpu_idle stream disabled false ["telegraf"."autogen"]
sandbox stream disabled false ["blabla"."autogen"]
list templates
命令 list templates 显示当前 Kapacitor 存储的所有模板。
$ kapacitor list templates
ID Type Vars
generic_mean_alert stream crit,field,groups,measurement,slack_channel,warn,where_filter,window
show
命令show输出任务的详细信息。
# Syntax
kapacitor show [-replay <REPLAY_ID>] <TASK_ID>
# Example
kapacitor show cpu_alert
REPLAY_ID 是当前正在运行的重播的标识符。
示例显示任务输出
ID: cpu_alert
Template: template_id (included if task was created from a template)
Error:
Template:
Type: stream
Status: enabled
Executing: true
Created: 13 Nov 17 13:38 CET
Modified: 16 Jan 18 17:11 CET
LastEnabled: 16 Jan 18 17:11 CET
Databases Retention Policies: ["telegraf"."autogen"]
TICKscript:
stream
// Select just the cpu measurement from our example database.
|from()
.measurement('cpu')
|alert()
.crit(lambda: int("usage_idle") < 70)
// Whenever we get an alert write it to a file.
.log('/tmp/alerts.log')
DOT:
digraph cpu_alert {
graph [throughput="0.00 points/s"];
stream0 [avg_exec_time_ns="0s" errors="0" working_cardinality="0" ];
stream0 -> from1 [processed="2574"];
from1 [avg_exec_time_ns="1.92µs" errors="0" working_cardinality="0" ];
from1 -> alert2 [processed="2574"];
alert2 [alerts_triggered="147" avg_exec_time_ns="1.665189ms" crits_triggered="104" errors="0" infos_triggered="0" oks_triggered="43" warns_triggered="0" working_cardinality="1" ];
}
show-template
该 show-template 命令输出任务模板的详细信息。
# Syntax
kapacitor show-template <TEMPLATE_ID>
# Example
kapacitor show-template generic_mean_alert
示例显示模板输出
ID: generic_mean_alert
Error:
Type: stream
Created: 25 Oct 17 10:12 CEST
Modified: 16 Jan 18 16:52 CET
TICKscript:
// Which measurement to consume
var measurement string
// Optional where filter
var where_filter = lambda: TRUE
// Optional list of group by dimensions
var groups = [*]
// Which field to process
var field string
// Warning criteria, has access to 'mean' field
var warn lambda
// Critical criteria, has access to 'mean' field
var crit lambda
// How much data to window
var window = 5m
// The slack channel for alerts
var slack_channel = '#kapacitor'
stream
|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 Default Value Description
crit lambda <required> Critical criteria, has access to 'mean' field
field string <required> Which field to process
groups list [*] Optional list of group by dimensions
measurement string <required> Which measurement to consume
slack_channel string #kapacitor The slack channel for alerts
warn lambda <required> Warning criteria, has access to 'mean' field
where_filter lambda TRUE Optional where filter
window duration 5m0s How much data to window
DOT:
digraph generic_mean_alert {
stream0 -> from1;
from1 -> window2;
window2 -> mean3;
mean3 -> alert4;
}
delete tasks
删除任务
# Syntax
kapacitor delete tasks <Task-IDs | Pattern>
# Example
kapacitor delete tasks 8405b862-e488-447d-a021-b1b7fe0d7194
Pattern 可以是一个类似于GREP的模式,用于识别一组任务。
例如,如果值 cpu0 被分配给多个 task(例如,
cpu01,cpu02,cpu03),那么所有 cpu 测试都可以用
模式 "cpu*" 移除。
此命令不会返回任何状态或附加消息。
它默默地失败或成功。
要验证结果,请使用 list tasks 命令。
delete templates
删除 delete templates 命令会移除一个或多个模板。
# Syntax
kapacitor delete templates <Template-IDs | Pattern>
# Example
kapacitor delete templates generic_mean_alert
Pattern 可以是一个类似于 GREP 的模式,用于识别一组任务模板。例如,如果值 generic0 被赋值给多个 template(例如 generic01、generic02、generic03),那么所有 generic 模板都可以使用模式 "generic*" 被移除。
此命令没有返回状态或其他消息。
它静默地失败或成功。
要验证结果,请使用 list templates 命令。
Flux 任务
命令 flux tasks 及其子命令管理 Kapacitor Flux 任务。
flux task createflux task listflux task updateflux task retry-failedflux task log listflux task run listflux task run retry
创建 flux 任务
该 kapacitor flux task create 命令创建一个新的 Kapacitor Flux 任务。
kapacitor flux task create [flags] [flux script or '-' to read from stdin]
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
-f | --file | Flux脚本文件的路径 | 字符串 |
-h | --help | 显示命令帮助 | |
--json | 将输出格式化为JSON |
有关使用示例,请参见 创建 Kapacitor Flux 任务。
flux 任务列表
此 kapacitor flux task list 命令列出 Kapacitor Flux 任务。
kapacitor flux task list [flags]
别名: find, ls
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
-h | --help | 显示命令帮助 | |
-i | --id | 任务ID | 字符串 |
--json | 将输出格式化为JSON | ||
--limit | 列出任务的数量(默认是500) | integer | |
-n | --user-id | 任务拥有者ID | 字符串 |
有关用法示例,请参见 List Kapacitor Flux tasks。
flux 任务更新
该 kapacitor flux task update 命令用于更新 Kapacitor Flux 任务。
kapacitor flux task update [flags] [flux script or '-' for stdin]
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
-f | --file | Flux脚本文件的路径 | 字符串 |
-h | --help | 显示命令帮助 | |
-i | --id | (必需) 任务ID | string |
--json | 将输出格式化为JSON | ||
--status | 更新任务状态 (active 或 inactive) | 字符串 |
有关使用示例,请参见 更新Kapacitor Flux任务。
flux 任务 重试失败
该 kapacitor flux task retry-failed 命令重试失败的Kapacitor Flux任务运行。
kapacitor flux task retry-failed [flags]
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
--after | 重试在此时间之后发生的运行(RFC3339 时间戳) | string | |
--before | 重试此时间之前发生的运行(RFC3339 时间戳) | string | |
--dry-run | 输出关于将被重试的运行的信息 | ||
-h | --help | 显示命令帮助 | |
-i | --id | 任务ID | 字符串 |
--json | 将输出格式化为JSON | ||
--run-limit | 每个任务要重试的最大失败运行次数(默认是100) | integer | |
--status | 更新任务状态(active 或 inactive) | 字符串 | |
--task-limit | 最大重试失败运行的任务数(默认是100) | integer |
有关用法示例,请参见 重试失败的Kapacitor Flux任务。
flux 任务日志列表
该 kapacitor flux task log list 命令输出 Kapacitor Flux 任务日志。
kapacitor flux task log list [flags]
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
-h | --help | 显示命令帮助 | |
--json | 将输出格式化为JSON | ||
--run-id | 任务运行 ID | string | |
--task-id | (必填) 任务ID | string |
有关使用示例,请参见 查看Kapacitor Flux任务日志。
flux 任务运行列表
命令 kapacitor flux task run list 列出一个 Kapacitor Flux 任务的运行。
kapacitor flux task run list [flags]
别名: find, ls
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
--after | 列出在此时间后发生的运行(RFC3339 时间戳) | string | |
--before | 列出在此时间之前发生的运行(RFC3339 时间戳) | string | |
-h | --help | 显示命令帮助 | |
--json | 将输出格式化为JSON | ||
--limit | 要列出的任务运行数量(默认是100) | integer | |
--run-id | 任务运行 ID | 字符串 | |
--task-id | (必需) 任务 ID | string |
有关用法示例,请参见 Mange Kapacitor Flux task runs。
flux 任务运行重试
该kapacitor flux task run retry命令重试Kapacitor Flux任务的运行。
kapacitor flux task run retry [flags]
标志
| 标志 | 描述 | 输入类型 | |
|---|---|---|---|
-h | --help | 显示命令帮助 | |
--json | 将输出格式化为JSON | ||
--run-id | (必须) 任务运行 ID | 字符串 | |
--task-id | (必填) 任务ID | string |
使用示例,见 Mange Kapacitor Flux task runs。