Theo dõi tiến trình chương trình trên nhiều máy chủ


9

Chúng tôi có ba máy chủ đang chạy các chương trình python đang chạy các nhiệm vụ phân tích dữ liệu trong một tmuxphiên. Phương pháp chúng tôi đang sử dụng tại thời điểm này là ssh'ing vào từng người trong số họ kết nối tmuxphiên và xem đầu ra trên dòng lệnh.

Phương pháp này rất tẻ nhạt, vì vậy những gì chúng tôi đang tìm kiếm là một giải pháp tự động hóa việc theo dõi tiến trình của chương trình (đầu ra trên CLI) cho nhiều máy chủ cùng một lúc. Chúng tôi lý tưởng muốn một giải pháp UI web nhưng CLI cũng hoàn toàn phù hợp.

Cảm ơn bạn đã đọc.


Sử dụng prometheus và grafana :-)
Tái lập Monica - M. Schröder

Câu trả lời:


8

Bất cứ khi nào bạn đang chạy các lệnh chạy dài, bạn nên lùi lại và suy nghĩ lại về quy trình của mình, vì điều đó sẽ được tự động hóa, bao gồm cả xử lý lỗi.

Thay vì kết nối với các máy chủ để xem trạng thái, cách tiếp cận tốt hơn là đẩy thông tin đó ra ngoài. Bạn có thể làm rất nhiều thứ nếu bạn muốn viết một loạt mã tùy chỉnh, nhưng điều đơn giản nhất có lẽ là bắt đầu gửi đầu ra thông qua syslog đến một hệ thống ghi nhật ký tập trung (syslog, hoặc ELK, hoặc bất cứ điều gì). Bằng cách đó bạn có thể theo dõi mọi thứ từ một vị trí trung tâm.

Suy nghĩ về phía trước, nếu đây không phải là nhiệm vụ một lần, việc giám sát sẽ được tự động hóa. Đó là, bạn không bao giờ phải xem nhật ký để xem mọi thứ có tiến triển như họ dự định không. Thay vào đó, bạn nên cho rằng họ (và tiếp tục với công việc khác) cho đến khi cảnh báo của bạn tắt . Đây là một khoản đầu tư thời gian để nhận được cảnh báo đáng tin cậy và phạm vi rộng, nhưng khi hệ thống của bạn phát triển phức tạp, nó sẽ được đền đáp khi bạn không phải giám sát mọi thứ bất cứ khi nào bạn thay đổi bất cứ điều gì .


Đây không phải là một điều tắt. Tôi thích ý tưởng của bạn về việc đầu tư thời gian vào tự động hóa giám sát và tập trung khai thác gỗ. Bạn có gợi ý nào cho các công cụ miễn phí sử dụng và hoạt động tốt với các máy chủ Ubuntu chạy các chương trình không?
guano

@guano Tôi nghĩ rằng Wissam đã bao gồm tất cả các công cụ cụ thể mà tôi sẽ đề cập, ngoài việc sử dụng một cái gì đó như Sensu để tăng cường cảnh báo.
Tẩy chay SE cho Monica Cellio

4

Graylog

Vì hai người đã khuyên bạn nên suy nghĩ lại về quy trình hiện tại của mình (mà tôi đứng thứ hai vì nó sẽ khiến bạn mất ngủ vào một lúc nào đó;)), tôi sẽ đi một tuyến đường khác và đề xuất một phần mềm cụ thể - theo ý kiến ​​của tôi - phù hợp với hầu hết nhu cầu của bạn: Graylog .

Tôi đã triển khai và sử dụng một vài ngăn xếp ELK cho cả tổng hợp nhật ký và kinh doanh thông minh và cũng điều hành / duy trì Graylog trong khoảng hai năm nay tại nhà tuyển dụng hiện tại của tôi. Tôi khuyên dùng Graylog vì nó có các tính năng tích hợp sau và - theo ý kiến ​​của tôi - dễ cài đặt và bảo trì hơn một chút:

  • Giao diện web
  • Khả năng đa người dùng
  • Cảnh báo

Theo như tôi hiểu kịch bản của bạn, có vẻ như bạn cần phải hành động hoặc được cảnh báo về một số sự kiện xuất hiện trong luồng thông điệp tường trình của bạn. Nếu chúng ta nhìn vào các tính năng của Graylog :

Hành động kích hoạt hoặc được thông báo khi có điều gì đó cần chú ý, chẳng hạn như các lần đăng nhập thất bại, ngoại lệ hoặc suy giảm hiệu suất.

Ý tưởng: Gửi email hoặc tin nhắn Slack cho nhóm của bạn. Sinh ra một máy mới để cân bằng tải xử lý. Chặn phạm vi IP trong tường lửa của bạn tự động khi phát hiện một cuộc tấn công.

Để thử Graylog, tôi khuyên bạn nên thực hiện hai bước sau:

  • Thiết lập một máy chủ chuyên dụng có thể truy cập được bởi tất cả các máy chủ ứng dụng của bạn để chạy Graylog (và các phụ thuộc của nó MongoDB và ElasticSearch)
  • Gửi nhật ký từ ứng dụng của bạn tới Graylog (có thể là tin nhắn GELF )

Lưu ý: Hai bước này có khả năng lấp đầy các trang và trang thực hành tốt nhất và sẽ nhận được ít nhất một vài suy nghĩ. Chưa kể rằng Graylog không phải là một giải pháp giám sát và chính Graylog nên được giám sát bởi một công cụ giám sát thích hợp (ví dụ như Icinga, Prometheus, Nagios chỉ kể tên một số).


3

Tôi đồng ý với @Xiong Chiamiov và tôi muốn đưa ra tùy chọn rõ ràng hơn. Nếu bạn muốn giám sát mọi dòng trong CLI, tôi khuyên bạn nên chuyển hướng tất cả đầu ra sang tệp cụ thể và lỗi sang tệp khác, sau đó sử dụng logstash hoặc filebeat để gửi cả hai tệp này tới Elaticsearch , sau đó bạn có thể định cấu hình Logtril với Kibana để cung cấp cho bạn xem, phân tích, tìm kiếm và theo dõi các sự kiện nhật ký từ nhiều máy chủ trong thời gian thực với giao diện thân thiện với người phát triển


1

tập trung tmux

Trong khi các câu trả lời khác thông minh hơn và khôn ngoan hơn về lâu dài, tôi nghĩ rằng giải pháp CLI hacky nhanh chóng đáng được đề cập. Chạy tmuxtrên một máy chủ có thể tiếp cận tất cả các máy chủ khác. Một nơi tốt cho việc này sẽ là một hộp nhảy hoặc một số nơi khác mà mọi người thường đăng nhập bằng mọi cách. Trong tmuxssh "trung tâm" này cho mỗi hộp trong một khung khác nhau và theo đuôi bất kỳ tệp nhật ký nào là cần thiết. Bạn có thể sử dụng ctrl- b "để có được nhiều bảng hơn trong một tab trong tmux. Bây giờ tất cả ai đó phải làm để kiểm tra mọi thứ được đính kèm vào phiên "trung tâm" tmuxvà họ có thể thấy toàn bộ cụm trong nháy mắt.

Tôi đã dành rất nhiều thời gian để xây dựng các giải pháp giao diện người dùng web mà bạn đang làm việc, nhưng nếu bạn cần nó ngay hôm nay, việc hack cùng nhau một cái gì đó có tmuxthể tiết kiệm cả ngày.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.