Giám sát log server Linux thời gian thực với công cụ Log.io

Giám sát log server Linux thời gian thực với công cụ Log.io | Hôm nay CuongQuach sẽ hướng dẫn các bạn cài đặt và giám sát bất kỳ file local log nào bạn muốn trong thời gian thực với Log.io được cài đặt trên CentOS 7. Sau đó config Log.io thu thập file để giám sát sự thay đổi trong file log.

cài đặt log.io trên centos 7

Có thể bạn cũng quan tâm chủ đề khác
NTP Server là gì ?
Các mẹo tăng tốc độ thực thi Ansible
Hướng dẫn cấu hình Keepalived thực hiện High Availability
Keepalived là gì ?

Log.io là gì ?

Log.io là một ứng dụng đơn giản nhưng hiệu quả được xây dựng trên nền tảng ngôn ngữ Node.jsSocket.io, cho phép giám sát log server Linux theo thời gian thực thông qua giao diện web.

Homepage: http://logio.org/
Github: https://github.com/NarrativeScience/Log.io

1. Cài đặt NodeJS và NPM Package

– Bạn cần cài đặt chương trình hỗ trợ Node.js và những chương trình này nằm trong sự hỗ trợ sẵn có của repository EPEL (Xem thêm: Hướng dẫn cài đặt EPEL Repository trên CentOS 5/6/7)

# wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# rpm -ivh epel-release-latest-7.noarch.rpm
# yum update

– Cài đặt Node.jsNPM Packages. Node.js là một nền tảng ngôn ngữ lập trình xây dựng dựa trên Javascript Engine (V8 Engine) hoạt động phía server cho phép bạn có thể tạo các ứng dụng về network với các chức năng backend. NPM (Node Package Manager) là gói chương trình quản lý của Node.js. Bạn chạy các lệnh dưới đây để cài đặt Node.js và thư viện NPM.

# curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - 
# yum install -y gcc-c++ make
# yum install -y nodejs

2. Cài đặt Log.io trên CentOS 7

Ứng dụng Log.io phải được cài đặt trên hệ thống mà bạn muốn giám sát log. Ứng dụng sẽ được cài đặt thông qua NPM bằng cách chỉ định một user local hợp lệ, trong khi bạn có thể sử dụng bất cứ user hợp lệ nào trên hệ thống, thì cá nhân mình khuyên làm lab nên sử dụng user root hoặc user hệ thống có quyền root.

Lý do là Log.io cần phải có quyền đọc các file log, mà những user không có quyền root thường sẽ không thể đọc được các file log quan trọng của hệ thống. Còn khi sử dụng cho production thì hãy phân quyền user cụ thể có quyền đọc file log. Vì vậy, bạn hãy login server với tài khoản root và sử dụng lệnh cài đặt như sau:

