khả năng quan sátdịch vụ vi môghi nhật kýgiám sátcơ sở hạ tầng đám mâyhệ thống phân tán
Khả năng quan sát trong kiến trúc Microservices so với hệ thống Monolithic và việc ghi nhật ký hệ thống.
Kiến trúc microservices cho phép theo dõi, đo lường và ghi nhật ký phân tán trên các dịch vụ độc lập, trong khi kiến trúc ghi nhật ký nguyên khối tập trung vào các bản ghi tập trung từ một ứng dụng duy nhất. Lựa chọn phù hợp phụ thuộc vào độ phức tạp của hệ thống, quy mô và mức độ hiểu biết mà các nhóm cần về sự tương tác giữa các dịch vụ.
Điểm nổi bật
Khả năng quan sát của kiến trúc microservices coi dấu vết, số liệu và nhật ký là những tín hiệu ngang nhau, trong khi việc ghi nhật ký của kiến trúc nguyên khối hầu như chỉ dựa vào các bản ghi văn bản.
Tính năng theo dõi phân tán cho phép các nhóm xác định chính xác dịch vụ nào gây ra lỗi, điều mà các nhật ký truyền thống khó thực hiện được khi phân tán giữa các dịch vụ.
Hệ thống ghi nhật ký nguyên khối yêu cầu ít cơ sở hạ tầng và chuyên môn hơn để bắt đầu, do đó rất hấp dẫn đối với các hệ thống nhỏ hoặc hệ thống cũ.
Khả năng quan sát tỷ lệ thuận với độ phức tạp của hệ thống, trong khi việc ghi nhật ký theo kiểu đơn khối có xu hướng suy giảm khi quy mô ứng dụng và lưu lượng truy cập tăng lên.
Khả năng quan sát trong kiến trúc Microservices là gì?
Một phương pháp tiếp cận đa chiều kết hợp dấu vết, số liệu và nhật ký để hiểu hành vi trên các dịch vụ phân tán, được triển khai độc lập.
Được xây dựng trên ba trụ cột: theo dõi phân tán, số liệu và ghi nhật ký có cấu trúc trên các dịch vụ.
Sử dụng mã định danh tương quan để theo dõi một yêu cầu duy nhất khi nó di chuyển giữa hàng chục hoặc hàng trăm dịch vụ.
Dựa vào các công cụ như OpenTelemetry, Jaeger, Prometheus và Grafana để thu thập và trực quan hóa dữ liệu.
Được thiết kế để xử lý cơ sở hạ tầng tạm thời, nơi các container và pod liên tục được khởi tạo và tắt.
Cho phép các nhóm SRE phát hiện các bất thường thông qua các mục tiêu mức độ dịch vụ và ngân sách lỗi.
Ghi nhật ký hệ thống nguyên khối là gì?
Phương pháp truyền thống là một ứng dụng duy nhất ghi các mục nhật ký vào các tệp tập trung hoặc một kho lưu trữ nhật ký duy nhất để gỡ lỗi và kiểm toán.
Các bản ghi nhật ký xuất phát từ một mã nguồn duy nhất chạy dưới dạng một tiến trình duy nhất, giúp việc theo dõi đường dẫn yêu cầu trở nên dễ dàng.
Thông thường, hệ thống sử dụng ghi nhật ký dựa trên tệp, syslog hoặc các công cụ tổng hợp nhật ký đơn giản như Logback hoặc log4j.
Việc gỡ lỗi thường bao gồm việc tìm kiếm trong các tệp nhật ký hoặc truy vấn một phiên bản ELK stack duy nhất.
Mức độ hao phí hiệu năng là tối thiểu vì việc ghi nhật ký diễn ra trong cùng một môi trường thực thi.
Việc thiết lập tương quan sẽ dễ dàng hơn thông qua ngữ cảnh cục bộ của luồng hoặc ID phiên đơn giản.
Bảng So Sánh
Tính năng
Khả năng quan sát trong kiến trúc Microservices
Ghi nhật ký hệ thống nguyên khối
Ngành kiến trúc
Phân bổ trên nhiều dịch vụ
Ứng dụng thống nhất duy nhất
Các loại dữ liệu chính
Dấu vết, số liệu và nhật ký
Chủ yếu là nhật ký, đôi khi là số liệu.
Truy tìm yêu cầu
Theo dõi phân tán với ngữ cảnh span
Theo dõi cục bộ theo luồng hoặc theo phiên
Độ phức tạp của công cụ
Cao — yêu cầu công cụ đo lường trên toàn bộ các dịch vụ
Thấp — chỉ cần một đường dẫn ghi nhật ký duy nhất là đủ.
Khả năng mở rộng
Mở rộng theo chiều ngang với số lượng dịch vụ
Bị giới hạn bởi thông lượng của một ứng dụng duy nhất
Chẩn đoán thất bại
Xác định chính xác dịch vụ nào gây ra độ trễ hoặc lỗi.
Dễ hơn trong cùng một quy trình, khó hơn ở các ranh giới.
Yêu cầu lưu trữ
Cơ sở dữ liệu có dung lượng lớn, thường là dữ liệu chuỗi thời gian.
Thông thường, các tập tin phẳng hoặc một chỉ mục có kích thước trung bình.
Chi phí thực hiện
Đầu tư ban đầu đáng kể
Chi phí thiết lập ban đầu thấp hơn
So sánh chi tiết
Triết lý và phương pháp cốt lõi
Khả năng quan sát trong kiến trúc microservices giả định rằng bạn không thể dự đoán trước mọi lỗi, vì vậy bạn thu thập đủ dữ liệu đo lường đa dạng để đặt ra các câu hỏi mới sau khi sự cố xảy ra. Hệ thống ghi nhật ký theo kiểu kiến trúc nguyên khối có quan điểm đơn giản hơn: thu thập đủ bản ghi văn bản để tái tạo lại những gì đã xảy ra trong quá trình xử lý yêu cầu. Cách tiếp cận đầu tiên coi nhật ký là một tín hiệu trong số nhiều tín hiệu khác, trong khi cách tiếp cận thứ hai coi nhật ký là tín hiệu chính để hiểu hành vi của hệ thống.
Gỡ lỗi và phân tích nguyên nhân gốc rễ
Khi xảy ra sự cố trong kiến trúc microservices, các kỹ sư sẽ xem xét kỹ lưỡng các dấu vết phân tán để tìm ra chính xác dịch vụ nào gây ra độ trễ hoặc trả về lỗi. Trong kiến trúc monolith, các nhà phát triển thường mở một tệp nhật ký, tìm kiếm dấu thời gian hoặc ID người dùng và đọc qua các mục nhập theo trình tự. Cách tiếp cận monolith có vẻ trực quan hơn, nhưng nó sẽ gặp khó khăn khi hệ thống phát triển đủ lớn khiến một tệp nhật ký duy nhất trở nên cồng kềnh.
Công cụ và cơ sở hạ tầng
Các kiến trúc quan sát thường kết hợp thư viện đo lường như OpenTelemetry, hệ thống theo dõi như Jaeger hoặc Tempo, kho lưu trữ số liệu như Prometheus và lớp bảng điều khiển như Grafana. Hệ thống ghi nhật ký nguyên khối thường cần ít hơn nhiều — một khung ghi nhật ký, một bộ chuyển tiếp nhật ký như Filebeat và có thể là một cụm ELK hoặc OpenSearch. Chuỗi công cụ kiến trúc vi dịch vụ đòi hỏi sự trưởng thành hơn trong vận hành nhưng sẽ mang lại hiệu quả khi hệ thống trở nên phức tạp.
Hiệu năng và chi phí
Việc theo dõi phân tán làm tăng số bước nhảy mạng và chi phí tuần tự hóa khi các span được lan truyền qua ranh giới dịch vụ, mặc dù các chiến lược lấy mẫu giúp quản lý chi phí phát sinh. Việc ghi nhật ký tập trung vào một tiến trình ứng dụng duy nhất, do đó, tác động đến hiệu năng chủ yếu đến từ I/O ổ đĩa và định dạng nhật ký. Cả hai phương pháp đều có thể làm giảm hiệu năng nếu việc ghi nhật ký được để ở mức chi tiết trong môi trường sản xuất, nhưng môi trường microservices thường cần tinh chỉnh cẩn thận hơn.
Khi mỗi thứ đều có ý nghĩa
Khả năng quan sát (observability) phát huy hiệu quả tối đa trong môi trường triển khai thường xuyên, dịch vụ đa ngôn ngữ và các nhóm cần quyền sở hữu độc lập đối với các thành phần. Hệ thống ghi nhật ký truyền thống vẫn là lựa chọn phù hợp cho các ứng dụng nhỏ hơn, hệ thống cũ hoặc các trường hợp mà việc tuân thủ quy định yêu cầu nhật ký kiểm toán rõ ràng. Nhiều tổ chức thực tế sử dụng cả hai – giữ lại nhật ký truyền thống để tuân thủ quy định trong khi tích hợp thêm các công cụ quan sát để có được cái nhìn sâu sắc về kỹ thuật.
Ưu & Nhược điểm
Khả năng quan sát trong kiến trúc Microservices
Ưu điểm
+Hiển thị đầy đủ yêu cầu
+Tương quan đa tín hiệu
+Tỷ lệ thuận với độ phức tạp
+Hỗ trợ các hoạt động SRE
Đã lưu
−Chi phí dụng cụ cao hơn
−Đường cong học tập dốc hơn
−Chi phí lưu trữ cao hơn
−Yêu cầu kiến thức chuyên môn về thiết bị đo lường.
Ghi nhật ký hệ thống nguyên khối
Ưu điểm
+Dễ thực hiện
+Chi phí vận hành thấp hơn
+quen thuộc với hầu hết các đội
+Nhật ký kiểm toán dễ dàng
Đã lưu
−Thông tin chi tiết hạn chế giữa các dịch vụ
−Tỷ lệ không tương xứng với kích thước
−Điểm yếu duy nhất
−Khó liên hệ các sự kiện hơn
Những hiểu lầm phổ biến
Huyền thoại
Chỉ cần xem nhật ký hệ thống là đủ để gỡ lỗi bất kỳ hệ thống nào.
Thực tế
Nhật ký hệ thống hoạt động tốt đối với các hệ thống nguyên khối nhưng lại kém hiệu quả trong các hệ thống phân tán, nơi một yêu cầu duy nhất tác động đến nhiều dịch vụ. Số liệu và dấu vết lấp đầy khoảng trống bằng cách chỉ ra các mẫu và chuỗi nhân quả mà nhật ký khó có thể tiết lộ.
Huyền thoại
Khả năng quan sát thực chất chỉ là việc ghi nhật ký thông tin được nâng cấp với một cái tên mới.
Thực tế
Khả năng quan sát là một lĩnh vực rộng hơn, bao gồm cả nhật ký hệ thống nhưng cũng bổ sung thêm các chỉ số và dấu vết như những tín hiệu quan trọng. Mục tiêu chuyển từ việc tìm kiếm bản ghi sang việc đặt ra các câu hỏi tùy ý về hành vi hệ thống mà không cần viết thêm mã mới.
Huyền thoại
Các hệ thống nguyên khối không cần khả năng quan sát.
Thực tế
Ngay cả các ứng dụng đơn lẻ cũng được hưởng lợi từ các số liệu, dấu vết và nhật ký có cấu trúc khi chúng đạt đến quy mô đáng kể. Khả năng quan sát là về việc hiểu trạng thái hệ thống, điều này áp dụng bất kể kiến trúc nào.
Huyền thoại
Hệ thống theo dõi phân tán quá tốn kém để sử dụng trong môi trường sản xuất.
Thực tế
Các hệ thống theo dõi hiện đại sử dụng phương pháp lấy mẫu dựa trên đầu hoặc dựa trên đuôi để thu thập một tập hợp con đại diện của các yêu cầu. Điều này giúp giảm thiểu chi phí vận hành trong khi vẫn cung cấp đủ dữ liệu để chẩn đoán hầu hết các sự cố.
Huyền thoại
Việc chuyển sang kiến trúc microservices tự động cải thiện khả năng quan sát.
Thực tế
Kiến trúc microservices khiến việc giám sát trở nên khó khăn hơn chứ không phải dễ dàng hơn, bởi vì giờ đây bạn có nhiều thành phần chuyển động cần theo dõi hơn. Nếu không có công cụ và thiết bị đo lường phù hợp, khả năng hiển thị thực tế sẽ giảm so với một kiến trúc monolith được trang bị đầy đủ công cụ đo lường.
Các câu hỏi thường gặp
Sự khác biệt giữa khả năng quan sát và ghi nhật ký là gì?
Ghi nhật ký là một loại dữ liệu đo từ xa — các sự kiện riêng lẻ được ghi lại bởi một ứng dụng. Khả năng quan sát là một thuộc tính của hệ thống mô tả mức độ bạn có thể hiểu trạng thái bên trong của hệ thống từ các đầu ra bên ngoài. Khả năng quan sát sử dụng nhật ký, số liệu và dấu vết cùng nhau, trong khi ghi nhật ký chỉ tập trung vào các bản ghi văn bản.
Tại sao kiến trúc microservices cần cơ chế theo dõi phân tán?
Trong kiến trúc microservices, một yêu cầu của người dùng có thể đi qua năm, mười hoặc nhiều hơn các dịch vụ trước khi hoàn tất. Theo dõi phân tán sẽ theo dõi yêu cầu đó xuyên suốt các ranh giới dịch vụ bằng cách sử dụng ID tương quan và phạm vi, giúp xác định thời gian đã được dành cho việc gì và lỗi bắt nguồn từ đâu.
Liệu có thể sử dụng hệ thống ghi nhật ký truyền thống trong môi trường kiến trúc microservices không?
Đúng vậy, nhưng việc đối chiếu nhật ký giữa các dịch vụ sẽ khó khăn hơn nếu không có mã định danh chung. Hầu hết các nhóm đều thêm tính năng ghi nhật ký có cấu trúc với mã định danh tương quan, sau đó thêm các lớp theo dõi và số liệu để có được bức tranh toàn diện về hoạt động của hệ thống.
Ba trụ cột của khả năng quan sát là gì?
Ba trụ cột đó là nhật ký, số liệu và dấu vết. Nhật ký ghi lại các sự kiện riêng lẻ, số liệu ghi lại dữ liệu số theo thời gian, và dấu vết cho thấy đường đi của một yêu cầu thông qua các hệ thống phân tán. Cùng nhau, chúng cho phép các nhóm trả lời các câu hỏi về hiệu suất, lỗi và trải nghiệm người dùng.
OpenTelemetry có phải là tiêu chuẩn cho khả năng quan sát dữ liệu không?
OpenTelemetry đã trở thành tiêu chuẩn thực tế cho việc đo lường hiệu suất trên hầu hết các ngôn ngữ lập trình và nền tảng. Nó đã hợp nhất các dự án OpenTracing và OpenCensus và hiện được hỗ trợ bởi Cloud Native Computing Foundation, cùng với sự hỗ trợ rộng rãi từ các nhà cung cấp và các công cụ mã nguồn mở.
Chi phí giám sát hệ thống so với ghi nhật ký là bao nhiêu?
Việc giám sát thường tốn kém hơn do cần thêm dung lượng lưu trữ, giấy phép công cụ và thời gian kỹ sư để thiết lập hệ thống. Tuy nhiên, nó thường giúp giảm thời gian trung bình để giải quyết vấn đề và ngăn ngừa các sự cố tốn kém, từ đó bù đắp chi phí đầu tư ban đầu cho các tổ chức vận hành hệ thống phức tạp.
Liệu các hệ thống kiến trúc nguyên khối có được lợi ích gì từ các công cụ giám sát?
Hoàn toàn đúng. Ngay cả các ứng dụng đơn lẻ cũng thu được giá trị từ việc theo dõi phân tán trong chính quy trình của chúng, từ các số liệu tiết lộ xu hướng hiệu suất và từ nhật ký có cấu trúc dễ truy vấn hơn. Các công cụ quan sát không chỉ dành riêng cho kiến trúc microservices.
Trong cơ chế theo dõi phân tán, "span" là gì?
Một span đại diện cho một đơn vị công việc duy nhất trong một dấu vết, chẳng hạn như một truy vấn cơ sở dữ liệu hoặc một cuộc gọi HTTP giữa các dịch vụ. Các span có tên, thời gian bắt đầu, thời lượng và siêu dữ liệu, và chúng liên kết với nhau thông qua mối quan hệ cha-con để tạo thành một dấu vết hoàn chỉnh.
Làm thế nào để bạn liên kết các nhật ký giữa các microservice?
Các nhóm thường chèn một ID tương quan ở rìa hệ thống và truyền nó qua tiêu đề HTTP, siêu dữ liệu tin nhắn hoặc ngữ cảnh luồng. Mỗi dịch vụ đều bao gồm ID đó trong các mục nhật ký của nó, vì vậy một lần tìm kiếm trên tất cả các dịch vụ sẽ trả về toàn bộ đường dẫn yêu cầu.
Các công ty khởi nghiệp nên sử dụng công nghệ quan sát hay chỉ nên dùng ghi nhật ký?
Các công ty khởi nghiệp giai đoạn đầu thường bắt đầu với việc ghi nhật ký có cấu trúc và các số liệu cơ bản vì chúng giúp triển khai nhanh hơn và tiết kiệm chi phí hơn. Khi hệ thống phát triển và số lượng nhóm tăng lên, việc bổ sung tính năng theo dõi và một nền tảng quan sát thống nhất trở nên đáng giá để duy trì tốc độ phát triển.
Phán quyết
Hãy chọn kiến trúc microservices để quan sát hệ thống khi hệ thống của bạn bao gồm nhiều dịch vụ độc lập và bạn cần hiểu được sự tương tác giữa các dịch vụ trong thời gian thực. Đối với các ứng dụng đơn giản hơn, nơi việc ghi nhật ký tập trung cung cấp đủ thông tin và chi phí vận hành quan trọng hơn là độ chi tiết cụ thể, hãy sử dụng kiến trúc ghi nhật ký nguyên khối. Trên thực tế, các hệ thống hoàn thiện thường kết hợp cả hai phương pháp thay vì hoàn toàn tập trung vào một phương pháp.