คอมพิวเตอร์ หน้าต่าง อินเทอร์เน็ต

การตรวจสอบข้อความ Syslog จากฮาร์ดแวร์เครือข่ายใน Zabbix ได้อย่างสะดวก การติดตั้งและกำหนดค่าเซิร์ฟเวอร์ syslog การติดตั้งเซิร์ฟเวอร์ Kiwi Syslog

  • บทช่วยสอน

ส่วนสำคัญของการตรวจสอบเครือข่ายคือการรวบรวมบันทึกจากเซิร์ฟเวอร์ที่ได้รับการตรวจสอบและฮาร์ดแวร์อื่นๆ ท้ายที่สุด ไม่ว่าเราจะสร้างองค์ประกอบข้อมูลและทริกเกอร์จำนวนเท่าใด ในบางจุดสถานการณ์จะเกิดขึ้นโดยที่เราสูญเสียการมองเห็นบางสิ่งที่สำคัญและไม่สามารถควบคุมมันได้ ผลลัพธ์: “ไม่มีอะไรทำงานให้เราเลย” แต่ระบบติดตามบอกว่าทุกอย่างเรียบร้อยดี

นั่นเป็นเหตุผล อันดับแรกสิ่งที่ฉันต้องการทำคือรวบรวมบันทึกทั้งหมดใน Zabbix โดยจัดกลุ่มตามโหนดเครือข่าย เพื่อให้คุณสามารถอ่านข้อความได้ตลอดเวลาโดยไม่ต้องเสียเวลาในการเข้าถึงอุปกรณ์
ที่สอง- ให้ความสนใจกับเหตุการณ์เหล่านั้นที่คุณไม่รู้ด้วยซ้ำ

หลายคนรู้วิธีการทำเช่นนี้บนเซิร์ฟเวอร์หรือคอมพิวเตอร์ที่ติดตั้งตัวแทน Zabbix - มีบันทึกองค์ประกอบข้อมูล logrt ในตัว

แต่จะทำอย่างไรเมื่อคุณต้องการรวบรวมบันทึกจากอุปกรณ์เครือข่ายที่คุณไม่สามารถติดตั้งตัวแทน Zabbix ได้? ในความเป็นจริงคุณสามารถตั้งค่าเซิร์ฟเวอร์ syslog บนพีซีเครื่องเดียวกันกับที่มีตัวแทน Zabbix ได้จากนั้นจึงใช้ บันทึกถ่ายโอนข้อมูลนี้ไปยัง Zabbix แต่องค์ประกอบข้อมูลและทริกเกอร์จะถูกแนบเข้ากับโหนดเครือข่ายด้วยตัวแทน Zabbix ซึ่งไม่ชัดเจนโดยสัญชาตญาณ เป็นไปได้หรือไม่ที่จะแนบข้อมูลนี้เข้ากับอุปกรณ์เครือข่ายโดยตรง? สามารถ.

แต่สคริปต์รู้ได้อย่างไรว่า *NODE NAME* จะเป็นเช่นไร (เช่น โหนดใดที่จะแนบข้อความ) เนื่องจากมีเพียงที่อยู่ IP ที่เป็นที่มาของข้อความเท่านั้นที่ทราบ
ในการทำเช่นนี้เราจะใช้ Zabbix API โดยเราจะสามารถค้นหา *HOMENAME* ด้วยที่อยู่ IP

/usr/local/bin/zabbix_syslog_lkp_host.pl

#!/usr/bin/perl ใช้ 5.010; ใช้อย่างเข้มงวด ใช้คำเตือน ใช้ JSON::RPC::Legacy::Client; ใช้ข้อมูล::รถเท; ใช้การกำหนดค่า :: ทั่วไป; ใช้CHI; ใช้รายการ :: MoreUtils qw (ใด ๆ ); ใช้ภาษาอังกฤษ "-no_match_vars"; ใช้อ่านอย่างเดียว; ใช้ MIME::Base64 qw(encode_base64); ใช้ IO::Socket::INET; $VERSION ของเรา = 2.0; $CACHE_TIMEOUT ของฉันแบบอ่านอย่างเดียว => 600; $CACHE_DIR ของฉันแบบอ่านอย่างเดียว => "/tmp/zabbix_syslog_cache"; $conf = Config::General->new("/usr/local/etc/zabbix_syslog.cfg"); %Config ของฉัน = $conf->getall; #Authenticate ตัวคุณเอง $client ของฉัน = JSON::RPC::Legacy::Client->new(); $url ของฉัน = $Config("url") || die "URL หายไปใน zabbix_syslog.cfg\n"; $user ของฉัน = $Config("ผู้ใช้") || die "ผู้ใช้ API หายไปใน zabbix_syslog.cfg\n"; $password ของฉัน = $Config("password") || die "รหัสผ่านผู้ใช้ API หายไปใน zabbix_syslog.cfg\n"; $server ของฉัน = $Config("server") || die "ชื่อโฮสต์ของเซิร์ฟเวอร์หายไปใน zabbix_syslog.cfg\n"; $debug ของฉัน = $Config("debug"); ของฉัน ($authID, $response, $json); $id ของฉัน = 0; $message ของฉัน = shift @ARGV || die "ต้องมีข้อความ Syslog เป็นอาร์กิวเมนต์\n"; #คว้าข้อความ syslog จาก rsyslog #get ip จากข้อความ $ip ของฉัน; #IP regex รูปแบบส่วนของฉัน $ipv4_octet = q/(?:25|2|??)/; if ($message =~ / \[ ((?:$ipv4_octet[.])(3)$(ipv4_octet)) \]/msx) ( $ip = $1; ) else ( die "ไม่พบ IP ในวงเล็บเหลี่ยมใน "$message", ไม่สามารถดำเนินการต่อ\n"; ) $cache ของฉัน = CHI->new(driver => "File", root_dir => $CACHE_DIR,); $hostname ของฉัน = $cache->get($ip); if (!defined $hostname) ( $authID = login(); my @hosts_found; my $hostid; foreach my $host (hostinterface_get()) ( $hostid = $host->("hostid"); if (any ( /$hostid/msx ) @hosts_found) ( next; ) #check ว่า $hostid อยู่ใน array แล้วหรือยัง ให้ข้าม(next) else ( กด @hosts_found, $hostid; ) ###########ตอนนี้รับ ชื่อโฮสต์ if (get_zbx_trapper_syslogid_by_hostid($hostid)) ( $result ของฉัน = host_get($hostid); #return ชื่อโฮสต์ถ้าเป็นไปได้ if ($result->("host")) ( if ($result->("proxy_hostid") = = 0) #check ว่าโฮสต์ถูกตรวจสอบโดยตรงหรือผ่านทางพรอกซี ( #lease $server ตามที่เป็นอยู่ ) else ( #assume ว่า rsyslogd และ zabbix_proxy อยู่บนเซิร์ฟเวอร์เดียวกัน $server = "localhost"; ) $hostname = $result->(" โฮสต์"); ) ) ) ออกจากระบบ(); $cache->set($ip, $hostname, $CACHE_TIMEOUT); ) zabbix_send($server, $hostname, "syslog", $message); #______SUBS เข้าสู่ระบบย่อย ( $json = ( jsonrpc => "2.0", method => "user.login", params => ( user => $user, รหัสผ่าน => $password), id => $id++, ); $response = $client->call($url, $json); # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ "การตรวจสอบสิทธิ์ล้มเหลว\n" เว้นแต่ $response->content->("result"); if ($debug > 0) ( พิมพ์ Dumper $response->content->("result"); ) return $response->content->("result"); ) ออกจากระบบย่อย ( $json = ( jsonrpc => "2. 0", method => "user.logout", params => (), id => $id++, auth => $authID, ); $response = $client->call($url, $json); # ตรวจสอบ หากการตอบสนองสำเร็จ ให้เตือน "การออกจากระบบล้มเหลว\n" เว้นแต่ $response->content->("result"); return; ) sub hostinterface_get ( $json = ( jsonrpc => "2.0", method => "hostinterface.get" , params => ( เอาต์พุต => [ "ip", "hostid" ], ตัวกรอง => ( ip => $ip, ), # ขีดจำกัด => 1, ), id => $id++, auth => $authID, ); $response = $client->call($url, $json); if ($debug > 0) ( print Dumper $response; ) # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ (ผลลัพธ์ไม่ใช่อาร์เรย์ว่าง) if (!@( $response->content->("result") )) ( ออกจากระบบ(); die "hostinterface.get failed\n"; ) return @( $response->content->("result") ) ) ย่อย get_zbx_trapper_syslogid_by_hostid ( $hostids ของฉัน = shift; $json = ( jsonrpc => "2.0", method => "item.get", params => ( output => ["itemid"], hostids => $hostids, search => ( " key_" => "syslog", พิมพ์ => 2, #type => 2 คือสถานะ zabbix_trapper => 0, ), จำกัด => 1, ), id => $id++, auth => $authID, ); $response = $client->call($url, $json); if ($debug > 0) ( print Dumper $response; ) # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ถ้า (!@( $response->content->("result") )) ( logout(); die "item.get failed \n"; ) #return itemid ของคีย์ syslog (ประเภทกับดัก) return $( $response->content->("result") )->(itemid); ) ย่อย host_get ( $hostids ของฉัน = shift; $json = ( jsonrpc => "2.0", method => "host.get", params => ( hostids => [$hostids], เอาต์พุต => [ "host", "proxy_hostid", "status" ], filter => ( status => 0, ), # ใช้เฉพาะโฮสต์ที่เปิดใช้งานขีดจำกัด => 1, ), id => $id++, auth => $authID, ); $response = $ client->call($url, $json); if ($debug > 0) ( print Dumper $response; ) # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ if (!$response->content->("result")) ( ออกจากระบบ (); die "host.get failed\n"; ) return $( $response->content->("result") ); #return result ) ย่อย zabbix_send ( my $zabbixserver = shift; my $hostname = shift; $item = shift; my $data = shift; อ่านอย่างเดียว my $SOCK_TIMEOUT => 10; อ่านอย่างเดียว my $SOCK_RECV_LENGTH => 1024; my $result; my $request = sprintf " \n %s\n %s\n %s\n\n", encode_base64($hostname), encode_base64($item), encode_base64($data); $sock ของฉัน = IO::Socket::INET->new(PeerAddr => $zabbixserver, PeerPort => "10051", Proto => "tcp", Timeout => $SOCK_TIMEOUT); die "ไม่สามารถสร้างซ็อกเก็ต: $ERRNO\n" เว้นแต่ $sock; $sock->send($request); my @handles = IO::Select-> ใหม่($sock)->can_read($SOCK_TIMEOUT); if ($debug > 0) ( พิมพ์ "item - $item, data - $data\n"; ) if (scalar(@handles) > 0) ( $sock ->recv($result, $SOCK_RECV_LENGTH); if ($debug > 0) ( print "answer from zabbix server $zabbixserver: $result\n"; ) ) else ( if ($debug > 0) ( print "ไม่มีคำตอบ จากเซิร์ฟเวอร์ zabbix\n"; ) ) $sock->close(); return; )

