paint-brush
Hiệu suất và bảo mật tốt hơn bằng cách theo dõi nhật ký, số liệu và hơn thế nữatừ tác giả@johnjvester
242 lượt đọc

Hiệu suất và bảo mật tốt hơn bằng cách theo dõi nhật ký, số liệu và hơn thế nữa

từ tác giả John Vester10m2023/01/18
Read on Terminal Reader

dài quá đọc không nổi

Giám sát là một phần quan trọng của khả năng quan sát. Tìm hiểu cách giám sát có thể cải thiện cụ thể tính bảo mật, hiệu suất và độ tin cậy trong phần tiếp theo của loạt bài của tôi.
featured image - Hiệu suất và bảo mật tốt hơn bằng cách theo dõi nhật ký, số liệu và hơn thế nữa
John Vester HackerNoon profile picture


Trong bài viết trước của loạt bài này — Hướng dẫn mọi thứ về thu thập dữ liệu trong DevSecOps — chúng ta đã thảo luận về tầm quan trọng của việc thu thập dữ liệu. Trong bài viết này, chúng ta sẽ khám phá vai trò của giám sát trong khả năng quan sát, đặc biệt là khi nó liên quan đến bảo mật, hiệu suất và độ tin cậy.


Giám sát là điều cần thiết để phát hiện các vấn đề và điểm khác biệt khi chúng xảy ra trong quá trình sản xuất và cho phép các nhóm DevSecOps xác định và giải quyết các vấn đề trước khi chúng gây ra thiệt hại nghiêm trọng. Việc theo dõi tình trạng suy giảm hiệu suất hoặc hoạt động đáng ngờ có thể dẫn đến các cảnh báo và phản hồi tự động để cô lập các sự cố hoặc cuộc tấn công tiềm ẩn.


Trong bài viết này, chúng ta sẽ xem xét việc giám sát một cách chi tiết, cung cấp một số trường hợp sử dụng và các phương pháp hay nhất, đồng thời thảo luận cách giám sát có thể cải thiện cụ thể tính bảo mật, hiệu suất và độ tin cậy thông qua khả năng quan sát.

Vai trò của giám sát trong khả năng quan sát là gì?

Trong một hệ thống có thể quan sát được, chúng tôi thu thập dữ liệu từ nhật ký, số liệu và dấu vết được phân phối. Và trong khi đối với các hệ thống rất nhỏ, bạn có thể duyệt và tìm kiếm nhật ký theo cách thủ công, trực quan hóa các số liệu dưới dạng biểu đồ và theo dõi thông qua các sơ đồ cho thấy lưu lượng truy cập chảy qua hệ thống như thế nào để xác định sự cố — ở quy mô lớn, điều này là không đủ. Bạn cần theo dõi, một quy trình tự động theo dõi dữ liệu này và cảnh báo cho bạn một cách thích hợp. (Để biết cách xử lý chi tiết hơn về sự khác biệt giữa giám sát và khả năng quan sát, bạn có thể xemtài nguyên này .)


Trong một doanh nghiệp, bạn cần các cách tự động để lọc, tổng hợp, làm phong phú và phân tích tất cả dữ liệu này. Doanh nghiệp cũng cần có những cách tự động để hành động khi phát hiện điều gì đó bất thường. Phản hồi tự động có thể thông báo cho nhóm chịu trách nhiệm hoặc thậm chí trực tiếp thực hiện hành động khắc phục.

Trong các lĩnh vực khác như y học, theo dõi các dấu hiệu sinh tồn của bệnh nhân là một hoạt động quan trọng, giúp cứu mạng sống. Các hệ thống phần mềm giám sát rất giống nhau và chúng tôi thậm chí còn sử dụng cùng một phương pháp khi thực hiện kiểm tra tình trạng và thảo luận về tình trạng của các thành phần khác nhau.

Lý thuyết đủ rồi, chúng ta hãy xem xét một số ví dụ cụ thể về giám sát.

Các trường hợp sử dụng giám sát cho khả năng quan sát

