แนวทางปฏิบัติที่ดีที่สุดของเซิร์ฟเวอร์ Nagios


10

ฉันใช้เซิร์ฟเวอร์ Nagios ขนาดกลาง มันตรวจสอบประมาณ 40 เซิร์ฟเวอร์ที่มี 180 บริการในปัจจุบันและมีการเติบโตเพียงวัน

ฉันย้ายจากการตั้งค่า Nagios เก่าที่กำหนดค่าในแบบลึกลับมากบังคับให้ฉันตั้งค่าใหม่ทุกอย่างตั้งแต่เริ่มต้น

ตอนนี้เซิร์ฟเวอร์กำลังทำงานและทำงานได้ในสิ่งที่เราต้องการมากที่สุดฉันกำลังมองหาวิธีทำให้มันปรับขนาดได้อีกเล็กน้อย ปัจจุบันโฮสต์แต่ละแห่งเป็นไฟล์ของตัวเอง/etc/nagios/hosts/และโฮสต์แต่ละแห่งมีบริการทั้งหมดในไฟล์เดียวกัน เห็นได้ชัดว่าไม่ได้ดีที่สุด แต่ก็ไม่ทำให้การกำหนดค่าของฉันทั้งหมดเป็นไฟล์ที่แตกต่างกันนับร้อย

ดังนั้นคำถามของฉันคือ: สำหรับผู้ที่มีประสบการณ์ของ Nagios จะมีวิธีใดดีที่สุดในการใช้ประโยชน์จากกลุ่มโฮสต์ / กลุ่มบริการโดยไม่ทำให้การกำหนดค่ายุ่งยากเกินไป?

คำตอบ:


13

กลุ่มโฮสต์และแม่แบบ

เทมเพลตช่วยให้คุณกำหนดคลาสสำหรับโฮสต์และบริการของคุณเช่น "บริการปกติ", "บริการที่สำคัญ", "โฮสต์ที่มีลำดับความสำคัญต่ำ" พวกเขายังเป็นวิธีที่มีประโยชน์ในการแบ่งความรับผิดชอบหากคุณมีหลายทีมที่มีความรับผิดชอบแตกต่างกันดังนั้นคุณสามารถมีแม่แบบ "linux host" และแม่แบบ "windows host" โดยแต่ละคนจะกำหนดข้อมูลการติดต่อที่เหมาะสม

คุณสามารถใช้หลายแม่แบบบนทรัพยากรเดียวเพื่อให้คุณสามารถเขียนแม่แบบมุมฉากที่เหมาะสม ตัวอย่างเช่นคุณสามารถมี

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

ซึ่งจะดึงข้อมูลผู้ติดต่อ (และการเพิ่ม) สำหรับทีม Windows และอัตราการสำรวจและเกณฑ์สำหรับโฮสต์ "ปกติ"

กลุ่มโฮสต์ให้คุณจัดกลุ่มการตรวจสอบทั้งหมดสำหรับชุดย่อยของโฮสต์ของคุณ มีสิ่งต่าง ๆ เช่น "baseline-linux-hosts" ที่ตรวจสอบโหลดพื้นที่ดิสก์sshความสามารถและสิ่งอื่น ๆ ที่ควรอยู่ในโฮสต์ทุกตัวที่คุณตรวจสอบ เพิ่มกลุ่มเช่น "https-servers" ด้วยการตรวจสอบการเชื่อมต่อ HTTP, การเชื่อมต่อ HTTPS และวันหมดอายุใบรับรอง SSL; "fileservers" พร้อมการตรวจสอบการเข้าถึง NFS และ SMB และการตรวจสอบดิสก์ที่รุนแรงกว่าเดิม หรือ "เครื่องเสมือน" ที่มีการตรวจสอบว่าเครื่องมือช่วยการเข้าถึง VM ทำงานอย่างถูกต้องหรือไม่

วางแต่ละโฮสต์และกลุ่มโฮสต์ในไฟล์ของตัวเอง ไฟล์นั้นควรมีข้อกำหนดของโฮสต์หรือกลุ่มโฮสต์ก่อนตามด้วยคำจำกัดความของบริการที่ใช้กับมัน

หากคุณใช้cfg_dirคำสั่งในnagios.cfgไฟล์ของคุณNagios จะค้นหาซ้ำผ่านไดเรกทอรีนั้น ใช้ประโยชน์จากสิ่งนั้น สำหรับการตั้งค่าของcfg_dir=/etc/nagios/conf.dคุณสามารถมีต้นไม้ไดเรกทอรีดังต่อไปนี้:

  • /etc/nagios/conf.d/
    • commands.d /
      • http.cfg
      • nrpe.cfg
      • smtp.cfg
      • ssh.cfg
    • hosts.d /
      • host1.cfg
      • host2.cfg
      • host3.cfg
    • hostgroups.d /
      • hostgroup1.cfg
      • hostgroup2.cfg

