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

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

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

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

续上篇,这篇我们来进一步探索 Tye 更多的使用方法。本篇我们来了解一下如何在 Tye 中如何进行日志的统一管理。

Newbe.Claptrap 是一个用于轻松应对并发问题的分布式开发框架。如果您是首次阅读本系列文章。建议可以先从本文末尾的入门文章开始了解。

必不可少的日志管理

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

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

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

故而,本案例,让我们来使用 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 文件。

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

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

启用 Seq 记录和查看日志

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

tye.yml
name: tyetest
extensions:- name: seqlogPath: ./.logs
services:- name: tyetestproject: TyeTest/TyeTest.csproj

从上面的配置可以看出:

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

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

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

使用浏览器调用一下 swagger 界面中的 API。便可以在 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/seqrestart: alwaysenvironment:ACCEPT_EULA: Yports:- 5380:80- 5341:5341volumes:- ./.seqlogs:/data

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

然后,我们修改 tye.yml:

tye.yml
name: tyetest
extensions:- name: seq
services:- name: tyetestproject: TyeTest/TyeTest.csproj- name: seqexternal: truebindings:- name: httpcontainerPort: 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 中实现对分布式链路追踪的实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304725.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

炸锅了!Google称2029年人类开始实现永生不死!疾病,衰老,痛苦将彻底消失!?

这个世界上最公平的,恐怕就是生老病死了。即使一个人一生的成就再大,财富再多,最终都敌不过自然规律,走向死亡。 然而 谷歌的首席未来科学家Ray kurzweil 却发布了一个惊天消息: 到了2029年, 人类将开始正…

asp.net web api中的版本管理

应用是演进的,通常我们用版本号来管理。api也是演进的,这篇博文就说说asp.net web api演进时的版本管理。asp.net web api的版本管理是通过微软的一个包来实现的。Install-Package Microsoft.AspNetCore.Mvc.Versioning通过url参数: api/order/api-versi…

初二物理模型有哪些_初二是成绩下滑的高危期,做好这5点成绩涨涨涨!(附全学科提升技巧,家长转给孩子!)...

原标题:初二是成绩下滑的高危期,做好这5点成绩涨涨涨!(附全学科提升技巧,家长转给孩子!)又到了每周五【学习经验分享】的时候了。今天小于老师分享的是初二关键时期可能会出现的问题,以及全科提升技巧。我们…

14个你可能不知道的JavaScript调试技巧

以更快的速度和更高的效率来调试JavaScript 熟悉工具可以让工具在工作中发挥出更大的作用。尽管江湖传言 JavaScript 很难调试,但如果你掌握了几个技巧,就能用很少的时间来解决错误和bug。 文中已经列出了14个你可能不知道的调试技巧,但是可…

mysql校对规则_MYSQL校对规则

一、前言有时候遇到这种情况,你用一个like语句查询,查到的结果中有一些并没有包含你查询的关键词的纪录;有时候遇到这种情况,你的数据库自作聪明的大小写不敏感,让你在更新时把大小写不同的两条记录都更新了&#xff1…

基于NHibernate的留言本

留言本环境:access2003 vs2005 整个留言本的类视图: 1.新建一个空的解决方案 NHibernateMessage 依次建立项目Model,DAL,BLL,Command四个项目 2.Model项目处理 删除自动生成的class1.cs文件,新建message.cs文件其代码如下 Codeusing System;…

腾讯招.NET要求以下几点,你准备好了吗?

今天是大年初七,上班第一天,你在关注什么?2021年跳槽季可能是近10年来最火爆的跳槽季,各HR都在摩拳擦掌,新的征程已开始,.NET开发者们,也该行动起来了!上图是腾讯的.NET Core招聘标准…

不得了,日本出版社竟是这样吸引死宅学编程的

此前日本出版社“翔泳社”推出 IT 专业用语拟人化的 IT 说明书,将书中相关名词用萌妹子来表现,并对其性格等方面进行了设定。 比如 HTTP 酱由于在互联网上应用最为广泛,经常与大家见面,因此被设计成了偶像。她与其它协议有着很好的…

mysql表空间权限_MySQL InnoDB表空间加密示例详解

前言从 MySQL5.7.11开始,MySQL对InnoDB支持存储在单独表空间中的表的数据加密 。此功能为物理表空间数据文件提供静态加密。该加密是在引擎内部数据页级别的加密手段,在数据页写入文件系统时加密,加密用的是AES算法,而其解密是在从…

Dapr 正式发布 1.0

年前我写了一篇博客《Dapr 已在塔架就位 将发射新一代微服务》, 今天Dapr 正式发布了1.0 :Dapr Runtime v1.0.0Dapr dotnet SDK v1.0.0随着Dapr 发布1.0 版本, .NET团队编写的《Dapr for .NET Developers》:https://github.com/do…

100 万在中国不同地方能活多久?

最近,一张名为 “100 万在中国各省能生活多久?” 的图片在网上流传 话不多说,往下看 没错,就是正如你们看到的 天朝大北京 以“100万能活19年9个月”的 成绩排名“倒数第一” 图片一出 数据君虎口一震 顿时一声惊叫 统计按“年人均…

重磅:.NET 6 发布首个预览版

前言2021 年 2 月 17 日微软发布了 .NET 6 的 Preview 1 版本,那么来看看都有什么新特性和改进吧,由于内容太多了因此只介绍一些较为重点的项目。ASP.NET Core 6 Preview 1 和 EF Core 6 Preview 1 同样有很多的更新内容,但是限于篇幅就不在这…

UOS简单评测

一位网友安装了UOS系统,并录制了视频,这位网友告知,UOS使用中无卡顿,比较流畅。以下为机器的硬件配置。就操作系统最关键的软件生态而言,UOS自带40多款原创应用和一个有2000多款优质应用的商店,包括微信、Q…

今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)

近几年来共享单车、自动驾驶等交通行业发展得如荼如火,小编也一直有意识地收集相关数据集,经过长时间的积累和沉淀,已经拥有将近300G的交通数据,内容涵盖国内外“自动驾驶”、“共享单车”、“网约出租车”、“交通信号识别”等方…

空谈Saas都扯淡,让你看看真正的云计算

最近“虚拟化”的话题似乎热度有所降低,而“云计算”的概念却不断升温,就连Vmware的新的服务器虚拟化产品,都要加上一个第一款“云计算”操作系统,而正如hubisheng兄弟在《名头不小!!VMware vSphere实为VI升…

前方高能 | 你写过什么有趣的程序?最后一个笑出猪叫

苍冥 说:我们从高一到高三都强制采用图形计算器,可以画函数图像的那种。我们用的是德州仪器系列,Ti-Nspire,贵的要死要死的。然而我却买错了计算器的制式,便宜货,相比其他同学的系统少了很多重要的功能。作…

鼠标 . 软驱 . 打印机 . 硬盘. 风扇 . 常见事故处理 -

鼠标 . 软驱 . 打印机 . 硬盘. 风扇 . 常见事故处理 -鼠标鼠标的故障分析与维修比较简单,大部分故障为接口或按键接触不良、断线、机械定位系统污垢等原因造成的。少数故障为鼠标内部元器件或电路虚焊造成的,这主要存在于某些劣质产品中,其中…

php mysql 云虚拟机_虚拟机+apache+php+mysql 环境安装配置

虚拟机的安装:直接下一步即可,注意修改路径。安装完成后新建虚拟机,直接下一步。如果选择镜像文件后出现错误,可以试着去修改电脑bios中的虚拟化设置,改为enable,如下图:apache安装:…

简单六步,用数据说服你的听众

“相比表格,利用数据图展现数据的方法有可观的优势。庞大的数据令人厌烦,普通人在其中根本获取不到有用的信息,就像从黄瓜里面汲取不到阳光一样。”——摘取自《Economic and Industrial Delusions》一书,作者Arthur Briggs Farqu…

CCNA第五章WAN连接

转载于:https://blog.51cto.com/centrevy/176434