คัดลอกสคริปต์ไปยังเซิร์ฟเวอร์ตามเส้นทาง /usr/local/bin/zabbix_syslog_lkp_host.pl สร้างไฟล์กำหนดค่าด้วย
/usr/local/etc/zabbix_syslog.cfgพร้อมพารามิเตอร์สำหรับเชื่อมต่อกับ Zabbix ผ่าน API การกำหนดค่าจะมีลักษณะดังนี้:
url = http://zabbix.local/zabbix/api_jsonrpc.php ผู้ใช้ = รหัสผ่าน api_user = เซิร์ฟเวอร์รหัสผ่าน = zabbix.local debug = 0
สคริปต์ใช้โมดูล Perl หลายโมดูลจาก CPAN เพื่อติดตั้งให้รันคำสั่ง:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "ติดตั้งแบบอ่านอย่างเดียว" PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "ติดตั้ง CHI" PERL_MM_USE_DEFAULT=1 perl -MCPAN -e "ติดตั้ง JSON::RPC::Legacy::Client" PERL_MM_USE_DEFAULT=1 perl - MCPAN -e "ติดตั้ง Config::General"
นอกจากนี้เรายังตั้งค่าสิทธิ์ในไฟล์ใหม่ของเราเหล่านี้:
chmod +x /usr/local/bin/zabbix_syslog_lkp_host.pl chown zabbix:zabbix /usr/local/etc/zabbix_syslog.cfg chmod 700 /usr/local/etc/zabbix_syslog.cfg
ทุกอย่างพร้อมที่จะส่งข้อความถึง Zabbix สิ่งที่เหลืออยู่คือโหลด rsyslog อีกครั้ง:
บริการ rsyslog รีสตาร์ท

จากนี้ไปเราจะเห็นข้อความใน Zabbix แยกกันสำหรับแต่ละโหนดเครือข่ายโดยการเปิด ข้อมูลล่าสุด -> โฮสต์ที่ต้องการ -> Syslog

ทริกเกอร์

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

อุปกรณ์แต่ละรายและผู้ผลิตอุปกรณ์แต่ละรายมีข้อความที่แตกต่างกัน ดังนั้นคุณจะค้นหาข้อความสำคัญโดยไม่รู้ว่าข้อความนั้นมีลักษณะอย่างไร และนี่คือดังนี้:
ข้อความ syslog ทั้งหมดถูกจัดประเภทโดยใช้แอตทริบิวต์ความรุนแรง ซึ่งตาม RFC5424 สามารถใช้ค่าต่อไปนี้:

0 เหตุฉุกเฉิน: ระบบใช้งานไม่ได้
1 คำเตือน: ต้องดำเนินการทันที
2 วิกฤต: สภาวะวิกฤต
3 ข้อผิดพลาด: เงื่อนไขข้อผิดพลาด
4 คำเตือน: เงื่อนไขคำเตือน
5 หมายเหตุ: สภาพปกติแต่มีนัยสำคัญ
6 ข้อมูล: ข้อความที่ให้ข้อมูล
7 ดีบัก: ข้อความระดับดีบัก

ความรุนแรงไม่เพียงแต่เป็นตัวเลขเท่านั้น แต่ยังมีตัวย่อที่เป็นข้อความซึ่งปรากฏในข้อความสุดท้ายด้วย ซึ่งส่งไปยัง Zabbix ผ่านทาง zabbix_sender
ดังนั้นเราจึงสามารถค้นหาข้อความเหล่านั้นที่ฮาร์ดแวร์เอง (นั่นคือผู้ผลิต) ให้ความสำคัญค่อนข้างสูงและแจ้งให้ทราบ ในการดำเนินการนี้ เราจะเพิ่มทริกเกอร์ให้กับเทมเพลต Template_Syslog ของเราเพื่อแจ้งเตือนเกี่ยวกับเหตุการณ์ทั้งหมดด้วย ความรุนแรง = คำเตือนและสูงกว่า:

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

