Các SRE (site reliability engineer) là những người chịu trách nhiệm đánh giá các công cụ để sử dụng trong công việc hàng ngày của và làm cho các ứng dụng của họ đáng tin cậy hơn đối với người dùng cuối. Có rất nhiều công cụ SRE và có thể khó biết công cụ nào là quan trọng nhất để xem xét. Bài hướng dẫn này đưa ra các danh mục chính của công cụ SRE và giúp bạn tìm thấy công cụ phù hợp với team của mình.
Công cụ giám sát (monitoring tools)
Các công cụ giám sát được sử dụng để tạo ra các chỉ số và thông tin chi tiết có giá trị về một ứng dụng và giúp các SRE thực hiện mọi thứ từ tạo benchmarks đến gỡ lỗi sự cố. Không quá khó để tìm thấy những công cụ giám sát như vậy trên trên thực tế. Những công cụ này thường bao gồm một hoặc nhiều lĩnh vực sau:
Giám sát hiệu suất ứng dụng (Application performance monitoring– APM)
APM dùng để lập mô hình thời gian phản hồi mà người dùng cuối ứng dụng của bạn nhận thấy và so sánh điều này với điểm chuẩn hiệu suất (performance benchmarks) để phát hiện độ trễ và thời gian ngừng hoạt động.
Giám sát mạng
Kiểm tra tất cả lưu lượng đến và đi được định tuyến qua mạng của bạn để giúp cân bằng tải, gỡ lỗi các sự cố máy khách / máy chủ và ngăn chặn các cuộc tấn công mạng như tấn công DOS trước khi chúng xảy ra.
Giám sát tài nguyên, cơ sở hạ tầng:
Xem tốc độ tiêu thụ và SLO (Service Level Objective) cho các thành phần của ứng dụng của bạn, chẳng hạn như tải CPU cho các cụm Kubernetes của bạn, để giúp quản lý tài nguyên.
Những tính năng cần chú ý trong một công cụ giám sát
Bất kể bạn đang xem loại công cụ giám sát nào, bạn sẽ muốn điều tra các tính năng quan trọng sau:
- Cảnh báo (Alerts:): Công cụ có thể tạo cảnh báo khi các chỉ số tiếp cận và vượt quá ngưỡng mà nhóm SRE của bạn xác định.
- Ứng phó sự cố tự động (Automated incident response): Lý tưởng nhất là các công cụ của bạn cũng sẽ cố gắng tự động khắc phục mọi sự cố được phát hiện nếu có thể, giúp giảm chi phí kỹ thuật của bạn.
- Ghi nhật ký (Logging): Công cụ giám sát của bạn nên tạo nhật ký chi tiết chứa tất cả thông tin bạn cần để gỡ lỗi sự cố, với phần đánh dấu có thể định cấu hình để sử dụng dễ dàng hơn.
- Hình ảnh hóa và trang tổng quan (Visualizations and dashboards): Các công cụ giám sát cung cấp nhiều loại đồ họa và biểu đồ khác nhau để giúp bạn diễn giải dữ liệu trong nháy mắt hoặc giao tiếp với các bên liên quan của mình. Tùy thuộc vào các trường hợp sử dụng của bạn, bạn có thể muốn tìm kiếm các công cụ hỗ trợ một số loại tổng hợp dữ liệu và trình bày trực quan.
- Hỗ trọ tích hợp(Supported integrations): Công cụ của bạn phải hoạt động liền mạch với các thành phần và dịch vụ ứng dụng của bạn.
Các công cụ giám sát phổ biến
Dưới đây là một số công cụ giám sát phổ biến mà các SRE cần chú ý:
Các công cụ mã nguồn mở
- Prometheus: Một công cụ giám sát phổ biến với một cộng đồng năng động và nhiều tính năng.
- Grafana: Giúp bạn tạo trang tổng quan và trực quan hóa bằng cách tích hợp với các công cụ giám sát khác (thường được kết hợp với Prometheus).
Các công cụ giám sát có trả phí
- Appdynamics: Một nền tảng tập trung vào APM (mặc dù nó cũng cung cấp giám sát mạng và tài nguyên).
- DataDog: Cung cấp một bộ công cụ giám sát để bao gồm nhiều trường hợp sử dụng khác nhau.
- Splunk: Một công cụ tổng quát để quản lý dữ liệu quy mô lớn và thu được những thông tin chi tiết hữu ích.
Công cụ quản lý cuộc gọi (On-call management tools)
Các SRE và kỹ sư thường chịu trách nhiệm gọi điện trong giờ làm việc và ngoài giờ làm việc, chuẩn bị phản ứng ngay lập tức để giải quyết bất kỳ vấn đề nào có thể đe dọa đến sức khỏe của hệ thống. Thực hiện cuộc gọi có thể gây căng thẳng và may mắn thay, có nhiều công cụ mà SRE có thể sử dụng để giúp giảm bớt gánh nặng và làm cho việc gọi điện dễ dàng hơn một chút.
Những tính năng cần tìm trong một công cụ quản lý cuộc gọi
Dưới đây là một số tính năng cụ thể để giúp bạn ưu tiên đánh giá của mình:
Lập lịch luân phiên trong cuộc gọi
Công cụ của bạn sẽ giúp bạn phân phối nhiệm vụ trực điện thoại một cách đồng đều và công bằng trong nhóm của bạn, với sự linh hoạt trong trường hợp ai đó cần giao dịch luân phiên trong cuộc gọi vào phút cuối.
Chia sẻ lịch trong cuộc gọi
Đôi khi một sự cố liên quan đến nhiều thành phần và một số kỹ sư trực cần tham gia vào ứng phó sự cố. Vì lý do đó, điều quan trọng là công cụ của bạn cung cấp một cách tập trung để xem lịch đang gọi trong tổ chức của bạn.
Cảnh báo cho các kỹ sư đang gọi
Điều này khá rõ ràng, nhưng nó thực sự cần thiết. Công cụ trực điện thoại của bạn cần phải tích hợp với các công cụ giám sát của bạn để đưa ra cảnh báo và nó phải cung cấp tải trọng với đủ ngữ cảnh để kỹ sư trực điện thoại có thể giải quyết vấn đề. Công cụ của bạn cũng nên cung cấp cho bạn các cấu hình dựa trên quy tắc để định tuyến và kiểm soát cảnh báo để chống lại cảnh báo spam, dẫn đến kiệt sức.
Các công cụ phổ biến để quản lý cuộc gọi
Các công cụ quản lý cuộc gọi phổ biến bao gồm PagerDuty, Splunk OnCall (trước đây là VictorOps) và Atlassian’s Opsgenie.
Các công cụ quản lý sự cố (Incident management tools)
Chắc chắn, hệ thống của bạn sẽ xảy ra lỗi và người đang gọi điện sẽ cần các công cụ mạnh mẽ để giúp khắc phục sự cố ngay lập tức và đảm bảo rằng chúng không xảy ra nữa. Theo Sách SRE của Google, việc quản lý một sự cố thành công phụ thuộc vào ba yếu tố: (1) lộ trình xử lý rõ ràng (clear escalation paths), (2) quy trình ứng phó được xác định rõ (well-defined response procedures) và (3) văn hóa xử lý sau sự cố (blameless post-mortem culture). Các SRE có thể tìm thấy các công cụ để hệ thống hóa các phương pháp này và giúp nhóm của bạn giao tiếp tốt hơn và giải quyết các sự cố nhanh hơn.
Những tính năng cần có trong một công cụ quản lý sự cố
- Phân loại vấn đề (Issue triage): Công cụ của bạn sẽ giúp bạn định cấu hình các loại vấn đề và mức độ nghiêm trọng để bạn biết cách ưu tiên và khi nào cần báo cáo.
- Lộ trình báo cáo (Escalation pathways): Cho dù vấn đề được báo cáo theo cách thủ công hay tự động, bạn sẽ có thể nhanh chóng thu hút được những người phù hợp tham gia và dễ dàng chia sẻ tất cả bối cảnh mà họ cần để hiểu vấn đề.
- Sổ tay / quy trình công việc (Runbooks / workflows): Tùy thuộc vào phân loại vấn đề, công cụ của bạn phải cung cấp sổ tay chạy các bước được xác định trước mà các kỹ sư trực cần làm theo. Công cụ của bạn cũng có thể tự động thực thi quy trình công việc nếu đáp ứng các điều kiện nhất định.
- Giao tiếp theo thời gian thực (Real-time communication): Công cụ của bạn nên tích hợp với các ứng dụng mà nhóm của bạn sử dụng để giao tiếp, như Slack, Jira hoặc thậm chí là Zoom, để chia sẻ thông tin một cách tự động và giúp bạn tập trung vào vấn đề hiện tại. Nó cũng sẽ tạo ra một tài liệu lịch sử về phản ứng sự cố mà nhóm của bạn có thể tham khảo sau này.
- Phân tích vấn đề theo hướng dữ liệu (Data-driven issue analysis): Lý tưởng nhất là công cụ của bạn sẽ cung cấp cho bạn tất cả dữ liệu cần thiết để hiểu điều gì đã xảy ra và tập trung vào cách có thể tránh được điều đó vào lần sau, thay vì đổ lỗi cho các cá nhân.
Các công cụ quản lý sự cố phổ biến
Tất cả các công cụ quản lý cuộc gọi được đề cập trước đây cũng có một số hình thức quản lý sự cố. Các công cụ chuyên dụng bổ sung cho mục đích này bao gồm Blameless, ServiceNow và công cụ quản lý khủng hoảng nguồn mở của Netflix, Dispatch..
Công cụ cấu hình / tự động hóa (Configuration/Automation tools)
Một chức năng chính của vai trò SRE là tự động hóa các công việc không cần đầu óc và công việc bận rộn trong quá trình phát triển phần mềm. Các cấu hình tự động có thể được sử dụng để đảm bảo rằng công việc được giảm thiểu và các bước tương tự luôn được lặp lại khi cung cấp, quản lý và phá hủy tài nguyên.
Những tính năng cần có trong một công cụ cấu hình
- Cơ sở hạ tầng dưới dạng mã (Infrastructure as code): Mô hình này có nghĩa là các thông số kỹ thuật cơ sở hạ tầng của bạn nằm trong một tệp, tệp này có thể được chạy để tạo lại cấu hình của bạn trong trường hợp ngừng hoạt động. Hầu hết các công cụ tự động hóa sẽ có ngôn ngữ riêng để khai báo cấu hình mong muốn.
- Lập kế hoạch thực thi (Execution planning): Công cụ của bạn nên cung cấp bản xem trước tác động của các thay đổi trước khi bạn chạy tự động hóa, để đảm bảo không có hậu quả không lường trước được.
- Quy trình làm việc tự động (Automated workflows): Công cụ sẽ cho phép bạn thực thi các bước luôn được tuân theo khi thực hiện một tác vụ, chẳng hạn như triển khai một ứng dụng và cho phép bạn chạy các quy trình công việc này một cách tự động.
- Hỗ trợ điều phối vùng chứa (Supports container orchestration): Nếu bạn sử dụng dịch vụ điều phối vùng chứa như Kubernetes để triển khai dịch vụ của mình, công cụ cấu hình của bạn phải tương thích.
Các công cụ cấu hình phổ biến
Các công cụ phổ biến để tự động hóa cấu hình cơ sở hạ tầng của bạn là Terraform và Ansible.
Công cụ Microservice catalog
Để đảm bảo tránh được các sự cố ngay từ đầu, các nhóm SRE nên tìm kiếm các công cụ giúp họ thực thi các chính sách cấp cao và các phương pháp hay nhất. Nguyên lý chính của các công cụ danh mục dịch vụ vi mô (microservice catalog) phải là quản trị trên kiến trúc hướng dịch vụ của bạn. Quản trị đề cập đến những quy tắc và quy trình mà nhóm tuân theo, cũng như người chịu trách nhiệm về độ tin cậy trên các dịch vụ và ứng dụng khác nhau. Điều này giúp tránh kiểu kiến thức bộ lạc (tribal knowledge) và đặc biệt quan trọng khi các nhóm làm việc từ xa và quản lý nhiều dịch vụ nhỏ khác nhau.
Những tính năng cần tìm trong công cụ microservice catalog
- Hỗ trợ đánh giá mức độ sẵn sàng sản xuất (production readiness review- PRR): Quy trình quan trọng đối với SRE là PRR: bước qua danh sách kiểm tra được xác định trước để đảm bảo rằng phần mềm đã sẵn sàng triển khai. Điều này có thể bao gồm những thứ như đảm bảo rằng bạn đã thiết lập cân bằng tải và thử nghiệm đầu cuối.
- Quyền sở hữu minh bạch: Công cụ này nên tạo một danh mục dịch vụ với chủ sở hữu của chúng được xác định rõ ràng, do đó, dễ dàng tra cứu ai chịu trách nhiệm về những gì.
- Tích hợp với các công cụ hiện có của bạn: Tất cả các phương pháp hay nhất mà bạn đang cố gắng thực thi sẽ hiển thị trong một công cụ. Điều này có nghĩa là, ví dụ: xoay vòng thiết lập APM và cuộc gọi của bạn sẽ xuất hiện cùng với danh mục các dịch vụ của bạn, vì vậy bạn không cần phải tham khảo nhiều công cụ để biết nơi tìm dữ liệu quan trọng.
- Cập nhật tự động: Khi cấu hình hoặc chính sách của bạn thay đổi, bạn không cần phải thực hiện các chỉnh sửa thủ công trong công cụ.
Các công cụ microservice catalog phổ biến
Bạn có thử công cụ như effx, Cortex.
Kết luận
Với các công cụ phù hợp, nhóm SRE của bạn sẽ có thể dành sức lực của họ để cải thiện độ tin cậy và hiệu suất sản phẩm của bạn thay vì đối phó với công việc khó khăn và chi phí. Hy vọng bài viết này là một cái nhìn tổng quan hữu ích về các lĩnh vực trọng tâm và các công cụ phổ biến của SRE.
Theo: https://www.getcortexapp.com/post/a-guide-to-the-best-sre-tools