ฉันมักจะสร้างไดเรกทอรีสำหรับทรัพยากรแต่ละประเภท (คำสั่งกลุ่มผู้ติดต่อผู้ติดต่อกลุ่มโฮสต์โฮสต์กลุ่มบริการ timeperiods) ยกเว้นบริการที่ได้รับการจัดกลุ่มกับโฮสต์หรือกลุ่มโฮสต์ที่ใช้พวกเขา

โครงสร้างที่แม่นยำสามารถเปลี่ยนแปลงได้ตามความต้องการขององค์กรของคุณ ที่งานที่ผ่านมาฉันใช้ไดเรกทอรีย่อยภายใต้hosts.dสำหรับแต่ละไซต์ที่แตกต่างกัน ที่งานปัจจุบันของฉันคำจำกัดความโฮสต์ Nagios ส่วนใหญ่ได้รับการจัดการโดย Puppet ดังนั้นจึงมีไดเรกทอรีหนึ่งรายการสำหรับโฮสต์ที่จัดการโดย Puppet และอีกไดเรกทอรีหนึ่งสำหรับโฮสต์ที่จัดการด้วยมือ

โปรดทราบว่าคำสั่งด้านบนยังแบ่งคำสั่งออกเป็นหลายไฟล์โดยทั่วไปคือโปรโตคอล ดังนั้นnrpe.cfgไฟล์จะมีคำสั่งcheck_nrpeและcheck_nrpe_1argในขณะที่http.cfgอาจมีcheck_http, check_http_port, check_https, และcheck_https_port 1check_https_cert

โดยทั่วไปแล้วฉันไม่มีเทมเพลตจำนวนมากดังนั้นโดยปกติฉันจะมีhosts.d/templates.cfgไฟล์และservices.d/templates.cfgไฟล์ หากคุณใช้งานอย่างหนักพวกเขาสามารถเข้าไปในไฟล์ที่มีชื่อเหมาะสมในtemplates.dไดเรกทอรี

1ฉันชอบที่จะมีcheck_http_blindlyคำสั่งซึ่งโดยพื้นฐานแล้วcheck_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.; มันจะส่งคืนตกลงแม้ว่าจะได้รับรหัสตอบกลับ 403


6

ใช้ประโยชน์จากบริการและกลุ่มโฮสต์และการสร้างเทมเพลตอย่างกว้างขวาง สร้างกลุ่มโฮสต์และกำหนดบริการให้กับกลุ่มโฮสต์ ใช้กลุ่มบริการเพื่อการอ้างอิงการเพิ่มและการจัดกลุ่มแบบลอจิคัลในเว็บ UI

หากคุณมีกลุ่มสำหรับทุกสิ่งการเพิ่มโฮสต์ใหม่มีเพียง 3 หรือ 4 บรรทัด: ชื่อที่อยู่เทมเพลต (s) และ (ทางเลือก) โฮสต์กลุ่ม ทุกอย่างสามารถ templated

อย่าลืมอ่านเอกสารเกี่ยวกับการสืบทอดและหน้าเคล็ดลับการประหยัดเวลา การสืบทอดหลายครั้งอาจทำให้เกิดความยุ่งยาก แต่เมื่อใช้อย่างถูกต้องจะเป็นการประหยัดเวลามาก


ฉันต้องการค้นหายอดดุลด้วยการกำหนดค่า การรับมรดกมากเกินไปอาจทำให้เกิดความยุ่งยากได้เมื่อผู้ดูแลระบบคนอื่นต้องหยิบเซิร์ฟเวอร์ขึ้นมา (ฉันเป็นผู้ฝึกงานดังนั้นฉันจะไม่เรียกใช้งานอีกต่อไป)
Michael Pobega

1
อาจอยู่ห่างจากหลายมรดกแล้ว เพียงใช้เทมเพลตแบบเรียงซ้อนหากคุณต้องการทำให้มันง่าย (ish)
Keith

1

ฉันถูกใช้เพื่อกำหนดค่าเซิร์ฟเวอร์ nagios ของฉัน (ก่อนที่ฉันจะเปลี่ยนเป็น Icinga) ด้วยวิธีนี้และไม่มีการแสดงผลจนกว่าคุณจะเข้าถึงบริการมากกว่า 500 บริการเป็นอย่างน้อยด้วยเซิร์ฟเวอร์หน่วยความจำ 512Mb / 1 CPU กลุ่มโฮสต์และกลุ่มบริการสามารถแยกออกจากกันได้อย่างสมบูรณ์และฉันจะแนะนำวิธีนี้เนื่องจากอนุญาตให้มีหนึ่งไฟล์ต่อเซิร์ฟเวอร์ (บริการสำหรับเซิร์ฟเวอร์นี้ที่กำหนดไว้ในไฟล์นี้) จากนั้นบนไฟล์ต่อกลุ่มโฮสต์ / กลุ่มบริการ นี่เป็นเพียงความเข้าใจ / ชัดเจนเท่านั้น