ด้วยเหตุนี้ ทุกครั้งที่ข้อความที่มีความสำคัญสูงปรากฏใน syslog เราจะได้รับข้อความดังนี้:


อย่างไรก็ตาม เทมเพลตของเราพร้อมทริกเกอร์สำหรับเหตุการณ์ร้ายแรงก็พร้อมแล้ว:

Template_Syslog

2.0 2015-03-13T14:27:56Z เทมเพลต ((Template_Syslog:syslog.str(.alert))=1)และ((Template_Syslog:syslog.nodata(900))=0) ได้รับข้อความแจ้งเตือนแล้ว 0 4 0 ((Template_Syslog:syslog.str(.crit))=1)และ((Template_Syslog:syslog.nodata(900))=0) ได้รับข้อความสำคัญแล้ว 0 3 0 ((Template_Syslog:syslog.str(.emerg))=1)และ((Template_Syslog:syslog.nodata(900))=0) ได้รับข้อความฉุกเฉินแล้ว 0 5 0 ((Template_Syslog:syslog.str(.err))=1)และ((Template_Syslog:syslog.nodata(900))=0) ได้รับข้อผิดพลาด 0 2 0 ((Template_Syslog:syslog.str(.warning))=1)และ((Template_Syslog:syslog.nodata(900))=0) ได้รับคำเตือนแล้ว 0 1 0

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

การแนบการ์ดอัตโนมัติ

มาดูจุดสำคัญอีกจุดหนึ่งที่ทำให้การทำงานกับข้อความ syslog ง่ายขึ้น - การเปลี่ยนบริบทจากแผนที่เครือข่าย


คุณสามารถใช้เวลาหนึ่งหรือสองวันและเพิ่มลิงก์ URL สำหรับแต่ละโหนดเครือข่ายไปยังองค์ประกอบข้อมูล syslog ด้วยตนเอง:

แต่ในไม่ช้ามือของคุณจะแห้งด้วยการคลิกเมาส์ ไม่เช่นนั้นคุณจะเสียสติ เป็นการดีกว่าที่จะหันไปใช้ Zabbix API อีกครั้งเพื่อขอความช่วยเหลือในการทำงานประจำนี้โดยอัตโนมัติ:
ในการทำเช่นนี้ เราจะใส่สคริปต์ที่จะ
1) นำองค์ประกอบทั้งหมดของแผนที่เครือข่าย
2) สำหรับองค์ประกอบทั้งหมดของประเภทโฮสต์ ให้ตรวจสอบว่ามีองค์ประกอบข้อมูลที่มี key=syslog หรือไม่
3) หากมี ให้เพิ่มลิงก์เพื่อดูองค์ประกอบข้อมูลนี้ไปยังรายการ URL ที่มีอยู่ (หากมี URL ไปยัง Syslog อยู่แล้ว ไม่ต้องทำอะไรเลย)
เมื่อสคริปต์พร้อม เราจะปรับใช้บนเซิร์ฟเวอร์ Zabbix เท่านั้น:

/usr/local/bin/zabbix_syslog_create_urls.pl

#!/usr/bin/perl #fixed URL สำหรับ ZBX 2.4 ใช้ 5.010; ใช้อย่างเข้มงวด ใช้คำเตือน ใช้ JSON::RPC::Legacy::Client; ใช้ข้อมูล::รถเท; ใช้การกำหนดค่า :: ทั่วไป; $VERSION ของเรา = 1.1; $conf = Config::General->new("/usr/local/etc/zabbix_syslog.cfg"); %Config ของฉัน = $conf->getall; #Authenticate ตัวคุณเอง $client ของฉัน = JSON::RPC::Legacy::Client->new(); $url ของฉัน = $Config("url") || die "URL หายไปใน zabbix_syslog.cfg\n"; $user ของฉัน = $Config("ผู้ใช้") || die "ผู้ใช้ API หายไปใน zabbix_syslog.cfg\n"; $password ของฉัน = $Config("password") || die "รหัสผ่านผู้ใช้ API หายไปใน zabbix_syslog.cfg\n"; $server ของฉัน = $Config("server") || die "ชื่อโฮสต์ของเซิร์ฟเวอร์หายไปใน zabbix_syslog.cfg\n"; $debug ของฉัน = $Config("debug"); ของฉัน ($authID, $response, $json); $id ของฉัน = 0; $authID = เข้าสู่ระบบ(); $syslog_url_base ของฉัน = "history.php?action=showvalues"; @selements ของฉัน; ค้นหา $map ของฉัน (@( map_get_extensted() )) ( my $mapid=$map->(sysmapid); #next เว้นแต่ ($mapid == 120 หรือ $mapid == 116); #debug #put all mapelements into array @selements (เพื่อให้คุณสามารถอัปเดตแผนที่ได้ในภายหลัง!) @selements = @( $map->(selements) ); foreach ของฉัน $selement (@selements) ( my $syslog_button_exists = 0; if ($debug > 0) ( print " ID อ็อบเจ็กต์: " . $selement->(selementid) . " Type: " . $selement->(elementtype) . " Elementid " . $selement->(elementid) . " \n"; ) # elementtype=0 hosts if ($selement->(elementtype) == 0) ( my $hostid = $selement->(elementid); my $itemid = get_syslogid_by_hostid($hostid); if ($itemid) ( #and add urls: my $syslog_exists = 0; foreach ของฉัน $syslog_url (@( $selement->(urls) )) ( $syslog_exists = 0; if ($syslog_url->(name) =~ "Syslog") ( $syslog_exists = 1; $syslog_url->( "name") = "Syslog"; $syslog_url->("url") = $syslog_url_base . "&itemids[" . $itemid . "]=" . $itemid; ) ) ถ้า ($syslog_exists == 0) ( # ไม่มีรายการ syslog... เพิ่มมัน push @( $selement->(urls) ), ( "name" => "Syslog", "url" => $syslog_url_base "&รายการ[" . $รายการกลาง. "]=" . $รายการ); ) ) ) ) map_update($mapid,\@selements); ) ออกจากระบบ(); #______SUBS ย่อย get_syslogid_by_hostid ( $hostids ของฉัน = shift; $json = ( jsonrpc => "2.0", method => "item.get", params => ( output => ["itemid"], hostids => $hostids, ค้นหา => ( "key_" => "syslog" ), จำกัด => 1, ), id => $id++, auth => $authID, ); $response = $client->call($url, $json) ; # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ถ้า (!$response->content->("result")) ( logout(); die "item.get failed\n"; ) #return itemid ของคีย์ syslog (ประเภท trapper) return $( $response->content->("result") )->(itemid); ) เข้าสู่ระบบย่อย ( $json = ( jsonrpc => "2. 0", method => "user.login", params => ( user => $user, รหัสผ่าน => $password), id => $id++, ); $response = $client->call($url, $ json); # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ die "Authentication failed\n" เว้นแต่ $response->content->("result"); if ($debug > 0) ( print Dumper $response->content->("result "); ) return $response->content->("result"); ) sub map_get ( #retrieve all map $json = ( jsonrpc => "2.0", method => "map.get", params => ( output => ["sysmapid"] ), id => $id++, auth => "$authID", ); $response = $client->call($url, $json); # ตรวจสอบว่าการตอบกลับสำเร็จหรือไม่หาก ( !$response->content->("result")) ( logout(); die "map.get failed\n"; ) if ($debug > 1) ( print Dumper $response->content->(result) ; ) return $response->content->(result); ) ออกจากระบบย่อย ( $json = ( jsonrpc => "2.0", method => "user.logout", params => (), id => $id++, auth => $authID, ); $response = $client->call($url, $json); # ตรวจสอบว่าการตอบกลับสำเร็จหรือไม่ คำเตือน "ออกจากระบบล้มเหลว\n" ยกเว้นว่า $response->content->("result") ; กลับ; ) ย่อย map_get_extend ( $json = ( jsonrpc => "2.0", method => "map.get", params => ( selectSelements => "extend", #sysmapids => $map, ), id => $id++, auth => $authID, ); $response = $client->call($url, $json); # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ถ้า (!$response->content->("result")) ( logout() ; die "map.get failed\n"; ) if ($debug > 1) ( print Dumper $response->content->("result"); ) ส่งคืน $response->content->("result"); ) ย่อย map_update ( my $mapid = shift; my $selements_ref = shift; $json = ( jsonrpc => "2.0", method => "map.update", params => ( selements => [@($selements_ref)] , sysmapid => $mapid, ), id => $id++, auth => $authID, ); if ($debug > 0) ( print "About to map.update this\n:"; print Dumper $json; ) $response = $client->call($url, $json); if ($debug > 0) ( print Dumper $response; ) # ตรวจสอบว่าการตอบสนองสำเร็จหรือไม่ if (!$response->content->("result" )) ( logout(); die "map.update failed\n"; ) return; ) เพิ่มป้ายกำกับ

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

