Kapacitor .post()HTTP发布到url不发送数据

时间:2017-09-25 14:50:44

标签: influxdb telegraf kapacitor

我正在使用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" }

2 个答案:

答案 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