Máy chủ Nagios thực hành tốt nhất?


10

Tôi chạy một máy chủ Nagios cỡ trung bình. Nó giám sát khoảng 40 máy chủ với 180 dịch vụ hiện tại và chỉ phát triển theo ngày.

Tôi đã di chuyển từ một thiết lập Nagios cũ được cấu hình theo kiểu rất bí truyền, buộc tôi phải cấu hình lại mọi thứ từ đầu.

Bây giờ máy chủ đang chạy và hoạt động cho hầu hết những gì chúng ta cần , tôi đang tìm cách làm cho nó có khả năng mở rộng hơn một chút; hiện tại mỗi máy chủ lưu trữ là một tệp riêng /etc/nagios/hosts/và mỗi máy chủ lưu trữ có tất cả các dịch vụ của nó trong cùng một tệp. Điều này rõ ràng là không tối ưu, nhưng cũng không làm xáo trộn tất cả cấu hình của tôi thành hàng trăm tệp khác nhau.

Vì vậy, câu hỏi của tôi là: đối với bất kỳ quản trị viên Nagios có kinh nghiệm nào ngoài kia, cách tốt nhất để sử dụng các nhóm máy chủ / nhóm dịch vụ mà không làm phức tạp cấu hình là gì?

Câu trả lời:


13

Hostgroups và mẫu.

Mẫu cho phép bạn xác định các lớp cho máy chủ và dịch vụ của mình, ví dụ: "dịch vụ bình thường", "dịch vụ quan trọng", "máy chủ ưu tiên thấp". Chúng cũng là một cách hữu ích để phân chia trách nhiệm nếu bạn có nhiều nhóm với các trách nhiệm khác nhau, do đó bạn có thể có mẫu "máy chủ linux" và mẫu "máy chủ windows", với mỗi nhóm xác định thông tin liên hệ phù hợp.

Bạn có thể sử dụng nhiều mẫu trên một tài nguyên, do đó bạn có thể soạn các mẫu trực giao phù hợp. Ví dụ, bạn có thể có

host foo {
    use windows-host,normal-priority-host
    ...
}

sẽ kéo thông tin liên hệ (và leo thang) cho nhóm Windows và tỷ lệ bỏ phiếu và ngưỡng cho máy chủ "bình thường".

Các nhóm máy chủ cho phép bạn nhóm tất cả các kiểm tra cho một tập hợp con của máy chủ lưu trữ của bạn. Có những thứ như "baseline-linux-hosts" để kiểm tra tải, dung lượng ổ đĩa, sshkhả năng và bất cứ thứ gì khác nên có trên mọi máy chủ bạn theo dõi. Thêm các nhóm như "máy chủ https" với các kiểm tra về kết nối HTTP, kết nối HTTPS và ngày hết hạn chứng chỉ SSL; "Trình lưu trữ tệp" với các kiểm tra khả năng truy cập NFS và SMB và có thể kiểm tra đĩa mạnh hơn; hoặc "máy ảo" với các kiểm tra xem các công cụ trợ năng VM có chạy đúng không.

Đặt từng máy chủ và nhóm máy chủ trong tập tin riêng của mình. Tệp đó phải chứa định nghĩa máy chủ hoặc nhóm máy chủ trước, sau đó là định nghĩa của các dịch vụ áp dụng cho nó.

Nếu bạn sử dụng lệnh cfg_dirtrong nagios.cfgtệp của mình , Nagios sẽ tìm kiếm đệ quy thông qua thư mục đó. Hãy tận dụng điều đó. Đối với cài đặt cfg_dir=/etc/nagios/conf.d, bạn có thể có một cây thư mục như sau:

  • /etc/nagios/conf.d/
    • lệnh.d /
      • http.cfg
      • nrpe.cfg
      • smtp.cfg
      • ssh.cfg
    • máy chủ.d /
      • máy chủ1.cfg
      • máy chủ2.cfg
      • host3.cfg
    • nhóm lưu trữ.d /
      • hostgroup1.cfg
      • hostgroup2.cfg

Tôi có xu hướng tạo một thư mục cho từng loại tài nguyên (lệnh, nhóm liên hệ, liên hệ, leo thang, nhóm máy chủ, máy chủ lưu trữ, nhóm dịch vụ, timeperiods) ngoại trừ các dịch vụ được nhóm với máy chủ hoặc nhóm máy chủ sử dụng chúng.

Cấu trúc chính xác có thể thay đổi theo nhu cầu tổ chức của bạn. Ở một công việc trước đây, tôi đã sử dụng các thư mục con hosts.dcho mỗi trang web khác nhau. Ở công việc hiện tại của tôi, hầu hết các định nghĩa máy chủ Nagios được quản lý bởi Puppet, do đó, có một thư mục dành cho máy chủ được quản lý rối và một thư mục riêng cho máy chủ được quản lý bằng tay.

Lưu ý rằng ở trên cũng chia các lệnh thành nhiều tệp, thường là theo giao thức. Như vậy, nrpe.cfgtập tin sẽ có các lệnh check_nrpecheck_nrpe_1arg, trong khi http.cfgcó thể có check_http, check_http_port, check_https, check_https_port, và check_https_cert. 1

Tôi thường không có số lượng mẫu rất lớn, vì vậy tôi thường chỉ có một hosts.d/templates.cfgtệp và một services.d/templates.cfgtệp. Nếu bạn sử dụng chúng nhiều hơn, chúng có thể đi vào các tệp có tên thích hợp trong một templates.dthư mục.

1 Tôi cũng muốn có một check_http_blindlylệnh, về cơ bản là check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; nó trả về OK ngay cả khi nhận được mã phản hồi 403.


6

