前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Grafana 和 Loki 搭建 Milvus 日志查询系统

使用 Grafana 和 Loki 搭建 Milvus 日志查询系统

作者头像
Zilliz RDS
发布2024-07-20 10:51:22
1300
发布2024-07-20 10:51:22
举报
文章被收录于专栏:Reinvent Data Science

本教程将介绍如何设置 Grafana 和 Loki 来有效监控您的 Milvus 实例。

Milvus 是一款分布式向量数据库,可高效存储、索引和管理万亿级 Embedding 向量,是搭建 AI 和 ML 应用的首选向量数据库系统。

Grafana 是一个开源的指标监控平台,提供可视化的指标和日志界面,允许用户自定义创建仪表板以监控系统状态和性能。本教程中将 Loki 与 Grafana 配合使用形成日志聚合系统的灵感来源于 Prometheus——以高效且低成本地方式管理日志。Grafana 和 Loki 共同构成了可靠的监控设置。

01.、前提条件

  • Docker:确保您已安装 Docker。
  • Kubernetes:确保您已准备好 Kubernetes 集群。您可以在本地开发中使用 minikube 或 k3d,或者在生产环境中使用由云服务供应商提供的 Kubernetes 服务。
  • Helm:确保您已安装 Helm 用于管理 Kubernetes 应用。您可以查看文档了解如何安装 Helm。
  • Kubectl:确保您已安装 kubectl,一款用于与 Kubernetes 集群进行交互的命令行工具。具体功能包含部署应用、检查和管理集群资源、查看日志等。

02.、设置K8s

运行 K8s 集群:

代码语言:javascript
复制
minikube start

检查 K8s 集群状态:

代码语言:javascript
复制
kubectl cluster-info

注意:您需要在 K8s 上部署 Milvus。详情请参考指南。

https://milvus.io/blog/getting-started-with-milvus-cluster-and-k8s.md

03.、部署Grafana

Grafana 是一个可视化的指标分析和交互平台,提供了丰富多样的图表、图形和告警,允许用户查询指标、生成可视化指标视图、创建告警。

使用 Helm 安装 Grafana:

代码语言:javascript
复制
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace

查看运行状态。

代码语言:javascript
复制
 ❯ kubectl get all -n grafana                                                                                                        
NAME                          READY   STATUS    RESTARTS      AGE
pod/grafana-987d4c5c6-sb8t9   1/1     Running   1 (58m ago)   47h

NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/grafana   ClusterIP   10.43.114.168   <none       80/TCP    47h

NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/grafana   1/1     1            1           47h

NAME                                DESIRED   CURRENT   READY   AGE
replicaset.apps/grafana-987d4c5c6   1         1         1       47h

04.、部署Loki和Promtail

Loki 是一个日志聚合系统,用于高效管理日志。Loki 使用 Promtail 来聚合日志。Promtail 是一个日志收集代理,专为 Loki 设计,负责收集、标记并将日志发送到 Loki。您会看到每个 Kubernetes 节点上都运行着一个 Promtail 实例。

Loki 有着一套独特的日志索引方式。Loki 不会对日志的实际文本进行索引。相反,日志被智能地分组到日志流中,然后用标签进行索引。这种方法显著降低了成本,并缩短了日志获取到查询可用之间的时间,实现高效资源管理。

Loki 支持不同的方式部署:

  1. 单体模式:这种模式中,Loki 的所有组件都在单个进程中运行。它适合较小且简单的应用规模。
  2. 可扩展模式:这种模式中,Loki 的组件被分解为独立的服务,如分发器、摄取器、查询器等。这种设置设计适用于高可用性和可扩展性应用,非常适合大规模部署。这种模式需要一个兼容 S3 的对象存储来存储日志数据,例如 AWS S3、Google Cloud Storage 或者自托管解决方案,如 MinIO。

安装 Loki:

代码语言:javascript
复制
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace

上述命令将会在grafana-loki namespace 中安装 Loki. 如指定 namespace 不存在,Helm 将会自动为您创建一个该名称的 namespace。

查看运行状态:

