Go bindings for Varnish 6.0, 7.2 and 7.3.
Older Varnish versions are not supported.
To build this package you will need:
- pkg-config
- libvarnishapi-dev
You will also need to set PKG_CONFIG_PATH to the directory where varnishapi.pc
is located before running go get
. For example:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
go get github.com/varnishcache-friends/vago
Same as running varnishlog -g raw
:
package main
import (
"fmt"
"log"
"github.com/varnishcache-friends/vago"
)
func main() {
// Open the default Varnish Shared Memory file
c := vago.Config{}
v, err := vago.Open(&c)
if err != nil {
log.Fatal(err)
}
v.Log("", vago.RAW, vago.COPT_TAIL|vago.COPT_BATCH, func(vxid uint32, tag, _type, data string) int {
fmt.Printf("%10d %-14s %s %s\n", vxid, tag, _type, data)
// -1 : Stop after it finds the first record
// >= 0 : Nothing to do but wait
return 0
})
v.Close()
}
Same for varnishstat -1
:
package main
import (
"fmt"
"log"
"github.com/varnishcache-friends/vago"
)
func main() {
// Open the default Varnish Shared Memory file
c := vago.Config{}
v, err := vago.Open(&c)
if err != nil {
log.Fatal(err)
}
stats := v.Stats()
for field, value := range stats {
fmt.Printf("%-35s\t%12d\n", field, value)
}
v.Close()
}