自动安装 - 使用 webhook 进行报告

自动安装 - 使用 webhook 进行报告

自动安装包括向 webhook 报告的选项:

reporting:
 hook:
  type: webhook
  endpoint: http://example.com/endpoint/path
  consumer_key: "ck_foo"
  consumer_secret: "cs_foo"
  token_key: "tk_foo"
  token_secret: "tk_secret"
  level: INFO

我尝试配置它,但无济于事。由于我对 webhook 不太熟悉,我首先尝试获取一些信息并设置此配置:

reporting:
 hook:
  type: webhook
  endpoint: localhost:8000

然后我在本地服务器上设置 netcat,如下所示:

nc -l localhost 8000

但在这个套接字上我什么也没得到。我不太清楚如何使用这项服务,但我希望至少能看到一些数据。

答案1

我设置一个 http-echo 服务器并将该reporting部分添加到配置中。 什么时候webhook 报告有效,它似乎为生成的每个日志消息发送一个 HTTP 请求。

例如,文件中的这一行/var/log/installer/subiquity-server-debug.log

2021-05-05 00:06:50,666 DEBUG root:39 finish: subiquity/Network/_send_update: SUCCESS: CHANGE ens192

对应于此 HTTP 请求

--> POST / HTTP/1.1
--> Accept-Encoding: identity
--> Content-Length: 190
--> Host: REDACTED:8080
--> User-Agent: Curtin/21.2-7-gd49d35bc6
--> Content-Type: application/json
--> Authorization: OAuth oauth_nonce="24545438356422201711620173210", oauth_timestamp="1620173210", oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="ck_foo", oauth_token="tk_foo", oauth_signature="cs_foo%26tk_secret"
--> Connection: close
-->
--> {"name": "subiquity/Network/_send_update", "description": "CHANGE ens192", "event_type": "finish", "origin": "curtin", "timestamp": 1620173210.6665578, "level": "DEBUG", "result": "SUCCESS"}

我最初测试了subiquity 20.04.3HTTP 服务器,收到了没有数据,正如您所观察到的。

我添加了配置以使其subiquity自行更新。这导致使用subiquity 21.04.2并且 HTTP 服务器确实收到了消息。

以下是测试的部分配置

#cloud-config
autoinstall:
  refresh-installer:
    update: yes
  reporting:
    mylistener:
      type: webhook
      endpoint: http://REDACTED:8080/
      consumer_key: "ck_foo"
      consumer_secret: "cs_foo"
      token_key: "tk_foo"
      token_secret: "tk_secret"
      level: INFO

其他说明

  • 我没有看到任何提交或者bug修复与报告或 webhook 相关,所以我不确定如何修复它或者应该考虑它的可靠性。
  • 即使级别设置为INFO,webhook 仍然会发送消息DEBUG

相关内容