如何在Tye中如何进行日志的统一管理

73次阅读
没有评论

共计 2123 个字符,预计需要花费 6 分钟才能阅读完成。

如何在 Tye 中如何进行日志的统一管理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

下面我们来了解一下如何在 Tye 中如何进行日志的统一管理。

必不可少的日志管理

对应用进行日志记录和分析是诊断排查线上问题的重要手段。而简单基于控制台或者文件的直接记录既不利于开发者直接读取也不利于大规模分析。

因此,开发者往往会选择一些诸如  Exceptionless  或者  ELK  之类的日志管理方案,来实现线上环境的日志管理。

但是,我们仍然缺少一个在开发环境小巧可用、部署简易、最小资源占用、可视化良好的日志管理方案。

故而,本案例,让我们来使用  Tye  中已经扩展可用的  Seq  工具,来作为开发环境的日志管理和可视化工具。

创建测试应用

create-tye-seq-test.sh

dotnet new sln -n TyeTestdotnet new webapi -n TyeTestdotnet sln ./TyeTest.sln add ./TyeTest/TyeTest.csprojtye init

通过以上命令,我们创建了一个测试的 API 项目,并且创建出了 tye.yml 文件。

直接使用  tye run  命令启动应用,我们其实可以在 tye dashboard 中查看到查看到以控制台方式输出的日志:

缺陷也非常明显,这种方式非常不利于阅读和分析。

启用 Seq 记录和查看日志

打开 tye.yml,加入 seq 的扩展配置:

tye.yml

name: tyetestextensions: - name: seq logPath: ./.logsservices: - name: tyetest project: TyeTest/TyeTest.csproj

从上面的配置可以看出:

只是增加了一个 extensions 节点。在其中设置了一个 seq 的子节点并配置了日志存储的位置。

使用  tye run  启动后,可以在 dashboard 中查看到启动好的 seq 服务。

打开 seq 便可以看到 seq 的查询界面:

这便是使用 seq 最简单的一种方式。

seq 的搜索方式是非常类似于 SQL 的流式查询语句,开发者可以通过以下链接学习如何使用 UI 进行查询:

https://docs.datalust.co/docs/the-seq-query-language

我不想每次都重新部署 Seq

我们都知道,Tye 在停止运行时会尝试停止此次所有部署的容器,Seq 也是以容器的方式运行,因此,每次停止 Tye 时,容器都会被自动移除。这其实有点浪费时间。

因此,此处在进一步介绍如何在本地长久部署一个 Seq 实现重复利用。

实际上,根据 Tye 中的代码,如果服务中已经存在一个名称为  seq  的服务,那么就会自动使用该服务,而跳过创建步骤。

故此,我们只要本地部署一个 seq 服务,然后在  tye.yml  添加这个服务即可。

Seq 可以使用 Windows 安装包或者使用 docker 的方式进行安装。本示例将使用 docker 进行安装:

docker-compose.yml

version:  3.3 services: seq: image: datalust/seq restart: always environment: ACCEPT_EULA: Y ports: - 5380:80 - 5341:5341 volumes: - ./.seqlogs:/data

使用  docker-compose up -d  方式长久启动 seq。那么就可以在  http://localhost:5380  查看到 seq dashboard。

然后,我们修改  tye.yml:

tye.yml

name: tyetestextensions: - name: seqservices: - name: tyetest project: TyeTest/TyeTest.csproj - name: seq external: true bindings: - name: http containerPort: 5341

这里,主要的改动有:

不再需要在 extensions 中指定日志存储此位置,因为这个时候时候的是外部的 seq 服务,指定这个参数已经没有意义了。

添加了一个名为  seq  的服务,其中  external: true  指定了其为一个外部服务。故而启动时不会尝试去创建这个服务。

这样使用  tye run  启动后得到的结果和先前效果是一致的。但是,不会在每次都重新启动一个新的 seq 实例。而是使用我们手动部署的 seq 实例。极大加快的启动速度。

注意,和前面的 mongo 一样。seq 并不会在使用  tye deploy  时主动创建。而是会尝试使用服务发现机制去寻找名为  seq  的服务。这其实和上节中手动创建 Seq 实例有点类似。

因此,如果要部署  extensions  包含 seq 的 tye.yml。请确保 k8s 集群中存在名称为 seq 的服务,这样日志才能正常输出。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2123字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)