Sử dụng rộng rãi dịch vụ và các nhóm máy chủ, và templating. Tạo các nhóm máy chủ và gán các dịch vụ cho các nhóm máy chủ. Sử dụng các nhóm dịch vụ cho các phụ thuộc, leo thang và nhóm logic trong giao diện người dùng web.

Nếu bạn có các nhóm cho tất cả mọi thứ, việc thêm một máy chủ mới chỉ là 3 hoặc 4 dòng: tên, địa chỉ, mẫu (s) và (các tùy chọn) nhóm máy chủ. Tất cả mọi thứ có thể được templated.

Hãy chắc chắn đọc các tài liệu về thừa kế , và cả trang thủ thuật tiết kiệm thời gian . Nhiều kế thừa có thể gặp khó khăn, nhưng khi được sử dụng một cách chính xác, nó sẽ tiết kiệm thời gian rất lớn.


Tôi muốn tìm sự cân bằng với cấu hình; quá nhiều sự kế thừa có thể trở nên khó khăn khi một quản trị viên khác phải nhận máy chủ (Tôi là một thực tập sinh nên tôi sẽ không chạy nó lâu hơn nữa).
Michael Pobega

1
Có lẽ tránh xa nhiều thừa kế, sau đó. Chỉ cần sử dụng các mẫu xếp tầng nếu bạn muốn giữ cho nó đơn giản (ish).
Keith

1

Tôi đã được sử dụng để định cấu hình máy chủ nagios của mình (trước khi tôi chuyển sang Icinga) theo cách này và không thiếu hiệu suất cho đến khi bạn đạt được hơn 500 dịch vụ ít nhất với máy chủ CPU Bộ nhớ 512Mb. nhóm máy chủ và nhóm dịch vụ có thể được xử lý hoàn toàn riêng biệt và tôi sẽ đề xuất phương pháp này vì nó cho phép có một tệp trên mỗi máy chủ (dịch vụ cho máy chủ này được xác định trong tệp này) và sau đó, trên tệp trên mỗi nhóm máy chủ / nhóm dịch vụ. Điều này chỉ dễ hiểu / rõ ràng hơn.

Nếu bạn gặp rắc rối về khả năng mở rộng, bạn có thể muốn xem xét nagios-nrpe-server, nơi thực hiện kiểm tra phía máy khách và tất cả máy chủ nagios của bạn chỉ yêu cầu kết quả; mà phụ tùng tài nguyên của kiểm tra. (Nagios khởi chạy check_nrpe, ứng dụng khách được yêu cầu, thực hiện kiểm tra cục bộ và trả lời lại cho nagios). Hãy nhớ rằng tất cả các kiểm tra không thể được xử lý theo cách này (ví dụ SNMP).

Để kết thúc và thậm chí nếu nó có vẻ nằm ngoài phạm vi liên quan đến câu hỏi của bạn, tôi khuyên bạn nên chuyển sang Icinga, đây là cách có thể mở rộng hơn, bởi một cộng đồng mạnh hơn thực sự quan tâm đến việc triển khai tính năng mới và hỗ trợ người dùng. Cấu hình giống nhau (cùng tệp cấu hình, cùng cú pháp).


Theo khả năng mở rộng, tôi thực sự có nghĩa là cấu hình, không thực sự là vấn đề về khả năng mở rộng; Tôi không lo lắng về việc đạt đến ngưỡng đó. Chính xác thì bạn có ý nghĩa gì về các nhóm máy chủ / nhóm dịch vụ? Tôi không hiểu lời giải thích của bạn.
Michael Pobega

1

Tôi đang sử dụng chương trình này:

  • máy chủ
  • nhóm chủ nhà,
  • dịch vụ từ xa,
  • dịch vụ địa phương.

Mỗi thực thể có tập tin riêng của mình. Bên cạnh các mẫu, bạn luôn có thể làm cho cấu hình của bạn dễ đọc hơn. Chẳng hạn, bạn có thể có tải trung bình, dung lượng đĩa, bộ nhớ trên mỗi máy chủ. Vì vậy, thật dễ dàng và tiện dụng để tạo một mẫu chung và sử dụng nó.


1

Bạn không thể làm phức tạp cấu hình với việc tạo nhóm. Như asciiphil nói, bạn tạo một tệp hoặc bạn có thể xác định các nhóm giống nhau trong một số tệp hiện có như (hosts.cfg hoặc what ever), và bạn tạo tệp này hoặc bạn nói với nagios rằng tệp này đang hoạt động (đây là nếu bạn tạo fiel mới, nếu không nó đã hoạt động) và đây là trong tệp nagios.cfg nơi bạn đặt đường dẫn của tệp vừa tạo. "cfg_file = / usr / local / nagios / etc / object / NEW_FILE.cfg"

Điều khác là chỉ tạo các nhóm tùy thuộc vào cơ sở hạ tầng của bạn. Ví dụ, nếu tôi có linux và windows server, tôi sẽ tạo hai nhóm khác nhau cho linux và nhóm khác cho windows. Điều này cũng tương tự với các dịch vụ. Tùy thuộc vào cách bạn muốn định cấu hình và xem khi bạn theo dõi trên màn hình, bạn muốn xem họ như thế nào theo nhóm.

Và đối với các tập tin hoặc một phần làm thế nào để tạo một nhóm nó là đơn giản.

    define hostgroup{
    hostgroup_name novell-servers
    alias Novell Servers
    members netware1,netware2,netware3,netware4
    }

Và trên cấu hình máy chủ / hoặc nếu bạn sử dụng mẫu hoặc nếu bạn đã xác định mẫu máy chủ hoặc dịch vụ và sử dụng, bạn có thể tự động nói với tất cả máy chủ / cửa sổ hoặc máy chủ linux là thành viên của nhóm máy chủ đã xác định mà bạn đã tạo.

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.