Поиск по сайту:

Как установить GoAccess Web Log Analyzer на Rocky Linux 8


На этой странице

  1. Предпосылки
  2. Шаг 1. Установите зависимости для GoAccess
  3. Шаг 2. Загрузите и установите GoAccess
  4. Шаг 3. Загрузка базы данных GeoIP
  5. Шаг 4. Настройка GoAccess
  6. Шаг 5. Запустите GoAccess
  7. Шаг 6. Запустите GoAccess как непривилегированный
  8. Шаг 7. Создание отчетов в формате HTML
  9. Заключение

GoAccess — это облегченный анализатор журналов с открытым исходным кодом, который может читать и анализировать файлы журналов различных форматов, включая Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy и т. д. Он написан на языке C и использует библиотеку ncurses для его интерфейс приборной панели, доступ к которому можно получить из командной строки.

Он может создавать отчеты в формате HTML, JSON и CSV, которыми можно делиться с другими. Вы даже можете создавать HTML-отчеты в реальном времени, которые можно отображать по общедоступной ссылке.

В этом руководстве вы научитесь устанавливать GoAccess Analyzer на сервер под управлением Rocky Linux и настраивать его для чтения журналов Nginx и предоставления отчетов в реальном времени.

Предпосылки

  1. A server running Rocky Linux 8.

  2. A non-root user having sudo privileges.

  3. Nginx running on the server to access logs.

  4. Make sure everything is updated.

    $ sudo dnf update
    

Шаг 1. Установите зависимости для GoAccess

Последняя версия GoAccess v1.5.2 недоступна в репозитории по умолчанию. Чтобы установить последнюю версию GoAccess, мы соберем ее из исходного кода. Первым шагом является загрузка зависимостей, необходимых для сборки пакета GoAccess.

$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel 
$ sudo dnf groupinstall 'Development Tools'

Шаг 2. Загрузите и установите GoAccess

Загрузите последнюю версию архива GoAccess. Вы можете найти последнюю версию GoAccess на официальной странице загрузки.

$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz

Извлеките файлы из архива.

$ tar -xzvf goaccess-1.5.2.tar.gz

Настройте и установите пакет.

$ cd goaccess-1.5.2
$ autoreconf -fi
$ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
$ sudo make
$ sudo make install

Убедитесь, что GoAccess запущен.

$  goaccess --version
GoAccess - 1.5.2.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2020 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=mmdb
  --with-openssl

Шаг 3 - Загрузите базу данных GeoIP

Вы можете скачать базу данных GeoIP либо с сайта Maxmind. Если вы собираетесь скачивать с Maxmind, вам нужно будет создать учетную запись и сгенерировать бесплатный лицензионный ключ. Загрузка с DB-IP может осуществляться напрямую.

Загрузите ZIP-файл страны из любого из указанных выше источников. После загрузки извлеките их и загрузите файл .mmdb на сервер в пользовательскую папку, например /home//geoip.

Шаг 4. Настройка GoAccess

GoAccess хранит свой файл конфигурации в /usr/local/etc/goaccess/goaccess.conf. Вы можете проверить расположение файла в вашей системе, используя следующую команду.

$ goaccess --dcf
/usr/local/etc/goaccess/goaccess.conf

Откройте файл для редактирования.

$ sudo nano /usr/local/etc/goaccess/goaccess.conf

Большинство опций закомментированы. Вы можете использовать эти параметры через командную строку или установить их в файле здесь. Чтобы включить параметр, удалите перед ним символ #.

Во-первых, давайте включим параметр time-format. В нашем руководстве мы будем анализировать файлы Nginx, поэтому включите параметр, предназначенный для журналов Apache/Nginx.

# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

Затем включите параметр Nginx date-format.

# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

Затем включите параметр log-format. В нашем руководстве мы будем использовать формат журнала combined, который обычно использует Nginx.

log-format COMBINED

Если ваши файлы журналов содержат поле «Виртуальный хост», вместо этого включите следующую опцию.