Dưới đây là một số trường hợp sử dụng điển hình tận dụng lợi thế của việc giám sát:


  • Các ứng dụng web là một phần chính của nhiều hệ thống phân tán quy mô lớn và là chìa khóa thành công của các doanh nghiệp ưu tiên kỹ thuật số. Giám sát các ứng dụng được chứa trong Kubernetes hoặc đơn giản là nhật ký máy chủ web để tìm mã lỗi xuất hiện quá nhiều (chẳng hạn như 4xx hoặc 5xx ) có thể giúp nhóm giải quyết các vấn đề về hiệu suất và độ tin cậy trước khi chúng trở thành vấn đề nghiêm trọng.
  • Ở cấp độ cơ sở hạ tầng, điều quan trọng là phải giám sát CPU, bộ nhớ và bộ lưu trữ của máy chủ của bạn. Giống như hầu hết các doanh nghiệp, bạn có thể sử dụng tính năng tự động thay đổi quy mô để hệ thống của bạn có thể phân bổ thêm dung lượng. Nhật ký nền tảng ghi lại khi có thay đổi đối với tài nguyên, chẳng hạn như khi chúng được cung cấp, hủy cung cấp hoặc định cấu hình lại. Tuy nhiên, việc giám sát các số liệu và nhật ký tài nguyên này có thể giúp bạn đảm bảo rằng bạn đang làm việc trong hạn ngạch và giới hạn, đồng thời có thể giúp ích cho tổ chức của bạn khi lập kế hoạch và lập ngân sách tài nguyên.
  • Kho dữ liệu là trung tâm của hầu hết các hệ thống quy mô lớn. Nếu dữ liệu của bạn bị mất, bị hỏng hoặc không có sẵn, thì bạn đang gặp một tình huống nghiêm trọng. Để theo dõi dữ liệu của mình, bạn cần theo dõi các kết nối cơ sở dữ liệu, số liệu về thời lượng truy vấn, dung lượng ổ đĩa, bản sao lưu và tỷ lệ lỗi. Bạn cũng nên hiểu các kho lưu trữ dữ liệu của mình và đặt cảnh báo khi quan sát thấy các giá trị nằm ngoài phạm vi dự kiến, chẳng hạn như truy vấn chậm, tỷ lệ lỗi cao hoặc dung lượng ổ đĩa thấp. Bạn cũng có thể thiết lập ghi nhật ký cho cơ sở dữ liệu của mình để nắm bắt các kết nối, truy vấn và thay đổi đối với các trường hoặc bảng. Theo dõi nhật ký cơ sở dữ liệu của bạn có thể giúp bạn phát hiện không chỉ nơi bạn có thể cải thiện hiệu suất và độ tin cậy của mình mà còn bảo mật nếu các hoạt động độc hại (hoặc không chủ ý) đang được thực hiện.


Lưu ý rằng việc giám sát liên quan nhiều hơn đến việc đặt một điều kiện đơn giản (chẳng hạn như “hơn năm truy vấn INSERT vào cơ sở dữ liệu orders trong vòng hai phút”) và đưa ra cảnh báo khi điều kiện đó được đáp ứng. Tính thời vụ có thể thay đổi, với các kiểu sử dụng gây ra đột biến vào những thời điểm nhất định trong ngày, tuần hoặc năm. Giám sát hiệu quả để phát hiện hành vi không mong muốn sẽ tính đến bối cảnh và có thể nhận ra các xu hướng dựa trên dữ liệu trong quá khứ.


Loại giám sát này, đặc biệt khi được triển khai với một công cụ kết hợp khả năng quan sát, giám sát và bảo mật trên quy mô lớn, có thể cực kỳ hiệu quả, chẳng hạn như trong nghiên cứu điển hình này từ Sumo Logic và Infor, trong đó Infor có thể tiết kiệm 5.000 giờ thời gian dành cho sự cố.


Đi sâu vào để tìm ra nguyên nhân gốc rễ trên bảng điều khiển từ Sumo Logic



Làm thế nào để giám sát đóng góp cụ thể để cải thiện hiệu suất và độ tin cậy?

