ค้นหาเว็บไซต์

ตรวจสอบบันทึกเซิร์ฟเวอร์แบบเรียลไทม์ด้วยเครื่องมือ "Log.io" บน RHEL/CentOS 7/6


Log.io เป็นแอปพลิเคชันขนาดเล็กที่เรียบง่ายแต่มีประสิทธิภาพที่สร้างบน Node.js และ Socket.io ซึ่งช่วยให้สามารถตรวจสอบบันทึกของเซิร์ฟเวอร์ Linux ไฟล์แบบเรียลไทม์ผ่านวิดเจ็ตบนหน้าจอเว็บอินเตอร์เฟส

บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับวิธีที่คุณสามารถติดตั้งและตรวจสอบไฟล์บันทึกในเครื่องแบบเรียลไทม์โดยติดตั้ง Log.io บน RHEL/CentOS 7/6.x โดยการกำหนดค่า Log.io b> ไฟล์ผู้เก็บเกี่ยวเพื่อตรวจสอบการเปลี่ยนแปลงในเครื่องของไฟล์บันทึก

ขั้นตอนที่ 1: เพิ่มที่เก็บ Epel

1. ที่เก็บ CentOS Epel จัดเตรียมแพ็คเกจไบนารีสำหรับ Node.js และ NPMโมดูลแพ็คเกจโหนด . ติดตั้งที่เก็บ Epel โดยใช้คำสั่งต่อไปนี้

บน RHEL/CentOS 7
yum install http://fedora.mirrors.telekom.ro/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
บน RHEL/CentOS 6
--------------------- On RHEL/CentOS 6.x - 32 Bit ---------------------
yum install http://fedora.mirrors.telekom.ro/pub/epel/6/i386/epel-release-6-8.noarch.rpm

--------------------- On RHEL/CentOS 6.x - 64 Bit ---------------------
yum install http://fedora.mirrors.telekom.ro/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

2. หลังจากที่คุณเพิ่ม Epel Repos บนระบบของคุณแล้ว ให้ทำการอัพเกรดระบบโดยใช้คำสั่งต่อไปนี้

yum update

ขั้นตอนที่ 2: ติดตั้งแพ็คเกจ Node.js และ NPM

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


curl --silent --location https://rpm.nodesource.com/setup_5.x | bash - 
yum install -y nodejs

ขั้นตอนที่ 3: ติดตั้งและกำหนดค่าแอปพลิเคชัน Log.io

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

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

ดังนั้น เข้าสู่ระบบด้วยบัญชีรูทและติดตั้งแอปพลิเคชัน Log.io ผ่านบัญชีรูทโดยออกคำสั่งต่อไปนี้ (หากคุณใช้ผู้ใช้รายอื่น ให้แทนที่บัญชีรูทด้วยผู้ใช้ระบบของคุณตามลำดับ)

npm install -g log.io --user “root”

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

pwd  		[Make sure you are on the right path]
cd .log.io/
ls

6. ตอนนี้ก็ถึงเวลากำหนดค่า Log.io เพื่อตรวจสอบไฟล์บันทึกในเครื่องแบบเรียลไทม์ มาดูกันว่า Log.io ทำงานอย่างไร

  1. ไฟล์ harvester เฝ้าดูการเปลี่ยนแปลงในไฟล์บันทึกในเครื่องที่ระบุซึ่งประกาศในการกำหนดค่า และส่งเอาต์พุตผ่าน socket.io TCP
    โปรโตคอลที่ส่งข้อความเพิ่มเติมไปยังเซิร์ฟเวอร์ท้องถิ่น Log.io หรือเซิร์ฟเวอร์ระยะไกลอื่น ๆ ที่ประกาศด้วยที่อยู่ IP (ที่อยู่ 0.0.0.0 ที่ระบุบนเครื่องเก็บเกี่ยวที่ออกอากาศไปยังเซิร์ฟเวอร์การฟัง log.io ทั้งหมด) – ไฟล์ harvester.conf
  2. เซิร์ฟเวอร์ Log.io ผูกบนอินเทอร์เฟซเครือข่ายทั้งหมด (หากไม่ได้ระบุไว้เป็นอย่างอื่นในไฟล์ log_server.conf) และรอข้อความจากโหนดผู้เก็บเกี่ยวในพื้นที่หรือระยะไกล และส่งเอาต์พุตไปยังเว็บเซิร์ฟเวอร์ log.io (0.0.0.0 หมายความว่ารอข้อความ จากผู้เก็บเกี่ยวในพื้นที่หรือระยะไกล) ไฟล์ log_server.conf
  3. เว็บเซิร์ฟเวอร์ Log.io เชื่อมโยงกับอินเทอร์เฟซเครือข่ายทั้งหมด ฟังการเชื่อมต่อเว็บไคลเอ็นต์บนพอร์ต 28778 และประมวลผลและส่งออกข้อความที่ได้รับภายในเซิร์ฟเวอร์ log.io – ไฟล์ web_server.conf