อีกวิธีที่ดีในการบันทึกคือการเข้าสู่เซิร์ฟเวอร์ภายนอกที่เรียกว่า เซิร์ฟเวอร์ Syslog.
มีซอฟต์แวร์เซิร์ฟเวอร์ Syslog จากผู้ผลิตหลายราย แต่เราจะดูซอฟต์แวร์ที่มีชื่อเสียงที่สุดพร้อมกับเวอร์ชัน: กีวี Syslog เซิร์ฟเวอร์ 9.4.1.

การติดตั้งเซิร์ฟเวอร์ Kiwi Syslog

ไม่มีอะไรซับซ้อนเป็นพิเศษในการติดตั้ง - เพียงแค่เปิดใช้งาน Kiwi_Syslog_Server_9.4.1.Eval.setup.exeเราทำทุกอย่างตามมาตรฐานและเห็นด้วยกับทุกสิ่ง
สิ่งเดียวที่คุณต้องจำคือบัญชีผู้ดูแลระบบสำหรับการเข้าถึงเว็บ
การติดตั้งจะต้องรีบูต นอกจากนี้หลังการติดตั้งคุณจะต้องติดตั้งใบอนุญาตทันที

ตรวจสอบ/ปรับ

สามารถตรวจสอบสถานะการบริการได้ที่นี่:
เครื่องมือการดูแลระบบ > บริการ > เซิร์ฟเวอร์ Siwi Syslog
ชัดเจนว่าเขาต้องมีโชคลาภ เริ่ม.

สามารถตรวจสอบสถานะเซิร์ฟเวอร์ได้โดยการรัน คอนโซลเซิร์ฟเวอร์ Kiwi Syslog.
จากที่นี่ คุณสามารถตรวจสอบสิ่งต่อไปนี้:

  • ไฟล์ > ส่งข้อความทดสอบ
  • จัดการ > แสดงสถานะบริการ syslogd

การตั้งค่าอุปกรณ์ Cisco

การตั้งค่าการแสดงเวลาปัจจุบัน
การประทับเวลาบริการ บันทึกวันที่ เวลา เวลาท้องถิ่น
!
! กำลังเปิดใช้งานการบันทึก
เข้าสู่ระบบ
!
!
! ปิดการใช้งานบันทึกไปยังคอนโซล
คอนโซลการบันทึกมีความสำคัญ
การบันทึกการดีบักจอภาพ
!
! กำลังตั้งค่าการบันทึกเป็นบัฟเฟอร์
การบันทึกข้อมูลที่บัฟเฟอร์
การบันทึกบัฟเฟอร์ 16386
ขีดจำกัดอัตราการบันทึก 100 ยกเว้น 4
!
! การกำหนดค่าข้อความไปยังเซิร์ฟเวอร์ syslog
การบันทึก 192.168.1.10
การดีบักกับดักการบันทึก

หากต้องการดูว่ามีอะไรอยู่ในบัฟเฟอร์:
เราเตอร์#แสดงการบันทึก

การเปิดใช้งานการแสดงผลการบันทึกจอภาพ:
มอนิเตอร์เทอร์มินัล

ด้วยเหตุนี้ ข้อความจึงควรเริ่มตกไปอยู่ในเซิร์ฟเวอร์ syslog:

การเข้าถึงเว็บ

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


งานที่นี่ใช้งานง่ายและอาจไม่มีอะไรให้แสดงความคิดเห็น

เซิร์ฟเวอร์ Kiwi Syslog และ tftpd32.exe

หลังจากการติดตั้ง เซิร์ฟเวอร์ syslog อาจหยุดทำงาน tftpd32.exe เนื่องจากความขัดแย้งของพอร์ต
นี่เป็นเพราะความจริงที่ว่า tftpd32.exe ตามค่าเริ่มต้นยังฟัง syslog ด้วย: สามารถปิดได้ในการตั้งค่า

/ อัพเดตล่าสุด: วันที่ 6 มิถุนายน 2562

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

โดยทั่วไปโปรโตคอล Syslog ได้รับการสนับสนุนโดยอุปกรณ์หลากหลายประเภท ดังนั้นจึงเป็นเรื่องง่ายสำหรับอุปกรณ์และแอปพลิเคชันในการปิดข้อมูลบันทึกไปยังเซิร์ฟเวอร์ Syslog ซึ่งจะจัดเก็บข้อมูลเพื่อการวิเคราะห์เพิ่มเติม

สิ่งที่โดดเด่นที่สุดคือเซิร์ฟเวอร์ Syslog มักจะสามารถเรียกใช้การแจ้งเตือนหรือส่งการแจ้งเตือนซึ่งช่วยให้ผู้ดูแลระบบในภาคสนามสามารถรับข้อมูลที่สำคัญด้านเวลา หรือเพียงแจ้งเตือนบางสิ่งที่อาจต้องดำเนินการในเร็วๆ นี้ - เนื่องจากมีความรุนแรงในตัว เมตริก "จะง่ายกว่าที่จะรู้ว่าเมื่อสิ่งใดสามารถรอได้และเมื่อใดไม่สามารถทำได้"

SNMP เชื่อมโยงอย่างมากกับฟังก์ชันการทำงานของเซิร์ฟเวอร์ Syslog และสามารถใช้ควบคู่กันเพื่อสำรวจข้อมูลอันหลากหลายที่น่าอัศจรรย์ทั้งหมดที่ผู้ดูแลระบบใช้ในการแย่งชิงผ่าน SNMP แต่เมื่อก้าวไปอีกขั้นผ่านซอฟต์แวร์เซิร์ฟเวอร์ Syslogging พวกเขาสามารถดึงข้อมูลนั้นและดำเนินการได้ ยิ่งกว่านั้นอีกมาก เช่น อินเทอร์เฟซแบบกราฟิกที่รวบรวมข้อมูล SNMP สามารถเร่งความเร็วในการประเมินระบบวิกฤติหรือจุดความล้มเหลวได้เกือบทุกจำนวน

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

เซิร์ฟเวอร์ Syslog บางตัวต้องใช้ซอฟต์แวร์ไคลเอนต์ในการจัดการ แต่หลายเซิร์ฟเวอร์ก็มีโซลูชันบนเว็บด้วย ซึ่งสามารถจัดการได้ง่ายทั้งจากระยะไกลหรือจากระบบที่แตกต่างกันในสภาพแวดล้อมเครือข่าย เซิร์ฟเวอร์ส่วนใหญ่ยังค่อนข้างดีในด้านการจัดการข้อมูล และจะจัดการกับฟังก์ชันการเก็บถาวรในระดับหนึ่งสำหรับการบันทึกบันทึกเก่าหรือบันทึกที่อาจไม่จำเป็นในปัจจุบัน

Syslog มีข้อเสียอยู่เล็กน้อย ซึ่งไม่ได้มาตรฐานเป็นพิเศษ ซึ่งหมายความว่าการใช้งานที่เลอะเทอะอาจทำให้เกิดปัญหากับเซิร์ฟเวอร์ Syslog และยังขาดการรับรองความถูกต้องทุกประเภทอีกด้วย

ในสภาพแวดล้อมเครือข่ายที่เชื่อถือได้ นี่ไม่ใช่ปัญหาจริงๆ แต่โดยเฉพาะอย่างยิ่งมัลแวร์ที่เป็นอันตรายหรือเครือข่ายที่ไม่น่าเชื่อถือสามารถก่อให้เกิดปัญหาได้

นี่คือซอฟต์แวร์และเครื่องมือเซิร์ฟเวอร์ Syslog ฟรีที่ดีที่สุดประจำปี 2019:

ด้านล่างนี้คือรายการซอฟต์แวร์ที่ทำหน้าที่เหล่านี้และอื่นๆ อีกมากมาย รวมถึงระบบปฏิบัติการที่เข้ากันได้ และที่สำคัญไม่น้อยว่ารองรับการแจ้งเตือนบางรูปแบบ (การเตือน ป๊อปอัป ฯลฯ) และ/หรือการแจ้งเตือน (อีเมล txt ฯลฯ)

1. เซิร์ฟเวอร์ Kiwi Syslog – เวอร์ชันฟรี

Syslog Server ของ Kiwi มีความสะดวกในการติดตั้งและตั้งค่านอกเหนือจากคุณสมบัติที่ต้องการอื่น ๆ สามารถสร้างรายงานได้ทั้งในรูปแบบ HTML ที่อ่านง่ายหรือเป็นข้อความธรรมดาหากจำเป็นสำหรับการแยกวิเคราะห์กับซอฟต์แวร์อื่น ๆ

การเก็บถาวรและการจัดเก็บบันทึกเป็นไปโดยอัตโนมัติและเข้มงวด โดยเน้นไปที่ความเข้ากันได้ในกรณีที่ต้องปฏิบัติตามข้อกำหนดด้านกฎระเบียบอย่างระมัดระวัง แม้จะเข้มงวดเท่ากับ HIPAA ก็ตาม Kiwi ใช้คอนโซลบนเว็บเพื่อความสะดวกในการเข้าถึงและความพร้อมใช้งานที่รวดเร็วโดยไม่จำเป็นต้องติดตั้งหรือกำหนดค่าไคลเอนต์

ซอฟต์แวร์ของ Kiwi ยังจัดการ Syslog และ SNMP รวมถึงจากโฮสต์ Linux และ UNIX และทำการแจ้งเตือนและการแจ้งเตือนแบบเรียลไทม์ตามข้อมูลนี้ด้วยช่วงการวัดที่กว้างขวางและปรับแต่งได้ซึ่งสามารถตรวจสอบได้

ชนะ XP 32/64, ชนะ 2003 32/64, Windows Vista 32/64, Win7 32/64, Windows 2008 R2 32/64, Windows 8, Windows Server 2012 และ 2012 R2; มีทั้งความสามารถในการแจ้งเตือนและการแจ้งเตือน

2. PRTG (เวอร์ชันฟรี)

PRTG มีความสามารถ Syslog บางอย่าง จากนั้นจึงเพิ่มผ่านเซ็นเซอร์ไปยังชุดการตรวจสอบ PRTG

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

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: สภาพแวดล้อม Windows 64 บิตใด ๆ ที่ใช้ Windows Server 2012 R2 ขอแนะนำเป็นพิเศษ การแจ้งเตือนและการเตือนที่ดี แต่ทั้งหมดจะแตกต่างกันเล็กน้อยเนื่องจากต้องเพิ่มและกำหนดค่าเซ็นเซอร์ด้วยมือ

3.SNMPSoft Sys-log Watcher

ติดตั้งเป็นเซิร์ฟเวอร์ syslog เฉพาะสำหรับอุปกรณ์เครือข่ายทุกประเภทพร้อมการรองรับตัวเลือกการแจ้งเตือนที่หลากหลาย โปรแกรมของ SNMPSoft ยังมีความสามารถพิเศษในการแยกวิเคราะห์และจัดการ Syslog ที่ไม่ได้มาตรฐาน ซึ่งเป็นสิ่งที่อาจทำให้ซอฟต์แวร์อื่น ๆ สะดุด!

สิ่งที่น่าสังเกตเป็นพิเศษคือยังมี Syslog Watcher VendorPack ซึ่งเป็นข้อมูลอ้างอิงขนาดใหญ่ของข้อความ syslog สำหรับอุปกรณ์ที่เป็นกรรมสิทธิ์ ซึ่งช่วยในการแก้ไขปัญหาอย่างรวดเร็วด้วยการกำหนดข้อความ syslog ที่ไม่ได้มาตรฐานโดยอัตโนมัติ

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: Windows XP ถึง Windows 10; การแจ้งเตือนที่แข็งแกร่งและการแจ้งเตือนที่ชัดเจนเช่นกัน

4. แสงแวววาว

ไม่ใช่วิธีแก้ปัญหาที่ดีนัก เนื่องจากแม้แต่ฟอรัม Splunk ก็ยังแนะนำให้ใช้เซิร์ฟเวอร์ Splunk หลายตัวเพื่อการตั้งค่าที่เหมาะสม แต่ก็ยังสามารถทำได้! แนะนำให้ใช้ Splunk เพื่อสร้างดัชนีและจัดการไฟล์บันทึก เนื่องจากข้อมูล syslog จะหายไปเมื่อรีสตาร์ท Splunk แต่ละครั้งตามค่าเริ่มต้น

ยิ่งไปกว่านั้น มันมีฟังก์ชัน syslog และการทำงานเพียงเล็กน้อยในการทำให้ Splunks หลายตัวทำงานร่วมกัน ก็สามารถเป็นโซลูชันที่มั่นคงได้

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: Splunk ทำงานบน Windows รุ่น 64 บิต เช่นเดียวกับ Linux และ Mac OSX ฟังก์ชันการทำงานของ syslog จะแตกต่างกันไป ไม่มีฟังก์ชันการแจ้งเตือนหรือการแจ้งเตือนจริงสำหรับ syslog