# npm install -g log.io --user "root"
....
make: Leaving directory `/usr/lib/node_modules/log.io/node_modules/contextify/build'

> ws@0.4.32 install /usr/lib/node_modules/log.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Entering directory `/usr/lib/node_modules/log.io/node_modules/ws/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
make: Leaving directory `/usr/lib/node_modules/log.io/node_modules/ws/build'

> log.io@0.3.4 postinstall /usr/lib/node_modules/log.io
> cake ensure:configuration

Lưu ý: Nếu các bạn gặp lỗi sau

# npm install -g log.io --user “root”
Error: setuid user id does not exist
at /usr/lib/node_modules/npm/node_modules.bundled/uid-number/uid-number.js:49:16
at ChildProcess.exithandler (child_process.js:190:7)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:920:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)

bạn có thể khắc phục như sau:

– Mở file `/usr/lib/node_modules/npm/node_modules.bundled/uid-number/uid-number.js` tìm dòng thứ 11 . Sửa `, uidSupport = process.getuid && process.setuid ` thành `, uidSupport = false` . Chạy lại lệnh cài đặt Log.io một lần nữa.

3. Cấu hình Log.io

Sau khi ứng dụng đã được cài đặt, sẽ có một thư mục ẩn mang tên $HOME/.log.io/ nằm ở thư mục $HOME của user cài đặt Log.io, trong đây chứa các file cấu hình. Ví dụ mình cài cho user root thì ở đường dẫn : /root/.log.io/

# ls /root/.log.io/
harvester.conf
log_server.conf
web_server.conf

Chúng ta hãy cùng tìm hiểu các file cấu hình này nhé:

  • File harvester.conf ($HOME/.log.io/harvester.conf): file này sẽ giúp cấu hình chỉ định các file log trên hệ thống mà bạn cần được theo dõi theo thời gian thực. Trong đó có cấu hình gửi các output log thông qua socket.io TCP đến hệ thống Log.io local hoặc Log.io Remote Server qua cấu hình IP.
  • File log_server.conf ($HOME/.log.io/log_server.conf): log.io server sẽ lắng nghe dịch vụ trên các tất cả cổng mạng (network interface) của server và đợi dữ liệu output đến từ local hoặc máy chủ log.io node khác gửi tới. Sau đó sẽ gửi output đó đến log.io web server. (0.0.0.0 là log.io sẽ cho phép nhận dữ liệu từ cả local và remote Log.io node khác)
  • File web_server.conf ($HOME/.log.io/web_server.conf): Web server Log.io lắng nghe các kết nối client từ port 28778 và xử lý các tín hiệu nhận được từ internal Log.io server.

Tiếp theo mình đi đến cấu hình cơ bản bằng cách sẽ điều chỉnh file config của harvester.  Mặc định Log.io chỉ monitor apache log, các bạn thay thế thành những file log bạn muốn monitor với config cú pháp ví dụ như của mình.

exports.config = {
  nodeName: "application_server",
  logStreams: {
  audit: [
        "/var/log/audit/audit.log"
  ],
  messages: [
        "/var/log/messages"
  ],
  secure: [
        "/var/log/secure"
  ],
  dmesg: [
        "/var/log/dmesg"
  ]
  },
  server: {
    host: '0.0.0.0',
    port: 28777
  }
}

Tiếp đến, như đã nói ở trên thì phần cấu hình ‘log_server.conf‘ sẽ quy định port chương trình log.io sẽ lắng nghe nhận output từ local hoặc remote node gửi đến.

# vi /root/.log.io/log_server.conf

exports.config = {
  host: '0.0.0.0',
  port: 28777
}

Để bảo mật hơn, bạn có thể thiết lập xác thực đăng nhập, HTTPS và giới hạn IP, tuy nhiên trong bài lab này mình sẽ chỉ cấu hình xác thực đăng nhập thôi nhé. Các bạn mở file web_server.conf ra và sửa lại như sau:

# vi /root/.log.io/web_server.conf

exports.config = {
  host: '0.0.0.0',
  port: 28778,

    
  // Enable HTTP Basic Authentication
  auth: {
    user: "admin",
    pass: "cuongquachlab"
  },
  

  /*
  // Enable HTTPS/SSL
  ssl: {
    key: '/path/to/privatekey.pem',
    cert: '/path/to/certificate.pem'
  },
  */

  /*
  // Restrict access to websocket (socket.io)
  // Uses socket.io 'origins' syntax
  restrictSocket: '*:*',
  */

  /*
  // Restrict access to http server (express)
  restrictHTTP: [
    "192.168.29.39",
    "10.0.*"
  ]
  */

}

4. Thêm rule firewall và start ứng dụng Log.io

Để truy cập được giao diện web Log.io, bạn phải mở port TCP 28778 chiều vào.

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

hoặc nếu sử dụng ‘iptables‘.

# iptables -A INPUT -p tcp --dport 28778 -j ACCEPT

Khởi động ứng dụng Log.io lên và truy cập web để kiểm tra.

# log.io-server & 
# log.io-harvester &

Giờ hãy truy cập web Log.io , web sẽ yêu cầu đăng nhập : http://ip:28778/

log.io web

Và đây là giao diện để bạn theo dõi log thời gian thực.

log.io web interface

5. Tạo script để quản lý Log.io

Mình sẽ hướng dẫn các bạn sử dụng lệnh quản lý Log.io với trạng thái (start, status, stop) đơn giản. Đầu tiên các bạn tạo file tên log.io trong thư mục /usr/local/bin .

# touch /usr/local/bin/log.io
# chmod +x /usr/local/bin/log.io

Mở file ra và thêm vào nội dung như sau:

#!/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

Lưu lại và bây giờ bạn thử các lệnh sau xem nó hoạt động không nhé.

# log.io stop
# log.io start
# log.io status
Status io-log process...
tcp        0      0 localhost:28777         0.0.0.0:*               LISTEN      24803/node
tcp        0      0 0.0.0.0:28778           0.0.0.0:*               LISTEN      24803/node

Tổng kết

Như vậy là bài hướng dẫn của CuongQuach xong rồi đây, theo mình thấy Log.io là một ứng dụng web tuyệt vời, thú vị để theo dõi file log theo thời gian thực và giúp bạn có thể giám sát được chung nhất về hệ thống server/vps của mình. Thậm chí là có thể xác định lỗi khi máy chủ đang treo hoặc không phản hồi mà không nhất thiết phải sử dụng console. Nhưng tốt nhất hãy triển khai nó trong hạ tầng private nếu có thể. Cám ơn các bạn đã theo dõi bài viết cài đặt Log.io trên CentOS 7 .

Nguồn: https://cuongquach.com/

Previous article6 dấu hiệu cho thấy đã đến lúc “dân IT” nên nghỉ việc
Next articleHướng dẫn nâng cấp, cài đặt OpenSSH 7.6 trên CentOS 7
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !