SlideShare a Scribd company logo
https://mvc.tw
歡迎參加我們的每週四固定聚會
Elastic APM 的兩三事
Roberson Liou
https://mvc.tw
關於我
▪ Backend / Cloud
▪ Microsoft MVP(2020-2023)
▪ twMVC 核心成員
▪ DevOps Taiwan 志工
▪ BLOG - 工程良田的小球場
p.2
https://mvc.tw
大綱
▪Introduction
▪Features
▪Operations
3
https://github.com/robersonliou/ElasticApmNet7
https://mvc.tw
你的 Elasticsearch 安全嗎?
p.4
▪ 黑暗執行緒 - iRent 個資外洩事件
是怎麼一回事?
▪ 中國笨鳥公司Elasticsearch資料庫
配置不當,洩漏全球2.14億人個資
▪ 這些不是個案!
https://mvc.tw
Elasticsearch 資安小提醒
▪ 啟用 Security feature
▪ 8.x 版後預設啟用
▪ SSL/TLS
▪ Enrollment Token 機制
▪ 適當的帳號權限設定
▪ 不使用 admin 帳號進行操作
▪ 不要設定空密碼
p.5
https://www.elastic.co/guide/en/elasticsearch/reference/8.6/secure-cluster.html
▪ 開啟 Audit log
▪ 預設是 disable
▪ 網路層防護
▪ 架設防火牆
▪ IP 白名單管控
▪ 搬入內網
https://mvc.tw
Introduction
6
https://mvc.tw
APM 是什麼?
▪ Application Performance Monitoring(Management)
▪ 聽聽 ChatGPT 怎麼說
p.7
https://mvc.tw
我覺得 APM 是...
▪ 工具 / 平台?
▪ 提升可觀測性的方法之一
▪ Data Driven
▪ 收集
▪ 分析
▪ 監控
p.8
Photo by park place
https://mvc.tw
APM 存在的目的
▪ 提升客戶滿意度
▪ 降低 MTTR
▪ 識別瓶頸,持續改善
p.9
Photo by park place
https://mvc.tw
https://www.gartner.com/pi/vendorimages/riverbed_application-performance-
monitoring_1655913070298.png
APM Family
p.10
https://mvc.tw
Elastic APM
▪ Open Source
▪ Gartner APM 榜上 4.5 ★ 評價
▪ 提供多樣的佈署模式(雲、地)
▪ 提供 10+ 語言支援
▪ 提供 OpenTelemtry 整合
p.11
https://mvc.tw
Elastic APM 核心成員
▪ Elasticsearch:資料儲存
▪ Kibana:UI介面
▪ Fleet Server:管理 Elastic Agent
▪ Elastic Agent:APM Server,傳送 APM 資料的媒介
▪ Elastic APM Agent:APM Client,透過安裝 SDK 形式
p.12
https://mvc.tw
Elastic APM 架構流程(1)
p.13
https://www.elastic.co/guide/en/fleet/master/add-a-fleet-server.html
https://mvc.tw
Elastic APM 架構流程(2)
p.14
https://www.elastic.co/guide/en/apm/guide/master/apm-components.html
https://mvc.tw
分散式追蹤(Distributed Tracing)
▪ 以 trace.id 貫穿整段 E2E 交易流程
p.15
https://www.elastic.co/guide/en/apm/guide/current/apm-distributed-tracing.html
https://mvc.tw
Features
16
https://mvc.tw
驗證方式(Authentication)
▪ Secret Token
▪ API Key
▪ Kibana 預設產生格式為 Base64
▪ 解開才有 APIKey ID & API Key
▪ Anonymous
p.17
https://mvc.tw
資料模型(Data Model)
▪ Traces
▪ Spans
▪ Transactions
▪ Errors
▪ Metrics
p.18
https://www.elastic.co/guide/en/apm/guide/master/data-model.html
https://mvc.tw
Traces
▪ Span:量測一段時間的最小單位
▪ 某段 LINQ 語法的執行時間
▪ 某段 SQL 語法的執行時間
▪ Transaction:最高維度的量測單位,可由數個 Span 組成
▪ 發送一個 HTTP 請求的執行時間
▪ 觸發一次排程的執行時間
p.19
https://mvc.tw
Traces - Kibana
p.20
https://mvc.tw
Errors
▪ 原始的例外錯誤
▪ 從底層 CLR 自動捕捉例外,也可手動回傳
▪ 搭配 span 可更快速定位錯誤可能原因
p.21
https://mvc.tw
要來寫扣啦
22
https://mvc.tw
Elastic APM x .NET
▪ 支援 .NET Framework 及 .NET Core
▪ .NET Core >= 2.1 / .NET Framework >= 4.6.1
▪ 本議程會以 .NET 7 作為範例介紹
▪ APM 套件
▪ ASP.NET Core:Elastic.Apm.NetCoreAll
▪ ASP.NET:Elastic.Apm.AspNetFullFramework
p.23
https://www.elastic.co/guide/en/apm/agent/dotnet/current/setup.html
https://mvc.tw
設定方式
▪ 組態設定
▪ 透過環境變數及 IConfiguration 方式設定
▪ 要特別留意預設值
▪ 程式碼
▪ 以 Middleware 方式設定
▪ APM Client 會自動從有註冊的 IDiagnosticsSubscriber 收集資料
▪ 細部調整可參考 Public API
p.24
https://mvc.tw
常用組態設定(Configuration)
p.25
https://www.elastic.co/guide/en/apm/agent/dotnet/current/config-all-options-summary.html
名稱 說明 預設值
ServerUrl Elastic Agent 網址 <none>
ServiceName 服務名稱 <none>
Environment 應用程式環境 <none>
SecretToken 驗證 <none>
ApiKey 驗證 <none>
Enabled 功能開關 true
TransactionSampleRate 取樣比率 1.0
FlushInterval APM Event Queue 清除週期 10s
MaxBatchEventCount 單筆請求最大的 Event 數量 10
https://mvc.tw
範例 – 設定 APM 整合
▪ appsettings.json
▪ Program.cs
p.26
{
"ElasticApm": {
"ServerUrl": "YOUR_ELASTIC_APM_HOST",
"ServiceName": "YOUR_SERVICE_NAME",
"SecretToken": "YOUR_SECRET_TOKEN",
"Environment": "YOUR_ENVIRONMENT"
}
}
var builder = WebApplication.CreateBuilder(args);
//...
var app = builder.Build();
app.UseAllElasticApm(app.Configuration);
//...
https://mvc.tw
UseAllElasticApm 實作
p.27
public static IApplicationBuilder UseAllElasticApm(
this IApplicationBuilder builder,
IConfiguration configuration = null
) => AspNetCore.ApmMiddlewareExtension
.UseElasticApm(builder, configuration,
new HttpDiagnosticsSubscriber(),
new EfCoreDiagnosticsSubscriber(),
new SqlClientDiagnosticSubscriber(),
new ElasticsearchDiagnosticsSubscriber(),
new GrpcClientDiagnosticSubscriber(),
new AzureMessagingServiceBusDiagnosticsSubscriber(),
new MicrosoftAzureServiceBusDiagnosticsSubscriber(),
new AzureBlobStorageDiagnosticsSubscriber(),
new AzureQueueStorageDiagnosticsSubscriber(),
new AzureFileShareStorageDiagnosticsSubscriber(),
new AzureCosmosDbDiagnosticsSubscriber(),
new MongoDbDiagnosticsSubscriber());
▪ 預設實作多個 IDiagnosticSubscriber
https://mvc.tw
範例 - HTTP Trace
p.28
[HttpGet("http")]
public async Task<IActionResult> Http()
{
var client = _factory.CreateClient();
await client.GetAsync("https://google.com");
await client.GetAsync("https://ipinfo.io");
await client.GetAsync("https://networkcalc.com/api/ip/192.168.1.1/24");
return Ok(new
{
Message = "http client tracing sample"
});
}
https://mvc.tw
APM 如何與 Log 整合?
▪ Log 需包含以下屬性
▪ service.name
▪ trace.id
▪ transaction.id
▪ 可透過 Log 套件整合
▪ Serilog
▪ NLog
p.29
https://www.elastic.co/guide/en/apm/agent/dotnet/1.8/log-correlation.html
https://mvc.tw
Log 整合 - SeriLog
▪ 安裝套件
▪ Elastic.Apm.SerilogEnricher
▪ Serilog.Sinks.Elasticsearch
▪ Elastic.CommonSchema.Serilog
▪ Serilog.AspNetCore
▪ 在 WebApplicationBulder 階段註冊
p.30
https://www.elastic.co/guide/en/apm/agent/dotnet/1.8/serilog.html
https://mvc.tw
Log 整合 – SeriLog 設定
p.31
var formatter = new EcsTextFormatter(new EcsTextFormatterConfiguration()
.MapCustom((ecsDoc, log) =>
{
ecsDoc.Service = new Service { Name = "ELASTIC_SERVICE_NAME" };
return ecsDoc;
}));
builder.Host.UseSerilog((context, services, config) =>
config
.Enrich.WithElasticApmCorrelationInfo()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(
new Uri("ELASTIC_SERVER_URL"))
{
IndexFormat = "ELASTIC_INDEX_FORMAT",
CustomFormatter = formatter,
ModifyConnectionSettings = x => x
.ApiKeyAuthentication("ELASTIC_APIKEY_ID", "ELASTIC_APIKEY")
.ConnectionLimit(-1)
}
)
.WriteTo.Console(formatter)
);
https://www.elastic.co/guide/en/apm/agent/dotnet/1.8/serilog.html
https://mvc.tw
Log 整合 – 範例
p.32
[HttpGet("logger")]
public async Task<IActionResult> Logger()
{
_logger.Information("log info in trace...");
_logger.Warning("log warning in trace...");
_logger.Error("log error in trace...");
return Ok(new
{
Message = "Trace & Logger"
});
}
https://mvc.tw
Log 整合 - Kibana
p.33
https://www.elastic.co/guide/en/apm/agent/dotnet/1.8/log-correlation.html
https://mvc.tw
SeriLog - RequestLoggingMiddleware
p.34
https://mvc.tw
SeriLog – 如何過濾預設的 Request Log
▪ 調整 LogLevel
p.35
https://andrewlock.net/using-serilog-aspnetcore-in-asp-net-core-3-reducing-log-verbosity/
builder.Host.UseSerilog((context, services, config) =>
config
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
.MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning)
.Enrich.WithElasticApmCorrelationInfo()
//...
)
https://mvc.tw
敏感的資料怎麼辦?
▪ 資料遮罩(data filter)
▪ 有提供預設值
▪ 調整方式
▪ 程式碼:SanitizeFieldNames 組態
▪ Kibana:Agent configuration
p.36
https://www.elastic.co/guide/en/apm/guide/current/apm-data-security.html
https://mvc.tw
Operations
37
https://mvc.tw
服務架設
▪ Elatic Cloud
▪ 要錢,但方便省事(30 天免費試用)
▪ 三朵雲都有,可自動版更
▪ Self Hosting
▪ 平台維護需有專員管理(資料、憑證、內網)
▪ 部分功能需購買授權(ex: Alert / Service Map)
p.38
https://mvc.tw
APM 資料預設保留幾天呢?
▪ 依資料類型區分
▪ Traces:10 天
▪ Metrics:90天
▪ Errors:10 天
▪ Rollover
▪ 30 天
▪ 50 GB
p.39
https://mvc.tw
調整 APM 資料保留天數
▪ 調整 APM 的 ILM(Index Lifecycle Management)
p.40
https://mvc.tw
冷知識 - APM 資料存在哪裡?
▪ 存放在 Elasticsearch 中
▪ Index pattern:<type>-<dataset>-<namespace>
▪ Traces: traces-apm-<namespace>
▪ Errors: <namespace>
▪ Metrics: metrics-apm.*-<namespace>
p.41
https://mvc.tw
情境題 – 多產品團隊的資料管理
▪ 假設有兩個產品團隊,分別使用以下的 space
▪ abc
▪ def
▪ 如何讓各團隊只看自己的 APM 資料?
1. 調整 APM 寫入的 space
2. 設定 filtered alias
p.42
https://mvc.tw
1. 修改 APM 寫入的 space
▪ 可在 Elastic Agent Policy 調整
▪ 優點:操作方便
▪ 缺點:Elastic Agent 僅能提供單一產品團隊使用
p.43
https://mvc.tw
2. 設定 filtered alias
▪ Alias 提供 filter 語法
▪ 三種資料模型都要設定
▪ Traces / Metrics / Errors
▪ 服務名稱要經過設計
▪ {space}-{application}
▪ abc-myweb-1
p.44
https://www.elastic.co/guide/en/kibana/master/apm-spaces.html
POST /_aliases?pretty
{
"actions": [
{
"add": {
"index": "traces-apm*",
"alias": "{space}-traces-apm",
"filter": {
"wildcard": {
"service.name": {
"value": "{space}-*"
}
}
}
}
}
]
}
GET traces-apm*/_alias
https://mvc.tw
p.45
https://www.elastic.co/guide/en/kibana/master/apm-spaces.html
POST /_aliases?pretty
{
"actions": [
{
"add": {
"index": "traces-apm*",
"alias": "abc-traces-apm",
"filter": {
"wildcard": {
"service.name": {
"value": "abc-*"
}
}
}
}
}
]
}
POST /_aliases?pretty
{
"actions": [
{
"add": {
"index": "traces-apm*",
"alias": "def-traces-apm",
"filter": {
"wildcard": {
"service.name": {
"value": "def-*"
}
}
}
}
}
]
}
abc space def space
https://mvc.tw
修改 APM Index setting
▪ 每個 space 有各自的 APM 設定
▪ 將 filtered alias 套用上去
p.46
https://mvc.tw
設定角色檢視權限
▪ 讓成員能夠檢視 APM 的索引資料
▪ 須賦予 read / view_index_metadata 權限
p.47
https://mvc.tw
補充
48
https://mvc.tw
自架 Lab 環境 - Docker
▪ 參考官方提供 docker-compose.yml
▪ 預設會安裝以下元件
▪ Elasticsearch
▪ Kibana
▪ Fleet-server
▪ Metricbeat
▪ 少了 Elastic Agent!
p.49
https://mvc.tw
補上 Elastic Agent
p.50
# ...
elastic-agent:
image: docker.elastic.co/beats/elastic-agent:8.7.0-909f3a86-SNAPSHOT
environment:
FLEET_ENROLLMENT_TOKEN: "paste_token_after_fleet_init"
FLEET_ENROLL: 1
FLEET_URL: "https://fleet-server:8220"
FLEET_INSECURE: "true"
KIBANA_FLEET_SETUP: "false"
ports:
- 8200:8200
depends_on:
fleet-server:
condition: service_healthy
# ...
https://github.com/robersonliou/apm-server
https://mvc.tw
使用機器規格
▪ Azure VM
▪ Standard B2ms
▪ 2 Core, 8G
▪ Ubuntu 20.04
▪ Ports
▪ 5601 / 9200 / 8200
p.51
https://mvc.tw
操作步驟
p.52
# 1. 下載 apm-sever
> git clone https://github.com/elastic/apm-server.git
# 2. cd & docker compose up
> cd apm-server
> docker compose up
# 3. 登入及建立 Elastic Agent
# 4. 複製 Elastic Agent 的enrollment token
# 5. 修改 docker-compose elastic-agent 的 FLEET_ENROLLMENT_TOKEN 參數
# 6. 重啟 elastic-agent
> docker compose up --force-recreate elastic-agent
https://mvc.tw
好了,要結束了!
53
https://mvc.tw
結語
▪ Elastic APM 是一個很不錯的產品
▪ 統整 Trace, Error, Log 於單一平台
▪ 各元件可雲、地混合架設
▪ 如果你還沒開始導入 APM
▪ 不管用哪套都好,用下去就對了
p.54
https://mvc.tw
推薦閱讀 & 參考
▪ 喬叔 - 探索與實踐 Observability 系列
▪ Marcus - 再不使用 APM 就芭比Q 了
▪ Elastic APM 官方文件
▪ Elastic APM .NET 官方文件
▪ Elastic Fleet 官方文件
p.55
https://mvc.tw
Thanks
56
Blog 是記錄知識的最佳平台
57
https://dotblogs.com.tw
58
SkillTree 為了確保內容與實務不會脫節,我們都是聘請企業顧問等級
並且目前依然在職場的業界講師,我們不把時間浪費在述說歷史與沿革,
我們並不是教您考取證照,而是教您如何上場殺敵,拳拳到肉的內容才
是您花錢想要聽到的,而這也剛好是我們擅長的。
https://skilltree.my
59
天瓏資訊圖書
Ad