5. เพื่อน

The Dude แม้ว่าจะเป็นชื่อแปลก ๆ แต่ก็เป็นตัวเลือกที่น่าสนใจและฟรีสำหรับการจัดการเครือข่ายทั่วไป โดยมาพร้อมกับเซิร์ฟเวอร์ syslog ในตัวซึ่งสามารถเปิดใช้งานได้อย่างง่ายดาย พร้อมทั้งมีฟังก์ชันสำหรับการบันทึกระยะไกลผ่าน RouterOS

เหตุการณ์บันทึกสามารถกรอง จัดเรียงตามบันทึกต่างๆ หรือละทิ้งตามเกณฑ์ที่ปรับแต่งได้

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: Windows เวอร์ชันส่วนใหญ่ แนะนำ Windows 2000 หรือใหม่กว่า ทำงานบน Linux หรือ MacOS โดยใช้ Wine/Darwine; การแจ้งเตือนทางอีเมลพร้อมตัวเลือกการแจ้งเตือนบนหน้าจอหรือตัวเลือกการแจ้งเตือนตามบันทึกด้วย

6.TFTPD32

7. เซิร์ฟเวอร์ Syslog (ถูกละทิ้ง)

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

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: บริการบนเซิร์ฟเวอร์ Windows ก่อนปี 2008 ฟังก์ชันการทำงานของแอปพลิเคชันใน Windows เวอร์ชันส่วนใหญ่ สามารถทริกเกอร์การแจ้งเตือนทางอีเมลตามเกณฑ์

8. การตรวจสอบโอเพ่นซอร์สของ Icinga

Visual Syslog Server เป็นตัวเลือก Syslog ที่ตรงไปตรงมาและมีน้ำหนักเบาซึ่งเน้นไปที่แนวทางแบบเรียลไทม์

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

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน:

  • วินโดวส์เอ็กซ์พี,
  • วิสตา,
  • เช่นเดียวกับ Windows Server 2003, 2008, 2012;

สามารถจัดการการแจ้งเตือนทางอีเมลและยังมีการแจ้งเตือนและกระตุ้นการดำเนินการอัตโนมัติอีกด้วย!

10. 3cDaemon

ขึ้นอยู่กับฟังก์ชันการทำงานสไตล์ BSD-unix ของ syslogd ข้อเสนอเฉพาะนี้จะดึงดูดกลุ่มคนที่เลือกเท่านั้น! ยิ่งไปกว่านั้น ยังสามารถจัดการการบันทึกตามลำดับความสำคัญ กรอง/จำกัดข้อความตาม IP มีการดูบันทึกแบบเรียลไทม์ และแม้กระทั่งสามารถถ่ายโอนข้อมูลบันทึกไปยัง ASCII ธรรมดาได้

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน: เซิร์ฟเวอร์ระดับแอปพลิเคชันทำงานบน Windows รุ่นเก่าส่วนใหญ่ ระบบปฏิบัติการเวอร์ชันใหม่อาจไม่แน่นอนเนื่องจากซอฟต์แวร์ค่อนข้างเก่า ไม่มีฟังก์ชันการแจ้งเตือนหรือการแจ้งเตือนจริง

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน:

11.ดาต้าแกรม

ซอฟต์แวร์นี้มุ่งเน้นไปที่ฟังก์ชันการทำงานระดับองค์กรและมุ่งเน้นไปที่สภาพแวดล้อมที่ใหญ่ขึ้น โดยสามารถรวบรวมและจัดเก็บข้อมูล Syslog ได้หลากหลาย และจัดเก็บไว้ในฐานข้อมูลกลางพร้อมตัวกรองและการเตือนที่หลากหลาย

ความเข้ากันได้ของระบบปฏิบัติการและความสามารถในการแจ้งเตือน/การแจ้งเตือน:

Windows 2000 และส่งต่อ; มีฟังก์ชั่นการเตือนแต่ไม่มากสำหรับการแจ้งเตือน

บทสรุป

การติดตาม Syslog ผ่านเซิร์ฟเวอร์ Syslog อันทรงพลังสามารถประหยัดเวลาและความพยายามของผู้ดูแลระบบเครือข่ายได้

ข้อมูลทุกบิต ไม่ว่าจะเป็น SNMP หรือ Syslog ที่สามารถร้องขอ รวบรวม และวิเคราะห์ได้ ถือเป็นปริศนาที่เป็นไปได้อีกชิ้นหนึ่งที่สามารถกระตุ้นการแจ้งเตือนหรือการแจ้งเตือน และดึงความสนใจของมนุษย์ไปยังปัญหาโดยเร็วที่สุด หรือแม้แต่ดับไฟที่กำหนดไว้ล่วงหน้า สคริปต์หรือโปรแกรมเพื่อบรรเทาหรืออย่างน้อยก็ทำให้ปัญหาที่กำลังจะเกิดขึ้นช้าลง

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

ข้อมูลส่วนใหญ่สามารถเห็นได้บนระบบหรืออุปกรณ์ใดๆ ก็ตาม แม้แต่เครือข่ายขนาดเล็กที่มีอุปกรณ์ไม่กี่สิบเครื่องก็ยังไม่มีเหตุผลเลยที่จะตรวจสอบทีละเครื่อง การมีการรวมศูนย์ อัตโนมัติ และตรวจสอบอย่างใกล้ชิดนั้นมีคุณค่าอย่างยิ่ง!

James Cox เป็นบรรณาธิการของ ITT Systems และมีประวัติอันยาวนานในสาขาวิศวกรรมไอทีและเครือข่าย เขามีรายการข้อมูลรับรองมากมายตั้งแต่ใบรับรอง CompTIA จนถึงคะแนน Cisco และ VMWare ในเรซูเม่ของเขา

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

วิธีที่อุปกรณ์เครือข่ายส่งข้อความระบบโดยทั่วไปมากที่สุดคือการใช้โปรโตคอลที่เรียกว่า syslog

คำว่า syslog ใช้เพื่ออธิบายมาตรฐาน นอกจากนี้ยังใช้เพื่ออธิบายโปรโตคอลที่พัฒนาขึ้นสำหรับมาตรฐานนี้ด้วย โปรโตคอล syslog ได้รับการพัฒนาสำหรับระบบ UNIX ย้อนกลับไปในยุค 80 ศตวรรษที่ผ่านมา แต่ได้รับการบันทึกไว้ครั้งแรกโดยชุมชน IETF ในชื่อ RFC 3164 ในปี 2544 เท่านั้น Syslog ใช้พอร์ต UDP 514 เพื่อส่งข้อความแจ้งเตือนเหตุการณ์ผ่านเครือข่าย IP ไปยังสิ่งอำนวยความสะดวกในการรวบรวมเหตุการณ์ ดังแสดงในรูป

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

มีแพ็คเกจซอฟต์แวร์เซิร์ฟเวอร์ Syslog มากมายสำหรับ Windows และ UNIX หลายแห่งมีอิสระ

