inflearn logo

Khắc phục sự cố tracing phân tán trong thực tế — Bắt các trace bị đứt đoạn và biến mất bằng OpenTelemetry

Trong các microservice nối tiếp từ API đặt hàng → thanh toán → tồn kho → Kafka → consumer → batch, chúng ta trực tiếp tái hiện các vấn đề như trace bị đứt đoạn, phình to thành hàng nghìn span rồi âm thầm bị loại bỏ, hoặc biến mất khỏi dashboard; sau đó khắc phục theo trình tự triệu chứng → xác định nguyên nhân → xử lý, để hoàn thiện trace liền mạch từ đầu đến cuối cùng dashboard.

1 học viên đang tham gia khóa học này

Độ khó Trung cấp trở lên

Thời gian Không giới hạn

grafana
grafana
Prometheus
Prometheus
Docker
Docker
Kafka
Kafka
MSA
MSA
grafana
grafana
Prometheus
Prometheus
Docker
Docker
Kafka
Kafka
MSA
MSA

Bạn sẽ nhận được điều này sau khi học.

  • Khi trace bị tách làm hai, chỉ với vài lệnh là có thể xác định nguyên nhân nằm ở phần đo lường HTTP, header thông điệp, ngữ cảnh luồng, định dạng truyền tải hay lấy mẫu.

  • Dùng các chỉ số để xác định nơi span biến mất mà không có lỗi ứng dụng (hàng đợi collector, chưa được flush trước khi ứng dụng kết thúc, giới hạn kích thước trace).

  • Tìm hiểu cấu trúc khiến các trace trong batch/consumer có tới hàng nghìn span, rồi thiết kế lại bằng span theo chunk, ranh giới trace và liên kết span.

  • Chúng tôi tìm các trace khổng lồ không có root phát sinh từ những dịch vụ đã tắt gửi dữ liệu nhưng vẫn bật propagation, rồi xử lý bằng chính sách propagation.

  • Xem xét lại các span được tạo tự động, tên span và cardinality của thuộc tính; đồng thời giữ trong ngân sách span bằng cách chuyển đổi tại collector và lấy mẫu tail.

  • Sau khi thay đổi stack giám sát, hãy chẩn đoán dashboard trống dựa trên những thay đổi về tên metric, đơn vị và nhãn, rồi khôi phục bằng các quy tắc ghi (recording rules).

  • Khi yêu cầu tác nhân AI truy vấn dữ liệu quan sát, hãy giới hạn khung thời gian, số lượng kết quả và đối tượng bằng mã, đồng thời lưu lại lịch sử truy vấn.

Mục tiêu cuối cùng: tiếp nhận luồng đơn hàng trên một trang thương mại điện tử có bật năm sự cố, chỉ dựa vào triệu chứng để xác định nguyên nhân rồi khắc phục từng sự cố một, tự tay hoàn thiện trace liền mạch từ lúc đặt hàng đến khi xuất kho và quyết toán, đồng thời khôi phục bảng điều khiển.

Trong hệ thống microservice gồm API đặt hàng → thanh toán → tồn kho → Kafka → consumer → batch, bạn sẽ trực tiếp tái hiện các sự cố như trace bị đứt quãng, phình to thành hàng nghìn span rồi âm thầm bị loại bỏ, hoặc biến mất khỏi dashboard; sau đó khắc phục theo trình tự triệu chứng → chẩn đoán → xử lý để hoàn thiện trace liền mạch và dashboard.

Hầu hết các khóa học về tracing chỉ dừng lại ở việc gắn công cụ đo đạc và hiển thị trace trên màn hình. Khóa học này đi xa hơn, tập trung vào những tình huống trace bị đứt đoạn, phình to hoặc biến mất khi vận hành. Chúng tôi sẽ lần lượt tái hiện các sự cố chỉ xuất hiện trên giao diện dù ứng dụng không báo lỗi, bằng các công tắc lỗi; mọi con số đều là giá trị đo thực tế trong môi trường thực hành. Khóa học theo sát một luồng xử lý đơn hàng xuyên suốt, kết hợp các dịch vụ Java và Python, Kafka cùng tác vụ batch. Cuối cùng, bạn sẽ tự khắc phục tình huống cả năm sự cố cùng lúc được bật.

Sau khi hoàn thành khóa học này,

  • Khi trace bị tách làm đôi, chỉ với vài lệnh, bạn có thể xác định nguyên nhân nằm ở phần instrument HTTP, header thông điệp, ngữ cảnh luồng, định dạng truyền tiếp hay lấy mẫu.

  • Dùng các chỉ số để xác định nơi span biến mất mà ứng dụng không báo lỗi (hàng đợi của collector, chưa flush trước khi tắt, giới hạn kích thước trace).

  • Tìm hiểu cấu trúc khiến các trace gồm hàng nghìn span phát sinh trong batch/consumer, rồi thiết kế lại bằng span theo chunk, ranh giới trace và liên kết span.

  • Tìm các trace khổng lồ không có root do các dịch vụ đã tắt gửi dữ liệu nhưng vẫn duy trì việc truyền ngữ cảnh, rồi xử lý bằng chính sách truyền ngữ cảnh.

  • Đánh giá lại các span được tự động đo đạc, tên span và cardinality của thuộc tính; đồng thời giữ ngân sách span bằng các phép biến đổi của collector và lấy mẫu ở cuối luồng.

  • Sau khi thay đổi hệ thống giám sát, hãy tìm nguyên nhân các bảng điều khiển trống bằng cách kiểm tra thay đổi về tên, đơn vị và nhãn của chỉ số, rồi khôi phục chúng bằng các quy tắc ghi.

  • Khi yêu cầu tác nhân AI truy vấn dữ liệu observability, hãy giới hạn khung thời gian, số lượng kết quả và đối tượng bằng mã, đồng thời lưu lại lịch sử truy vấn.