ขั้นแรกให้เปิดไฟล์ harvester.conf เพื่อแก้ไข ซึ่งโดยค่าเริ่มต้นจะตรวจสอบเฉพาะไฟล์บันทึกของ Apache เท่านั้น และแทนที่คำสั่ง nodeName เพื่อให้ตรงกับชื่อโฮสต์ของคุณและกำหนด logStreams คำสั่งพร้อมไฟล์บันทึกภายในที่คุณต้องการตรวจสอบ (ในกรณีนี้ ฉันกำลังตรวจสอบไฟล์บันทึกหลายไฟล์ เช่น การตรวจสอบ ข้อความ และบันทึกที่ปลอดภัย) ใช้ข้อความที่ตัดตอนมาจากไฟล์ด้านล่างนี้เป็นแนวทาง

nano harvester.conf

ข้อความที่ตัดตอนมาจากไฟล์ Harvester

exports.config = {
  nodeName: "pxe-server",
  logStreams: {

audit: [
      "/var/log/audit/audit.log"
    ],

messages: [
      "/var/log/messages"
    ],

secure: [
      "/var/log/secure"
    ]

},
  server: {
    host: '0.0.0.0',
    port: 28777
  }
}

นอกจากนี้ หากคุณไม่ต้องการส่งเอาต์พุตของเครื่องเก็บเกี่ยวไปยังเซิร์ฟเวอร์ Log.io ระยะไกล ให้เปลี่ยนบรรทัด host บนคำสั่ง server ให้ส่งเฉพาะ เอาต์พุตในเครื่องโดยการแก้ไขที่อยู่ 0.0.0.0 ด้วยที่อยู่ย้อนกลับ (127.0.0.1)

7. ด้วยเหตุผลด้านความปลอดภัย หากคุณไม่คาดหวังว่าเครื่องเก็บเกี่ยวระยะไกลจะส่งออกไปยังเซิร์ฟเวอร์ Log.io ในพื้นที่ของคุณ ให้เปิดไฟล์ log_server.conf และแทนที่ < b>0.0.0.0 ที่อยู่พร้อมที่อยู่ย้อนกลับ (127.0.0.1)

nano log_server.conf

8. คุณสมบัติความปลอดภัยอื่นๆ เช่น การเข้าสู่ระบบด้วยข้อมูลประจำตัว, HTTPS หรือการจำกัดตาม IP ไปยังเว็บเซิร์ฟเวอร์ Log.io สามารถนำไปใช้บนเว็บเซิร์ฟเวอร์ได้ สำหรับบทช่วยสอนนี้ ฉันจะใช้เป็นมาตรการรักษาความปลอดภัยเพียงการเข้าสู่ระบบด้วยข้อมูลประจำตัวเท่านั้น

ดังนั้น ให้เปิดไฟล์ web_server.conf ยกเลิกหมายเหตุคำสั่ง auth ทั้งหมดโดยการลบเครื่องหมายทับและเครื่องหมายดอกจันทั้งหมด และแทนที่ user และ pass b> คำสั่งตามที่แนะนำในภาพหน้าจอด้านล่าง

