การส่งบันทึกไปยังเซิร์ฟเวอร์ Graylog2


11

ฉันเพิ่งติดตั้งเซิร์ฟเวอร์ Graylog2 และฉันต้องการส่งบันทึกทั้งหมดจากเซิร์ฟเวอร์หลักของฉันไปยังเซิร์ฟเวอร์ Graylog ผมได้เปิดใช้งานการเข้าสู่ระบบสำหรับเซิร์ฟเวอร์หลักและกำลังส่งบันทึกไปยังเซิร์ฟเวอร์ graylog ของฉันโดยการเพิ่มการ*.* @logs.example.com:1337/etc/rsyslog.conf

สิ่งที่ฉันต้องการคือให้ Graylog2 รวบรวมบันทึก Apache ของฉันบันทึกระบบ (สำหรับการเข้าสู่ระบบ SSH การเข้าสู่ระบบที่ถูกปฏิเสธ) และบันทึกอื่น ๆ ที่ฉันต้องการตรวจสอบ

สำหรับบันทึก Apache ฉันต้องการบันทึก Rails ด้วย เว็บไซต์ของฉันอยู่ใน/srv/www/นั้นโครงสร้างและsitename.com/public_html sitename.com/logsฉันมีเว็บไซต์จำนวนมากบนเซิร์ฟเวอร์และฉันต้องการวิธีที่ง่ายในการดูข้อผิดพลาดทั้งหมดและสร้างกราฟที่ดีจากพวกเขาดังนั้นทำไมฉันต้องการใช้ Graylog2 ...

แฟ้มบันทึกในบันทึกโฟลเดอร์เป็นและaccess.logerror.log

บันทึกของ Rails จะอยู่ในsitename.com/public_html/logนั้น production.logนี้ประกอบด้วย


คำถามที่นี่คืออะไร หากคุณติดตั้ง rsyslog คุณสามารถใช้มันเพื่อส่งบันทึก Rails / Apache ไปยัง Graylog2 ( rsyslog.com/doc/imfile.html )
polynomial

คุณเคยลองไหม docs.graylog.org/en/1.2/pages/collector.html
zx1986

คำตอบ:


10

นี่เก่า แต่ฉันคิดว่าฉันจะเขียนวิธีนี้ซึ่งฉันใช้กับไซต์ปริมาณการใช้ต่ำ / ปานกลาง (ไม่รู้ว่ามันจะทำงานได้ดีสำหรับไซต์ปริมาณมากหรือไม่)

ใน Apache ฉันกำหนดรูปแบบ CustomLog ที่เรียกว่าgraylog2_accessรูปแบบบันทึกการเข้าถึงในรูปแบบ GELF จากนั้นฉันส่งบันทึกของฉันผ่าน Graylog2 โดยการไพพ์ข้อมูลบันทึกผ่าน nc เพื่อส่งข้อความ GELF ไปยังอินพุตของ Graylog2

นี่คือรูปแบบที่กำหนดเองที่สร้างขึ้น (มนุษย์สามารถอ่านได้):

{ 
 "version": "1.1",
 "host": "%V",
 "short_message": "%r",
 "timestamp": %{%s}t,
 "level": 6,
 "_user_agent": "%{User-Agent}i",
 "_source_ip": "%a",
 "_duration_usec": %D,
 "_duration_sec": %T,
 "_request_size_byte": %O,
 "_http_status": %s,
 "_http_request_path": "%U",
 "_http_request": "%U%q",
 "_http_method": "%m",
 "_http_referer": "%{Referer}i"
}

สำหรับ Apache config นี่คือรุ่นคัดลอก / วาง:

LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access

จากนั้นในการกำหนดค่าโฮสต์ของคุณ:

CustomLog "|nc -u graylogserver 12201" graylog2_access

+1 ดีจัง! ต้องลองสิ่งนี้กับหนึ่งในระบบของเรา แต่มีข้อผิดพลาดแทน
Henk

@Henk - หากคุณทำรูปแบบบันทึกข้อผิดพลาดโปรดแจ้งให้เราทราบฉันต้องการ แต่ยังไม่ได้ใช้เวลา นอกจากนี้ตรวจสอบserverfault.com/questions/582510/…สำหรับข้อมูลบางอย่างที่ฉันพบในภายหลัง
ETL

5

คุณยังสามารถส่งไฟล์บันทึกของคุณไปยังเซิร์ฟเวอร์ graylog2 โดยใช้คำสั่งง่ายๆนี้:

tail -F -q $yourlogfile |   while read -r line ; do   echo "<7> $hostnamesendingthelog $line" | nc -w 1 -u $graylogserver 514;   done;

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

คุณสามารถปรับแต่งไฟล์บันทึกทางรถไฟและดูว่าเกิดอะไรขึ้น


ฉันชอบความเรียบง่ายของคำตอบนี้: ตรงไปตรงมาและไม่มีเครื่องมือพิเศษ ฉันไม่รู้จะทำอย่างไรเกี่ยวกับการบันทึกเวลาของไฟล์บันทึก: อาจไม่มีอะไรต้องทำและพวกเขาไม่สำคัญ
texas-bronius

2

Graylog2 ยอมรับเฉพาะบันทึกในสองรูปแบบ: syslog มาตรฐานและรูปแบบบันทึกเพิ่มเติม Graylog (aka GELF) บันทึกบนดิสก์โดยพลการจะต้องมีกระบวนการของบุคคลที่สามในการใช้งานบันทึกและแปลเป็นรูปแบบที่มีประโยชน์สำหรับคุณ

ลองดูที่Logstash คนส่วนใหญ่คิดว่ามันเป็นเครื่องมือในการทำดัชนี logfiles โดยใช้ ElasticSearch แต่มันก็มีจุดประสงค์ทั่วไป "log เราเตอร์" ที่ช่วยให้คุณสามารถมัดไฟล์บนดิสก์และส่งไปยังองค์ประกอบการบันทึกเช่น Graylog


2
Rsyslog สามารถอ่านบันทึกได้อย่างง่ายดาย: rsyslog.com/doc/imfile.html
polynomial

1
ในขณะที่ rsyslog สามารถใช้ไฟล์อื่นเป็นอินพุตการใช้ logstash มีข้อได้เปรียบในการใช้นิพจน์ทั่วไปที่กำหนดไว้ล่วงหน้าของGrok (ดูlogstash.net/docs/1.0.17/filters/grok ) เพื่อรับโครงสร้างบางอย่างในข้อความบันทึกและ ไม่เพียงแค่ธรรมดา
joschi

syslog-ng สามารถทำเช่นเดียวกันกับการกำหนดค่าตัวทำความสะอาดเปรียบเทียบกับ rsyslog: loggly.com/support/sending-data/logging-from/syslog/syslog-ng/ ......
HVNSweeting

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