Tổng quan về hệ thống giám sát lai Okerr

Hai năm trước tôi đã đăng một bài Chuyển đổi dự phòng đơn giản cho một trang web về được thôi. Bây giờ có một số sự phát triển của dự án và tôi cũng đã xuất bản mã nguồn phía máy chủ okerr dưới giấy phép mở, đó là lý do tại sao tôi quyết định viết bài đánh giá ngắn này về Habr.

Tổng quan về hệ thống giám sát lai Okerr
[ kích thước đầy đủ ]

Nó có thể quan tâm đến ai

Điều này có thể khiến bạn quan tâm nếu bạn làm việc trong một nhóm nhỏ hoặc một mình. Bạn không có tính năng giám sát và bạn không chắc liệu mình có thực sự cần nó hay không. Hoặc bạn đã thử một số tính năng giám sát nghiêm túc phổ biến “dành cho các ông lớn”, nhưng bằng cách nào đó nó “không thành công” đối với bạn hoặc nó hoạt động ở cấu hình gần như mặc định và không thay đổi nhiều cuộc sống của bạn. Ngoài ra - nếu bạn chắc chắn không có kế hoạch phân bổ toàn bộ nhân viên (hoặc thậm chí một bộ phận) để giám sát bảng điều khiển giám sát ít nhất vài giờ mỗi ngày hoặc định cấu hình nó.

Tại sao okerr lại bất thường

Tiếp theo tôi sẽ trình bày các tính năng thú vị của okerra để phân biệt nó với một số hệ thống giám sát khác.

Okerr là một giám sát kết hợp

Trong quá trình giám sát nội bộ, một “tác nhân” đang chạy trên các máy được giám sát, tác nhân này sẽ truyền dữ liệu đến máy chủ giám sát (ví dụ: dung lượng đĩa trống). Khi ở bên ngoài, máy chủ sẽ thực hiện kiểm tra qua mạng (ví dụ: ping hoặc tính khả dụng của trang web). Mỗi cách tiếp cận đều có những hạn chế của nó. Okerr sử dụng cả hai tùy chọn. Việc kiểm tra bên trong máy chủ được thực hiện bởi một tác nhân rất nhẹ (30Kb) hoặc các tập lệnh và ứng dụng của riêng bạn, đồng thời việc kiểm tra mạng được thực hiện thông qua các cảm biến okerr ở các quốc gia khác nhau.

okerr không chỉ là phần mềm mà còn là dịch vụ

Phần máy chủ của bất kỳ hoạt động giám sát nào đều lớn và phức tạp, khó cài đặt và định cấu hình cũng như yêu cầu tài nguyên. Với okerr, bạn có thể cài đặt máy chủ giám sát của riêng mình (miễn phí và mã nguồn mở) hoặc bạn chỉ cần sử dụng phần máy khách và sử dụng dịch vụ của máy chủ của chúng tôi. Cũng miễn phí.

Nếu việc giám sát cho phép bạn bù đắp và che đậy sự thiếu tin cậy trong máy chủ và ứng dụng, thì một câu hỏi triết học sẽ đặt ra - ai là người bảo vệ? Việc giám sát sẽ cho chúng tôi biết về một vấn đề như thế nào nếu bản thân nó “chết” vì một lý do nào đó, riêng biệt hoặc cùng với các tài nguyên khác của bạn (ví dụ: kênh đến trung tâm dữ liệu bị hỏng)? Khi sử dụng dịch vụ bên ngoài okerr - vấn đề này đã được giải quyết - bạn sẽ nhận được cảnh báo ngay cả khi toàn bộ trung tâm dữ liệu với máy chủ của bạn không có điện hoặc bị zombie tấn công.

Tất nhiên, có nguy cơ là bản thân máy chủ okerr sẽ không khả dụng, điều này đúng (như bạn biết, 90% độ tin cậy luôn đạt được một cách đơn giản và “miễn phí”, 99% với nỗ lực tối thiểu và mỗi chín tiếp theo là khó khăn hơn theo cấp số nhân). Tuy nhiên, thứ nhất, khả năng điều này xảy ra thấp hơn và thứ hai, sự cố chỉ có thể không được chú ý nếu nó trùng với sự cố trên máy chủ của chúng tôi. Nếu chúng tôi có độ tin cậy 99.9% và bạn có 99.9% (con số không quá cao), thì khả năng xảy ra lỗi không được phát hiện là 0.1% của 0.1% = 0.0001%. Việc thêm ba số chín vào độ tin cậy của bạn hầu như không cần nỗ lực và không tốn kém là rất tốt!

Một ưu điểm khác của việc giám sát dưới dạng dịch vụ là nhà cung cấp dịch vụ lưu trữ hoặc studio web có thể cài đặt máy chủ okerr và cung cấp quyền truy cập cho khách hàng dưới dạng dịch vụ bổ sung trả phí hoặc miễn phí. Đối thủ cạnh tranh của bạn chỉ có dịch vụ lưu trữ và trang web, nhưng bạn có dịch vụ lưu trữ đáng tin cậy có tính năng giám sát.

Okerr là về các chỉ số

Đèn báo là một "bóng đèn". Nó có hai trạng thái chính - xanh lục (OK) hoặc đỏ (ERR). Dự án chứa nhiều chỉ báo được nhóm (ví dụ: theo máy chủ). Trên trang chính của dự án, bạn sẽ thấy ngay rằng mọi thứ đều có màu xanh lá cây (và bạn có thể đóng nó lại) hoặc có thứ gì đó sáng màu đỏ và cần phải sửa. Khi chuyển đổi giữa các trạng thái này, một cảnh báo sẽ được gửi. Mỗi ngày một lần trong khi bạn đang thiết lập nó, một bản tóm tắt về dự án sẽ được gửi.

Tổng quan về hệ thống giám sát lai Okerr

