Перевод статьи отсюда>>>, с небольшими дополнениями.
Установка выполняется на CentOS 6.5.
Для установки потребуется репозиторий Epel.
Устанавливаем Node.js и NPM:
# yum -y install npm nodejs
Далее, с помощью NPM устанавливаем сам Log.io:
# npm install -g log.io npm http GET https://registry.npmjs.org/log.io npm http 200 https://registry.npmjs.org/log.io npm http GET https://registry.npmjs.org/log.io/-/log.io-0.3.4.tgz npm http 200 https://registry.npmjs.org/log.io/-/log.io-0.3.4.tgz ...
Файлы конфигурации Log.io помещаются в директорию пользователя, который запустил NPM.
# cd ~/.log.io/
# ls -l total 12 -rw-r--r-- 1 root root 222 Nov 9 11:13 harvester.conf -rw-r--r-- 1 root root 54 Nov 9 11:13 log_server.conf -rw-r--r-- 1 root root 510 Nov 9 11:13 web_server.conf
Как работает Log.io.
harvester.conf
– утилита/usr/bin/log.io-harvester
наблюдает за файлами, указанными в файлеharvester.conf
, и пересылает данные через сокет локальному или удалённому серверу Log.io;log_server.conf
– сервер/usr/bin/log.io-server
прослушивает все сетевые интерфейсы (если не указан конкретный в файле конфигурации), и ожидает сообщений от локального или удалённогоharverster
-а;web_server.conf
– сервер Log.io ожидает обращений веб-клиентов на порт 28778, и передаёт им данные.
Сначала – открываем для редактирования файл harvester.conf
. По умолчанию – в нём описан мониторинг только файлов сервер Apache HTTP.
Замените строку:
nodeName: "application_server"
на имя вашего хоста:
nodeName: "cent_1"
И в блоке logStreams
добавьте файлы логов, которые необходимо наблюдать (обращайте внимание на запятые):
exports.config = { nodeName: "cent_1", logStreams: { nginx: [ "/var/log/nginx/project-access.log", "/var/log/nginx/project-error.log" ], messages: [ "/var/log/messages" ], secure: [ "/var/log/secure" ] }, server: { host: '127.0.0.1', port: 28777 } }
Так как мы будем использовать только локальный Log.io – замените host
на 127.0.0.1.
Пример файла конфигурации с реального сервера:
exports.config = { nodeName: "venti", logStreams: { NGINX: [ "/var/log/nginx/postfixadmin.domain.org.ua-access.log", "/var/log/nginx/webmail.domain.org.ua-access.log", "/var/log/nginx/webmail.domain.org.ua-error.log", ], NGINXRtfm: [ "/var/log/nginx/rtfm.co.ua-access.log", "/var/log/nginx/rtfm.co.ua-error.log", "/var/log/nginx/rtfm.co.ua-slow.log", ], messages: [ "/var/log/messages" ], secure: [ "/var/log/secure" ], cron: [ "/var/log/cron" ], MariaDB: [ "/var/log/mysql.log", "/var/log/mysql-slow-query.log" ], Exim: [ "/var/log/exim/main.log", ] }, server: { host: '127.0.0.1', port: 28777 } }
То же самое сделаем для log_server.conf
:
exports.config = { host: '127.0.0.1', port: 28777 }
Для ограничения доступа к данным – зададим логин и пароль в файле web_server.conf
.
Меняем:
/* // Enable HTTP Basic Authentication auth: { user: "admin", pass: "1234" }, */
на:
// Enable HTTP Basic Authentication auth: { user: "root", pass: "p@ssw0rd" },
Открываем порт 28778 в IPTABLES.
Проверяем список правил INPUT
:
# iptables -L -n --line-numbers -v Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 2 242 22659 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 3 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 4 1 56 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 5 1 40 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 6 32 2078 LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4 7 32 2078 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Добавляем строку с номером 7:
# iptables -I INPUT 7 -p tcp --dport 28778 -j ACCEPT
# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
Запускаем harvester
и сам Log.io:
# log.io-server & [1] 2648
# log.io-harvester & [2] 2660
После чего открываем браузер, и указываем данные доступа, которые мы задали в файле web_server.conf
:
Слева отмечаем логи, вывод которых мы хотим наблюдать – и смотрим:
Что бы остановить его – выполняем:
# pkill node
Для управления Log.io – создадим скрипт /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
# chmod +x /usr/local/bin/log.io
Проверяем его работу:
# # log.io statuss Status io-log process... tcp 0 0 localhost:28777 *:* LISTEN 2648/node tcp 0 0 *:28778 *:* LISTEN 2648/node
# log.io stop Stopping io-log process...
# log.io start Starting log.io process...