More Related Content

What's hot (20)

오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
Jaehwa Park
 
Observability
ObservabilityObservability
Observability
Diego Pacheco
 
Log management with ELK
Log management with ELKLog management with ELK
Log management with ELK
Geert Pante
 
F5 DDoS Protection
F5 DDoS ProtectionF5 DDoS Protection
F5 DDoS Protection
MarketingArrowECS_CZ
 
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPNLISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
JobSnijders
 
Présentation sharepoint 2013
Présentation sharepoint 2013Présentation sharepoint 2013
Présentation sharepoint 2013
Mohammed Amine Mostefai
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)
HungWei Chiu
 
初探 OpenTelemetry - 蒐集遙測數據的新標準
初探 OpenTelemetry - 蒐集遙測數據的新標準初探 OpenTelemetry - 蒐集遙測數據的新標準
初探 OpenTelemetry - 蒐集遙測數據的新標準
Marcus Tung
 
FortiWeb
FortiWebFortiWeb
FortiWeb
Alireza Akrami
 
Webinar: Postman 101 for Developers
Webinar: Postman 101 for DevelopersWebinar: Postman 101 for Developers
Webinar: Postman 101 for Developers
Postman
 
Sangfor's Presentation.pdf
Sangfor's Presentation.pdfSangfor's Presentation.pdf
Sangfor's Presentation.pdf
ssusera76ea9
 
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
 
Workshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCSWorkshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCS
Linux Solutions
 
さくらのクラウドインフラの紹介
さくらのクラウドインフラの紹介さくらのクラウドインフラの紹介
さくらのクラウドインフラの紹介
SAKURA Internet Inc.
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINX
NGINX, Inc.
 
Threat-Based Adversary Emulation with MITRE ATT&CK
Threat-Based Adversary Emulation with MITRE ATT&CKThreat-Based Adversary Emulation with MITRE ATT&CK
Threat-Based Adversary Emulation with MITRE ATT&CK
Katie Nickels
 
FIDO UAF Specifications: Overview & Tutorial
FIDO UAF Specifications: Overview & Tutorial FIDO UAF Specifications: Overview & Tutorial
FIDO UAF Specifications: Overview & Tutorial
FIDO Alliance
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 
오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
Jaehwa Park
 
Log management with ELK
Log management with ELKLog management with ELK
Log management with ELK
Geert Pante
 
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPNLISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
LISP + GETVPN as alternative to DMVPN+OSPF+GETVPN
JobSnijders
 
Tutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting routerTutorial: Using GoBGP as an IXP connecting router
Tutorial: Using GoBGP as an IXP connecting router
Shu Sugimoto
 
Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)Introduction to CNI (Container Network Interface)
Introduction to CNI (Container Network Interface)
HungWei Chiu
 
