GoAccess Настройте сервер WebSocket на прослушивание через порт 7890 и локальный хост
Я пытаюсь запустить пример GoAccess:
# goaccess -f access.log -o report.html --real-time-html
Там либо
Parsing... [41] [0/s]
ИЛИ нет выхода в терминале. Я долго жду. Тогда CTRL+C:
^CSIGINT caught!
Stopping WebSocket server...
Возможно я пропускаю шаг в:
"Чтобы вывести отчет в формате HTML и настроить сервер WebSocket на прослушивание через порт 7890 и localhost".
"Сброс соединения" в my.ip.address.here:7890
,
Я предполагаю, что nginx не участвует в этом, так как в его журналах отображаются только обращения к другим веб-страницам.
Есть ли какая-то другая конфигурация или журналы, которые я мог бы изучить?
ОБНОВИТЬ:
Немного яснее и дошли до этого:
$ sudo goaccess -f /var/log/nginx/access.log.1 -o /usr/share/nginx/www/report.html \\
--real-time-html --ws-url=domain.com
Parsing... [84] [0/s]
Я могу:
telnet domain.com 7890
Trying 45.55.xxx.xxx...
Connected to domain.com.
Escape character is '^]'.
В браузере: domain.com:7890/report.html возвращает Сброс подключения.
Будет ли кто-то уточнить, что этот путь должен представлять:
/usr/share/nginx/www/report.html
Является report.html
должен существовать и должен ли путь быть в определенном месте в Системе Сервера?
5 ответов
У меня были некоторые проблемы с получением отчетов в реальном времени, и в конце концов я понял, почему они не работают на меня. Это может / не может относиться к вам.
Я генерировал отчет в реальном времени в каталоге моего сайта, который работает по протоколу SSL. К сожалению, отчеты в реальном времени Goaccess вообще не работают через SSL.
Чтобы решить эту проблему, я настроил новый домен goaccess.mydomain.com и настроил его на работу с портом 80 на Nginx. Затем защитил / location с помощью файла.htpasswd, а затем я сгенерировал отчеты в реальном времени в папке этого нового веб-сайта.
Статические отчеты работают на 100% по SSL, а не в реальном времени.
Итак, что я делаю сейчас каждый день, используя Cron, это генерирую отчеты в реальном времени для сайтов, которые я хочу отслеживать с помощью.
goaccess -f /var/log/nginx/site1-access.log -a -o /var/www/goaccess.mydomain.com/site1.html
goaccess -f /var/log/nginx/site2-access.log -a -o /var/www/goaccess.mydomain.com/site2.html
тогда, когда я хочу в режиме реального времени отчет на определенном сайте, я просто запускаю
goaccess -f /var/log/nginx/site1-access.log -a -o /var/www/goaccess.mydomain.com/site.html.html --real-time-html --ws-url=goaccess.mydomain.com
Я попросил их отметить проблему https в их документации, поскольку это заставляло меня ходить по кругу целую вечность.
Цитирование с сайта GoAccess:
Процесс создания HTML-отчета в реальном времени очень похож на процесс создания статического отчета.
Просто создайте статический отчет и поместите выходной HTML-файл в общую папку вашего веб-сервера www. Вам нужно добавить пару дополнительных флагов в реальном времени. Требуется использование --real-time-html.
# goaccess -f access.log -o /usr/share/nginx/www/rt.goaccess.io/report.html --real-time-html --ws-url=host
После открытия сгенерированного отчета в вашем браузере он попытается установить соединение WebSocket с хостом, указанным в параметре --ws-url=. Обратите внимание, что хост должен указывать на местоположение, где запущен GoAccess и анализировать журналы. Также убедитесь, что хост является допустимым и не должен содержать http.
Если вы не используете --ws-url, он попытается установить соединение WebSocket с localhost, что означает, что GoAccess должен быть запущен на вашей локальной машине (той же машине, на которой запущен браузер)
Из справочной страницы видно, что GoAccess по умолчанию работает на порту 7890. Как говорится, вы, вероятно, хотите указать --ws-url
указать местоположение сервера GoAccess WebSocket, если ваш журнал доступа не находится на вашем локальном компьютере.
Для ssl добавьте следующие параметры в команду:
--ssl-cert=<cert.crt> and --ssl-key=<priv.key>.
Если порт по-прежнему застрял, иногда его нужно открыть.
iptables -A INPUT -i eth0 -p tcp --destination-port 7890 -j ACCEPT
Я также заметил, что целевой выходной файл должен существовать по указанному пути, после чего он будет записываться в файл. Он никогда не создаст его по какой-то причине.
Чтобы выводить данные в реальном времени через соединение TLS/SSL, вам необходимо использовать --ssl-cert=<cert.crt>
а также --ssl-key=<priv.key>
.
Сработало у меня:)
опаздываю, но это то, что, я думаю, описано в документации, и я собираюсь провести вас по шагам. прежде всего запустите команду так
я использую NGINX в качестве своего сервера
$goaccess /var/log/nginx/access.log -o /var/www/goaccess/report.html --real-time-html --ssl-cert=/path/to/cert --ssl-key=/path/to/key
вы должны увидеть это после того, как вы введете команду
[PARSING /var/log/nginx/access.log] {123} @ {0/s}
WebSocket server ready to accept new client connections
теперь ctrl ^C, чтобы выйти и перейти к конфигурации вашего сервера nginx в моем случае /etc/nginx/sites-available/mysite и отредактировать ее. Добавьте следующий блок в контекст вашего сервера или блок
location /goaccess/ {
root /var/www;
}
затем проверьте, в порядке ли файл конфигурации, и перезагрузите nginx так
sudo nginx -t
sudo nginx -s reload
затем снова запустите первую команду (команда goaccess), чтобы запустить сервер сокетов, затем перейдите к https://example.com/goaccess/report.html , теперь вы должны увидеть отчет и зеленую точку на значке настроек, показывающую, что сервер сокетов активен и автоматически обновляет report.html, вы также можете попробовать проверить, работает ли он, перейдя на другую вкладку, введя https://example.com и вернувшись, чтобы проверить, были ли изменения в журналах/статистике.
Теперь вы можете выйти из сервера сокетов и попробовать сделать его системной службой.