Category Archives: Ubuntu/Debian

varnishlog useful admin commands

Top REQUEST methods
varnishtop -i ReqMethod

Top URLs that MISS the cache
varnishtop -i BereqURL

Top URLS that HIT the cache
varnishtop -i ReqURL

All URLs that HIT the cache in real time
varnishlog -g request -q ‘VCL_call eq HIT’ | grep reqURL

All URLs that MISS the cache in real time
varnishlog -g request -q ‘VCL_call eq MISS’ | grep reqURL

All URLs that MISS the cache in real time
varnishlog -i BereqURL

Look at an incoming client request of a specific URL
varnishlog -c -q “ReqUrl eq ‘/'”

Look at a a backend request of a specific URL
varnishlog -i -q “BereqURL eq ‘/'”

See requests for one specific Hostname
varnishlog -c -q “ReqHeader eq ‘Host: www.mydomain.com'”

See the age of the cache objects for a specific hostname
varnishlog -c -q “ReqHeader eq ‘Host: www.mydomain.com'” | grep Age

All 404
varnishlog -b -q “ObjStatus eq 404”

Linux cut command

Cut out selected fields of each line of a file.

Syntax

cut [-b] [-c] [-f] list [-n] [-d delim] [-s] [file]

-b list The list following -b specifies byte positions (for instance, -b1-72 would pass the first 72
bytes of each line). When -b and -n are used together, list is adjusted so that no multi-byte character is split. If -b is used, the input line should contain 1023 bytes or less.
-c list The list following -c specifies character positions (for instance, -c1-72 would pass the first 72 characters of each line).
-f list The list following -f is a list of fields assumed to be separated in the file by a delimiter character (see -d ); for instance, -f1,7 copies the first and seventh field only. Lines with no field delimiters will be passed through intact (useful for table subheadings), unless -s is specified. If -f is used, the input line should contain 1023 characters or less.
list A comma-separated or blank-character-separated list of integer field numbers (in increasing order), with optional – to indicate ranges (for instance, 1,4,7; 1-3,8; -5,10 (short for 1-5,10); or 3- (short for third through last field)).
-n Do not split characters. When -b list and -n are used together, list is adjusted so that no multi-byte character is split.
-d The character following -d is the field delimiter (-f option only). Default is tab. Space or other characters with special meaning to the shell must be quoted. The delimiter can be a multi-byte character.
-s Suppresses lines with no delimiter characters in case of -f option. Unless specified, lines with no delimiters will be passed through untouched.
file A path name of an input file. If no file operands are specified, or if a file operand is -, the standard input will be used

Example: Use cut to get your ipv4 IP address:

ifconfig eth0 |grep 'inet addr' |cut -d ':' -f 1,2 | cut -c 21- | cut -c -14

Downloading missing apt repo keys from behind a firewall

After installing a ubuntu 12.04 (precise) server on a host behind a firewall. I tried to update the apt repositories to install some software. And received the following error message:

W: GPG error: http://extras.ubuntu.com precise Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 16126D3A3E5C1192

So I tried to fetch the missing key with:

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192

Which did not work because the firewall was blocking port 11371 which is needed to fetch the apt keys. What a pain there must be a way to fetch the keys via another port. Maybe port 80 which should be open in most cases. Then I came across this command which did the magic:

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 16126D3A3E5C1192

This command fetches the missing keys via port 80 which worked for me. If you need more than one key just add them to the –recv-keys line seperated by a space. Thats it.