Novel HN: A Lag Library for Site Log Diagnosis

44
Novel HN: A Lag Library for Site Log Diagnosis

2022 March 13 16: 23 stuartscott 177537¤ 1255¤

So that you wrote a internet server in Lag and, like dishes at a like restaurant, pages are getting served.


kit most most necessary

import (
	"log"
	"rep/http"
)

func most most necessary() {
	// Make Multiplexer
	mux :=http.NewServeMux()

	// Tackle Index
	mux.Tackle("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Search data from) {
		w.Header().Residing("Dispute material-Variety", "text/undeniable")
		w.Write([]byte("Hi there World!"))
	}))

	// Lend a hand HTTP Requests
	log.Println("HTTP Server Listening on : 80")
	if err :=http.ListenAndServe(": 80", mux); err !=nil {
		log.Fatal(err)
	}
}

By now you potentially beget some questions, like;

  • What’s the most smartly-most in model page?
  • When attain most traffic come?
  • How lengthy attain traffic stop?
  • Which facets need to be added subsequent?

You would use one of the most many internet page analytic services but then the identity and habits of your traffic is being given away to a third salvage together.

This article will demonstrate you the procedure to utilize netgo to attain insights into your traffic while respecting your users and maintaining your log records confidential.

As consistently, the code shown is open source and hosted on GitHub.

Step 1: Assemble

The predominant fragment of any records prognosis mission is rarely any doubt the records itself, and so your first step is to amass it.

netgo affords two utilities to motivate with this endeavor; the first configures the log kit within the recent library to jot down to each and every comparable outdated output and a file to be succesful to beget a permanent document, and the 2nd utility wraps your handlers so the request records is written to the log:


import (
	"aletheiaware.com/netgo"
	"aletheiaware.com/netgo/handler"

	// ...
)

func most most necessary() {
	// Configure Logging
	logFile, err :=netgo.SetupLogging()
	if err !=nil {
		log.Fatal(err)
	}
	defer logFile.Shut()
	log.Println("Log File:", logFile.Title())

	// ...

	mux.Tackle("/", handler.Log(http.HandlerFunc(func(w http.ResponseWriter, r *http.Search data from) {
		// ...
	})))

	// ...
}

Step 2: Extract

After working your internet server for a while that you can beget accumulated a bask in trove of records within the create of a directory stuffed with log files. The next step is to parse these files and extract the records.

netgo involves logparser which scans thru the total log files within the given directory, extracts the request records while ignoring the leisure, and populates an SQLite database for easy querying.


$ jog set up aletheiaware.com/netgo/cmd/logparser

$ logparser logs/

Characterize: parsing can lift somewhat about a minutes – better jog make a devoted cup of tea ☕️

Step 3: Analyze

Once the total log records is in a database you are going to favor to slash, dice, and visualize it so you are going to be in a attach to acknowledge traits and name alternatives.

netgo involves logserver which affords a dashboard to look and realize your server‘s traffic.


$ jog set up aletheiaware.com/netgo/cmd/logserver

$ logserver

In case you open your browser and navigate to localhost you are going to display screen a histogram of requests over time, and plenty of different bar charts exhibiting which addresses beget made the most requests, what are the most smartly-most in model URLs, and what are the commonest HTTP Protocols, Suggestions, and Headers.

The dashboard within the screenshot below shows the traffic from the first week of the recent Level of view internet page that changed into as soon as launched in a outdated article.

Read More

Charlie Layers
WRITTEN BY

Charlie Layers

Fill your life with experiences so you always have a great story to tell