SlideShare a Scribd company logo
https://mvc.tw
twMVC#36讓 Exceptionless 存管你的 Log
Dev + Ops Dev x Ops
QA
Ops
Dev
QA
Ops
Dev
DevOps Circle
Why we started Exceptionless
一切都從混亂開始…
Problems with Logging
過度繁雜導致Log查找不易
有寫有保庇,沒寫出代誌
.Net + Log = ?
Application Insights
Request/Response
Dependency
Services
Exceptions
User Session
Counts
Performance
counters
Diagnostic
trace logs
Custom events
and metrics
Page views and
load performance
Ajax Calls
Host diagnostics
Exceptionless
Exceptionless簡介
◎Open Source
◎整合Exception、Log等事件
◎支援多種.Net開發框架
◎提供雲端及自架服務(IIS、Docker)
◎友善的使用者介面
◎提供整合的訊息平臺入口
◎提供高客製化的擴充彈性
功能簡介
Exceptions
(例外記錄)
Logs
(日誌記載)
Broken Links
(失效連結)
Feature Usages
(功能統計)
User Sessions
(使用紀錄)
Integrations
(外部整合)
Data Exclusions
(資料過濾)
Self Hosted
(自架服務)
Exceptionless
系統架構
ASP.Net MVC
ASP.Net Core
WPF
Win Form
Console Xamarin
Web Form
JavaScript/NodeJS
Exceptionless
Elasticsearch
Exceptionless Server篇
◎可快速測試相關API服務
◎無須額外架設服務
◎無須維護及配置機器
◎無須升級即可享有最新服務
雲端服務(1)-簡介
雲端服務(2)-計價方案
方案 計價(美金/月) 專案/帳戶數 事件保留天數 事件次數/月 進階功能
Free $0 1/1 3 3000 N
Small $15 5/10 30 15000 Y
Medium $49 15/25 90 75000 Y
Large $99 無限制 180 250,000 Y
Extra Large $199 無限制 180 1,000,000 Y
Enterprise $499 無限制 180 3,000,000 Y
※進階功能:Searching、Notification、WebHook、Slack Integration、Zapier Integration
◎下載最新release版本
◎調整docker-compose.yml
◎官方建議Elasticsearch數 : 3 nodes, 2 masters
◎執行指令
✓docker-compose up
✓docker-compose up –d (背景執行)
✓docker-compose stop
自架服務(Self Hosted)
◎一個Exceptionless可以新增多個帳戶
◎一個帳戶可以新增多個組織
◎一個組織可以新增多個專案
◎帳戶之間可以設定共同管理組織
帳戶管理(1)
帳戶管理(2)
帳戶
組織
專案 專案
組織
專案 專案
帳戶
組織
專案 專案
組織
專案 專案
共同管理
帳戶申請(1)
帳戶申請(2)
建立組織及專案(1)
建立組織及專案(2)
ApiKey
建立組織及專案(3)
Exceptionless Client 篇
- 以 ASP.Net MVC5 為例
◎ Exceptionless
◎ ASP.Net Core
◎ ASP.Net MVC
◎ ASP.Net Web API
◎ Web Form
◎ WPF
◎ WinForm
主要套件及支援框架(C#)
◎ NLog
◎ Log4Net
◎ SeriLog
◎ 自訂Log事件
Log支援套件
◎請先正確設定 Api Key 及 ServerUrl 後再開始探索
◎請先正確設定 Api Key 及 ServerUrl 後再開始探索
◎請先正確設定 Api Key 及 ServerUrl 後再開始探索
開始前請注意!!
◎輸入Exceptionless Server上的Api Key
◎主要有3個區段要進行配置
組態設定(1) – Web.config
◎使用ExceptionlessClient.Default.Configuration設定
◎請於程式起始階段進行設定
組態設定(2) – 程式碼呼叫
◎也可於起始階段另外宣告
組態設定(3) – Assembly Attribute
◎需於startup被呼叫才會生效
◎預設會自動發送沒被處理的Exception
◎手動發送也是可以的
發送Exception(1)
發送Exception(2) - 客製額外資訊
GDPR(General Data Protection Regulation)
◎自動排除預設敏感資訊
◎依需求逐項設定
◎可從Server>Project>Settings>Data Exclusions調整
◎Log套件不支援時
◎自行開發Log套件時
◎可自訂額外資訊
發送Log(1) - Manually
◎安裝Exceptionless.NLog
✓NLog
✓NLog.Config
◎設定ApiKey及ServerUrl
◎設定對應的<target>及<rule>
◎預設包含Pll(Personal Identifiable Information)資訊
發送Log (2) – NLog
發送Log(3) – NLog.config
發送Log(4) – Use NLog
◎統計使用功能次數資訊
Feature Usage(1)
Feature Usage(2) – 嫌麻煩?
◎召喚 ActionFilter → 經濟又實惠
◎於發送事件中加上使用者資訊
◎會自動嘗試獲取使用者資訊
◎預設每30秒偵測一次HeartBeat
◎搭配Feature Usage使用 → 使用者行為分析
User Sessions(1)
◎修改Heartbeat間隔
User Sessions(2)
◎Disable Heartbeat
Exceptionless 番外篇
◎可註記當前應用程式版號
◎可搭配Mark Fixed區別錯誤事件
Versioning
◎開發及測試過程中不傳送錯誤
◎官方提供enabled開關功能(不推薦)
◎依環境轉換對應的組態檔(Dev、Test、Production)
◎使用VS內建Configuration Transform進行轉換
◎NLog.config需額外安裝SlowCheetah擴充套件
組態管理(1)
code
config
組態管理(2) – Web.Release.config
Web.config
Web.Release.config
完成後可在右鍵選單內點選Preview Transform進行組態比較
◎使用Transform的Replace模式進行轉換
組態管理(3) – 安裝SlowCheetah
◎於Visual Studio Marketplace安裝SlowCheetah
◎於NLog.config按右鍵並點選Add Transform
組態管理(4) – NLog.Release.config
◎使用Transform的SetAttributes模式進行轉換
NLog.Release.config
NLog.config
◎將事件訊息轉送至外部系統
◎提供外部系統介接整合彈性
◎可設定事件轉送條件
Integrations(1)
Integrations(2)
Integrations(3)
◎ 可設定欲排除的資料key值
◎ 支援萬用字元(*, Wild Cards)搜尋
Data Exclusions
Error Stacking
◎ 用Hash(ExceptionType+Method)當堆疊目標依據
◎ 設定User Namespaces可以限制哪些命名空間底下的
錯誤才要視為堆疊目標
◎ 設定Common Method則是限制哪些方法內的錯誤不
要視為堆疊目標
◎可從Server端改變Client端的事件發送行為
◎程式初始後隔5秒會更新第一次組態設定
◎最後一個事件發送後每2分鐘進行更新
◎Client端透過EventPlugin處理事件的行為
◎提供使用者加入自訂的Plugin
Client Configuration(1)
◎可排除error, usage, log, 404, session等事件
◎Event Exclusions就是一種EventPlugin
◎使用情境可參考官方GitHub
◎例如:排除NullReferenceException的錯誤事件
Client Configuration(2) - Event Exclusions
◎提供兩種實作方式
✓使用委派方法 : AddPlugin(key, priority, eventContext =>{ … } )
✓實作IEventPlugin後再手動加入 : AddPlugin<IEventPlugin>()
◎搭配Client Configuration彈性調整組態
◎加入及移除EventPlugin
自訂EventPlugin(1)
自訂EventPlugin(2) – 使用委派
自訂EventPlugin(3) – 實作IEventPlugin
◎支援萬用字元(* ,Wild Cards)搜尋
◎多條件搜尋
✓預設為AND,請用空白符號分隔(tag:dotnetconf tag:2019)
✓OR搜尋請用OR字串隔開(tag:dev OR tag:ops)
◎細部資訊請參考作者GitHub文件
Filter & Searching
◎主要分為api、jobs、ui 三塊
◎設定細節請參考作者GitHub
◎開頭必須加入EX_以供識別
◎調整資料最大保存天數
✓EX_MaximumRetentionDays: 30
◎調整單一事件最大傳送(bytes)
✓EX_MaximumEventPostSize : 4096
docker-compose設定
◎英文 : https://github.com/Exceptionless/Exceptionless/wiki
◎中文(進行中) : https://github.com/wtx2043pp986/Exceptionless/wiki
◎範例程式碼:https://github.com/wtx2043pp986/ExceptionlessSample/commits/master
官方文件參考
https://skilltree.my
無界開發者社群
現在開發者已經不能單純的只會一種
技術了,這社群以 .NET 為主,其他
技術為輔,寫程式是要解決問題的,
不是用程式語言框住自己,看看駐站
版主群陣容多龐大!
1
63
天瓏資訊圖書
1
64
Free Personal Subscription 100% DISCOUNT CODE
AppCode, CLion, DataGrip, GoLand, IntelliJ IDEA Ultimate,
PhpStorm, PyCharm, ReSharper, ReSharper C++,
ReSharper Ultimate, ReSharper Ultimate + Rider Pack,
Rider, RubyMine, or WebStorm
1
Ad

Recommended

الامن و السلامة
الامن و السلامة
سميرة علي
 
Interviewleitfaden da mittl_oliver
Interviewleitfaden da mittl_oliver
Oliver Mittl
 
Kemalangan ditempat kerja
Kemalangan ditempat kerja
syahirahhjsaad
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
twMVC
 
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
Yi-Feng Tzeng
 
一個微信專案從0到000的效能調教
一個微信專案從0到000的效能調教
Bruce Chen
 
玩轉 .NET Interactive Notebooks 一次就上手
玩轉 .NET Interactive Notebooks 一次就上手
Poy Chang
 
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
從頭打造 C#、.NET 與 ASP.NET Core 開發環境
Will Huang
 
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
twMVC#43 YARP
twMVC#43 YARP
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generator
twMVC
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
 
twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
twMVC
 

More Related Content

More from twMVC (20)

twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
twMVC#43 YARP
twMVC#43 YARP
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generator
twMVC
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
 
twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
twMVC
 
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#44 如何測試與保護你的 web application with playwright
twMVC#44 如何測試與保護你的 web application with playwright
twMVC
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
twMVC#43 YARP
twMVC#43 YARP
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC
 
twMVC#42 Azure IoT Hub for Smart Factory
twMVC#42 Azure IoT Hub for Smart Factory
twMVC
 
twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generator
twMVC
 
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC#38 How we migrate tfs to git(using azure dev ops)
twMVC
 
twMVC#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
twMVC
 

twMVC#36讓 Exceptionless 存管你的 Log