代码语言:javascript
复制
❯ kubectl get all -n grafana-loki
NAME                                                        READY   STATUS    RESTARTS      AGE
pod/loki-loki-distributed-distributor-6b75796c6b-qvdbc      1/1     Running   1 (68m ago)   28h
pod/loki-loki-distributed-querier-0                         1/1     Running   1 (68m ago)   28h
pod/loki-loki-distributed-query-frontend-55574bdd64-5hhvl   1/1     Running   1 (68m ago)   28h
pod/loki-loki-distributed-ingester-0                        1/1     Running   1 (68m ago)   28h
pod/loki-loki-distributed-gateway-c6ccc655b-mkg5j           1/1     Running   0             67m
NAME                                                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
service/loki-loki-distributed-memberlist                ClusterIP   None           <none>        7946/TCP                     47h
service/loki-loki-distributed-ingester-headless         ClusterIP   None           <none>        3100/TCP,9095/TCP            47h
service/loki-loki-distributed-query-frontend-headless   ClusterIP   None           <none>        3100/TCP,9095/TCP,9096/TCP   47h
service/loki-loki-distributed-ingester                  ClusterIP   10.43.13.160   <none>        3100/TCP,9095/TCP            47h
service/loki-loki-distributed-querier-headless          ClusterIP   None           <none>        3100/TCP,9095/TCP            47h
service/loki-loki-distributed-distributor               ClusterIP   10.43.201.9    <none>        3100/TCP,9095/TCP            47h
service/loki-loki-distributed-query-frontend            ClusterIP   10.43.99.40    <none>        3100/TCP,9095/TCP,9096/TCP   47h
service/loki-loki-distributed-gateway                   ClusterIP   10.43.186.50   <none>        80/TCP                       47h
service/loki-loki-distributed-querier                   ClusterIP   10.43.53.211   <none>        3100/TCP,9095/TCP            47h
NAME                                                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/loki-loki-distributed-distributor      1/1     1            1           47h
deployment.apps/loki-loki-distributed-query-frontend   1/1     1            1           47h
deployment.apps/loki-loki-distributed-gateway          1/1     1            1           47h
NAME                                                              DESIRED   CURRENT   READY   AGE
replicaset.apps/loki-loki-distributed-distributor-6b75796c6b      1         1         1       47h
replicaset.apps/loki-loki-distributed-query-frontend-55574bdd64   1         1         1       47h
replicaset.apps/loki-loki-distributed-gateway-c6ccc655b           1         1         1       47h
NAME                                              READY   AGE
statefulset.apps/loki-loki-distributed-querier    1/1     47h
statefulset.apps/loki-loki-distributed-ingester   1/1     47h

安装 Promtail:

安装前需要先进行配置,以便实现 Promtail 与 Loki 间的交互。具体而言,需要编辑配置文件,输入 Loki service URL:

1.获取默认 Promtail 配置:

代码语言:javascript
复制
#!pip install langchain openai pymilvus ragas

上述命令将默认 Promtail 配置写入一个名为 promtail-overrides.yaml 的文件。后续,您可以按需修改此配置文件。

2.编辑默认 Promtail 配置:

编辑 promtail-overrides.yaml 文件,将clients.url 的值修改为正确的 Loki service endpoint。您可以使用 Loki 的 DNS 名称作为 service endpoint。本示例中使用 loki-loki-distributed-gateway.grafana-loki.svc.cluster.local。

注意:如果您将 Loki 部署在其他的 namespace 中,请同步修改 URL。详情请参考 K8s 文档。

3.使用修改后的配置文件部署 Promtail :

代码语言:javascript
复制
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki

上述命令根据您的配置使用 Helm 在 grafana-loki namespace 中安装 Promtail。设置完成后,Promtail 就能够将日志发送至 Loki,实现日志聚合功能。

同样,检查运行状态:

代码语言:javascript
复制
❯ kubectl get all -n grafana-loki | grep promtail                                                                                    pod/promtail-qgl4t                                          1/1     Running   1 (77m ago)   28h
daemonset.apps/promtail   1         1         1       1            1           <none>          2d

05.、配置Grafana数据源和面板

安装设置完 Loki 和 Promtail 后,需要将 Loki 作为数据源集成到 Grafana 中,从而实现日志可视化和查询功能。

1.连接至 Grafana:首先,需要先连接至 Grafana 实例。如果在您的 K8s 集群中运行 Grafana,请使用 port forwarding 将你的本地机器连接至 Grafana。

代码语言:javascript
复制
kubectl port-forward service/grafana 8080:80 -n grafana

2.登录 Grafana:默认 Grafana 用户名为 admin. 请使用下方命令获取安装时自动生成的密码。

代码语言:javascript
复制
kubectl get secret --namespace grafana grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

3.前往 Data Sources 页面:成功登录后,点击侧边栏中的 Connection 标志,选择 Data Source。

4.添加 Loki:点击 "Add data source" 按钮,搜索并选中 Loki。您将自动跳转至 Loki 数据源设置页面。

5.设置 Loki 数据源:输入 Loki service URL。本例中使用默认配置:http://loki-loki-distributed-gateway.grafana-loki.svc.cluster.local

6.保存并测试配置:点击"Save & Test"按钮。Grafana 会确认是否成功连接至 Loki 数据源。

查看日志

现在我们可以查看日志啦!我们可以添加过滤条件,过滤app 名称,筛选出 milvus 相关日志,用于检查 Milvus 是否正常运行。

如果日志结果和以上截图相似,那么恭喜您!您已成功使用 Grafana 和 Loki 搭建了一个 Milvus 监控系统!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档