Невозможно получить ответ http Post на локальное экспресс-приложение из потока Kapacitor - PullRequest
0 голосов
/ 13 марта 2019

Я слежу за SE Thread , чтобы получить ответ на HTTP POST на экспресс-узле. Но не удалось получить ответ от kapacitor.

Окружающая среда

Я использую Windows 10 через PowerShell . Я подключен к внутреннему серверу InfluxDB, который указан в kapacitor.conf, и у меня есть TICKscript для потоковой передачи данных через него.

kapacitor.conf

hostname = "134.102.97.81"
data_dir = "C:\\Users\\des\\.kapacitor"
skip-config-overrides = true
default-retention-policy = ""

[alert]
  persist-topics = true

[http]
  bind-address = ":9092"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false
  https-enabled = false
  https-certificate = "/etc/ssl/kapacitor.pem"
  https-private-key = ""
  shutdown-timeout = "10s"
  shared-secret = ""

[replay]
  dir = "C:\\Users\\des\\.kapacitor\\replay"

[storage]
  boltdb = "C:\\Users\\des\\.kapacitor\\kapacitor.db"

[task]
  dir = "C:\\Users\\des\\.kapacitor\\tasks"
  snapshot-interval = "1m0s"

[load]
  enabled = false
  dir = "C:\\Users\\des\\.kapacitor\\load"

[[influxdb]]
  enabled = true
  name = "DB5Server"
  default = true
  urls = ["https://influxdb.internal.server.address:8086"]
  username = "user"
  password = "password"
  ssl-ca = ""
  ssl-cert = ""
  ssl-key = ""
  insecure-skip-verify = true
  timeout = "0s"
  disable-subscriptions = true
  subscription-protocol = "https"
  subscription-mode = "cluster"
  kapacitor-hostname = ""
  http-port = 0
  udp-bind = ""
  udp-buffer = 1000
  udp-read-buffer = 0
  startup-timeout = "5m0s"
  subscriptions-sync-interval = "1m0s"
  [influxdb.excluded-subscriptions]
    _kapacitor = ["autogen"]

[logging]
  file = "STDERR"
  level = "DEBUG"

[config-override]
  enabled = true

[[httppost]]
  endpoint = "kapacitor"
  url = "http://localhost:1440"
  headers = { Content-Type = "application/json;charset=UTF-8"}
  alert-template = "{\"id\": {{.ID}}}"

Демон работает без проблем.

test2.tick

dbrp "DBTEST"."autogen"

stream
    |from()
        .measurement('humid')
    |alert()
        .info(lambda: TRUE)
        .post()
        .endpoint('kapacitor')
  1. Уже определено задание .\kapacitor.exe define bc_1 -tick test2.tick
  2. Включено .\kapacitor.exe enable bc_1

Статус ничего не показывает:

.\kapacitor.exe show bc_1



ID: bc_1
Error:
Template:
Type: stream
Status: enabled
Executing: true
Created: 13 Mar 19 15:33 CET
Modified: 13 Mar 19 16:23 CET
LastEnabled: 13 Mar 19 16:23 CET
Databases Retention Policies: ["NIMBLE"."autogen"]
TICKscript:
dbrp "TESTDB"."autogen"

stream
    |from()
        .measurement('humid')
    |alert()
        .info(lambda: TRUE)
        .post()
        .endpoint('kapacitor')

DOT:
digraph bc_1 {
graph [throughput="0.00 points/s"];

stream0 [avg_exec_time_ns="0s" errors="0" working_cardinality="0" ];
stream0 -> from1 [processed="0"];

from1 [avg_exec_time_ns="0s" errors="0" working_cardinality="0" ];
from1 -> alert2 [processed="0"];

alert2 [alerts_inhibited="0" alerts_triggered="0" avg_exec_time_ns="0s" crits_triggered="0" errors="0" infos_triggered="0" oks_triggered="0" warns_triggered="0" working_cardinality="0" ];
}

Журналы Daemon предоставляют это для задачи

