Máy chủ lưu trữ của bạn xác định thuộc tính tùy chỉnh "http_vhosts" là từ điển nhưng không bao giờ được sử dụng (không áp dụng cho quy tắc được xác định lặp lại trên từ điển đó và các đối tượng dịch vụ geberating).
Thay vào đó, quy tắc áp dụng dịch vụ (không có vòng lặp for) chỉ áp dụng dịch vụ "httpS". Tình cờ, thuộc tính tùy chỉnh máy chủ "http_ssl" được đặt - nó phải đọc đúng là boolean thay vì số dưới dạng chuỗi (luôn luôn đúng).
Bạn có thể muốn kiểm tra nhiều URI, không chỉ /.
Đề xuất của tôi (2 giải pháp):
1) Khắc phục quy tắc áp dụng dịch vụ của bạn và xóa các thuộc tính tùy chỉnh http_ * khỏi định nghĩa đối tượng máy chủ của bạn. Thay vào đó hãy thêm chúng vào quy tắc áp dụng dịch vụ:
apply Service "httpS" {
import "generic-service"
check_command = "http"
vars.http_uri = "/"
vars.http_ssl = true
assign where host.name == "mailserver-01"
}
Bạn có thể tìm thấy tất cả các thuộc tính tùy chỉnh sử dụng như các thông số lệnh cho http CheckCommand trong tài liệu: http://docs.icinga.org/icinga2/latest/doc/module/icinga2/chapter/plugin-check-commands#plugin-check- lệnh-http
2) Sử dụng một dịch vụ áp dụng cho quy tắc thay thế và lặp qua từ điển http_vhosts được xác định tại máy chủ.
vars.http_vhosts["https /"] = {
http_ssl = true
http_uri = "/"
}
Lưu ý cách đặt tên ở đây: "https /" sẽ là tên dịch vụ được tạo. http_ssl và http_uri là cùng tên chính xác với các thuộc tính tùy chỉnh bắt buộc của http CheckCommand.
Điều kỳ diệu xảy ra bên trong quy tắc áp dụng: Khóa từ điển sẽ là tên dịch vụ. Giá trị từ điển là một từ điển lồng nhau và chứa http_uri và http_ssl làm khóa. Trong ví dụ đó gọi là "config". Từ điển cấu hình đó có cấu trúc chính xác giống như thuộc tính "vars", đó là lý do tại sao chúng ta có thể thêm nó vào trong dịch vụ áp dụng cho định nghĩa.
apply Service for (servicename => config in host.vars.http_vhosts) {
import "generic-service"
check_command = "http"
vars += config
}
Xác minh cấu hình bằng icinga2 daemon -C và sau đó nhìn vào các đối tượng dịch vụ được tạo để xem thuộc tính tùy chỉnh nào được tạo (danh sách đối tượng icinga2).
Một điều tốt - tất cả các máy chủ có thuộc tính tùy chỉnh http_vhosts được xác định sẽ tạo ra các đối tượng dịch vụ này, không cần phải có biểu thức "gán nơi" (có thể thêm bỏ qua các trường hợp ngoại lệ). Với chiến lược phù hợp, bạn sẽ viết áp dụng cho các quy tắc chỉ một lần và chỉ thêm các máy chủ mới với từ điển thuộc tính tùy chỉnh phù hợp trong tương lai :-)
http://docs.ratinga.org/ratinga2/latest/doc/module/ratinga2/ch CHƯƠNG / monitoring-basics #USE-apply-for
Mặc dù giải pháp 2) đòi hỏi kiến thức nâng cao về ngôn ngữ cấu hình icinga 2 và các từ khóa, loại giá trị và thủ thuật ma thuật. Tuy nhiên, chúng tôi nghĩ rằng các phương pháp và thực tiễn tốt nhất như vậy giúp giảm bảo trì dài hạn với việc áp dụng và thay đổi các tệp.
Bạn cũng có thể đi xa hơn và sử dụng các điều kiện if-other cho các threshokds khác nhau dựa trên tên máy chủ. Hoặc sử dụng các hàm để xác định ngưỡng động dựa trên timeperiods chẳng hạn.