我想知道在tickscript开发过程中,是否有机会在通过处理节点后转储流状态(登录到文件,stdout)?
当我在kapacitor.conf的Influxdb设置中的url设置中尝试localhost时,我能够正确地获取警报.
但是当我试图将url指向某个远程位置时,你可能无法获得任何警报.
有人可以帮助我吗?
请在下面找到kapacitor.conf文件:
# The hostname of this node.
# Must be resolvable by any configured InfluxDB hosts.
hostname = "localhost"
# Directory for storing a small amount of metadata about the server.
data_dir = "/var/lib/kapacitor"
[http]
# HTTP API Server for Kapacitor
# This server is always on,
# it servers both as a write endpoint
# and as the API endpoint for all other
# Kapacitor calls.
bind-address = ":9092"
auth-enabled = false
log-enabled = true
write-tracing …Run Code Online (Sandbox Code Playgroud) 我有以下棒脚本
stream
|from()
.measurement('mymetric_value')
|deadman(1.0, 10s)
.message('service is down!')
.log('/tmp/alerts.log')
.email('myemail@company.com')
Run Code Online (Sandbox Code Playgroud)
它每隔10秒发送一次警报,告知服务已关闭.如何将其设置为仅发送一个?
我有一个带有两个查询的TICK脚本(如下所示),两个查询都groupBy在同一标签上执行。然后,该脚本连接两个查询该标记,并指定一个完全外部联接fill的'null'。但是,Kapacitor似乎将其视为内部联接,如统计数据所示(也在下面)。查询分别发出33和32点,而联接则发出32点。一个完整的外部联接不应该至少发出与具有更大点数(33)的查询一样多的点吗?当我|log()查询时,我能够识别被联接删除的记录-它是由一个查询发出的,而不是由另一个查询发出的。
关于如何进一步解决此问题的任何建议?
勾号脚本:
var raw_event = batch
|query('''select rsum from jsx.autogen.raw_event''')
.period(1m)
.every(1m)
.offset(1h)
.align()
.groupBy('location')
var event_latency = batch
|query('''select rsum from jsx.autogen.event_latency''')
.period(1m)
.every(1m)
.offset(1h)
.align()
.groupBy('location', 'glocation')
raw_event
|join(event_latency)
.fill('null')
.as('raw_event','event_latency')
.on('location')
.streamName('join_stream')
|log()
Run Code Online (Sandbox Code Playgroud)
统计:
"node-stats": {
"batch0": {
"avg_exec_time_ns": 0,
"collected": 65,
"emitted": 0
},
"join4": {
"avg_exec_time_ns": 11523,
"collected": 65,
"emitted": 32
},
"log5": {
"avg_exec_time_ns": 0,
"collected": 32,
"emitted": 0
},
"query1": {
"avg_exec_time_ns": 0,
"batches_queried": …Run Code Online (Sandbox Code Playgroud) 我正在使用kapacitor使用HTTP POST将警报发送到URL。写入的脚本在给定的URL上命中,但未将相关数据发送到任何给定的URL。
以下是我的TICK脚本。
stream
|from()
.measurement('cpu')
|alert()
.id('kapacitor/{{ index .Tags "host"}}')
.message('{{ .ID }} is {{ .Level }} value:{{ index .Fields "value" }}')
.info(lambda: TRUE)
.post('http://localhost:1440/alert')
.post('http://localhost/test.php')
Run Code Online (Sandbox Code Playgroud)
以下是第一个帖子脚本:
var express = require("express");
var app = express();
var moment = require("moment");
var dateTime = moment();
var bodyParser = require("body-parser");
var urlencodedParser = bodyParser.urlencoded({extended:false});
var jsonParser = bodyParser.json();
var port = 1440;
app.post('/alert', jsonParser ,function(request, response){
console.log(request.body);
response.send();
});
app.listen(port);
console.log('Express App.js listening to port '+port);
Run Code Online (Sandbox Code Playgroud)
以下是第二个帖子脚本:
<?php
$content = json_encode($_REQUEST);
echo …Run Code Online (Sandbox Code Playgroud) 我正在引导一个全新的 TICK 堆栈,并且非常喜欢整个系统。. . 然而,关于 Kapacitor 的一点让我感到困惑。
如果您查看此处的图表:https://www.influxdata.com/time-series-platform/kapacitor/,有一个箭头将 Telegraf 连接到 Kapacitor。Telegraf 可以将指标数据直接发送到 Influx,这让我想知道通过 Kapacitor 转发到 Influx 的用例是什么。
唯一想到的用例是您可以将处理逻辑从代理插件移到 Kapacitor 中,从而最大限度地减少代理的占用空间。
长话短说,我在这里遗漏了什么,是从 Kapacitor 到 Influx 的箭头所暗示的用例吗?