ts=2019-03-13T16:25:23.640+01:00 lvl=debug msg="starting enabled task on startup" service=task_store task=bc_1
ts=2019-03-13T16:25:23.677+01:00 lvl=debug msg="starting task" service=kapacitor task_master=main task=bc_1
ts=2019-03-13T16:25:23.678+01:00 lvl=info msg="started task" service=kapacitor task_master=main task=bc_1
ts=2019-03-13T16:25:23.679+01:00 lvl=debug msg="listing dot" service=kapacitor task_master=main dot="digraph bc_1 {\nstream0 -> from1;\nfrom1 -> alert2;\n}"
ts=2019-03-13T16:25:23.679+01:00 lvl=debug msg="started task during startup" service=task_store task=bc_1
ts=2019-03-13T16:25:23.680+01:00 lvl=debug msg="opened service" source=srv service=*task_store.Service
ts=2019-03-13T16:25:23.680+01:00 lvl=debug msg="opening service" source=srv service=*replay.Service
ts=2019-03-13T16:25:23.681+01:00 lvl=debug msg="skipping recording, metadata is already correct" service=replay recording_id=353d8417-285d-4fd9-b32f-15a82600f804
ts=2019-03-13T16:25:23.682+01:00 lvl=debug msg="skipping recording, metadata is already correct" service=replay recording_id=a8bb5c69-9f20-4f4d-8f84-109170b6f583

Но я ничего не получаю на стороне Экспресс-узла. Код точно такой же, как и в вышеупомянутом потоке SE.

Какая-нибудь справка о том, как захватить поток с Kapacitor на HTTP Post? У меня уже есть действующая система, которая уже загружает информацию в выделенную базу данных

1 Ответ

0 голосов
/ 14 марта 2019

Мне удалось переместить фокус с stream на batch в приведенном выше запросе. Я задокументировал полный процесс на medium.com .

Некоторые файлы:

kapacitor.gen.conf

hostname = "my-windows-10"
data_dir = "C:\\Users\\<user>\\.kapacitor"
skip-config-overrides = true
default-retention-policy = ""

[alert]
  persist-topics = true

[http]
  bind-address = ":9092"
  auth-enabled = false
  log-enabled = true
  write-tracing = false
  pprof-enabled = false
  https-enabled = false
  https-certificate = "/etc/ssl/kapacitor.pem"
  https-private-key = ""
  shutdown-timeout = "10s"
  shared-secret = ""

[replay]
  dir = "C:\\Users\\des\\.kapacitor\\replay"

[storage]
  boltdb = "C:\\Users\\des\\.kapacitor\\kapacitor.db"

[task]
  dir = "C:\\Users\\des\\.kapacitor\\tasks"
  snapshot-interval = "1m0s"

[load]
  enabled = false
  dir = "C:\\Users\\des\\.kapacitor\\load"

[[influxdb]]
  enabled = true
  name = "default"
  default = true
  urls = ["http://127.0.0.1:8086"]
  username = ""
  password = ""
  ssl-ca = ""
  ssl-cert = ""
  ssl-key = ""
  insecure-skip-verify = true
  timeout = "0s"
  disable-subscriptions = true
  subscription-protocol = "http"
  subscription-mode = "cluster"
  kapacitor-hostname = ""
  http-port = 0
  udp-bind = ""
  udp-buffer = 1000
  udp-read-buffer = 0
  startup-timeout = "5m0s"
  subscriptions-sync-interval = "1m0s"
  [influxdb.excluded-subscriptions]
    _kapacitor = ["autogen"]

[logging]
  file = "STDERR"
  level = "DEBUG"

[config-override]
  enabled = true

# Subsequent Section describes what this conf does

[[httppost]]
  endpoint = "kap"
  url = "http://127.0.0.1:30001/kapacitor"
  headers = { "Content-Type" = "application/json"}

TICKScript

var data =  batch
     | query('SELECT "v" FROM "telegraf_test"."autogen"."humid"')
       .period(5s)
       .every(10s)

data
      |httpPost()
       .endpoint('kap')

Определить задачу

.\kapacitor.exe define batch_test -tick .\batch_test.tick -dbrp DBTEST.autogen

Я подозреваю, что hostname был ошибочным, когда он был установлен на localhost ранее, но я установил его в качестве имени хоста моей машины и вместо этого использовал IP-адрес 127.0.0.1, когда localhost был упомянут

...