Monitore e analise os logs do servidor da Web com o analisador de log em tempo real de código aberto – GoAccess
Web a solução de problemas é divertida e pode ser frustrante se você não estiver equipado com as ferramentas certas.
Se você estiver oferecendo suporte a um site de tráfego intenso, geralmente precisará analisar e monitorar os logs dos servidores da Web para planejamento de desempenho e capacidade. Isso é essencial para o engenheiro da web.
Verificar o tamanho de log menor manualmente é bom, mas se você tiver o arquivo grande, não seria divertido passar por milhões de linhas para encontrar as métricas.
É por isso que você precisa de ferramentas para facilitar o trabalho do administrador e torná-lo mais produtivo.
GoAccess é um analisador de log leve de código aberto que suporta vários formatos de log e pode ser usado com qualquer um dos seguintes.
- NginxGenericName
- Apache HTTP
- AWS ELB, S3, CloudFront
- Armazenamento em nuvem do Google
Quais métricas você pode analisar com o GoAccess?
Quase tudo que você captura nos logs. Para te dar uma ideia:
- O tempo é levado para atender a solicitação
- IP do visitante, DNS, host
- Detalhes do navegador e sistema operacional do visitante
- 404 detalhes não encontrados
- Principais solicitações/visitante
- largura de banda
- arquivos estáticos
- Localização geográfica
- Código de estado
- e mais..
Procurando essas métricas para serem monitoradas do seu site?
Bom!
Em qual sistema operacional você pode instalar?
GoAccess tem apenas uma dependência – ncurses
. Se você pode instalar, você pode usá-lo em qualquer sistema operacional.
Está disponível em pacote de distribuição para:
- ubuntu
- Debian
- Fedora
- CentOS
- FreeBSD/OpenBSD
- Slackware
- Arch Linux
- Gentoo
- Mac OS
- Windows através de Cygwin
No entanto, você também pode criar a partir da fonte ou usar com o Docker.
Se você é novo no Dockereu recomendaria tomar este Curso Docker Mastery .
Instalando o GoAccess no Ubuntu
- Entre no servidor Ubuntu com o privilégio de root
- Usar
apt-get
para instalar como abaixo
apt-get install goaccess
Fácil.
Instalando no CentOS
Faça login no servidor e execute yum
comando
yum install goaccess
Instalando usando o Source no CentOS/Ubuntu
Adora compilar a partir do código-fonte?
Aqui estão os passos.
- Instale as seguintes dependências se estiver usando CentOS
yum install gcc ncurses-devel glib2-devel geoip-devel tokyocabinet-devel
- Se estiver usando ubuntu
apt-get install libncursesw5-dev libgeoip-dev make
- Baixe o pacote mais recente usando
wget
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
- Extraia o arquivo baixado
gunzip –c goaccess-1.2.tar.gz | tar xvf –
- Vá para a pasta recém-criada, que você obteve após a extração
cd goaccess-1.2
- Compile com o comando abaixo
./configure --enable-geoip=legacy --enable-utf8 make make install
Bom trabalho você instalou o GoAccess e está pronto para analisar os logs.
Verifique a instalação
Depois de instalado, basta executar goaccess
no prompt de comando e deve imprimir o uso como abaixo.
(root@instance-2 goaccess-1.2)# goaccess GoAccess - 1.2 Usage: goaccess (filename) ( options ... ) (-c)(-M)(-H)(-q)(-d)(...) The following options can also be supplied to the command: Log & Date Format Options --date-format=<dateformat> - Specify log date format. e.g., %d/%b/%Y --log-format=<logformat> - Specify log format. Inner quotes need to be escaped, or use single quotes. --time-format=<timeformat> - Specify log time format. e.g., %H:%M:%S User Interface Options -c --config-dialog - Prompt log/date/time configuration window. -i --hl-header - Color highlight active panel. -m --with-mouse - Enable mouse support on main dashboard. --color=<fg:bg(attrs, PANEL)> - Specify custom colors. See manpage for more details and options. --color-scheme=<1|2|3> - Schemes: 1 => Grey, 2 => Green, 3 => Monokai. --html-custom-css=<path.css> - Specify a custom CSS file in the HTML report. --html-custom-js=<path.js> - Specify a custom JS file in the HTML report. --html-prefs=<json_obj> - Set default HTML report preferences. --html-report-title=<title> - Set HTML report page title and header. --json-pretty-print - Format JSON output w/ tabs & newlines. --max-items - Maximum number of items to show per panel. See man page for limits. --no-color - Disable colored output. --no-column-names - Don't write column names in term output. --no-csv-summary - Disable summary metrics on the CSV output. --no-progress - Disable progress metrics. --no-tab-scroll - Disable scrolling through panels on TAB. --no-html-last-updated - Hide HTML last updated field. Server Options --addr=<addr> - Specify IP address to bind server to. --daemonize - Run as daemon (if --real-time-html enabled). --fifo-in=<path> - Path to read named pipe (FIFO). --fifo-out=<path> - Path to write named pipe (FIFO). --origin=<addr> - Ensure clients send the specified origin header upon the WebSocket handshake. --port=<port> - Specify the port to use. --real-time-html - Enable real-time HTML output. --ssl-cert=<cert.crt> - Path to TLS/SSL certificate. --ssl-key=<priv.key> - Path to TLS/SSL private key. --ws-url=<url> - URL to which the WebSocket server responds. File Options - - The log file to parse is read from stdin. -f --log-file=<filename> - Path to input log file. -l --debug-file=<filename> - Send all debug messages to the specified file. -p --config-file=<filename> - Custom configuration file. --invalid-requests=<filename> - Log invalid requests to the specified file. --no-global-config - Don't load global configuration file. Parse Options -a --agent-list - Enable a list of user-agents by host. -d --with-output-resolver - Enable IP resolver on HTML|JSON output. -e --exclude-ip=<IP> - Exclude one or multiple IPv4/6. Allows IP ranges e.g. 192.168.0.1-192.168.0.10 -H --http-protocol=<yes|no> - Set/unset HTTP request protocol if found. -M --http-method=<yes|no> - Set/unser HTTP request method if found. -o --output=file.html|json|csv - Output either an HTML, JSON or a CSV file. -q --no-query-string - Ignore request's query string. Removing the query string can greatly decrease memory consumption. -r --no-term-resolver - Disable IP resolver on terminal output. --444-as-404 - Treat non-standard status code 444 as 404. --4xx-to-unique-count - Add 4xx client errors to the unique visitors count. --all-static-files - Include static files with a query string. --crawlers-only - Parse and display only crawlers. --date-spec=<date|hr> - Date specificity. Possible values: `date` (default), or `hr`. --double-decode - Decode double-encoded values. --enable-panel=<PANEL> - Enable parsing/displaying the given panel. --hour-spec=<hr|min> - Hour specificity. Possible values: `hr` (default), or `min` (tenth of a min). --ignore-crawlers - Ignore crawlers. --ignore-panel=<PANEL> - Ignore parsing/displaying the given panel. --ignore-referer=<NEEDLE> - Ignore a referer from being counted. Wild cards are allowed. i.e., *.bing.com --ignore-status=<CODE> - Ignore parsing the given status code. --num-tests=<number> - Number of lines to test. >= 0 (10 default) --process-and-exit - Parse log and exit without outputting data. --real-os - Display real OS names. e.g, Windows XP, Snow Leopard. --sort-panel=PANEL,METRIC,ORDER - Sort panel on initial load. For example: --sort-panel=VISITORS,BY_HITS,ASC. See manpage for a list of panels/fields. --static-file=<extension> - Add static file extension. e.g.: .mp3. Extensions are case sensitive. GeoIP Options -g --std-geoip - Standard GeoIP database for less memory consumption. --geoip-database=<path> - Specify path to GeoIP database file. i.e., GeoLiteCity.dat, GeoIPv6.dat ... Other Options -h --help - This help. -V --version - Display version information and exit. -s --storage - Display current storage method. e.g., B+ Tree, Hash. --dcf - Display the path of the default config file when `-p` is not used. Examples can be found by running `man goaccess`. For more details visit: http://goaccess.io GoAccess Copyright (C) 2009-2016 by Gerardo Orellana (root@instance-2 goaccess-1.2)#
Analisando Nginx e Apache com GoAccess
Uma das maneiras mais rápidas de analisar access.log é usando-f
parâmetro.
Ex:
goaccess -f access.log
Acima, estou instruindo a abrir o arquivo access.log. Isso mostrará o painel geral e as 15 seções a seguir.
- Visitantes únicos por dia
- arquivos solicitados
- Pedidos estáticos (fontes, imagem, pdf, etc)
- Pedidos não encontrados (404)
- Detalhes do IP/host do visitante
- SO do visitante
- Detalhes do navegador
- distribuição de tempo
- Referenciador
- Código de status HTTP
- localização geográfica
Se o arquivo escolhido estiver sendo atualizado em tempo real, você notará que as métricas são atualizadas no terminal. Aqui, você pode passar pelas métricas que precisa analisar.
Monitoramento em tempo real sobre HTTP(s)
O GoAccess permite redirecionar a saída para o arquivo HTML, que pode ser usado como monitoramento em tempo real. Isso é útil quando você não deseja fazer login no servidor sempre que precisar verificar algumas métricas.
goaccess /var/log/nginx/access.log -o /var/www/tecnologico.online/htdocs/real-time.html --log-format=COMBINED --real-time-html
Acima, estou redirecionando a saída para o arquivo real-time.html que está disponível em htdocs. Como é htdocs, posso acessar esse arquivo em https://tecnologico.online/real-time.html sempre que precisar ver as métricas.
Um painel lindo!
No entanto, não recomendo fazer isso na produção. Tenho certeza de que você não deseja que alguém leia os logs do servidor da Web e aplique a seguinte restrição.
- Proteja o arquivo com usuário e senha
- Permita o acesso apenas a partir do seu IP
- Use outro URL com porta personalizada e coloque-o atrás de um firewall para que apenas IP/usuários permitidos possam acessar
O GoAccess parece um poderoso analisador de logs de código aberto. É leve e GRATUITO, então vá em frente e experimente.
Você também pode estar interessado em verificar analisador de log baseado em nuvem .