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

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

作者头像
Zilliz RDS
发布于 2024-07-20 02:51:22
发布于 2024-07-20 02:51:22
30800
代码可运行
举报
运行总次数:0
代码可运行

本教程将介绍如何设置 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
代码运行次数:0
运行
AI代码解释
复制
minikube start

检查 K8s 集群状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
kubectl cluster-info

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

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

03.、部署Grafana

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

使用 Helm 安装 Grafana:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
helm install grafana grafana/grafana --namespace grafana --create-namespace

查看运行状态。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ❯ 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
代码运行次数:0
运行
AI代码解释
复制
helm upgrade --install loki grafana/loki-distributed -n grafana-loki --create-namespace

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

查看运行状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
❯ 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
代码运行次数:0
运行
AI代码解释
复制
#!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
代码运行次数:0
运行
AI代码解释
复制
helm upgrade --install --values promtail-overrides.yaml promtail grafana/promtail -n grafana-loki

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

同样,检查运行状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
❯ 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
代码运行次数:0
运行
AI代码解释
复制
kubectl port-forward service/grafana 8080:80 -n grafana

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
yum下载rpm包
这是我在制作离线化部署项目时,亲自踩得坑,要下载大量rpm包,因为无知,只能从一个干净系统中执行yum -y install来查看依赖项的rpm包有哪些,然后再去复制名字版本去网页中下载。听起来很笨,要是早点觉悟就不止那么麻烦了
互联网-小阿宇
2022/11/21
3.1K0
麒麟系统V10 SP2 createrepo 更新rpm 软件包仓库 repodata
createrepo 命令用于创建 yum 源(软件仓库),即为存放于本地特定位置的众多 rpm 包建立索引,描述各包所需依赖信息,并形成元数据。
Kevin song
2022/11/19
3.5K0
麒麟系统V10 SP2 createrepo 更新rpm 软件包仓库 repodata
Yum的介绍
Yum 全称为 Yellow dog Updater Modified,它是一个在线的软件安装命令。 能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
编程那点事
2023/02/25
3250
Linux之包管理工具(RPM和YUM)
包管理工具 1. RPM包 RPM:RedHat Package Manager,红帽软件包管理工具。 Linuxd分发版本都有采用(suse,redhat,centos等) 1.1 rpm指令 1.1.1 查看指令 RPM查询已安装的rpm列表:rpm -qa | grep xx 查看是否安装firefox:rpm -qa |grep firefox 如果是i686,i386表示32位系统,noarch表示通用 rpm -qa:查询所安装的所有rpm软件包 rpm -qa | more
yuanshuai
2022/08/22
4350
Linux之包管理工具(RPM和YUM)
浅谈Linux下dpkg、apt-get、yum和rpm命令的区别
小编最近一直进行国产化输入法测试,国产化系统基本上都是基于Linux搭建来的,不同系统安装输入法的命令也是不一样;比如uos(统信)系统用dpkg或者apt-get来安装,而中标麒麟则是用yum或者rpm来安装,那么它们到底有什么区别那?
用户5521279
2020/12/11
8K0
浅谈Linux下dpkg、apt-get、yum和rpm命令的区别
CentOS-创建yum本地源
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
小小工匠
2021/08/16
1.5K0
yum的工作原理及使用
每次yum install或者search的时候,都会去解析/etc/yum.repos.d/下面所有以.repo结尾的配置文件,获取yum服务器地址。yum会定期去更新yum服务器上的rpm包清单,下载到本地缓存(默认在/var/cache/yum/$basearch/$releasever)。每次调用yum安装的时候,都会去本地缓存查找清单,根据清单里的rpm包描述从而确定安装包的名字、版本号、所需要的依赖等,然后再去yum服务器下载(如果缓存中rpm包就不用下载)
十毛
2019/04/28
3.5K0
Linux系列教程(十二)——Linux软件包管理之yum在线管理
IT可乐
2018/01/04
1.7K0
Linux系列教程(十二)——Linux软件包管理之yum在线管理
离线rpm包安装zabbix5.0 LTS版本
经过了两个月的休息,开始了新的工作,zabbix之前有接触,但是不深,后面会着重的学习并分享。
Bob hadoop
2021/06/17
3.6K0
Linux操作系统基础(十二):yum软件包管理器
yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat中的 Shell 前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
Lansonli
2024/03/19
2110
Linux操作系统基础(十二):yum软件包管理器
wget 安装yum_没有yum命令
wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的TCP/IP下载,并可以使用 HTTP 代理。”wget” 这个名称来源于 “World Wide Web” 与 “get” 的结合。
全栈程序员站长
2022/11/02
5.9K0
yum保存要安装的rpm包及其依赖包
以上的[repository]表示下载包的来源仓库的名称(例如:base、fedora、updates)
院长技术
2021/03/24
2.5K0
【玩转linux命令】YUM
简介 yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化更新与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁好记。 命令格式 yum (选项)(参数) 选项: -h:显示帮助信息; -y:对所有的提问都回答“yes”; -c:指定配置文件; -q:安静模式; -v:详细
软测小生
2019/07/05
4.1K0
CentOS 的 YUM安装时卡死解决方案
yum命令 是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更新与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
小陈运维
2021/10/13
1.8K0
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
对于初学Linux的人来说,太多的Linux内核版本会让人不知所措,并且刚开始需要我们下载各种编译器、软件包去调试我们的环境。这个时候肯定就需要我们使用到安装下载的工具。所以这里就来一起学习Linux中yum、wget、apt-get的用法和区别吧
寻求出路的程序媛
2024/08/02
6460
Linux软件管理 - YUM工具
YUM的全称是:Yellowdog Updater Modified,是一个基于RPM包管理的Shell前端软件包管理器。由于是基于RPM包管理器,那么使用的场景也就和RPM类似,主要支持的Linux操作系统为:RedHat、CentOS、Fedora。YUM还提供了图形化前端工具:yumex和kyum,需要在yum正常工作的前提下使用。
一头小山猪
2020/04/10
1.4K0
wget 安装yum_linuxyum不能用
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说wget 安装yum_linuxyum不能用,希望能够帮助大家进步!!!
Java架构师必看
2022/10/24
9940
wget 安装yum_linuxyum不能用
Centos7:yum、rpm使用
yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
新码农
2021/01/06
6350
linux yum 命令
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
狼啸风云
2019/10/24
5.5K0
7.7 yum下载rpm包
安装扩展源epe目录概要 yum install -y epel-release //安装扩展源 yum list |grep epel //过滤出epel包 yum下载rpm包目录概要 yum install -y 包名 --downloadonly //仅仅下载,而不安装 ls /var/cache/yum/x86_64/7/ //rpm包下载的位置 yum install -y 包名 --dow
运维小白
2018/02/06
3.9K0
相关推荐
yum下载rpm包
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档