หากคุณพบปัญหาเรื่องความสามารถในการขยายคุณอาจต้องดูที่ nagios-nrpe-server ซึ่งทำการตรวจสอบฝั่งไคลเอ็นต์และเซิร์ฟเวอร์ nagios ทั้งหมดของคุณกำลังขอผลลัพธ์เท่านั้น ซึ่งสำรองทรัพยากรของการตรวจสอบ (Nagios เปิดใช้งาน check_nrpe ลูกค้าได้รับการร้องขอทำการตรวจสอบภายในและตอบกลับไปที่ nagios) โปรดทราบว่าการตรวจสอบทั้งหมดไม่สามารถทำได้ด้วยวิธีนี้ (เช่น SNMP)

เพื่อให้จบและแม้ว่ามันอาจดูเหมือนว่าขอบเขตของคำถามของคุณฉันขอแนะนำให้เปลี่ยนเป็น Icinga ซึ่งเป็นวิธีที่ปรับขนาดได้มากขึ้นถือโดยชุมชนที่แข็งแกร่งขึ้นจริง ๆ สนใจการใช้งานคุณลักษณะใหม่และการสนับสนุนผู้ใช้ การกำหนดค่าเหมือนกัน (ไฟล์การกำหนดค่าเดียวกัน, ไวยากรณ์เดียวกัน)


โดยการปรับขนาดได้ฉันหมายถึงการกำหนดค่าไม่ใช่ปัญหาการขยายขนาดได้ ฉันไม่กังวลว่าจะถึงเกณฑ์นั้น คุณหมายถึงอะไรเกี่ยวกับกลุ่มโฮสต์ / กลุ่มบริการ? ฉันไม่เข้าใจคำอธิบายของคุณ
Michael Pobega

1

ฉันใช้รูปแบบนี้:

  • เจ้าภาพ
  • hostgroups,
  • บริการระยะไกล
  • บริการในท้องถิ่น

แต่ละเอนทิตีมีไฟล์ของตัวเอง นอกจากเทมเพลตคุณสามารถทำให้การตั้งค่าของคุณสะอาดอ่านง่ายขึ้น ตัวอย่างเช่นคุณอาจมีโหลดเฉลี่ยพื้นที่ดิสก์หน่วยความจำในทุกโฮสต์ ดังนั้นจึงค่อนข้างง่ายและสะดวกในการสร้างเทมเพลตทั่วไปและใช้งาน


1

คุณไม่สามารถทำให้การกำหนดค่ายุ่งยากกับการสร้างกลุ่ม ตามที่ asciiphil บอกว่าคุณสร้างไฟล์หรือคุณสามารถกำหนดกลุ่มเดียวกันในบางไฟล์ที่มีอยู่เช่น (hosts.cfg หรืออะไรก็ได้) และคุณสร้างไฟล์นี้หรือคุณบอก nagios ว่าไฟล์นี้ทำงานอยู่ (นี่คือถ้า คุณสร้าง fiel ใหม่หากไม่ได้เปิดใช้งานอยู่) และนี่คือไฟล์ nagios.cfg ที่คุณใส่พา ธ ของไฟล์ที่สร้างขึ้นใหม่ "cfg_file = / usr / local / nagios / etc / วัตถุ / NEW_FILE.cfg"

อีกอย่างคือการสร้างกลุ่มขึ้นอยู่กับโครงสร้างพื้นฐานของคุณ ถ้าเช่นฉันมี linux และ windows server ฉันจะทำให้สองกลุ่มที่แตกต่างกันหนึ่งสำหรับ linux และอื่น ๆ สำหรับ windows มันเป็นเช่นเดียวกันกับบริการ ขึ้นอยู่กับว่าคุณต้องการกำหนดค่าและดูเวลาที่คุณตรวจสอบบนจอภาพอย่างไรคุณต้องการให้พวกเขาเห็นเป็นกลุ่มอย่างไร

และสำหรับไฟล์หรือส่วนหนึ่งของวิธีการสร้างกลุ่มมันง่าย

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

และในการกำหนดค่าโฮสต์ / หรือถ้าคุณใช้แม่แบบหรือถ้าคุณได้กำหนดแม่แบบโฮสต์หรือบริการแล้วและการใช้คุณสามารถบอกโฮสต์ / windows หรือ linux โฮสต์ทั้งหมดโดยอัตโนมัติเพื่อเป็นสมาชิกของกลุ่มโฮสต์ที่คุณสร้างขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.