Ei kuvausta

Jake Kalstad 57e7cc4cb3 add import line to readme 4 vuotta sitten
content ff5124d097 adding read me and adding error handling 4 vuotta sitten
analytics.go ff5124d097 adding read me and adding error handling 4 vuotta sitten
analytics_mock.go ff5124d097 adding read me and adding error handling 4 vuotta sitten
go.mod ff5124d097 adding read me and adding error handling 4 vuotta sitten
go.sum ff5124d097 adding read me and adding error handling 4 vuotta sitten
readme.md 57e7cc4cb3 add import line to readme 4 vuotta sitten

readme.md

go-web-analytics

A minimal analytics package to start collecting traffic data without client dependencies.

Logging incoming requests

import "github.com/JakeKalstad/go-web-analytics"

analytics := NewAnalytics(AnalyticsConfiguration{
            Name:                 "sanjuanpuertorico",
            Password:             os.Getenv("DASHBOARD_KEY"),
            GroupByURLSegment:    1,
            EntriesByURLSegment:  2,
            WriteScheduleSeconds: 30,
            Directory:            "logs",
            HashIPSecret:         os.Getenv("HASH_IP_KEY"),
            UserAgentBlackList:   DefaultUserAgentBlacklist,
        }, fmt.Println)


router.Use(func(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        analytics.InsertRequest(r)
        next.ServeHTTP(w, r)
    })
})

Dashboard

router.HandleFunc("/analytics", analytics.Dashboard).Methods("GET")

Configuration

type AnalyticsConfiguration struct {
    HashIPSecret         string
    GroupByURLSegment    int
    EntriesByURLSegment  int
    WriteScheduleSeconds int
    Name                 string
    Password             string
    Directory            string
    UserAgentBlackList   []string
}

HashIPSecret is a seed that if provided will be used to hash the IP so you don't have plaintext user IPs stored

GroupByURLSegment index in the URL split by / to group the results

EntriesByURLSegment index in the URL split by / to count as results

WriteScheduleSeconds how often we write to the file Name of file

Directory parent directory for the log files

Password for a dashboard if it's used /analytics?k=mypassword

UserAgentBlacklist entries to check if the user agent contains in order to avoid things like bots or automated tests