บริการบันทึก syslog มีความสามารถหลักสามประการ:

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

    นอกจากนี้ ข้อความ syslog สามารถถูกส่งไปยังบัฟเฟอร์ภายในได้ ข้อความที่ส่งไปยังบัฟเฟอร์ภายในสามารถดูได้ผ่านอินเทอร์เฟซบรรทัดคำสั่งของอุปกรณ์เท่านั้น

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

    ดังที่แสดงในภาพ ปลายทางยอดนิยมสำหรับข้อความ syslog มีดังต่อไปนี้:

    • บัฟเฟอร์การบันทึก (RAM ในเราเตอร์หรือสวิตช์);
    • สายคอนโซล
    • สายเทอร์มินัล
    • เซิร์ฟเวอร์ซิสล็อก

    คุณสามารถตรวจสอบข้อความของระบบจากระยะไกลได้โดยการดูบันทึกบนเซิร์ฟเวอร์ Syslog หรือโดยการเข้าถึงอุปกรณ์ผ่าน Telnet, SSH หรือพอร์ตคอนโซล

อุปกรณ์ Cisco จะสร้างข้อความบันทึกระบบเมื่อมีเหตุการณ์เครือข่ายบางอย่างเกิดขึ้น ข้อความ syslog ทั้งหมดระบุระดับความรุนแรงและสิ่งอำนวยความสะดวก

ยิ่งกำหนดหมายเลขต่ำ การแจ้งเตือน syslog ก็จะยิ่งสำคัญมากขึ้น ในการตั้งค่าความรุนแรงของข้อความ คุณสามารถกำหนดตำแหน่งที่จะส่งข้อความแต่ละประเภทได้ (เช่น ไปยังคอนโซลหรือปลายทางอื่นๆ) รายการระดับ syslog ทั้งหมดแสดงอยู่ในรูปที่ 1

แต่ละระดับ syslog มีความหมายของตัวเอง:

  • ระดับการเตือน-ระดับฉุกเฉิน- ข้อความเหล่านี้เป็นข้อความเกี่ยวกับความล้มเหลวของซอฟต์แวร์หรือฮาร์ดแวร์ ข้อความประเภทนี้ระบุว่าการทำงานของอุปกรณ์ได้รับผลกระทบ ระดับ syslog ที่กำหนดจะขึ้นอยู่กับความรุนแรงของปัญหา
  • ระดับการดีบัก- ข้อความในระดับนี้มีข้อมูลเอาต์พุตที่ได้รับจากการรันคำสั่งต่างๆ แก้ปัญหา .
  • ระดับการแจ้งเตือน- ข้อความระดับการแจ้งเตือนมีวัตถุประสงค์เพื่อให้ข้อมูลเท่านั้น ประสิทธิภาพของอุปกรณ์จะไม่ได้รับผลกระทบ ระดับคำเตือนจะแสดงข้อความเมื่อสถานะอินเทอร์เฟซเปลี่ยนเป็นใช้งานอยู่หรือไม่ได้ใช้งาน หรือเมื่อระบบรีสตาร์ท

นอกจากการระบุระดับความรุนแรงแล้ว ข้อความ syslog ยังมีข้อมูลเกี่ยวกับอ็อบเจ็กต์อีกด้วย สิ่งอำนวยความสะดวก Syslog คือตัวระบุบริการที่กำหนดและจัดประเภทข้อมูลสถานะของระบบสำหรับการรายงานข้อผิดพลาดและเหตุการณ์ ตัวเลือกออบเจ็กต์การบันทึกที่ใช้ได้จะขึ้นอยู่กับอุปกรณ์เครือข่ายเฉพาะ ตัวอย่างเช่น สวิตช์ซีรีส์ Cisco 2960 ที่ใช้เราเตอร์ Cisco IOS Release 15.0(2) และ Cisco 1941 ที่ใช้ Cisco IOS Release 15.2(4) รองรับตัวแปรออบเจ็กต์ 24 แบบ ซึ่งแบ่งออกเป็นประเภทออบเจ็กต์ 12 ประเภท

ต่อไปนี้คือออบเจ็กต์ข้อความ syslog ทั่วไปบางส่วนที่บันทึกไว้ในเราเตอร์ Cisco IOS:

  • โปรโตคอล OSPF
  • ระบบปฏิบัติการ เอสวายเอส
  • โปรโตคอล IPSec
  • อินเทอร์เฟซ IP (IF)

รูปแบบข้อความ syslog เริ่มต้นในซอฟต์แวร์ Cisco IOS เป็นดังนี้:

หมายเลขลำดับ: การประทับเวลา: % สิ่งอำนวยความสะดวกความรุนแรง-MNEMONIC: คำอธิบาย

ตัวอย่างเอาต์พุตของสวิตช์ Cisco EtherChannel ที่เปลี่ยนเป็นแอ็คทีฟจะมีลักษณะดังนี้:

00:00:46: %LINK-3-UPDOWN: Interface Port-channel1 เปลี่ยนสถานะเป็น up

ในตัวอย่างนี้ ออบเจ็กต์คือ LINK ระดับความรุนแรงถูกตั้งค่าเป็น 3 และ SHORT CODE คือ UPDOWN

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

ข้อความบันทึกอาจมาพร้อมกับการประทับเวลา นอกจากนี้ยังสามารถกำหนดที่อยู่ต้นทางของข้อความ syslog ได้อีกด้วย สิ่งนี้ช่วยปรับปรุงประสิทธิภาพของการดีบักและการควบคุมแบบเรียลไทม์

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

เมื่อใช้คำสำคัญ วันเวลาคุณต้องกำหนดค่านาฬิกาของอุปกรณ์เครือข่าย คุณสามารถตั้งนาฬิกาได้สองวิธี:

  • โดยใช้คำสั่งด้วยตนเอง ตั้งนาฬิกา
  • ใช้โปรโตคอล NTP โดยอัตโนมัติ

โปรโตคอล NTP ช่วยให้คุณซิงโครไนซ์การตั้งค่าเวลาของอุปกรณ์เครือข่ายกับเซิร์ฟเวอร์ NTP

หากต้องการเปิดใช้งานการซิงโครไนซ์นาฬิกาซอฟต์แวร์กับเซิร์ฟเวอร์เวลา NTP ให้ใช้คำสั่ง เซิร์ฟเวอร์เอ็นทีพี ที่อยู่ IPในโหมดการกำหนดค่าส่วนกลาง ตัวอย่างของการตั้งค่าแสดงในรูป เราเตอร์ R1 ได้รับการกำหนดค่าให้เป็นไคลเอนต์ NTP เราเตอร์ R2 ทำหน้าที่เป็นเซิร์ฟเวอร์ NTP ที่เชื่อถือได้ อุปกรณ์เครือข่ายสามารถกำหนดค่าเป็นเซิร์ฟเวอร์ NTP (อนุญาตให้อุปกรณ์อื่นซิงโครไนซ์กับเวลาของมัน) หรือเป็นไคลเอนต์ NTP

ส่วนที่เหลือของบทนี้จะถือว่านาฬิกาได้รับการกำหนดค่าและมีการกำหนดค่าคำสั่งบนอุปกรณ์ทั้งหมด วันที่และเวลาบันทึกการประทับเวลาบริการ .

การตั้งค่า Syslog

หากต้องการดูข้อความ syslog จะต้องติดตั้งเซิร์ฟเวอร์ syslog บนเวิร์กสเตชันบนเครือข่าย มี syslog เวอร์ชันฟรีและแชร์แวร์หลายเวอร์ชัน รวมถึงเวอร์ชันองค์กรที่ต้องชำระเงิน ในรูปที่ 1 บริการ Kiwi Syslog เวอร์ชันทดลองใช้จะแสดงบนคอมพิวเตอร์ที่ใช้ Windows 7

