如何在 Jina 搜索应用程序基础上设置监控?
介绍
监控(monitor)是观察、跟踪和测量在生产中运行的应用程序的过程。通过监控生产应用程序,组织可以在问题导致客户体验问题或业务关键型中断之前识别并解决问题。
在 Jina 搜索应用程序中,可以监控许多不同的组件, Jina Flow 公开了几个核心指标,您可以更深入地了解其中发生的情况。通过指标,您可以监控 Flow 的整体状态、检测性能瓶颈或在 Flow 的某些组件关闭时提醒您的团队。
要在Jina Seach Applications中设置监控,我们将使用以下技术堆栈:
1、Prometheus
2、Grafana
什么是Prometheus?
Prometheus是一个开源的系统监控和警报工具包。Prometheus以时间序列数据的形式收集并存储它的指标,也就是说,指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。
Jina Flow遵循Prometheus的接口发布指标。这是一种人类和机器都能理解的纯文本格式。Prometheus 负责收集和存储这些指标,并将它们发送给Grafana进行可视化。
什么是Grafana?
Grafana是一个开源工具,允许你从中央仪表板查询、可视化和理解您的指标。Prometheus 允许像 Grafana 这样的外部实体通过查询语言 PromQL 访问聚合指标。它还提供了创建、探索和与团队共享仪表板的选项,这样你就可以更好地了解监视和警报设置。
监视设置实践
现在,我们将带您完成使用 Prometheus 和 Grafana 为Jina应用程序设置监视所需的步骤。
这个过程的第一步是在Kubernetes上部署你的Jina Flow,它将启用以下监控特性:
1、它将允许 Prometheus 运营商发现新的节点,并自动获取指标数据。
2、它将允许自然监测扩展与丰富的内置 Kubernetes 指标。
3、要完成本教程的其余部分,您需要访问 Kubernetes 集群。如果没有实例,可以按照文档中提到的说明轻松地启动一个新实例。
下一步是在 k8s 集群上部署 Prometheus 和 Grafana ,这就像执行以下命令一样简单:
helm install prometheus prometheus-community/kube-prometheus-stack — set
prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
现在你可以在 Kubernetes 集群上部署我们想要监控的 Flow 。下面是一个步骤指导:
from jina import Flow
f = Flow(monitoring=True).add(uses='jinahub+docker://SimpleIndexer')
f.to_k8s_yaml('config')
运行此代码将创建一个包含 Flow 的 Kubernetes YAML 定义的文件夹。请查看以下文档以深入了解在 Kubernetes 上部署 Flow .config
从你的工作目录在终端中运行以下命令来部署我们上面创建的 Flow :
kubectl apply -R -f config
在几分钟内,你可以使用以下命令检查 pods 的健康状况和状态:
kubectl get pods
上一条命令的输出信息
一旦您验证了 pods 已经启动并运行,您可以使用以下命令启动 Prometheus 实例:
kubectl port-forward svc/prometheus-operated 9090:9090
上一条命令的输出信息
访问 Grafana 仪表板
为了实时可视化指标,您需要将您的 Prometheus 实例与 Grafana 仪表板连接起来。在继续之前,必须进行端口转发以查询网关。你可以使用下面的命令:
kubectl port-forward svc/gateway 8080:8080
现在,要访问Grafana仪表板,您可以在终端中运行以下命令,并在浏览器中打开http://localhost:3000。
kubectl port-forward svc/prometheus-grafana 3000:80
查看以下文档获取访问 Grafana 仪表板的用户名和密码。
一旦你可以访问 Grafana 主页,然后进入 Browse ,然后导入、复制和粘贴 JSON 文件,打开仪表板。但是在查询 Flow 之前,仪表板看起来是空的。
要查询 Kubernetes 上部署的 Flow ,你可以使用带有特定端口的 Jina Client 来发送和接收请求。让我们来看一个使用 Jina 客户端查询 Flow 的简单示例:
from jina import Client
from docarray import DocumentArray
client = Client(port=51000)
client.index(inputs=DocumentArray.empty(size=4))
client.search(inputs=DocumentArray.empty(size=4))
运行此代码后,您将能够在 Grafana 仪表板上查看实时更新的请求详细信息,如下图所示:
这时,你已经成功地为您的Jina应用程序启用了监控,它将允许您实时监控所有传入和传出的请求!
监测行动!
为了解监视特性的潜在功能,我们创建了一个交互式视频演练来支持对真实应用程序的监视。这个视频将带您通过使用 Totally Looks Like 数据集的图像搜索应用程序的监控设置。
要获得源代码,请查看下面的 Colab Notebook :
https://colab.research.google.com/github/jina-ai/tutorial-notebooks/blob/main/monitoring/client.ipynb
神经搜索、深度学习、推荐系统
教程、Demo、干货分享
扫码备注加入讨论组
更多精彩内容(点击图片阅读)