Giám sát cải thiện hiệu suất và độ tin cậy của hệ thống bằng cách phát hiện sớm các sự cố để tránh xuống cấp. Các vấn đề về hiệu suất thường trở thành các vấn đề về tính khả dụng và độ tin cậy. Điều này đặc biệt đúng khi có thời gian chờ. Ví dụ: giả sử một ứng dụng hết thời gian chờ sau 60 giây. Do một vấn đề về hiệu suất gần đây, nhiều yêu cầu đột nhiên mất hơn 60 giây để xử lý. Tất cả các yêu cầu này sẽ không thành công và ứng dụng hiện không đáng tin cậy.


Một phương pháp hay nhất phổ biến để giải quyết vấn đề này là giám sát bốn tín hiệu vàng của bất kỳ thành phần nào trong đường dẫn quan trọng của các dịch vụ và ứng dụng có mức độ ưu tiên cao: độ trễ, lưu lượng truy cập, lỗi và độ bão hòa.

độ trễ

Mất bao lâu để xử lý một yêu cầu? Lưu ý rằng độ trễ của yêu cầu thành công có thể khác với yêu cầu không thành công. Bất kỳ sự gia tăng đáng kể nào về độ trễ có thể cho thấy hiệu suất hệ thống đang giảm sút. Mặt khác, bất kỳ sự sụt giảm đáng kể nào cũng có thể là dấu hiệu cho thấy một số quá trình xử lý bị bỏ qua. Dù bằng cách nào, việc giám sát sẽ mang lại sự chú ý cho vấn đề có thể xảy ra.

Giao thông

Giám sát lưu lượng cung cấp cho bạn hiểu biết về tải tổng thể trên từng thành phần. Lưu lượng truy cập có thể được đo theo nhiều cách khác nhau cho các thành phần khác nhau. Ví dụ:


  • API REST: số lượng yêu cầu
  • Dịch vụ phụ trợ: độ sâu của hàng đợi
  • Thành phần xử lý dữ liệu: tổng số byte dữ liệu được xử lý.


Sự gia tăng lưu lượng truy cập có thể là do tăng trưởng kinh doanh hữu cơ, đó là một điều tốt. Tuy nhiên, nó cũng có thể chỉ ra một vấn đề trong hệ thống ngược dòng tạo ra nhiều lưu lượng truy cập hơn trước một cách bất thường.

lỗi

Sự gia tăng tỷ lệ lỗi của bất kỳ thành phần nào ảnh hưởng trực tiếp đến độ tin cậy và tiện ích của hệ thống. Ngoài ra, nếu các tùy chọn không thành công sẽ tự động bị gỡ bỏ, điều này có thể dẫn đến sự gia tăng lưu lượng truy cập và điều này sau đó có thể dẫn đến các vấn đề về hiệu suất.

bão hòa

Trong số các tài nguyên có sẵn, dịch vụ hoặc ứng dụng đang sử dụng bao nhiêu? Đây là những gì theo dõi độ bão hòa cho bạn biết. Ví dụ: nếu một đĩa đầy, thì dịch vụ ghi nhật ký vào đĩa đó sẽ không thành công trong mọi yêu cầu tiếp theo. Ở cấp độ cao hơn, nếu cụm Kubernetes không có dung lượng trống trên các nút của nó, thì các nhóm mới sẽ ở trạng thái chờ xử lý và không được lên lịch, điều này có thể dẫn đến các vấn đề về độ trễ.


Như bạn nhận thấy, bốn tín hiệu vàng có liên quan với nhau. Các vấn đề thường biểu hiện qua nhiều tín hiệu.

Làm thế nào để giám sát đóng góp cụ thể để cải thiện an ninh?

