使用 Tye 辅助开发 k8s 应用竟如此简单(四)

 

续上篇,这篇咱们来进一步探索 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 中查看到查看到以控制台方式输出的日志:浏览器

console log

缺陷也很是明显,这种方式很是不利于阅读和分析。服务器

启用 Seq 记录和查看日志

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

tye.yml

name: tyetest
extensions:
  - name: seq
    logPath: ./.logs
services:
  - name: tyetest
    project: TyeTest/TyeTest.csproj

从上面的配置能够看出:

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

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

seq service

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

seq search

使用浏览器调用一下 swagger 界面中的 API。即可以在 seq 中查看到最新的日志。

seq logs

这即是使用 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: tyetest
extensions:
  - name: seq
services:
  - name: tyetest
    project: TyeTest/TyeTest.csproj
  - name: seq
    external: true
    bindings:
      - name: http
        containerPort: 5341

这里,主要的改动有:

  1. 再也不须要在 extensions 中指定日志存储此位置,由于这个时候时候的是外部的 seq 服务,指定这个参数已经没有意义了。
  2. 添加了一个名为 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

最后,发到 K8S 里面试一下

注意,和前面的 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

您还能够查阅本系列的其余选文:

理论入门篇

  1. Newbe.Claptrap - 一套以 “事件溯源” 和 “Actor 模式” 做为基本理论的服务端开发框架

术语介绍篇

  1. Actor 模式
  2. 事件溯源(Event Sourcing)
  3. Claptrap
  4. Minion
  5. 事件 (Event)
  6. 状态 (State)
  7. 状态快照 (State Snapshot)
  8. Claptrap 设计图 (Claptrap Design)
  9. Claptrap 工厂 (Claptrap Factory)
  10. Claptrap Identity
  11. Claptrap Box
  12. Claptrap 生命周期(Claptrap Lifetime Scope)
  13. 序列化(Serialization)
  14. 最小竞争资源 (Minimal Competing Resources)

样例实践篇

  1. 设计一个火车票销售系统

开发工具篇

  1. 使用 Tye 辅助开发 k8s 应用竟如此简单(一)
  2. 使用 Tye 辅助开发 k8s 应用竟如此简单(二)
  3. 使用 Tye 辅助开发 k8s 应用竟如此简单(三)
  4. 使用 Tye 辅助开发 k8s 应用竟如此简单(四)
  5. 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
  6. 使用 Tye 辅助开发 k8s 应用竟如此简单(六)

其余番外篇

  1. 谈反应式编程在服务端中的应用,数据库操做优化,从 20 秒到 0.5 秒
  2. 谈反应式编程在服务端中的应用,数据库操做优化,提速 Upsert
  3. 十万同时在线用户,须要多少内存?——Newbe.Claptrap 框架水平扩展实验
  4. docker-mcr 助您全速下载 dotnet 镜像
  5. 十多位全球技术专家,为你献上近十个小时的.Net 微服务介绍
  6. 年轻的樵夫哟,你掉的是这个免费 8 核 4G 公网服务器,仍是这个随时可用的 Docker 实验平台?
  7. 如何使用 dotTrace 来诊断 netcore 应用的性能问题
  8. 只要十步,你就能够应用表达式树来优化动态调用

 

您当前查看的是先行发布于 www.newbe.pro 上的博客文章,实际开发文档随版本而迭代。若要查看最新的开发文档,须要移步 claptrap.newbe.pro

Newbe.Claptrap

------ 本文结束 ------
  • 本文做者: newbe36524
相关文章
相关标签/搜索