自动安装包括向 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.3
HTTP 服务器,收到了没有数据,正如您所观察到的。
我添加了配置以使其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
其他说明