Simple Network Management Protocol (SNMP) ใช้เพื่อรับข้อมูลเกี่ยวกับสถานะปัจจุบันของเซิร์ฟเวอร์ อุปกรณ์เครือข่าย พิมพ์ หรืออุปกรณ์ IP อื่นๆ คุณสามารถรับเมตริกต่างๆ ผ่าน SNMP: การใช้งาน CPU, จำนวนกระบวนการ, สถานะบริการ ฯลฯ ข้อดีหลักของ SNMP คือได้รับการรองรับโดยอุปกรณ์เกือบทุกตัว และไม่ต้องการเอจентระบบ監視แยกต่างหาก ในบทความนี้เราจะแสดงวิธีติดตั้งและกำหนดค่า SNMP (และ SNMP v3) agent บนโฮสต์ Linux ที่รัน CentOS, RHEL, หรือ Fedora
การติดตั้ง SNMP Agent และเครื่องมือวินิจฉัยบน Linux
ก่อนติดตั้งแพ็กเกจ SNMP ให้ติดตั้งอัปเดตล่าสุดบนเซิร์ฟเวอร์ของคุณโดยใช้ dnf (yum):
# dnf update -y
จากนั้นติดตั้ง SNMP agent และเครื่องมือเพิ่มเติมจากที่เก็บพื้นฐาน:
# dnf install net-snmp net-snmp-utils -y

วิธีเปิดใช้งานและกำหนดค่า SNMP Agent บน Linux
ก่อนกำหนดค่า SNMP ให้สร้างสำเนาไฟล์กำหนดค่าเดิม:
# mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig
จากนั้นแก้ไขการตั้งค่า SNMP agent:
# nano /etc/snmp/snmpd.conf
เพิ่มบรรทัดต่อไปนี้:
rocommunity public syslocation GE-DC2 syscontact gedc2-admins@woshub.com
นี่คือพารามิเตอร์ SNMP พื้นฐาน 3 ตัว มีตัวเลือกอื่นๆ อีกมากสำหรับการกำหนดค่า Net-SNMP agent แต่เราไม่สามารถครอบคลุมทั้งหมดในบทความเดียว
บันทึกไฟล์ (แนะนำให้ระบุสถานที่ที่ถูกต้องและที่อยู่อีเมลที่ถูกต้อง) จากนั้นเปิดใช้งานบริการ snmpd และเริ่มต้น:
# systemctl enable snmpd.service
# systemctl start snmpd
ตรวจสอบว่าบริการทำงาน:
# systemctl status snmpd

หากคุณใช้ไฟร์วอลล์บนเซิร์ฟเวอร์ ให้อนุญาตการเชื่อมต่อที่พอร์ต TCP/UDP 161 และ 162 ใช้คำสั่งต่อไปนี้เพื่อเปิดพอร์ต SNMP ใน firewalld:
# firewall-cmd --zone=public --add-port=161/udp --permanent
# firewall-cmd --zone=public --add-port=161/tcp –permanent
# firewall-cmd --zone=public --add-port=162/udp --permanent
# firewall-cmd --zone=public --add-port=162/tcp --permanent
# firewall-cmd --reload
การ Poll SNMP Agent โดยใช้ Snmpwalk
คุณสามารถ poll SNMP agent โดยใช้เครื่องมือ snmpwalk เพื่อตรวจสอบบริการในท้องถิ่นโดยใช้โปรโตคอล SMMPv2 ให้ใช้คำสั่ง:
# snmpwalk -v 2c -c public -O e 127.0.0.1
หาก SNMP กำหนดค่าถูกต้อง คุณจะได้รับชุดข้อมูล SNMP จาก agent
หลังจากตั้งค่าไฟล์กำหนดค่าและรันคำสั่งทดสอบ ผมได้รับข้อผิดพลาดด้านล่าง:
Timeout: No Response from localhost
ผมแก้ไขโดยการล้างไฟล์กำหนดค่าและเพิ่มเฉพาะบรรทัดที่ระบุไว้ข้างต้น หากคุณต้องการการตั้งค่าเฉพาะ ให้ตรวจสอบทุกอย่างอย่างละเอียด เนื่องจากบริการเริ่มต้นโดยไม่มีปัญหา แต่ไม่ทำงาน
คุณยังสามารถสอบถามเซิร์ฟเวอร์ในท้องถิ่นได้ด้วยคำสั่งนี้:
# snmpwalk -v2c -c public localhost system
SNMPv2-MIB::sysDescr.0 = STRING: Linux server1.test.com 4.18.0-147.8.1.el8_1.x86_64 #1 SMP Thu Apr 9 13:49:54 UTC 2020 x86_64 SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (106564) 0:17:45.64 SNMPv2-MIB::sysContact.0 = STRING: gedc2-admins@woshub.com SNMPv2-MIB::sysName.0 = STRING: server1.test.com SNMPv2-MIB::sysLocation.0 = STRING: GE-DC2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ SNMPv2-MIB::sysORUpTime.6 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.7 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.8 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.9 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.10 = Timeticks: (0) 0:00:00.00
จากนั้นตรวจสอบว่า SNMP agent ของคุณพร้อมใช้งานจากระยะไกล รันคำสั่งนี้บนเซิร์ฟเวอร์อื่น (ติดตั้ง snmp tools ก่อนทำ):
# snmpwalk -v2c -c public 192.168.21.205 system