初探 OpenTelemetry - 蒐集遙測數據的新標準
初探 OpenTelemetry - 蒐集遙測數據的新標準初探 OpenTelemetry - 蒐集遙測數據的新標準
初探 OpenTelemetry - 蒐集遙測數據的新標準
Marcus Tung
 
Webinar: Postman 101 for Developers
Webinar: Postman 101 for DevelopersWebinar: Postman 101 for Developers
Webinar: Postman 101 for Developers
Postman
 
Sangfor's Presentation.pdf
Sangfor's Presentation.pdfSangfor's Presentation.pdf
Sangfor's Presentation.pdf
ssusera76ea9
 
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
 
Workshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCSWorkshop de Monitoramento com Zabbix e OCS
Workshop de Monitoramento com Zabbix e OCS
Linux Solutions
 
さくらのクラウドインフラの紹介
さくらのクラウドインフラの紹介さくらのクラウドインフラの紹介
さくらのクラウドインフラの紹介
SAKURA Internet Inc.
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
twMVC
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINX
NGINX, Inc.
 
Threat-Based Adversary Emulation with MITRE ATT&CK
Threat-Based Adversary Emulation with MITRE ATT&CKThreat-Based Adversary Emulation with MITRE ATT&CK
Threat-Based Adversary Emulation with MITRE ATT&CK
Katie Nickels
 