เซิร์ฟเวอร์ syslog มีอินเทอร์เฟซที่ค่อนข้างใช้งานง่ายสำหรับการดูเอาต์พุต syslog เซิร์ฟเวอร์แยกวิเคราะห์ผลลัพธ์และวางข้อความในคอลัมน์ที่กำหนดไว้ล่วงหน้าเพื่อให้ตีความได้ง่ายขึ้น หากมีการกำหนดค่าการประทับเวลาสำหรับอุปกรณ์เครือข่ายที่เป็นแหล่งที่มาของข้อความ syslog เอาต์พุตของเซิร์ฟเวอร์ Syslog จะแสดงเป็นวันที่และเวลาของแต่ละข้อความ ดังแสดงในรูปที่ 2

ผู้ดูแลระบบเครือข่ายสามารถนำทางไปยังข้อมูลปริมาณมากที่รวบรวมบนเซิร์ฟเวอร์ Syslog ได้อย่างง่ายดาย ข้อดีอย่างหนึ่งของการดูข้อความ syslog บนเซิร์ฟเวอร์ Syslog คือความสามารถในการเจาะลึกข้อมูล นอกจากนี้ ผู้ดูแลระบบเครือข่ายยังสามารถลบข้อความ Syslog ที่มีความสำคัญน้อยกว่าออกจากฐานข้อมูลได้อย่างรวดเร็ว

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

ทีม แสดงการบันทึกแสดงการตั้งค่าบริการบันทึกเริ่มต้นที่กำหนดค่าบนเราเตอร์ Cisco ดังแสดงในรูป บรรทัดแรกของรายการผลลัพธ์ประกอบด้วยข้อมูลเกี่ยวกับกระบวนการบันทึก ที่ส่วนท้ายของรายการเอาต์พุตคือข้อความบันทึก

บรรทัดแรกที่ไฮไลต์ระบุว่าข้อมูลบันทึกของเราเตอร์นี้ถูกส่งไปยังคอนโซลและมีข้อความระดับการแก้ไขข้อบกพร่องด้วย โดยพื้นฐานแล้วหมายความว่าข้อความระดับการแก้ไขข้อบกพร่องทั้งหมด รวมถึงข้อความระดับต่ำกว่า (เช่น ข้อความระดับการแจ้งเตือน) จะถูกส่งไปยังคอนโซล ผลลัพธ์ยังระบุด้วยว่ามีการบันทึกรายงานดังกล่าว 32 รายการ

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

การกำหนดค่าเราเตอร์ของคุณให้ส่งข้อความระบบไปยังเซิร์ฟเวอร์ syslog ซึ่งสามารถจัดเก็บ กรอง และวิเคราะห์ได้นั้นเป็นกระบวนการสามขั้นตอน:

ขั้นตอนที่ 1.กำหนดค่าชื่อโฮสต์ปลายทางหรือที่อยู่ IP ของเซิร์ฟเวอร์ Syslog ในโหมดการกำหนดค่าส่วนกลาง:

R1(กำหนดค่า)# การบันทึก 192.168.1.3

ขั้นตอนที่ 2.ระบุว่าควรส่งข้อความใดไปยังเซิร์ฟเวอร์ syslog โดยใช้คำสั่ง กับดักการตัดไม้ ระดับในโหมดการกำหนดค่าส่วนกลาง ตัวอย่างเช่น หากต้องการส่งเฉพาะข้อความที่ระดับ 4 และต่ำกว่า (0-4) ให้ใช้คำสั่งใดคำสั่งหนึ่งจากสองคำสั่งที่เทียบเท่ากันต่อไปนี้:

R1(กำหนดค่า)# กับดักการตัดไม้ 4

R1(กำหนดค่า)# คำเตือนกับดักการบันทึก

ขั้นตอนที่ 3หากจำเป็น ให้กำหนดค่าอินเทอร์เฟซต้นทางโดยใช้คำสั่ง อินเทอร์เฟซแหล่งที่มาของการบันทึก หมายเลขอินเทอร์เฟซชนิดอินเทอร์เฟซ ในโหมดการกำหนดค่าส่วนกลาง ดังนั้น คุณสามารถกำหนดค่าแพ็กเก็ต syslog เพื่อให้มีที่อยู่ IPv4 หรือ IPv6 ของอินเทอร์เฟซเฉพาะได้ โดยไม่คำนึงว่าอินเทอร์เฟซใดที่ใช้ในการส่งแพ็กเก็ตจากเราเตอร์ ตัวอย่างเช่น หากต้องการกำหนดค่า g0/0 เป็นอินเทอร์เฟซต้นทาง ให้ใช้คำสั่งต่อไปนี้:

R1(กำหนดค่า)# อินเทอร์เฟซแหล่งที่มาของการบันทึก g0/0

ในรูปที่ 1 เราเตอร์ R1 ได้รับการกำหนดค่าให้ส่งข้อความบันทึกเลเยอร์ 4 และต่ำกว่าไปยังเซิร์ฟเวอร์ syslog ที่ 192.168.1.3 อินเทอร์เฟซ G0/0 ได้รับการกำหนดค่าเป็นอินเทอร์เฟซต้นทาง อินเทอร์เฟซแบบย้อนกลับถูกสร้างขึ้น จากนั้นทำให้ไม่ทำงาน จากนั้นจึงเปิดใช้งานอีกครั้ง การดำเนินการเหล่านี้จะสะท้อนให้เห็นในเอาต์พุตคอนโซล

เซิร์ฟเวอร์ syslog ของ Tftpd32 ที่แสดงในรูปที่ 2 ได้รับการกำหนดค่าบนคอมพิวเตอร์ Windows 7 ที่มีที่อยู่ IP 192.168.1.3 อย่างที่คุณเห็น เฉพาะข้อความที่มีระดับความรุนแรง 4 หรือน้อยกว่า (สำคัญกว่า) เท่านั้นที่จะแสดงบนเซิร์ฟเวอร์ Syslog ข้อความที่มีระดับความรุนแรง 5 หรือสูงกว่า (มีนัยสำคัญน้อยกว่า) ปรากฏในเอาต์พุตคอนโซลเราเตอร์ แต่ไม่ปรากฏในเอาต์พุตเซิร์ฟเวอร์ syslog เนื่องจากคำสั่ง กับดักการตัดไม้เลือกข้อความ syslog ที่ส่งไปยังเซิร์ฟเวอร์ syslog ตามความรุนแรง

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

เช่น คำสั่ง แสดงการบันทึก | รวมถึงเปลี่ยนสถานะเป็นขึ้น ดังแสดงในรูปที่ 1 ตรวจสอบให้แน่ใจว่ามีเพียงการแจ้งเตือนอินเทอร์เฟซเท่านั้นที่แสดงโดยระบุว่าสถานะอินเทอร์เฟซเปลี่ยนเป็น "ใช้งานอยู่"

ทีม แสดงการบันทึก | เริ่ม 12 มิถุนายน 22:35 นดังแสดงในรูปที่ 1 เช่นกัน โดยแสดงเนื้อหาของบัฟเฟอร์การบันทึกตั้งแต่วันที่ 12 มิถุนายน

ใช้ตัวตรวจสอบไวยากรณ์ในรูปที่ 2 เพื่อกำหนดค่าและตรวจสอบ syslog บน R1