Để hiểu được bài viết này, trước hết bạn cần hiểu rõ Nagios là gì? Plugin là gì?
Hai vấn đề này tớ không nói rõ ở đây.
Bài viết này nói về cách viết một nagios plugin sử dụng nagiosplugin module.
Ví dụ về một plugin cơ bản nhất sẽ có cấu trúc như sau:
Trong ví dụ trên:
World: là tên class chính trong flugin của bạn, thường sẽ là tên chức năng của flugin.
probe(): là method nằm trong class chính, có chức năng return lại một hoặc một list các Metric. Một metric bao gồm ít nhất hai thành phần chính là 'name' và 'value'.
Value ở đây chính là giá trị sẽ được dùng để so sánh với các ngưỡng check.
Name: thường là tên thể hiện chức năng của plugin, name sẽ được hiện ra trên kết quả check.
Trong ví dụ trên, nf_test chính là 'name', 1.0 chính là 'value'được truyền vào Metric() method.
Chú ý: Trong class chính, luôn có probe() method, không được change tên của method.
Hàm main() thực hiện hai chức năng:
1. Add ngưỡng check.
2. Tạo nagios check theo name và value của metric đã được return từ probe() method.
Một ví dụ:
Có một số chú ý như sau:
1. Bạn luôn cần phải add hai args là critical và critical như trên, mặc dù khi thực hiện lệnh check, bạn không cần đầy đủ cả '-c' và '-w'.
2. ScalarContext() method sẽ so sánh 'value' của Metric 'load' với hai ngưỡng check bạn đã nhập vào.
theo default, critical > warning.
3. Theo default, kết quả check sẽ kiệt kê cho bạn cả hai ngưỡng check bạn đã setup. Đôi khi điều này, không cần thiết, khiến làm rối thông tin.
ví dụ:
Summary class có 3 method chính là:
1. ok(): format output khi state của check là ok.
2. problem(): format output khi state của check là warning, critical hoặc Unknow.
3. Verbose(): add thêm thông tin bạn muốn vào output.
Decorator
Vậy để viết một nagios plugin bạn cần làm những gì?
1. Định nghĩa một class chính, thường là chức năng của plugin.
2. Định nghĩa probe() method.
3. Định nghĩa hàm main()
Đó là tất cả những gì bạn phải làm.
Để tham khảo chi tiết hơn:
Hai vấn đề này tớ không nói rõ ở đây.
Bài viết này nói về cách viết một nagios plugin sử dụng nagiosplugin module.
Ví dụ về một plugin cơ bản nhất sẽ có cấu trúc như sau:
Trong ví dụ trên:
World: là tên class chính trong flugin của bạn, thường sẽ là tên chức năng của flugin.
probe(): là method nằm trong class chính, có chức năng return lại một hoặc một list các Metric. Một metric bao gồm ít nhất hai thành phần chính là 'name' và 'value'.
Value ở đây chính là giá trị sẽ được dùng để so sánh với các ngưỡng check.
Name: thường là tên thể hiện chức năng của plugin, name sẽ được hiện ra trên kết quả check.
Trong ví dụ trên, nf_test chính là 'name', 1.0 chính là 'value'được truyền vào Metric() method.
Chú ý: Trong class chính, luôn có probe() method, không được change tên của method.
Hàm main() thực hiện hai chức năng:
1. Add ngưỡng check.
2. Tạo nagios check theo name và value của metric đã được return từ probe() method.
Một ví dụ:
Có một số chú ý như sau:
1. Bạn luôn cần phải add hai args là critical và critical như trên, mặc dù khi thực hiện lệnh check, bạn không cần đầy đủ cả '-c' và '-w'.
2. ScalarContext() method sẽ so sánh 'value' của Metric 'load' với hai ngưỡng check bạn đã nhập vào.
theo default, critical > warning.
3. Theo default, kết quả check sẽ kiệt kê cho bạn cả hai ngưỡng check bạn đã setup. Đôi khi điều này, không cần thiết, khiến làm rối thông tin.
ví dụ:
NFTEST CRITICAL - nf_test is 1 (outside range 0:0.3)Khi đó bạn có thể chỉnh lại kết quả như sau:
critical: nf_test is 1 (outside range 0:0.5)
| nf_test=1.0;0.3;0.5
NFTEST CRITICAL - nf_test is 1 (outside range 0:0.3)bằng cách sử dụng class nagiosplugin.Summary.
critical: nf_test is 1 (outside range 0:0.5)
| nf_test=1.0
Summary class có 3 method chính là:
1. ok(): format output khi state của check là ok.
2. problem(): format output khi state của check là warning, critical hoặc Unknow.
3. Verbose(): add thêm thông tin bạn muốn vào output.
Decorator
@nagiosplugin.guarded
Có chức năng, nếu code của bạn xảy ra Exception thì sẽ return exit code là 3 và exception string được format đúng.Vậy để viết một nagios plugin bạn cần làm những gì?
1. Định nghĩa một class chính, thường là chức năng của plugin.
2. Định nghĩa probe() method.
3. Định nghĩa hàm main()
Đó là tất cả những gì bạn phải làm.
Để tham khảo chi tiết hơn:
https://pythonhosted.org/nagiosplugin/tutorial/
> bằng cách sửa code trong file (file này phụ thuộc vào python version bạn dùng):
Trả lờiXóacực kỳ ... hack.
Cách để thay đổi hoạt động của 1 class là extend nó, nagiosplugin hỗ trợ thực hiện viện này một cách dễ dàng với class Summary.
Sửa thư viện là điều chỉ nên làm khi không còn cách nào khác.