nano web_server.conf

ขั้นตอนที่ 4: เพิ่มกฎไฟร์วอลล์และเริ่มแอปพลิเคชัน Log.io

9. เพื่อให้สามารถเข้าถึงเว็บไปยังเซิร์ฟเวอร์ Log.io ได้ ให้เพิ่มกฎบนไฟร์วอลล์ RHEL/CentOS 7 เพื่อเปิดพอร์ต TCP 28778 โดยใช้คำสั่งต่อไปนี้

firewall-cmd --add-port=28778/tcp --permanent
firewall-cmd --reload

หมายเหตุ: ผู้ใช้ RHEL/CentOS 6.x สามารถเปิดพอร์ต 28778 บนไฟร์วอลล์ iptable

ขั้นตอนที่ 5: เริ่มแอปพลิเคชัน Log.io และเข้าสู่เว็บอินเตอร์เฟส

10. ในการเริ่มต้นแอปพลิเคชันตรวจสอบบันทึก Log.io ตรวจสอบให้แน่ใจว่าไดเร็กทอรีการทำงานปัจจุบันของคุณคือโฮมของรูท .log.io และใช้สิ่งต่อไปนี้ คำสั่งตามลำดับต่อไปนี้เพื่อเริ่มแอปพลิเคชัน

------------ First start server, put it in background and press Enter key ------------
log.io-server & 

------------ Start log harvester in background ------------
log.io-harvester & 

11. หลังจากที่เซิร์ฟเวอร์เริ่มต้นแล้วให้เปิดเบราว์เซอร์ ให้ป้อน IP ของเซิร์ฟเวอร์ของคุณตามด้วยหมายเลขพอร์ต 28778 โดยใช้โปรโตคอล HTTP บนที่อยู่ URL และข้อความแจ้งที่ร้องขอข้อมูลรับรองการเข้าสู่ระบบของคุณควรปรากฏขึ้น .

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

http://192.168.1.20:28778

บนเว็บอินเตอร์เฟสเพิ่มหน้าจอใหม่และจัดระเบียบสตรีมหรือโหนดของคุณตามนั้น

12. หากต้องการหยุดแอปพลิเคชัน Log.io ให้รันคำสั่งต่อไปนี้

pkill node

ขั้นตอนที่ 6: สร้างสคริปต์จัดการ Log.io

13. เพื่อใช้คำสั่งที่จัดการแอปพลิเคชัน Log.io ด้วยสวิตช์สามตัว ( start, stop และ สถานะ) สร้างสคริปต์ต่อไปนี้ชื่อ log.io บนไดเร็กทอรีปฏิบัติการ /usr/local/bin และเพิ่มสิทธิ์ในการดำเนินการต่อท้ายสคริปต์นี้

nano /usr/local/bin/log.io
chmod +x /usr/local/bin/log.io

เพิ่มข้อความที่ตัดตอนมาต่อไปนี้ลงในไฟล์สคริปต์นี้

#!/bin/bash

                start() {
                echo "Starting log.io process..."
                /usr/bin/log.io-server &
                /usr/bin/log.io-harvester &
                                         }

                stop() {
                echo "Stopping io-log process..."
                pkill node
                                         }                             

                status() {
                echo "Status io-log process..."
                netstat -tlp | grep node
                                         }

case "$1" in
                start)
start
        ;;
                stop)
stop
        ;;
                status)
status
                ;;
                *)
echo "Usage: start|stop|status"
        ;;
Esac

14. ในการเริ่มต้น หยุด หรือดูการเข้าสู่ระบบสถานะ Log.io ด้วยบัญชีรูท (หรือผู้ใช้ที่ติดตั้งแอป Log.io) และเพียงเรียกใช้คำสั่งต่อไปนี้เพื่อจัดการแอปพลิเคชันได้อย่างง่ายดาย

log.io start
log.io status
log.io stop

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