ตามที่เห็น เซิร์ฟเวอร์ระยะไกลได้รับข้อมูลจากเซิร์ฟเวอร์ผ่าน SNMP ตอนนี้คุณสามารถเพิ่มเซิร์ฟเวอร์เข้าไปในระบบ監視 SNMP ใดๆ (อย่าง Zabbix หรือ Cacti)
นี่คือบทความเกี่ยวกับ "วิธีกำหนดค่า SNMP บนโฮสต์ VMWare ESXi?"
การกำหนดค่า SNMPv3 บน Linux CentOS/RHEL/Fedora
ในต้นบทความเราแสดงวิธีกำหนดค่า SNMP agent ที่ใช้ SNMP v1 และ v2 SNMPv3 เป็นรุ่นใหม่และปลอดภัยกว่าของโปรโตคอลที่รองรับการยืนยันตัวตนและการเข้ารหัส เพื่อกำหนดค่า SNMPv3 ให้สร้างผู้ใช้พร้อมรหัสผ่าน ตั้งค่ารหัสผ่านการเข้ารหัส สิทธิ์การเข้าถึง และอัลกอริทึมการเข้ารหัส (MD5 หรือ SHA)
เพื่อสร้างผู้ใช้สำหรับ SNMPv3 ให้หยุดเดมอน snmpd:
# systemctl stop snmpd
จากนั้นคุณสามารถสร้างผู้ใช้ได้:
# net-snmp-create-v3-user -ro -A o2ps2w0dD -a SHA -X r30svV33 -x AES snmpuser
นี่คือไวยากรณ์ของ net-snmp-create-v3-user:
net-snmp-create-v3-user [-ro] [-A authpass] [-a MD5|SHA] [-X privpass][-x DES|AES] [username]
- -ro – หมายความว่าผู้ใช้มีสิทธิ์อ่านอย่างเดียว
- Authpass – รหัสผ่านการยืนยันตัวตน
- Privpass – คีย์ส่วนตัว
หลังจากรันคำสั่ง ผู้ใช้พร้อมรหัสผ่านและคีย์ที่ระบุจะถูกสร้าง:

เริ่มบริการ:
# systemctl start snmpd
ลอง poll SNMP agent โดยใช้ snmpwalk โปรดทราบว่าสำหรับการ poll ผ่าน SNMPv3 คุณต้องระบุชื่อผู้ใช้ รหัสผ่าน และคีย์
# snmpwalk -v3 -a SHA -A o2ps2w0dD -x AES -X r30svV33 -l authPriv -u snmpuser 192.168.21.205 | head