續上篇,這篇咱們來進一步探索 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。