Mặc dù mọi vấn đề về tình trạng hệ thống đều có thể ảnh hưởng trực tiếp hoặc gián tiếp đến bảo mật, nhưng có một số mối đe dọa trực tiếp mà việc giám sát có thể giúp phát hiện và giảm thiểu.


  • Bất kỳ sự bất thường nào, chẳng hạn như sử dụng CPU quá mức hoặc khối lượng lớn yêu cầu, có thể kẻ tấn công đang cố gây ra lỗi phân đoạn, thực hiện khai thác tiền điện tử bất hợp pháp hoặc khởi chạy một cuộc tấn công DDoS vào hệ thống.
  • Một số lượng bất thường các gói tấn công các cổng bất thường có thể là một cuộc tấn công gõ cổng .
  • Nhiều lỗi 401 (lỗi xác thực) với tên người dùng hợp lệ và mật khẩu không hợp lệ có thể là một cuộc tấn công từ điển.
  • Một số lượng lớn lỗi 403 (truy cập bị cấm) có thể là do kẻ tấn công leo thang đặc quyền bằng cách sử dụng tài khoản bị xâm phạm.
  • Tải trọng không hợp lệ cho các API công khai dẫn đến tăng 400 lỗi có thể là kẻ tấn công đang cố gắng phá hoại các ứng dụng web công khai của bạn một cách ác ý.
  • Việc tải xuống một lượng lớn dữ liệu hoặc bất kỳ dữ liệu nhạy cảm nào ngoài giờ làm việc có thể là một cuộc tấn công lấy cắp thông tin của nhân viên bị xâm nhập hoặc nội gián giả mạo.

Thực tiễn tốt nhất để giám sát để cải thiện hiệu suất và bảo mật

Một hệ thống được tạo thành từ nhiều thành phần, nhưng nó không chỉ là tổng của các bộ phận của nó. Ở cấp độ cơ bản, bạn nên theo dõi mọi thành phần trong hệ thống của mình (ít nhất là trên các đường dẫn quan trọng) để biết bốn tín hiệu vàng . Điều này có ý nghĩa gì trong thực tế?


  • Quan sát các chỉ số chính
  • Thiết lập phạm vi số liệu cho hoạt động bình thường
  • Cài đặt cảnh báo khi các thành phần đi chệch khỏi phạm vi chấp nhận được


Bạn cũng nên chú ý đến các phụ thuộc bên ngoài . Ví dụ: nếu bạn chạy trên đám mây hoặc tích hợp với nhà cung cấp dịch vụ bên thứ ba, thì bạn nên giám sát các điểm cuối công khai mà bạn phụ thuộc và đặt cảnh báo để phát hiện sự cố. Nếu bên thứ ba ngừng hoạt động hoặc hiệu suất của bên thứ ba bị suy giảm, điều này có thể gây ra lỗi xếp tầng trong hệ thống của bạn.


Không thể có các thành phần đáng tin cậy 100%. Tuy nhiên, việc giám sát có thể giúp bạn tạo một hệ thống đáng tin cậy từ các thành phần không đáng tin cậy bằng cách phát hiện sự cố với các thành phần — cả bên trong lẫn bên ngoài — và thay thế chúng hoặc giảm chất lượng dịch vụ một cách nhẹ nhàng . Ví dụ: nếu bạn đang chạy hệ thống của mình trong cấu hình nhiều vùng và có sự cố ở một vùng, thì việc giám sát có thể phát hiện vấn đề này và kích hoạt định tuyến lại (thủ công hoặc tự động) tất cả lưu lượng truy cập đến các vùng khác.


Để bảo mật, bốn tín hiệu cũng có thể là các chỉ số phụ trợ của sự thỏa hiệp . Đây là trường hợp đặc biệt, ví dụ: nếu bạn thấy CPU khối lượng công việc trên thiết bị đầu cuối hoặc đám mây tăng đột biến hoặc số lần đăng nhập không thành công tăng đột biến. Tuy nhiên, giám sát an ninh phải rất thận trọng vì bạn phải đối phó với những đối thủ độc hại. Bạn phải xác định dịch vụ tấn công của từng thành phần và toàn bộ hệ thống và đảm bảo thông tin bạn đang thu thập đủ để phát hiện các vấn đề . Ví dụ: để phát hiện việc đánh cắp dữ liệu, bạn có thể theo dõi địa chỉ IP và lượng dữ liệu được gửi ra bên ngoài mạng nội bộ của mình bằng các ứng dụng và dịch vụ khác nhau. Nếu bạn không có dữ liệu đó, bạn sẽ mù tịt về phương pháp tấn công đó.