Mỗi chỉ báo okerr đều có các điều kiện tích hợp để thay đổi trạng thái (trong Zabbix, đây được gọi là trình kích hoạt). Ví dụ: tải trung bình không được nhiều hơn 2 (tất nhiên, điều này có thể định cấu hình được). Và đối với mỗi lần kiểm tra nội bộ (tải trung bình, không có đĩa, ...) đều có cơ quan giám sát. Nếu vì lý do nào đó mà chúng tôi không nhận được xác nhận thành công vào thời điểm đã chỉ định thì sẽ có lỗi được ghi lại và cảnh báo sẽ được gửi.

Mô hình công việc thông thường của chúng tôi là kiểm tra email vào buổi sáng và xem bản tóm tắt ở đó cùng với các email khác (chúng tôi lên lịch khi bắt đầu làm việc). Nếu mọi thứ trong đó đều ổn, chúng tôi sẽ thực hiện những việc quan trọng khác (nhưng để an toàn, chúng tôi có thể nhanh chóng xem bảng điều khiển okerra và đảm bảo rằng mọi thứ đều có màu xanh vào thời điểm này). Nếu có cảnh báo đến, chúng tôi sẽ phản ứng.

Tất nhiên, có thể chỉ cần giữ các chỉ báo “thông tin” (để xem hình ảnh của mạng khi bị giám sát), nhưng mọi thứ đều được thực hiện để tạo các chỉ báo dành riêng cho giám sát tự động và gửi cảnh báo một cách đơn giản, dễ dàng và nhanh chóng.

Mục đích mà bạn thiết lập okerr là để cảnh báo, để bạn có thể tạo chỉ báo trong một phút, nó có thể “ngủ” trong một năm, chỉ chấp nhận cập nhật và khi một năm sau có thứ gì đó bị hỏng, nó sẽ sáng lên và gửi một sự bao động . Giây phút bạn bỏ ra để tạo chỉ báo đã được đền đáp; bạn đã biết về vấn đề ngay lập tức, trước bất kỳ ai khác. Có thể họ đã sửa nó trước khi có người chú ý. Cái gì giơ lên ​​nhanh chóng thì không được coi là rơi xuống!

Безопасность

Sẽ thật đáng tiếc nếu bạn thiết lập giám sát nhằm mục đích tăng độ tin cậy, nhưng kết quả là bạn bị tấn công qua mạng thông qua nó và có khá nhiều lỗ hổng mạng trong các công cụ giám sát khác nhau (Zabbix, Nagios).

Đại lý (okerrmod từ gói okerrupdate) chạy trên hệ thống không phải là máy chủ mạng mà là máy khách. Do đó, không có cổng mở bổ sung nào trên máy chủ được giám sát, máy khách dễ dàng hoạt động sau tường lửa hoặc NAT và rất khó (tôi sẽ nói là “không thể”) hack qua mạng, vì về nguyên tắc, nó không nghe mạng ổ cắm.

Phạm vi giám sát đầy đủ

Bây giờ quy tắc của chúng tôi là chúng tôi tìm hiểu về tất cả các vấn đề kỹ thuật từ okerr. Nếu đột nhiên quy tắc bị vi phạm (okerr không cảnh báo về sự xuất hiện sắp xảy ra của nó (nếu điều này có thể xảy ra) hoặc nó đã xảy ra) - chúng tôi sẽ thêm kiểm tra vào okerr.

Kiểm tra bên ngoài

Một bộ khá điển hình:

  • ping
  • trạng thái http
  • kiểm tra tính hợp lệ và độ mới của chứng chỉ SSL (sẽ cảnh báo nếu nó sắp hết hạn)
  • mở cổng TCP và biểu ngữ trên đó
  • http grep (trang [không được] chứa văn bản cụ thể)
  • hàm băm sha1 để nắm bắt các thay đổi của trang.
  • DNS (Bản ghi DNS phải có giá trị cụ thể)
  • WHOIS (sẽ cảnh báo nếu miền sắp hỏng)
  • DNSBL chống thư rác (máy chủ kiểm tra hơn 50 danh sách đen chống thư rác cùng một lúc)

Kiểm tra nội bộ

Ngoài ra, một bộ khá chuẩn (nhưng có thể mở rộng dễ dàng).

  • df (dung lượng đĩa trống)
  • tải trung bình
  • opentcp (mở ổ cắm nghe TCP - sẽ thông báo nếu có thứ gì đó bắt đầu hoặc bị hỏng)
  • thời gian hoạt động - chỉ thời gian hoạt động trên máy chủ. Sẽ thông báo nếu nó thay đổi (tức là máy chủ đã quá tải)
  • client_ip
  • dirsize - chúng tôi sử dụng nó để theo dõi khi rootf máy ảo của chúng tôi vượt quá kích thước cho phép mà không đưa ra các hạn chế nghiêm ngặt và kích thước của thư mục chính của người dùng
  • trống và không trống - giám sát các tệp phải trống (hoặc không trống). Ví dụ: nhật ký lỗi của bản thân máy chủ okerr phải trống và nếu có dù chỉ một dòng trong đó, tôi sẽ nhận được thông báo và kiểm tra nó. Nhưng mail.log trên máy chủ thư KHÔNG được để trống (N phút sau khi quay). Và đôi khi nó trống đối với chúng tôi sau khi cập nhật hệ thống, khi logrotate không thể khởi động lại rsyslog một cách chính xác.
  • linecount - số dòng trong file (như wc -l). Chúng tôi sử dụng nó như một sự thay thế nhẹ nhàng hơn cho trống, khi nhật ký lỗi vẫn có thể phát triển nhưng chỉ chậm (ví dụ: Googlebot truy cập một số trang đã đóng). Có giới hạn 2 dòng trong 20 phút. Nếu cao hơn sẽ có cảnh báo

