续上篇,这篇咱们来进一步探索 Tye 更多的使用方法。本篇咱们来了解一下如何在 Tye 中如何进行日志的统一管理。git
Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。若是您是首次阅读本系列文章。建议能够先从本文末尾的入门文章开始了解。github
对应用进行日志记录和分析是诊断排查线上问题的重要手段。而简单基于控制台或者文件的直接记录既不利于开发者直接读取也不利于大规模分析。web
所以,开发者每每会选择一些诸如 Exceptionless
或者 ELK
之类的日志管理方案,来实现线上环境的日志管理。面试
可是,咱们仍然缺乏一个在开发环境小巧可用、部署简易、最小资源占用、可视化良好的日志管理方案。docker
故而,本案例,让咱们来使用 Tye
中已经扩展可用的 Seq
工具,来做为开发环境的日志管理和可视化工具。数据库
create-tye-seq-test.sh编程
dotnet new sln -n TyeTest dotnet new webapi -n TyeTest dotnet sln ./TyeTest.sln add ./TyeTest/TyeTest.csproj tye init |
经过以上命令,咱们建立了一个测试的 API 项目,而且建立出了 tye.yml 文件。api
直接使用 tye run
命令启动应用,咱们其实能够在 tye dashboard 中查看到查看到以控制台方式输出的日志:浏览器
缺陷也很是明显,这种方式很是不利于阅读和分析。服务器
打开 tye.yml ,加入 seq 的扩展配置:
tye.yml
name: tyetest extensions: - name: seq logPath: ./.logs services: - name: tyetest project: TyeTest/TyeTest.csproj |
从上面的配置能够看出:
使用 tye run
启动后,能够在 dashboard 中查看到启动好的 seq 服务。
打开 seq 即可以看到 seq 的查询界面:
使用浏览器调用一下 swagger 界面中的 API。即可以在 seq 中查看到最新的日志。
这即是使用 seq 最简单的一种方式。
seq 的搜索方式是很是相似于 SQL 的流式查询语句,开发者能够经过如下连接学习如何使用 UI 进行查询:
https://docs.datalust.co/docs/the-seq-query-language
咱们都知道, 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: tyetest extensions: - name: seq services: - name: tyetest project: TyeTest/TyeTest.csproj - name: seq external: true bindings: - name: http containerPort: 5341 |
这里,主要的改动有:
seq
的服务,其中 external: true
指定了其为一个外部服务。故而启动时不会尝试去建立这个服务。这样使用 tye run
启动后获得的结果和先前效果是一致的。可是,不会在每次都从新启动一个新的 seq 实例。而是使用咱们手动部署的 seq 实例。极大加快的启动速度。
tye 源码关于 seq 建立方式的判断位置:
https://github.com/dotnet/tye/blob/master/src/Microsoft.Tye.Extensions/Seq/SeqExtensions.cs#L15
docker 方式安装 seq:
https://docs.datalust.co/docs/getting-started-with-docker
Windows 直接安装 seq:
https://docs.datalust.co/docs/getting-started
注意,和前面的 mongo 同样。 seq 并不会在使用 tye deploy
时主动建立。而是会尝试使用服务发现机制去寻找名为 seq
的服务。这其实和上节中手动建立 Seq 实例有点相似。
所以,若是要部署 extensions
包含 seq 的 tye.yml。请确保 k8s 集群中存在名称为 seq 的服务,这样日志才能正常输出。
本篇,咱们已经顺利完成了使用 Tye 中的 seq 扩展来实现日志的统一管理。同时也顺便练习了如何在 tye 中将为外部服务添加绑定。
实际上,Tye 不只仅提供了 seq 扩展日志扩展,其也提供了更加广为人知的 Elasticsearch
+Kibana
方案。
开发者能够经过如下连接查看相关的操做方法:
https://github.com/dotnet/tye/blob/master/docs/recipes/logging_elastic.md
下一篇,咱们将进一步研究在 Tye 中实现对分布式链路追踪的实现。
若是读者对该内容感兴趣,欢迎转发、评论、收藏文章以及项目。
最近做者正在构建以 Actor 模式 和 事件溯源 为理论基础的一套服务端开发框架。但愿为开发者提供可以便于开发出 “分布式”、“可水平扩展”、“可测试性高” 的应用系统 ——Newbe.Claptrap
本篇文章是该框架的一篇技术选文,属于技术构成的一部分。
项目文档库:claptrap.newbe.pro
联系方式: QQ 群 610394020
您还能够查阅本系列的其余选文:
理论入门篇
术语介绍篇
样例实践篇
开发工具篇
其余番外篇
您当前查看的是先行发布于 www.newbe.pro 上的博客文章,实际开发文档随版本而迭代。若要查看最新的开发文档,须要移步 claptrap.newbe.pro。