Thực hiện Chiến lược giám sát

Sau khi bạn thiết lập việc thu thập dữ liệu của mình, bạn có thể làm theo các bước bên dưới để triển khai chiến lược giám sát mạnh mẽ và hiệu quả.

1. Xác định tài sản quan trọng.

Bạn đã thực hiện kiểm kê toàn diện tất cả tài sản của mình như một phần của quá trình thu thập dữ liệu. Bây giờ, nhiệm vụ của bạn là xác định các tài sản quan trọng phải được giám sát chặt chẽ để ngăn ngừa và giảm thiểu thảm họa. Nói thì dễ, “chỉ giám sát mọi thứ”, nhưng có những chi phí cần xem xét khi giám sát. Theo dõi và đưa ra cảnh báo cho môi trường dàn dựng và phát triển hoặc dịch vụ thử nghiệm của bạn có thể gây ra nhiều căng thẳng không cần thiết cho các kỹ sư của bạn. Thông báo thường xuyên lúc 3 giờ sáng cho các sự cố không quan trọng sẽ gây ra sự mệt mỏi cho cảnh báo, làm tê liệt nỗ lực của nhóm bạn trong việc giải quyết sự cố khi nó thực sự quan trọng.

2. Chỉ định chủ sở hữu cho mọi tài sản quan trọng.

Sau khi xác định được các tài sản quan trọng, bạn cần có chủ sở hữu rõ ràng cho từng tài sản. Chủ sở hữu có thể là một người hoặc một đội. Trong trường hợp của một người, hãy chắc chắn cũng xác định một dự phòng. Điều quan trọng nữa là duy trì quyền sở hữu tài sản khi mọi người tham gia và rời khỏi tổ chức hoặc chuyển sang các vai trò và nhóm khác.

3. Xác định cảnh báo cho các tài sản quan trọng.

Cuối cùng, chiến lược giám sát của bạn sẽ sống hay chết dựa trên cách bạn xác định cảnh báo cho những nội dung không lành mạnh hoặc có khả năng bị xâm phạm. Bạn cần hiểu điều gì là bình thường đối với từng nội dung.


Nếu bạn đang theo dõi các chỉ số, thì việc xác định "bình thường" có nghĩa là liên kết một thuộc tính (chẳng hạn như mức sử dụng CPU) với một dải giá trị (chẳng hạn như "50%-80%"). Phạm vi bình thường có thể thay đổi linh hoạt theo doanh nghiệp và có thể thay đổi vào các thời điểm khác nhau và các địa điểm khác nhau. Trong một số trường hợp, bạn có thể chỉ có trần nhà hoặc sàn nhà. Bằng cách xác định phạm vi bình thường, bạn tạo cảnh báo để thông báo cho chủ sở hữu nội dung khi nội dung của họ hoạt động ngoài phạm vi bình thường.


Nếu bạn đang theo dõi nhật ký, thì các cảnh báo thường được xác định dựa trên kết quả của một số truy vấn nhật ký nhất định (chẳng hạn như “số lượng lỗi 404 được ghi trên tất cả các dịch vụ API trong năm phút qua”) thỏa mãn hoặc không đáp ứng một điều kiện (chẳng hạn như “là ít hơn 10”). Các công cụ phân tích và quản lý nhật ký có thể hữu ích.

4. Xác định runbooks cho mọi cảnh báo.

Khi một cảnh báo quan trọng kích hoạt, bạn sẽ làm gì? Điều bạn không muốn làm là cố gắng tìm ra chiến lược của mình ngay tại chỗ, trong khi khách hàng đang tweet về các sản phẩm không đáng tin cậy của công ty bạn và ban quản lý đang hoảng loạn.


Runbook là công thức gồm các bước dễ thực hiện mà bạn chuẩn bị và kiểm tra trước để giúp bạn thu thập thông tin bổ sung (ví dụ: xem bảng thông tin nào và chạy tập lệnh dòng lệnh nào để chẩn đoán nguyên nhân gốc rễ) và giảm nhẹ các hành động (ví dụ: triển khai phiên bản trước của ứng dụng). Sổ tay hướng dẫn của bạn sẽ giúp bạn nhanh chóng xác định vấn đề đối với một vấn đề cụ thể và xác định người tốt nhất để xử lý vấn đề đó.

5. Thiết lập quy trình khi có cuộc gọi.

Bạn có chủ sở hữu, cảnh báo và runbooks. Thông thường, các cảnh báo không đủ cụ thể để ánh xạ trực tiếp tới chủ sở hữu. Phương pháp hay nhất là chỉ định kỹ sư trực cho các khu vực khác nhau của doanh nghiệp. Kỹ sư trực này sẽ nhận được cảnh báo, theo dõi lịch trình, xem bảng điều khiển và cố gắng hiểu nguyên nhân gốc rễ. Nếu họ không thể hiểu hoặc khắc phục vấn đề, họ sẽ báo cáo vấn đề đó cho chủ sở hữu. Hãy nhớ rằng quá trình này có thể phức tạp; thông thường, một vấn đề xảy ra do một chuỗi lỗi đòi hỏi nhiều bên liên quan phải hợp tác để giải quyết vấn đề.

6. Tiến tới việc tự chữa lành vết thương.

Runbooks rất tuyệt, nhưng việc duy trì các runbook phức tạp và đào tạo các kỹ sư theo yêu cầu để theo dõi chúng cần rất nhiều nỗ lực. Và cuối cùng, quá trình khắc phục của bạn vẫn phụ thuộc vào con người chậm chạp và dễ mắc lỗi. Nếu sổ tay của bạn không được cập nhật, việc làm theo nó có thể khiến cuộc khủng hoảng trở nên tồi tệ hơn.


Về mặt lý thuyết, một runbook có thể được thực hiện theo chương trình. Nếu runbook cho biết, "khi cảnh báo X kích hoạt, quy trình Y sẽ khởi động lại", thì tập lệnh hoặc chương trình có thể nhận được thông báo về cảnh báo X và khởi động lại quy trình Y. Chương trình tương tự có thể giám sát quy trình Y sau khi khởi động lại, đảm bảo mọi thứ đều ổn, và cuối cùng tạo báo cáo về sự cố — tất cả mà không cần đánh thức kỹ sư trực. Nếu hành động tự phục hồi không thành công, thì có thể liên hệ với kỹ sư trực.

7. Thiết lập quy trình khám nghiệm tử thi.

Khả năng tự phục hồi là điều tuyệt vời, tuy nhiên, phòng bệnh đáng giá một cân chữa bệnh, vì vậy tốt nhất bạn nên ngăn chặn vấn đề ngay từ đầu. Mỗi sự cố là một cơ hội để học hỏi và có thể ngăn chặn cả một loạt các vấn đề. Ví dụ: nếu nhiều sự cố xảy ra do mã lỗi được đưa vào sản xuất, thì bài học rút ra từ phân tích sau sự cố có thể là cải thiện thử nghiệm theo giai đoạn. Nếu phản hồi của kỹ sư trực đối với một cảnh báo quá chậm hoặc sổ tay hướng dẫn đã lỗi thời, thì điều này có thể gợi ý rằng nhóm nên đầu tư vào một số phương pháp tự phục hồi.

Phần kết luận

Giám sát là một phần quan trọng của khả năng quan sát nói chung và khả năng quan sát để bảo mật nói riêng. Ở quy mô lớn, việc con người “chỉ thỉnh thoảng nhìn” vào các bảng điều khiển và biểu đồ khác nhau để phát hiện vấn đề là không thực tế. Bạn cần có một bộ hoàn chỉnh các phương pháp ứng phó sự cố bao gồm xác định chủ sở hữu, thiết lập cảnh báo, viết sổ ghi chép, tự động hóa sổ ghi chép và thiết lập quy trình theo yêu cầu cũng như quy trình sau khi khám nghiệm tử thi.


Có một ngày thực sự tuyệt vời!