Kiểm tra nội bộ thú vị

Nếu bạn đã đọc “theo đường chéo” cho đến thời điểm này, bây giờ sẽ thú vị hơn nếu đọc kỹ hơn.

sao lưu

Giám sát các bản sao lưu trong thư mục. Các tệp sao lưu của chúng tôi có tên như “ServerName-20200530.tar.gz”. Đối với mỗi máy chủ trong okerr, chỉ báo ServerName-DATE.tar.gz được tạo (ngày thực tế thay đổi thành dòng “DATE”). Sự hiện diện của bản sao lưu mới và kích thước của nó cũng được theo dõi (ví dụ: nó không thể nhỏ hơn 90% so với bản sao lưu trước đó).

Cần phải làm gì để bản sao lưu mới bắt đầu được theo dõi sau khi chúng ta bắt đầu tạo nó và đưa nó vào thư mục này? Không có gì! Đây là một cách tiếp cận rất thuận tiện khi bạn cần “không làm gì” vì:

  • “Không làm gì” khá nhanh, tiết kiệm thời gian
  • Thật khó để quên làm “không làm gì”
  • Thật khó để “không làm gì” sai, có lỗi. Không có gì là phương pháp đáng tin cậy nhất

Nếu đột nhiên các tập tin sao lưu mới ngừng xuất hiện, sẽ có cảnh báo. Ví dụ: nếu bạn đã tắt một trong các máy chủ và không còn bản sao lưu nào nữa, bạn sẽ cần xóa chỉ báo (thông qua giao diện web hoặc khỏi shell thông qua API).

maxfilesz

