nginx - Com que freqüência foi acessado para um arquivo ou caminho específico? [fechadas]

1

Eu estou procurando um comando / linha para obter as informações com que freqüência era um arquivo / caminho específico acessado a partir do servidor web. (fonte: log de acesso padrão da nignx)

Ele deve verificar todos os logs (um atual e compactado) e retornar um número ou todas as entradas dos arquivos de log com o arquivo / caminho específico.

Razão: Quero limpar um antigo espaço da Web comercial de seus arquivos mortos. Muitos arquivos são / foram usados anos atrás para uso externo. (como boletins informativos, listagens). Outros parece ser duplicatas que poderiam ser apenas para fins de teste dos antigos administradores.

Informações adicionais:

SO: Debian Jessie (x64)

Servidor: nginx / 1.6.2

Localização: / var / logs / nginx /

Compressão de arquivos de log: gzip

Arquivos:

2825674 | myDomainName_access.log
3895051 | myDomainName_access.log.1
 106353 | myDomainName_access.log.2.gz
 244729 | myDomainName_access.log.3.gz
 143118 | myDomainName_access.log.4.gz
  55763 | myDomainName_access.log.5.gz

Exemplo de INPUT

Você precisa entrar na raiz do seu domínio.tld e digitar o seguinte comando:

(apenas um exemplo muito simplificado)

user@host:/var/www/domain.tld# filesInLogCheck /var/logs/nginx/domain-access.* subfolder/index.php

OUTPUT

x.x.x.x - - [07/Mar/2016:10:13:29 +0100] "/subfolder/handle.php HTTP/1.1" 200 22 "https://domain.tld/subfolder/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
x.x.x.x - - [07/Mar/2016:10:16:37 +0100] "/subfolder/handle.php HTTP/1.1" 200 104 "https://domain.tld/subfolder/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
x.x.x.x - - [07/Mar/2016:10:21:39 +0100] "GET /subfolder/ HTTP/1.1" 200 12589 "https://domain.tld/subfolder/index.php" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
x.x.x.x - - [11/Mar/2016:11:18:36 +0100] "/subfolder/handle.php HTTP/1.1" 200 1206 "https://domain.tld/subfolder/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:19:05 +0100] "/subfolder/handle.php HTTP/1.1" 200 129 "https://domain.tld/subfolder/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:19:49 +0100] "/subfolder/handle.php HTTP/1.1" 200 120 "https://domain.tld/subfolder/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:22:09 +0100] "GET /subfolder/ HTTP/1.1" 200 16008 "https://domain.tld/subfolder/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:27:49 +0100] "/subfolder/handle.php HTTP/1.1" 200 468 "https://domain.tld/subfolder/index.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:28:03 +0100] "GET /subfolder/ HTTP/1.1" 200 16007 "https://domain.tld/subfolder/index.php" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"
x.x.x.x - - [11/Mar/2016:11:28:24 +0100] "/subfolder/handle.php HTTP/1.1" 200 468 "https://domain.tld/subfolder/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:45.0) Gecko/20100101 Firefox/45.0"

Ou mais limpo OUTPUT:

[07/Mar/2016:10:13:29 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/index.php" 
[07/Mar/2016:10:16:37 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/index.php" 
[07/Mar/2016:10:21:39 +0100] | "GET /subfolder/" | "https://domain.tld/subfolder/index.php"
[11/Mar/2016:11:18:36 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/"
[11/Mar/2016:11:19:05 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/"
[11/Mar/2016:11:19:49 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/"
[11/Mar/2016:11:22:09 +0100] | "GET /subfolder/" | "https://domain.tld/subfolder/"
[11/Mar/2016:11:27:49 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/index.php"
[11/Mar/2016:11:28:03 +0100] | "GET /subfolder/" | "https://domain.tld/subfolder/index.php"
[11/Mar/2016:11:28:24 +0100] | "/subfolder/handle.php" | "https://domain.tld/subfolder/"
    
por Sascha 10.03.2016 / 11:59

1 resposta

2

Se eu entendi corretamente, o comando pode ser

$ grep GET access.log | awk '{print $7}' | cut -d '?' -f 1 | sort | uniq -c | sort -r -n -k 1 | head -10
 114179 /bitrix/spread.php
  13208 /bitrix/tools/public_session.php
  11945 /
   4393 /accessories/cases/
   2268 /search/
   2079 /ajax/actions.php
   1951 /shop/
   1591 /search
   1388 /apple-watch/
   1267 /apple-iphone/iphone-6s/

o comando mostrará os 10 links mais visitados. Se você realmente precisa de todos os links basta remover 'head -10'.

Para arquivos gz, você pode usar o seguinte

$ zcat access.log.gz | grep GET | awk '{print $7}' | cut -d '?' -f 1 | sort | uniq -c | sort -r -n -k 1 | head -10

And no there isn't a single command which will complete your task in one line

você está errado, um script de linha. Pipelines no bash são realmente poderosos;)

# zcat -f -- /var/log/httpd/* | grep GET | awk '{print $7}' | cut -d '?' -f 1 | sort | uniq -c | sort -r -n -k 1 | head -10 | awk '{SUM+=$1;print $0} END{print "Total hits: "SUM}'
  15249 /sites/all/modules/lightbox2/js/lightbox.js
    173 /scripts/template/
    128 /libs/bundler.php
    125 /libs/jquery.min.js
     60 /vSample
Total hits: 15735

Mais script universal

#!/bin/bash

readonly LOG_DIR='/var/log/nginx'
readonly TOPS=5
readonly METHOD='GET|POST'

/bin/zcat -f -- ${LOG_DIR}/* | grep -E "${METHOD}" | awk '{print $7}' | cut -d '?' -f 1 | sort | uniq -c | sort -r -n -k 1 | head -${TOPS} | awk '{SUM+=$1;print $0} END{print "Total hits: "SUM}'

Resultado do teste

# ./tops.sh
  15249 /sites/all/modules/lightbox2/js/lightbox.js
    173 /scripts/template/
    128 /libs/bundler.php
    125 /libs/jquery.min.js
     60 /vSample
Total hits: 15735
    
por 10.03.2016 / 20:27