5

我正在使用 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]] 配置

[[httppost]]
   endpoint = "NodeJs"
   url = "http://localhost:1440/alert"
#   headers = { Example = "node" }
#   basic-auth = { username = "my-user", password = "my-pass" }
4

2 回答 2

0

您实际上需要在刻度脚本上设置端点,例如:

...
.post()
.endpoint('NodeJs')
于 2018-10-25T10:32:05.673 回答
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

于 2019-01-28T16:30:04.937 回答