Khuyến nghị dành cho những người sau đây

  • Nhà phát triển backend vận hành hệ thống thương mại điện tử microservices, thường nghe phản ánh rằng trace 'thỉnh thoảng bị đứt', 'không mở được' Lượt thẻ trợ giúp: 0

  • Kỹ sư SRE và nền tảng đã triển khai OpenTelemetry nhưng chưa biết nên theo dõi những gì trong Collector, Tempo và Prometheus.

  • Các nhóm đang chuyển ngăn xếp quan sát từ sản phẩm của nhà cung cấp sang mã nguồn mở, hoặc đã chuyển xong nhưng bảng điều khiển vẫn trống rỗng.

  • Dành cho những ai cần quyết định cách thiết kế trace cho consumer Kafka và batch job.

Chương trình học (9 phần · 40 bài giảng · khoảng 248 phút)

  • Phần 1. Bắt đầu — Demo sản phẩm cuối cùng và lộ trình khóa học

  • Phần 2. Môi trường thực hành và trace bình thường — Khởi chạy luồng đặt hàng của LoopMarket và stack quan sát, đọc trọn vẹn một trace bình thường, nguyên lý truyền context — header Traceparent, script tiêm lỗi và công cụ chẩn đoán

  • Phần 3. Trace bị đứt đoạn — Các lệnh gọi HTTP không truyền header — Trace bị chia đôi, trace bị đứt đoạn trong hàng đợi thông điệp, parent biến mất trong thread pool và tác vụ bất đồng bộ, propagator không tương thích — Các định dạng header khác nhau, trace bị thủng do quyết định lấy mẫu không nhất quán, span âm thầm bị loại bỏ ở collector, batch kết thúc mà không flush — Mất span cuối cùng

  • Phần 4. Trace khổng lồ và giới hạn kích thước — giới hạn kích thước trace — vượt quá sẽ bị loại bỏ âm thầm, giảm sampling không làm giảm kích thước của một trace, batch tạo span trong mỗi vòng lặp, consumer không ngắt trace theo từng thông điệp, chuyển sang dùng span link, thiết kế ranh giới trace cho batch job, khi thuộc tính lớn làm tăng kích thước trace

  • Mục 5. Cạm bẫy chỉ bật truyền ngữ cảnh — dịch vụ đã tắt xuất dữ liệu nhưng vẫn bật truyền ngữ cảnh, tìm các trace không có gốc, khắc phục bằng chính sách truyền ngữ cảnh

  • Phần 6. Chi phí span và cardinality — Tắt các span được tự động instrument không cần thiết, cardinality của tên span, cardinality của thuộc tính và tình trạng bùng nổ số lượng span metric, xử lý tại collector — chuyển đổi và xóa, lấy mẫu ở đuôi — chỉ giữ lại các trace lỗi và chậm, lập ngân sách span

  • Mục 7. Bảng điều khiển trống sau khi chuyển đổi stack — Đổi stack xong, bảng điều khiển trống không, thay đổi tên metric — dấu chấm, đơn vị và hậu tố, thay đổi nhãn — tên dịch vụ và thuộc tính tài nguyên, bắc cầu bằng recording rule và kiểm tra, chuyển từ log sang trace

  • Phần 8. Truy vấn dữ liệu quan sát bằng tác nhân AI — Chi phí truy vấn của tác nhân — Cửa sổ thời gian chính là chi phí, mã hóa các quy tắc an toàn — Công cụ truy vấn có giới hạn, chạy tìm nguyên nhân bằng tác nhân AI

  • Phần 9. Đồ án cuối khóa — Hoàn thiện trace của Loop Market — Đồ án cuối khóa 1 — Danh sách các triệu chứng của Loop Market bị lỗi, Đồ án cuối khóa 2 — Chẩn đoán, Đồ án cuối khóa 3 — Khắc phục và trace liền mạch đến cuối, Đồ án cuối khóa 4 — Hoàn thiện dashboard và danh sách kiểm tra tổng thể

Môi trường thực hành

