Thứ Ba, 11 tháng 11, 2014

[Tool] Iperf - Kiểm tra bandwith.

Bài viết thực hiện trên:
thanhnt@Thanhnt:~$ lsb_release -r
Release:    12.04
Iperf là gì?
NAME
       iperf - perform network throughput tests
Iperf là một tool để đo bandwidth và chất lượng (quality) của một liên kết mạng.
Các liên kết mạng được tạo ra giữa hai máy đã cài đặt Iperf.

Phân biệt private và public IPv4

Đã có một thời tớ rất mù mờ lơ mơ, không biết rõ cách phân biệt private ip và public ip.
Vậy nhìn vào một địa chỉ ip, bạn có thể làm cách nào để phân biệt nó là private hay public?
Đây là cách phân biệt của tớ:
Chỉ cần nhớ các private  IPv4:

Các Ip còn lại là public IPv4.

Thứ Hai, 3 tháng 11, 2014

Nagios plugins.

Để 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ụ:
NFTEST CRITICAL - nf_test is 1 (outside range 0:0.3)
critical: nf_test is 1 (outside range 0:0.5)
| nf_test=1.0;0.3;0.5
Khi đó bạn có thể chỉnh lại kết quả như sau:
NFTEST CRITICAL - nf_test is 1 (outside range 0:0.3)
critical: nf_test is 1 (outside range 0:0.5)
| nf_test=1.0
bằng cách sử dụng class nagiosplugin.Summary.
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/