Cách tạo Nagios Plugins với Python trên CentOS 6

2 năm trước

Giới thiệu

Python là một ngôn ngữ lập trình phổ biến cho phép bạn nhanh chóng tạo tập lệnh và cài đặt thêm thư viện.

Lần này, chúng ta sẽ mở rộng ý tưởng đó và tạo các Nagios plugin bằng Python. Các plugin này sẽ chạy trên VPS của client và được thực thi thông qua NRPE.

 

Bước 1 - Cài đặt RPMForge Repository và NRPE trên VPS của client

rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install python nagios-nrpe
useradd nrpe && chkconfig nrpe on
 

Bước 2 - Tạo tập lệnh Python

Sẽ là một ý tưởng hay khi giữ các plugin của bạn trong cùng thư mục với các plugin Nagios khác (/usr/lib64/nagios/plugins/ chẳng hạn).

Trong ví dụ này, chúng ta sẽ tạo một tập lệnh để kiểm tra disk usage hiện tại bằng cách lấy "df" từ trình bao, và đưa ra cảnh báo nếu được sử dụng hơn 85%:

#!/usr/bin/python
import os, sys
used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip()
if used_space < "85%":
print "OK - %s of disk space used." % used_space
sys.exit(0)
elif used_space == "85%":
print "WARNING - %s of disk space used." % used_space
sys.exit(1)
elif used_space > "85%":
print "CRITICAL - %s of disk space used." % used_space
sys.exit(2)
else:
print "UKNOWN - %s of disk space used." % used_space
sys.exit(3)

Chúng ta lưu tập lệnh này trong /usr/lib64/nagios/plugins/usedspace.py và làm cho nó có thể thực thi được:

chmod +x /usr/lib64/nagios/plugins/usedspace.py

Toàn bộ Nagios NRPE plugin đều sử dụng các mã thoát để kích hoạt cảnh báo.

Bạn giới thiệu cấp độ logic của mình với tập lệnh và nếu muốn kích hoạt cảnh báo (cho dù đó là OK, WARNING, CRITICAL, hay UNKNOWN) - bạn chỉ việc mã thoát..

Tham khảo các Nagios Exit Codes sau đây:

Nagios Exit Codes

Exit CodeStatus
0OK
1WARNING
2CRITICAL
3UNKNOWN
 

Bước 3 - Thêm tập lệnh của bạn vào cấu hình NRPE trên máy khách

Xóa /etc/nagios/nrpe.cfg gốc và thêm các dòng sau vào nó:

log_facility=daemon
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/
command[usedspace_python]=/usr/lib64/nagios/plugins/usedspace.py

Trường hợp 198.211.117.251 là máy chủ giám sát của chúng ta từ các bài viết trước. Thay đổi các giá trị này thành giá trị của riêng bạn.

Đảm bảo khởi động lại dịch vụ Nagios NRPE:

service nrpe restart
 

Bước 4 - Thêm lệnh mới của bạn vào Nagios kiểm tra trên máy chủ giám sát Nagios

Xác định lệnh mới trong /etc/nagios/objects/commands.cfg

define command{
command_name usedspace_python
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python
}

Như bạn có thể thấy, nó sử dụng NRPE để tạo các kết nối TCP tới cổng 5666 và chạy lệnh 'usedspace_python', mà đã định nghĩa trong /etc/nagios/nrpe.cfg trên máy chủ từ xa đó.

Thêm kiểm tra này vào tập tin cấu hình Nagios cho VPS của client.

Với ví dụ này, chúng ta sẽ theo dõi một máy chủ được gọi là CentOSDroplet và chỉnh sửa   /etc/nagios/servers/CentOSDroplet.cfg

define service {
use generic-service
host_name CentOSDroplet
service_description Custom Disk Checker In Python
check_command usedspace_python
}

Khởi động lại Nagios:

service nagios restart

Xác minh rằng kiểm tra mới đang hoạt động:

Và bạn đã hoàn thành xong!