FIDO UAF Specifications: Overview & Tutorial
FIDO UAF Specifications: Overview & Tutorial FIDO UAF Specifications: Overview & Tutorial
FIDO UAF Specifications: Overview & Tutorial
FIDO Alliance
 
twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解twMVC#43 Visual Studio 2022 新功能拆解
twMVC#43 Visual Studio 2022 新功能拆解
twMVC
 

Similar to twMVC 47_Elastic APM 的兩三事 (20)

twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
twMVC
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
Michael Chen
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
Xi Zeng
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
Li JianYe
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
d0nn9n
 
Performance Monitoring With AOP
Performance Monitoring With AOPPerformance Monitoring With AOP
Performance Monitoring With AOP
ivannotes
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
Guangya Liu
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
YingSiang Geng
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
Allen Lsy
 
纵览Loadrunner核心功能
纵览Loadrunner核心功能纵览Loadrunner核心功能
纵览Loadrunner核心功能
beiyu95
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
FEG
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
jeffz
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決twMVC#19 | opserver監控服務的解決
twMVC#19 | opserver監控服務的解決
twMVC
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
Michael Chen
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
Xi Zeng
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
zhen chen
 
Terracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering ArchitectureTerracotta And Continuent Based Clustering Architecture
Terracotta And Continuent Based Clustering Architecture
Target Source
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
Li JianYe
 
