我正在使用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')
以下是第一篇帖子脚本:
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);
以下是第二篇帖子:
<?php
$content = json_encode($_REQUEST);
echo file_put_contents("/home/mahendra/Documents/tick/highcputick.log", $content);
?>
这两个网址都获得了空间数据。 Kapacitor版本是: Kapacitor 1.3.1
以下是Kapacitor [[httppost]] config
[[httppost]]
endpoint = "NodeJs"
url = "http://localhost:1440/alert"
# headers = { Example = "node" }
# basic-auth = { username = "my-user", password = "my-pass" }
答案 0 :(得分:0)
您实际上需要在滴答脚本中设置端点,例如:
...
.post()
.endpoint('NodeJs')
答案 1 :(得分:0)
我在php-zend框架中遇到了类似的问题,这就是我解决问题的方式。
header('Content-Type: application/json');
$data = json_decode(file_get_contents('php://input'),true);
您的消息详细信息将在$ data中。我在这里得到的:https://github.com/influxdata/kapacitor/issues/1681