Bài thực hành sử dụng trung tâm mua sắm ảo Loopmarket, khởi chạy chỉ bằng một lệnh docker compose. Đây là một cửa hàng chuyên về thể thao và dã ngoại đang phát triển, do khoảng mười lăm lập trình viên vận hành; những đợt lưu lượng tăng cao thường chỉ xảy ra vào dịp lễ hội xả hàng cuối mùa và các đợt mở bán giới hạn sản phẩm mới. Tổng cộng 11 dịch vụ luôn chạy trên một chiếc máy tính xách tay: API đặt hàng (Java, tự động instrument bằng Java agent), các consumer thanh toán, tồn kho và xuất hàng cùng batch quyết toán (Python, OpenTelemetry SDK), Kafka, PostgreSQL, OTel Collector, Tempo, Prometheus, Loki và Grafana. Bạn có thể bật tắt sự cố bằng ./fault.sh và dùng công cụ ./lm để xem ngay trace, metric và log.

Kiến thức cần có trước

  • Có kinh nghiệm sử dụng Docker và docker compose (các lệnh cơ bản trong terminal trên Mac và Linux)

  • Các khái niệm cơ bản về API HTTP và hàng đợi tin nhắn (Kafka)

  • Máy tính có thể cấp cho Docker ít nhất 6 GB bộ nhớ (chúng ta sẽ chạy cùng lúc 11 dịch vụ thực hành).

Những nội dung không được đề cập trong khóa học nàyTHOOK

  • Dành cho người chỉ muốn tìm hiểu cách cài đặt OpenTelemetry lần đầu và các khái niệm cơ bản (có hướng dẫn cài đặt, nhưng trọng tâm là khắc phục sự cố)

  • Triển khai Kubernetes · cấu hình Operator

  • Cách sử dụng một sản phẩm quan sát thương mại cụ thể.

  • Bản thân việc tối ưu hóa hiệu năng ứng dụng.

Thông tin

Lời thuyết minh trong slide là giọng nói tổng hợp. Toàn bộ dữ liệu đều là dữ liệu mô phỏng phục vụ đào tạo, các con số có thể thay đổi tùy theo môi trường thực thi.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên backend vận hành nền tảng thương mại điện tử microservices, thường nghe người ta nói trace 'thỉnh thoảng bị gián đoạn', 'không mở được'

  • Kỹ sư SRE và kỹ sư nền tảng đã triển khai OpenTelemetry nhưng vẫn bối rối, không biết nên xem gì trong Collector, Tempo và Prometheus.

  • Các nhóm đang chuyển stack giám sát từ sản phẩm của nhà cung cấp sang mã nguồn mở, hoặc gặp tình trạng bảng điều khiển trống sau khi chuyển đổi.

  • Dành cho những người cần quyết định thiết kế trace cho Kafka consumer và các batch job.

Cần biết trước khi bắt đầu?

  • Kinh nghiệm sử dụng Docker·docker compose (các lệnh cơ bản trên terminal Mac·Linux)

  • Các khái niệm cơ bản về HTTP API và hàng đợi tin nhắn (Kafka)

  • Máy tính có thể cấp ít nhất 6 GB bộ nhớ cho Docker (chạy cùng lúc 11 dịch vụ thực hành)

Xin chào
Đây là dorian05202988

Xác minh sự nghiệp

Tôi là một chuyên gia dữ liệu với hơn 20 năm kinh nghiệm trong lĩnh vực cơ sở dữ liệu và CNTT. Trong vai trò DBA và quản lý nhóm Nền tảng Cơ sở dữ liệu, tôi phụ trách các nền tảng cơ sở dữ liệu, với chuyên môn về MySQL, PostgreSQL, Oracle, MongoDB, tinh chỉnh SQL, AWS, Terraform và Python. Dựa trên kinh nghiệm trong các lĩnh vực trò chơi, tài chính và dịch vụ CNTT, tôi trình bày về cơ sở dữ liệu và kiến trúc đám mây. Tôi đã xuất bản 『Học các mẫu SQL tinh chỉnh thực tế Oracle』 và 『Sổ tay ứng dụng dự án thực tế Oracle Pro*C』, đồng thời thuyết trình về serverless, lựa chọn cơ sở dữ liệu và chiến lược đa cơ sở dữ liệu tại AWS Summit 2018·2019 và sự kiện 데이터야 놀자 2020. Gần đây, tôi tập trung vào phân tích và khuyến nghị tinh chỉnh truy vấn chậm bằng Bedrock LLM, tự động hóa việc tính toán thông số DB, cũng như quy trình tra cứu thông qua máy chủ DB Meta MCP và bot Slack. Tôi giải thích về tự động hóa cơ sở dữ liệu dành cho nhà phát triển và việc ứng dụng AI vào công việc dành cho người không chuyên về phát triển thông qua các bài thực hành phù hợp với đối tượng và mục tiêu của từng khóa học. Thay vì áp dụng nguyên xi các đề xuất của AI, tôi truyền đạt các tiêu chí đánh giá như kiểm tra tính tương đương của kết quả, kế hoạch thực thi và điều kiện quan sát; nếu thiếu căn cứ thì tạm thời chưa áp dụng. Dữ liệu vận hành của công ty và thông tin xác thực không được đưa vào tài liệu giảng dạy.

Thêm

Chương trình giảng dạy

Tất cả

40 bài giảng ∙ (4giờ 8phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của dorian05202988

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

1.101.429 ₫

19%

1.362.294 ₫