Huangjing renren
Huangjing renrenHuangjing renren
Huangjing renren
d0nn9n
 
Performance Monitoring With AOP
Performance Monitoring With AOPPerformance Monitoring With AOP
Performance Monitoring With AOP
ivannotes
 
构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接 构建ActionScript游戏服务器,支持超过15000并发连接
构建ActionScript游戏服务器,支持超过15000并发连接
Renaun Erickson
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
Guangya Liu
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
YingSiang Geng
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
Allen Lsy
 
纵览Loadrunner核心功能
纵览Loadrunner核心功能纵览Loadrunner核心功能
纵览Loadrunner核心功能
beiyu95
 
線上埋碼資料收集實作
線上埋碼資料收集實作線上埋碼資料收集實作
線上埋碼資料收集實作
FEG
 
Real World ASP.NET MVC
Real World ASP.NET MVCReal World ASP.NET MVC
Real World ASP.NET MVC
jeffz
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
 
Ad

More from twMVC (20)

twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用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 FactorytwMVC#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到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#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#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#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
twMVC
 
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
 
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
 
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIStwMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC#51 以平台工程重新思考系統設計 - 以 Batch System 為例封面
twMVC
 
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC#51-GitHub Copilot 徹底改變開發模式,探索 AI 驅動的智慧程式碼協作
twMVC
 
twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖twMVC#50 微服務上線後的救贖
twMVC#50 微服務上線後的救贖
twMVC
 
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning ServicestwMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC#46_SQL Server 資料分析大躍進 Machine Learning Services
twMVC
 
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC#46 一探 C# 11 與 .NET 7 的神奇
twMVC
 
twMVC#43 YARP
twMVC#43 YARPtwMVC#43 YARP
twMVC#43 YARP
twMVC
 
twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹twMVC#43 C#10 新功能介紹
twMVC#43 C#10 新功能介紹
twMVC
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用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 FactorytwMVC#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到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
twMVC
 
twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧twMVC#42 讓我們用一種方式來開發吧
twMVC#42 讓我們用一種方式來開發吧
twMVC
 
twMVC#41 hololens2 MR
twMVC#41 hololens2 MRtwMVC#41 hololens2 MR
twMVC#41 hololens2 MR
twMVC
 
twMVC#41 The journey of source generator
twMVC#41 The journey of source generatortwMVC#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#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#36C#的美麗與哀愁
twMVC#36C#的美麗與哀愁
twMVC
 
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC
 
twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署twMVC#33玩轉 Azure 彈性部署
twMVC#33玩轉 Azure 彈性部署
twMVC
 
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIStwMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC#32應用 ASP.NET WebAPI2 Odata 建置高互動性 APIS
twMVC
 
Ad

twMVC 47_Elastic APM 的兩三事