背景:我将使用OpenFaaS(在Kubernetes中运行)进行一些实验,在其中我将调用多个异步执行请求。 OpenFaaS使用NATS流将这些请求排队,以执行异步功能。

我需要的是一种确定此NATS流式队列大小的方法,这样我就可以知道队列中有多少个项目。是否有命令获取NATS流式队列中项目的大小或数量?我搜索了Google和NATS文档,但没有发现任何用处。

我确实从here中找到了kubectl logs deployment/queue-worker -n openfaas命令,该命令显示了队列的日志。但是,这并不是我想要的(我想要队列中剩余的项目数,而不是队列的完整日志)。

最佳答案

您可以在NATS中启用monitoring endpoint,以获取一些常规endpoints进行查询,这些查询可以下至特定通道。

然后,您可能需要通过一个Ingress在Kubernetes中公开该端点的服务以进行外部访问,如果您想进一步控制哪些端点及其公开方式。

看一看nats-streaming-ft Helm 表中的模板。

将监视端口添加到您的容器spec

spec:
  containers:
  - name: nats-streaming
    args:
      - /opt/nats-streaming-server
      - --http_port=8222

并将所选的监视端口连接到ports中的Service列表。
apiVersion: v1
kind: Service
metadata:
  name: nats-monitoring
  labels:
    app:  nats
spec:
  selector:
    app:  nats
  ports:
  - name: monitoring
    protocol: TCP
    port: 8222

10-02 08:37