Skip to content

carlosabalde/vcc

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
vcc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Varnish Custom Counters (VCC) allows aggregation of custom log entries extracted from Varnish shared memory log (VSL).

VCC is a simple PoC Python script (Python >= 2.6 & < 3 required) showing how to access to VSL data (only Varnish 3.x is supported at the moment) using libvarnishapi.so and ctypes. Fetched items are locally aggregated using some user selected operator (currently count, hll, min, max, avg, last & first are supported) and periodically rendered in an ugly curses UI.

Remember this is just a PoC. Don't expect updates or fixes here. Anyway, comments, improvements and contributions are welcome!

VCC is sponsored by Allenta Consulting, the Varnish Software integration partner for Spain and Portugal.

Example

Using the following VCL:

sub vcl_deliver {
    std.log("vcc:Sample counter #1 (COUNT):count:");
    std.log("vcc:Sample counter #2 (HLL):hll,5,234:" + req.http.X-Whatever);
    std.log("vcc:Sample counter #3 (MIN):min:" + req.http.X-Whatever);
    std.log("vcc:Sample counter #4 (MAX):max:" + req.http.X-Whatever);
    std.log("vcc:Sample counter #5 (AVG):avg:" + req.http.X-Whatever);
    std.log("vcc:Sample counter #6 (FIRST):first:" + req.http.X-Whatever);
    std.log("vcc:Sample counter #7 (LAST):last:" + req.http.X-Whatever);
}

After processing some requests, you will get something like:

https://github.com/carlosabalde/vcc/raw/master/extras/screenshot.png

QuickStart

  1. Install VCC and all its dependencies:

    ~$ sudo pip install VCC
    
  2. Add some logging statement to your VCL. Format of logged messages is:

    vcc:<counter name>:<aggregation function + configuration>:<value>
    

    Only the hll aggregation function requires configuration parameters: k (integer value in the range [2, 16]) and seed (integer value). Please, refer to https://github.com/ascv/HyperLogLog for extra information.

  3. Execute VCC while Varnish is processing requests (use --help for extra options):

    ~$ vcc --version 3 --nwindows=10 --wsize=60
    

About

Varnish Custom Counters (VCC) allows aggregation of custom log entries extracted from Varnish shared memory log.

Resources

License

Stars

Watchers

Forks

Packages

No packages published