log-format VCOMBINED

Предположим, вы хотите больше контролировать формат журнала. В этом случае вы можете вместо этого включить следующую строку (в зависимости от журнала, к которому вы обращаетесь) и добавить или удалить параметры в соответствии с вашими потребностями.

log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Чтобы включить модуль GeoIP, включите следующую опцию, указав путь к базе данных GeoIP.

# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
#
geoip-database /home/geoip/dbip-country-lite-2021-10.mmdb

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.

Шаг 5 — Запустите GoAccess

Обычно, если вы хотите запустить GoAccess, вам потребуется использовать следующую команду.

$ sudo /usr/local/bin/goaccess /var/log/nginx/access.log

Нам нужно использовать sudo, потому что обычные пользователи не могут открывать файлы журнала. Кроме того, вам нужно будет использовать полный путь к исполняемому файлу с командой sudo, потому что команда sudo не распознает приложения в каталоге /usr/local/bin. Однако вы можете обойти ограничение, создав символическую ссылку.

Для этого выполните следующую команду.

$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess

Теперь вы можете запускать GoAccess напрямую.

$ sudo goaccess /var/log/nginx/access.log

Файлы журнала Nginx ведут учет всего входящего HTTP-трафика. Если ваш сервер работает в течение длительного времени, вы увидите несколько журналов доступа со старыми журналами в сжатом формате .gz. Более старые файлы журналов создаются в результате ротации журналов.

После запуска команды вас встретит следующая панель инструментов.

GoAccess предоставляет несколько сочетаний клавиш для навигации по панели инструментов.

  • TAB для перехода вперед по доступным модулям и SHIFT+TAB для перехода назад.
  • F5, чтобы обновить панель управления.
  • g для перемещения вверх экрана панели управления и G для перемещения вниз.
  • o или ENTER, чтобы развернуть выбранный модуль.
  • j и k для прокрутки вниз и вверх в активном модуле.
  • s, чтобы отобразить параметры сортировки для активного модуля.
  • / для поиска по всем модулям и n для перехода к следующему совпадению.
  • 0–9 и SHIFT+0, чтобы быстро активировать модуль с соответствующим номером.
  • ? для просмотра диалогового окна быстрой справки.
  • q, чтобы выйти из программы.

Кратко пройдемся по всем панелям.

  1. Unique visitors per day - This panel is self-explanatory. It lists unique visitors, hits and cumulative bandwidth for each date. It also includes web crawlers and spiders by default.

  2. Requested Files (URLs) - This panel provides the statistics concerning the most requested non-static files on your server.

  3. Static Requests - It is similar to the above panel except that it handles static files like images, CSS, JavaScript, etc.

  4. Not Found URLs (404s) - This panel logs all the requests to files and paths not found on your server.

  5. Visitor Hostnames and IPs - This panel gives more info about the visitors to your site. You can press o to expand the panel to get detailed information such as country of origin, city, and reverse DNS.

  6. Operating Systems - This panel displays different Operating systems used by the visitors.

  7. Browsers - This panel shows the various browsers used by the visitors.

  8. Time Distribution - This panel will give an hourly report for the number of hits, unique visitors, and bandwidth consumed.

  9. Virtual Hosts - This panel displays the virtual hosts parsed from the log file. It will only show up if you use the VCOMBINED log format in the configuration file above or if %v is part of the log-format configuration.

  10. Referrer URLs - This lists the URLs that refer visitors to your server. This panel is disabled by default. To enable it, comment out the following line in the configuration file by adding # in front of it.

    #ignore-panel REFERRERS
    
  11. Referring Sites - This panel displays the IP addresses of the referring hosts.

  12. Keyphrases - This panel displays the keywords used on Google Search, Google cache or Google Translate that lead to your site. This panel is also disabled by default. Enable it by commenting out the following line in the configuration file.

    #ignore-panel KEYPHRASES
    
  13. HTTP Status Codes - This panel shows the statistics for HTTP status codes returned by your server when it responds to a request.

  14. Remote User (HTTP Authentication) - This panel shows the user ID of the person accessing a document on your server, protected by HTTP authentication. This panel only works if %e is part of the log-format configuration.

  15. Cache status - This panel determines if a request is being cached and served from it. This panel only works if %c is part of the log-format configuration.

  16. Geo Location - This panel provides a list of geographical locations of the visitors accessing your site. It will show up only if you have downloaded and added its location in the configuration file.