Theo dõi kích thước của các tệp lớn nhất (thường là: /var/log/*). Điều này cho phép bạn phát hiện các vấn đề không thể đoán trước, chẳng hạn như mật khẩu thô bạo hoặc gửi thư rác qua máy chủ.

trạng thái chạy/dòng chạy

Đây là hai mô-đun proxy quan trọng để chạy các chương trình khác trên máy chủ. Runstatus báo cáo mã thoát chương trình tới chỉ báo. Ví dụ: okerr không (yêu cầu) mô-đun để kiểm tra xem các dịch vụ systemd có đang chạy hay không. Việc này được thực hiện thông qua runstatus (xem bên dưới). Runline - báo cáo cho máy chủ dòng mà chương trình tạo ra. Ví dụ, temp_RUN="cat /sys/class/thermal/thermal_zone0/temp" trong cấu hình Runline trên máy chủ của chúng tôi sẽ tạo một chỉ báo servername:temp với nhiệt độ bộ xử lý.

sql

Thực hiện một truy vấn số tới MySQL và báo cáo kết quả cho chỉ báo. Trong một trường hợp đơn giản, bạn có thể thực hiện, chẳng hạn như "CHỌN 1" - thao tác này sẽ kiểm tra xem toàn bộ DBMS có hoạt động hay không.

Nhưng một ứng dụng thú vị hơn nhiều chẳng hạn là theo dõi số lượng đơn đặt hàng trong một cửa hàng trực tuyến. Nếu bạn biết rằng mình có 100 đơn hàng trở lên mỗi giờ, bạn có thể đặt giới hạn tối thiểu là 100 hoặc 80. Sau đó, nếu doanh số bán hàng của bạn giảm đột ngột, bạn sẽ nhận được cảnh báo và bạn có thể tìm ra.

Lưu ý rằng việc này xảy ra không quan trọng vì lý do không thể đoán trước nào:

  • Đơn giản là máy chủ không khả dụng (mất điện hoặc không có mạng) và cảnh báo xuất phát từ thực tế là chỉ báo đã “bị hỏng”.
  • Máy chủ bị quá tải, hoạt động chậm hoặc mất gói, gây bất tiện cho người dùng và họ rời đi mà không mua hàng
  • Máy chủ được đưa vào danh sách thư rác và thư từ nó không được chấp nhận, người dùng không thể đăng ký
  • Ngân sách chiến dịch quảng cáo đã cạn, banner không quay.

Có thể có bất kỳ lý do nào và tất cả chúng đều không thể lường trước được và rất khó theo dõi về mặt kỹ thuật. Nhưng bạn có thể theo dõi tham số cuối cùng (lệnh) một cách thuận tiện và xác định từ chúng rằng tình huống đó là đáng ngờ và đáng được xử lý.

Các chỉ báo logic

Cho phép sử dụng biểu thức Boolean (cú pháp Python) thông qua một mô-đun xác nhận(bài viết về Habré). Dữ liệu từ dự án và các chỉ số của nó có sẵn để thể hiện. Ví dụ, trong chương về kiểm tra SQL ở trên, bạn có thể nhận thấy một điểm yếu - ban ngày chúng ta có thể có 100 doanh số mỗi giờ, nhưng vào ban đêm - 20, và điều này là bình thường, không phải là vấn đề. Tôi nên làm gì? Chỉ báo sẽ liên tục hoảng loạn vào ban đêm.

Bạn có thể tạo hai chỉ số, ngày và đêm. Làm cho cả hai “im lặng” (họ sẽ không gửi thông báo). Và tạo ra một chỉ báo hợp lý yêu cầu chỉ báo ngày phải ổn trước 20h, sau 00h thì chỉ báo đêm ổn.

Một ví dụ khác về việc sử dụng chỉ báo logic là leo thang. Ví dụ: người quản lý dự án hủy đăng ký nhận thông báo (anh ta không cần phải làm điều này, quản trị viên phải phản hồi các vấn đề thông thường), nhưng đăng ký một chỉ báo logic chuyển sang màu đỏ nếu bất kỳ chỉ báo nào trong dự án không được sửa trong thời gian quy định.

Ngoài ra, có thể đặt thời gian làm việc được phép, chẳng hạn từ 3 đến 5 giờ sáng. Chúng tôi không quan tâm liệu máy chủ và trang web có gặp sự cố trong thời gian này hay không. Nhưng lúc 5 giờ họ phải làm việc. Nếu chúng không hoạt động vào bất kỳ thời điểm nào khác - hãy cảnh giác. Chỉ báo logic cũng cho phép bạn tính đến tình trạng dư thừa của máy chủ. Nếu bạn có 00 máy chủ web thì quản trị viên có thể tắt 5-1 máy chủ bất cứ lúc nào. Nhưng nếu có ít hơn 2 trên 3 máy chủ đang chiến đấu thì sẽ có cảnh báo.

Các ví dụ trên không phải là chức năng oker, không phải một số tính năng cần được kích hoạt và cấu hình. Okerra không có tất cả các chức năng này, nhưng có một mô-đun logic cho phép bạn triển khai chức năng này (Gần giống như trong ngôn ngữ lập trình - nếu chúng ta có toán tử số học, thì chúng ta không cần chức năng đặc biệt để tính 20% VAT từ ngôn ngữ, bạn luôn có thể tự mình làm điều đó để phù hợp với nhu cầu của bạn).

Chỉ báo logic có lẽ là một trong số ít chủ đề tương đối phức tạp trong okerr, nhưng tin tốt là bạn không cần phải nắm vững nó cho đến khi cần. Nhưng đồng thời, họ mở rộng đáng kể các khả năng, đồng thời giữ cho hệ thống khá đơn giản.

Thêm séc của riêng bạn

Tôi thực sự muốn truyền đạt ý tưởng rằng okerr không phải là một tập hợp hàng nghìn tờ séc làm sẵn cho mọi trường hợp, mà ngược lại - trước hết - một công cụ đơn giản với khả năng đơn giản để tạo séc của riêng bạn. Tạo séc của riêng bạn trong okerr không phải là nhiệm vụ đối với tin tặc, nhà đồng phát triển hệ thống hoặc ít nhất là người dùng okerr nâng cao mà là nhiệm vụ khả thi đối với bất kỳ quản trị viên nào cài đặt Linux lần đầu tiên cách đây một tháng.

Việc kiểm tra mức lương tối thiểu được thực hiện thông qua mô-đun trạng thái chạy:

Dòng này trong cấu hình trạng thái chạy sẽ thông báo cho bạn nếu /bin/true đột nhiên không bắt đầu hoặc trả về giá trị khác 0.

true_OK=/bin/true

Chỉ một dòng - và ở đây chúng ta đã có một chút rồi mở rộng chức năng okerr.

Ngay cả việc kiểm tra như vậy cũng đã có giá trị của nó: nếu đột nhiên máy chủ của bạn gặp sự cố, chỉ báo tương ứng trên máy chủ okerr sẽ không được cập nhật kịp thời và sau khi thời gian trôi qua, một cảnh báo sẽ xuất hiện.

Việc kiểm tra này sẽ thông báo rằng máy chủ Apache2 đã gặp sự cố (à, bạn không bao giờ biết...):

apache_OK="systemctl is-active --quiet apache2"

Vì vậy, nếu bạn nói bất kỳ ngôn ngữ lập trình nào và ít nhất có thể viết các tập lệnh shell, thì bạn đã có thể thêm séc của riêng mình.

Khó khăn hơn - bạn có thể viết (bằng bất kỳ ngôn ngữ nào) mô-đun của riêng bạn cho okerrmod. Trong trường hợp đơn giản nhất, nó trông như thế này:

#!/usr/bin/python3

print("STATUS: OK")

Có phải là rất khó khăn không? Mô-đun phải tự kiểm tra và xuất kết quả ra STDOUT. Ví dụ, một mô-đun phức tạp hơn sẽ đưa ra điều này:

$ okerrmod --dump df
NAME: pi:df-/
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 49.52%, 13.9G/28.2G used, 13.0G free
STATUS: 49.52

NAME: pi:df-/boot
TAGS: df
METHOD: numerical|maxlim=90
DETAILS: 84.32%, 53.1M/62.9M used, 9.9M free
STATUS: 84.32

Nó cập nhật một số chỉ báo cùng một lúc (cách nhau bằng một dòng trống), tạo chúng nếu cần, cho biết chi tiết xác minh và thẻ để dễ dàng tìm thấy các chỉ báo cần thiết trong trang tổng quan.

Telegram

Có một bot Telegram @OkerrBot. Bạn không cần phải làm lộn xộn điện thoại của mình với các ứng dụng riêng biệt (Tôi không thích điều đó đối với Pyaterochka, bạn cần một ứng dụng có bản đồ, cho Lenta một ứng dụng khác, cho MTS thứ ba, v.v. cho tất cả mọi người, mọi người, mọi người). Một bức điện là đủ. Thông qua điện tín, bạn có thể nhận ngay thông báo, kiểm tra trạng thái của dự án và đưa ra lệnh kiểm tra lại tất cả các chỉ số có vấn đề. Chúng tôi rời rạp hát/máy bay, không theo dõi nhịp tim trong hai giờ, bật điện thoại, nhấn một nút trong chatbot và đảm bảo rằng mọi thứ đều ổn.

Trang trạng thái

Ngày nay, các trang trạng thái gần như là thứ bắt buộc phải có đối với bất kỳ doanh nghiệp nào có CNTT, thái độ có trách nhiệm đối với độ tin cậy và đối xử tôn trọng với khách hàng/người dùng của mình.

Hãy tưởng tượng một tình huống - người dùng muốn làm điều gì đó, xem thông tin hoặc đặt hàng và có điều gì đó không hoạt động. Anh ta không biết chuyện gì đang xảy ra, vấn đề thuộc về ai và khi nào nó sẽ được giải quyết. Có lẽ công ty của bạn chỉ đơn giản là có một trang web không hoạt động? Hay nó đã bị hỏng sáu tháng trước và nó sẽ được sửa trong hai năm? Nhưng bạn cần mua một chiếc tủ lạnh ngay bây giờ, nó đã có trong xe đẩy rồi... Và đó lại là một vấn đề hoàn toàn khác khi một người thấy bạn có điều gì đó không ổn (ít nhất thì rõ ràng là vấn đề không nằm ở phía anh ta), rằng vấn đề đã được phát hiện, rằng bạn đang giải quyết nó và thậm chí có thể ghi lại thời gian gần đúng để khắc phục. Người dùng có thể đăng ký và nhận thông báo qua email khi sự cố được khắc phục và anh ta có thể làm những gì mình muốn (mua tủ lạnh).

Tổng quan về hệ thống giám sát lai Okerr

Vấn đề và thời gian chết xảy ra với tất cả mọi người. Nhưng người dùng và đối tác tin tưởng hơn những người minh bạch và có trách nhiệm hơn trong cách tiếp cận vấn đề này.

Đây đánh giá 10 dự án khác cho phép bạn tạo trang trạng thái. Dưới đây là ví dụ về giao diện của các trang dự án này Python и Dropbox. trang trạng thái okerr.

Failover

Để không làm bài viết này dài hơn nữa, tôi sẽ một lần nữa tham khảo lại bài viết trước của mình - Chuyển đổi dự phòng đơn giản cho một trang web . Nếu bạn có thể tạo một máy chủ trùng lặp thì sử dụng chuyển đổi dự phòng, về cơ bản bạn sẽ không có thời gian ngừng hoạt động lâu - ngay khi phát hiện sự cố, người dùng sẽ tự động được chuyển hướng đến một máy chủ dự phòng đang hoạt động. Và đối với tôi, có vẻ như đây là một tính năng rất thú vị, sáng sủa mà hiếm có nơi nào có được.

Yêu cầu hệ thống thấp

Đối với máy chủ okerr, chúng tôi sử dụng máy có RAM từ 2Gb. Đối với cảm biến mạng, thậm chí 512Mb là đủ. Phần khách hàng nói chung gần như bằng không. (Túi nhựa okerrupdate nặng 26 Kb, nhưng yêu cầu Python3 và thư viện chuẩn). Máy khách chạy từ tập lệnh cron nên không tiêu thụ bộ nhớ liên tục. Trong số các máy chúng tôi theo dõi, chúng tôi có cảm biến (VPS siêu rẻ với RAM 512Mb) và Raspberry Pi. Có thể thực hiện được ngay cả khi không có phần khách hàng gửi thông tin cập nhật qua cuộn tròn! (xem bên dưới)

Có tính đến điều này - okerr, có lẽ vậy miễn phí nhất hệ thống giám sát từ những hệ thống có sẵn, bởi vì ngay cả để sử dụng một hệ thống nguồn mở miễn phí khác như Zabbix hoặc Nagios, bạn cũng cần phải phân bổ tài nguyên (máy chủ) cho nó và số tiền này đã là tiền. Ngoài ra, một số bảo trì máy chủ vẫn được yêu cầu. Với okerr thì phần này có thể bỏ đi. Hoặc bạn không cần phải gỡ bỏ nó và sử dụng máy chủ của riêng mình, tùy theo sở thích của bạn.

API và tích hợp vào phần mềm độc quyền

Kiến trúc đơn giản và cởi mở. okerr có một cái khá đơn giản API, rất dễ làm việc. Cần tạo 1000 chỉ số? Một tập lệnh shell gồm 3-4 dòng sẽ thực hiện việc này. Cần cấu hình lại 1000 chỉ số? Nó cũng rất dễ dàng. Ví dụ: chúng tôi muốn kiểm tra kỹ tất cả chứng chỉ HTTPS của mình từ cảm biến của Nga:

#!/bin/sh

for indicator in `okerrclient --api-filter sslcert`
do
    echo set location for $indicator
    okerrclient --api-set location=ru retest=1 --name $indicator
done

Bạn có thể cập nhật chỉ báo bằng mô-đun máy khách của chúng tôi, ngay cả khi không có nó, chỉ bằng cách sử dụng tính năng cuộn tròn.

# short and nice (using okerrupdate and config file)
$ okerrupdate MyIndicator OK

# only curl is enough!
$ curl -d 'textid=MyProject&name=MyIndicator&secret=MySecret&status=OK' https://bravo.okerr.com/

Bạn có thể cập nhật các chỉ số trực tiếp từ chương trình của mình. Ví dụ: gửi tín hiệu nhịp tim để okerr biết rằng nó đang chạy và đưa ra cảnh báo nếu nó gặp sự cố hoặc treo máy. Nhân tiện, các thành phần okerr chỉ làm điều đó - okerr tự giám sát và các vấn đề trong hầu hết mọi mô-đun sẽ được phát hiện và đưa ra cảnh báo về sự cố. (Và trong trường hợp “gần như” này - chúng được kiểm tra chéo từ một máy chủ khác)

Đây là mã (được đơn giản hóa) trong bot telegram của chúng tôi:

from okerrupdate import OkerrProject, OkerrExc

op = OkerrProject()
uptimei = op.indicator("{}:telebot_uptime".format(hostname))
...
uptimei.update('OK', 'pid: {} Uptime: {} cmds: {}'.format(
        os.getpid(), dhms(uptime), commands_cnt))

Có thư viện cập nhật chỉ báo từ chương trình Python okerrupdate, đối với bất kỳ ngôn ngữ nào khác đều không có thư viện, nhưng bạn có thể gọi tập lệnh okerrupdate hoặc thực hiện yêu cầu HTTP tới máy chủ okerr.

Okerr giúp chúng tôi như thế nào

Okerr đã thay đổi cuộc sống của chúng tôi. Thực vậy. Có lẽ một hệ thống giám sát khác có thể làm điều tương tự, nhưng làm việc với okerr rất dễ dàng và đơn giản đối với chúng tôi và nó có tất cả các chức năng mà chúng tôi cần (chúng tôi đã thêm những chức năng mà nó không có). Nhân tiện, nếu thiếu một số tính năng, hãy hỏi và tôi sẽ bổ sung chúng (tôi không hứa nhưng tôi muốn okerr trở thành hệ thống giám sát tốt nhất cho các dự án vừa và nhỏ). Hoặc tốt hơn nữa, hãy tự thêm nó - thật dễ dàng.

Chúng tôi cố gắng tuân theo nguyên tắc “tìm hiểu về mọi vấn đề từ Kerra”. Nếu đột nhiên xảy ra sự cố mà chúng tôi chưa tìm hiểu được từ okerr, chúng tôi sẽ thêm một dấu kiểm vào okerr. (trong trường hợp này, khi nói “chúng tôi”, ý tôi là chúng tôi với tư cách là người dùng hệ thống chứ không phải người đồng phát triển). Lúc đầu điều này là phổ biến, nhưng bây giờ nó đã trở nên rất hiếm.

Giám sát

Thông qua okerr chúng tôi giám sát kích thước nhật ký trên tất cả các máy chủ. Tất nhiên, không thể đọc kỹ từng dòng nhật ký bằng mắt mà chỉ cần theo dõi tốc độ tăng trưởng đã mang lại rất nhiều lợi ích. Thông qua đó, chúng tôi đã phát hiện ra hành vi gửi thư rác và tìm kiếm mật khẩu cưỡng bức, đồng thời khi một số ứng dụng “phát điên”, có điều gì đó không ổn với chúng và chúng lặp đi lặp lại (mỗi lần thêm một vài dòng vào nhật ký). ).

Chứng chỉ SSL. Gần như ngay sau khi ra mắt LetsEncrypt khách hàng của chúng tôi bắt đầu cung cấp chứng chỉ SSL miễn phí cho khách hàng của mình (khoảng một nghìn người trong số họ). Và hóa ra đó chỉ là địa ngục đối với việc quản lý! Thực tế là các trang web vẫn "hoạt động", khách hàng định kỳ yêu cầu họ làm điều gì đó, lập trình viên sẽ làm điều đó. Ví dụ, họ hoàn toàn có thể tự do chuyển trang web sang một DocumentRoot khác. Hoặc thêm Viết lại vô điều kiện vào cấu hình máy chủ ảo. Đương nhiên, sau đó, tính năng tự động gia hạn chứng chỉ sẽ không hoạt động. Bây giờ chúng tôi đã tự động thêm tất cả các máy chủ SSL vào okerr thông qua một tiện ích hữu ích khác từ gói a2conf. Hãy khởi động thôi a2okerr.py — và nếu một số trang web mới xuất hiện trên máy chủ, chúng sẽ tự động xuất hiện trong okerr. Nếu đột nhiên vì lý do nào đó mà chứng chỉ không được gia hạn, ba tuần trước khi chứng chỉ hết hạn, chúng tôi đã biết và chúng tôi sẽ tìm ra lý do tại sao nó không được cập nhật, chẳng hạn như vậy. a2certbot.py từ cùng một gói - nó giúp ích rất nhiều cho việc này (nó ngay lập tức kiểm tra các vấn đề có thể xảy ra nhất - và ghi những gì đã được kiểm tra tốt và nơi có nhiều khả năng xảy ra sự cố nhất).

Chúng tôi theo dõi ngày hết hạn của tất cả các miền của chúng tôi. Và tất cả các máy chủ gửi thư của chúng tôi cũng được kiểm tra dựa trên hơn 50 danh sách đen khác nhau. (Và đôi khi họ rơi vào chúng). Nhân tiện, bạn có biết rằng máy chủ thư của Google cũng bị đưa vào danh sách đen không? Chỉ để tự kiểm tra, chúng tôi đã thêm mail-wr1-f54.google.com vào các máy chủ được giám sát và nó vẫn nằm trong danh sách đen SORBS! (Đây là về giá trị của việc “chống gửi thư rác”)

Sao lưu - Tôi đã viết ở trên về việc giám sát chúng bằng okerr dễ dàng như thế nào. Nhưng chúng tôi giám sát cả các bản sao lưu mới nhất trên máy chủ của mình và (sử dụng một tiện ích riêng sử dụng okerr) các bản sao lưu mà chúng tôi tải lên Amazon Glacier. Và vâng, vấn đề thỉnh thoảng vẫn xảy ra. Không có gì ngạc nhiên khi họ đang xem.

Chúng tôi sử dụng chỉ báo leo thang. Nó cho thấy một số vấn đề đã không được khắc phục trong một thời gian dài. Và bản thân tôi, khi giải quyết một số vấn đề, đôi khi tôi có thể quên mất chúng. Báo cáo lên cấp trên là một lời nhắc nhở hữu ích, ngay cả khi bạn đang tự giám sát.

Nhìn chung, tôi tin rằng chất lượng công việc của chúng tôi đã tăng lên rất nhiều. Hầu như không có thời gian ngừng hoạt động (hoặc khách hàng không có thời gian để ý đến điều đó. Chỉ là suỵt thôi!), trong khi khối lượng công việc trở nên ít hơn và điều kiện làm việc trở nên yên tĩnh hơn. Chúng tôi đã chuyển từ công việc khẩn cấp bằng cách vá các lỗ bằng băng dính sang công việc bình tĩnh và đo lường, khi nhiều vấn đề đã được dự đoán trước và có thời gian để ngăn chặn chúng. Ngay cả những vấn đề đã xảy ra cũng trở nên dễ khắc phục hơn: thứ nhất, chúng tôi tìm hiểu về chúng trước khi khách hàng hoảng sợ, và thứ hai, vấn đề thường xảy ra là liên quan đến công việc gần đây (trong khi tôi đang làm việc này, tôi đã làm hỏng việc khác) - nên trời nóng, dấu vết dễ xử lý hơn.

Nhưng còn có một trường hợp khác...

Bạn có biết rằng trong Debian 9 (Stretch) phổ biến, một gói phổ biến như phpmyadmin vẫn ở trạng thái dễ bị tấn công (trong nhiều tháng!) (CVE-2019-6798). Khi lỗ hổng xuất hiện, chúng tôi nhanh chóng xử lý nó bằng nhiều cách khác nhau. Nhưng tôi đã thiết lập giám sát trang theo dõi bảo mật trong okerr để biết khi nào một giải pháp “đẹp” sẽ xuất hiện (thông qua tổng SHA1 của nội dung). Chỉ báo đã làm tôi giật mình vài lần, trang đã thay đổi, nhưng như bạn có thể thấy, nó vẫn (kể từ tháng 2019 năm XNUMX!) không cho biết rằng vấn đề đã được giải quyết. Nhân tiện, có lẽ ai đó biết vấn đề là gì mà một gói quan trọng như vậy vẫn dễ bị tấn công trong hơn một năm?

Một lần khác, trong tình huống tương tự: sau một lỗ hổng trong SSH, cần phải cập nhật tất cả các máy chủ. Và khi bạn đặt ra một nhiệm vụ, bạn cần kiểm soát việc thực hiện. (Cấp dưới có xu hướng hiểu nhầm, quên, nhầm lẫn và phạm sai lầm). Do đó, trước tiên, chúng tôi đã thêm tính năng kiểm tra phiên bản SSH cho okerr trên tất cả các máy chủ và thông qua okerr, chúng tôi đảm bảo rằng các bản cập nhật đã được triển khai trên tất cả các máy chủ. (Tiện lợi! Tôi đã chọn loại chỉ báo này và bạn có thể biết ngay máy chủ nào có phiên bản nào). Khi chúng tôi chắc chắn rằng nhiệm vụ đã hoàn thành trên tất cả các máy chủ, chúng tôi đã xóa các chỉ báo.

Đôi khi có một tình huống là một vấn đề nào đó phát sinh và sau đó tự biến mất. (chắc mọi người đã quen rồi phải không?). Vào lúc bạn nhận ra, vào lúc bạn kiểm tra—và chẳng có gì để kiểm tra—mọi thứ đã hoạt động tốt rồi. Nhưng sau đó nó lại vỡ. Ví dụ: chúng tôi đã xảy ra trường hợp này với các sản phẩm mà chúng tôi tải lên Amazon Marketplace (MWS). Tại một số thời điểm, lượng hàng tồn kho được tải không chính xác (sai số lượng hàng hóa và sai giá). Chúng tôi đã tìm ra nó. Nhưng để tìm ra nó, điều quan trọng là phải tìm hiểu vấn đề ngay lập tức. Thật không may, MWS, giống như tất cả các dịch vụ của Amazon, hơi chậm nên luôn có độ trễ, nhưng ít nhất chúng tôi vẫn có thể nắm bắt được mối liên hệ giữa sự cố và các tập lệnh gây ra sự cố (chúng tôi đã kiểm tra, bị kẹt nó vào okerr và kiểm tra nó ngay lập tức nhận được cảnh báo).

Một trường hợp thú vị gần đây đã được thêm vào bộ sưu tập bởi một nhà cung cấp dịch vụ lưu trữ lớn và đắt tiền ở Châu Âu mà khách hàng của chúng tôi sử dụng. Đột nhiên, TẤT CẢ máy chủ của chúng tôi biến mất khỏi radar! Đầu tiên, chính khách hàng (nhanh hơn okerra!) nhận thấy rằng trang web mà anh ta đang làm việc không mở và đã gửi yêu cầu về điều đó. Nhưng không chỉ một trang web bị sập mà là tất cả các trang web đó! (Natasha, chúng tôi đã bỏ mọi thứ!). Tại đây Okerr bắt đầu gửi những cú quấn chân dài với tất cả các đèn báo sáng lên cho anh ta. Hoảng loạn, hoảng loạn, chúng ta chạy vòng tròn (chúng ta có thể làm gì khác?). Sau đó mọi thứ đều tăng lên. Hóa ra là trung tâm dữ liệu được bảo trì định kỳ (nhiều năm một lần) và tất nhiên, lẽ ra chúng tôi phải được cảnh báo. Nhưng có một số vấn đề đã xảy ra với họ và họ đã không cảnh báo chúng tôi. Vâng, nhiều cơn đau tim hơn, ít cơn đau tim hơn. Nhưng sau khi mọi thứ được khôi phục, bạn cần kiểm tra lại mọi thứ! Tôi không thể tưởng tượng được mình sẽ làm điều đó như thế nào với đôi tay của mình. Okerr đã kiểm tra mọi thứ trong vài phút. Hóa ra là hầu hết các máy chủ tạm thời không khả dụng nhưng chúng vẫn hoạt động. Một số đã quá tải, nhưng cũng đứng dậy như lẽ ra phải làm. Trong tất cả các tổn thất, chúng tôi đã mất hai bản sao lưu, theo Crown, đáng lẽ phải được tạo và tải trong khi quả chuối đầy này đang diễn ra. Tôi thậm chí còn không thèm tạo chúng, chỉ một ngày sau có cảnh báo rằng mọi thứ đều ổn, các bản sao lưu đã xuất hiện. Tôi thực sự thích ví dụ này vì okerr hóa ra rất hữu ích trong tình huống mà chúng tôi thậm chí còn chưa nghĩ tới trước, nhưng đó là mục đích của việc giám sát - để chống lại những điều không thể đoán trước.

Đối với cảm biến Okerr, chúng tôi sử dụng dịch vụ lưu trữ rẻ nhất có thể (trong đó chất lượng và độ tin cậy không quan trọng, chúng đảm bảo lẫn nhau). Vì vậy, gần đây chúng tôi đã tìm thấy một dịch vụ lưu trữ rất tốt và giá siêu rẻ, điểm chuẩn thật tuyệt vời. Nhưng... đôi khi hóa ra các kết nối đi từ máy ảo được tạo từ một IP (lân cận) khác. Phép lạ. Mô-đun Client_ip với https://diagnostic.opendns.com/myip nhận được IP sai. Và từ nhật ký máy chủ của chỉ báo, rõ ràng bản cập nhật cũng đến từ IP lân cận này. Hãy giải quyết vấn đề hỗ trợ ngay bây giờ. Thật tốt khi chúng tôi nhận thấy điều này trong thời bình. Tuy nhiên, ví dụ, thường xảy ra trường hợp quyền truy cập được đăng ký theo danh sách trắng IP - và nếu máy chủ đôi khi nhấp nháy như thế này trong một thời gian ngắn - bạn có thể cố gắng khắc phục sự cố này trong một thời gian rất dài.

Chà, còn một điều nữa – vì chúng ta đang nói về dịch vụ lưu trữ VPS – chúng tôi luôn sử dụng những dịch vụ rẻ tiền (hetzner, ovh,scaleway). Tôi thực sự thích nó cả về điểm chuẩn và độ ổn định. Chúng tôi cũng sử dụng Amazon EC2 đắt hơn nhiều cho các dự án khác. Vì vậy, nhờ okerr, chúng tôi có được quan điểm sáng suốt của riêng mình. Cả hai đều ngã. Và tôi sẽ không nói rằng qua thời gian dài quan sát của chúng tôi, các dịch vụ lưu trữ giá rẻ như hetzner hóa ra lại kém ổn định hơn đáng kể so với EC2. Do đó, nếu bạn không bị ràng buộc với các tính năng khác của Amazon, tại sao phải trả nhiều tiền hơn? 🙂

Cái gì tiếp theo?

Nếu ở giai đoạn này tôi vẫn chưa khiến bạn sợ hãi khỏi Okerr thì hãy thử xem! Bạn có thể vào thẳng link này tài khoản demo okerr (Bấm vào ngay!) Nhưng hãy nhớ rằng chỉ có một tài khoản demo cho tất cả mọi người, vì vậy nếu bạn làm điều gì đó, người khác trong cùng tài khoản có thể can thiệp vào bạn cùng lúc. Hoặc (tốt hơn) đăng ký qua liên kết tới ngoại vi okerr - mọi thứ đều đơn giản, không cần SMS. Nếu bạn không muốn sử dụng email thực của mình, bạn có thể sử dụng email dùng một lần, chẳng hạn như mailinator (tôi khuyên bạn nên sử dụng getnada.com). Những tài khoản như vậy có thể bị xóa theo thời gian, nhưng chúng sẽ ổn khi thử nghiệm.

Sau khi đăng ký, bạn sẽ được yêu cầu trải qua khóa đào tạo (thực hiện một số nhiệm vụ đào tạo không quá khó). Các giới hạn ban đầu là rất nhỏ, nhưng đối với việc đào tạo hoặc một máy chủ thì như vậy là đủ. Sau khi hoàn thành khóa đào tạo, các giới hạn (ví dụ: số lượng chỉ số tối đa) sẽ được tăng lên.

Từ tài liệu - trước hết WIKI ở phía máy chủ và trên máy khách (okerrupdate wiki). Nhưng nếu có điều gì chưa rõ, hãy viết thư cho bộ phận hỗ trợ (at) okerr.com hoặc để lại một vé - chúng tôi sẽ cố gắng giải quyết mọi việc nhanh chóng.

Nếu bạn sử dụng nó một cách nghiêm túc và những giới hạn tăng lên này là không đủ, hãy viết thư để hỗ trợ và chúng tôi sẽ tăng nó (miễn phí).

Bạn có muốn cài đặt máy chủ okerr trên máy chủ của mình không? Đây kho lưu trữ okerr-dev. Chúng tôi khuyên bạn nên cài đặt trên một máy ảo sạch, sau đó bạn có thể thực hiện việc đó một cách đơn giản bằng tập lệnh cài đặt. Trên máy ảo của bạn - không có hạn chế :-). Vâng, một lần nữa, nếu có chuyện gì xảy ra, chúng tôi sẽ luôn cố gắng giúp đỡ.

Chúng tôi muốn dự án này thành công để thế giới trở nên đáng tin cậy hơn nhờ có chúng tôi. Nhờ phần mềm và dịch vụ miễn phí, thế giới trở nên thân thiện hơn và phát triển năng động hơn. Các nguồn có thể được lưu trữ trong github miễn phí và đối với thư, bạn có thể sử dụng gmail miễn phí. Chúng tôi sử dụng miễn phí sinh viên năm nhất để hỗ trợ. Đối với bất kỳ điều nào trong số này, bạn không cần phải trả tiền cho máy chủ, bạn không cần tải xuống và định cấu hình cũng như không cần giải quyết các vấn đề vận hành khác nhau. Mỗi dự án mới, mỗi nhóm đều có ngay thư, kho lưu trữ và CRM. Và tất cả điều này có chất lượng rất cao, miễn phí và ngay lập tức. Chúng tôi muốn việc giám sát cũng giống như vậy - các công ty và dự án nhỏ có thể sử dụng okerr miễn phí và ngay cả ở giai đoạn hình thành và phát triển vẫn có độ tin cậy của các dự án nghiêm túc dành cho người lớn.

Nguồn: www.habr.com