Шаг 6. Запустите GoAccess как непривилегированный

В соответствии с хорошей практикой безопасности, чем меньше кода работает от имени пользователя root, тем лучше. Чтобы запустить GoAccess без root, ему нужны права на чтение файлов журнала.

Файлы журнала сервера обычно являются частью группы adm. Вы можете проверить это, используя следующую команду.

$ ls -l /var/log/nginx
total 68
-rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log
-rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log

Как видите, вам не нужно быть пользователем root, чтобы открывать файлы журналов. Любой пользователь, принадлежащий к группе adm, может открывать файлы.

Самый простой способ запустить GoAccess без root — добавить текущего пользователя в группу adm. Таким образом, вы сможете запустить GoAccess под этим пользователем без sudo.

Выполните следующую команду, чтобы добавить текущего пользователя в группу adm.

$ sudo usermod -aG adm $USER 

Теперь выйдите из системы и войдите снова, чтобы применить изменения. Или вы можете запустить следующую команду, не выходя из системы, чтобы применить изменение.

$ su $USER

Вы должны иметь возможность запускать GoAccess напрямую, без использования sudo.

$ goaccess /var/log/nginx/access.log

Шаг 7. Создавайте HTML-отчеты

GoAccess можно использовать для создания HTML-отчетов, которые вы можете предоставлять в Интернете. Используйте следующую команду для создания отчета в формате HTML.

$ goaccess /var/log/nginx/access.log -o stats.html

Вы можете загрузить файл на свой локальный компьютер для себя или в папку своего веб-сайта для публичного доступа.

Вы даже можете создать HTML-отчет в реальном времени с помощью GoAccess. Но сначала вам нужно открыть порт 7890 для запуска GoAccess Websocket. Откройте порт с помощью следующей команды.

$ sudo firewall-cmd --permanent --add-port=7890/tcp

Перезагрузите брандмауэр, чтобы применить изменения.

$ sudo firewall-cmd --reload

Теперь выполните следующую команду, чтобы создать HTML-отчет в реальном времени.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Это создаст отчет в реальном времени в указанном месте. Приведенная выше команда будет поддерживать работу GoAccess на переднем плане в качестве WebSocket, прослушивающего подключения.

Есть небольшая оговорка при выполнении вышеуказанной команды. Приведенная выше команда будет работать, если у GoAccess есть права доступа к каталогу /usr/share/nginx/html. Поскольку мы запускаем GoAccess под пользователем, вошедшим в систему в данный момент, вам необходимо предоставить этому пользователю разрешения на доступ к каталогу /usr/share/html. Если по какой-то причине вы не можете ждать, вам нужно будет запустить GoAccess, используя sudo.

$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Если вы хотите запустить GoAccess в фоновом режиме, вы можете вместо этого запустить его как демон, используя следующую команду.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize
Daemonized GoAccess: 78315

Чтобы остановить демон GoAccess, завершите процесс с помощью следующей команды.

$ sudo kill -9 78315

Здесь мы используем идентификатор процесса, который мы получили в нашей предыдущей команде. Если вы не помните идентификатор процесса, вы также можете использовать следующую команду, чтобы завершить процесс.

$ sudo kill -9 `pidof goaccess`

Обратите внимание, что мы используем обратную кавычку (\\) в нашей команде. Использование обычных кавычек приведет к сбою команды.

Заключение

На этом мы завершаем наше руководство по установке и запуску GoAccess Log Analyzer на сервере Rocky Linux 8. Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.