Skip to content

asecurityteam/component-connstate

Repository files navigation

component-connstate - Settings component for collecting HTTP server metrics

GoDoc

autoauto- [component-connstate - Settings component for collecting HTTP server metrics](#component-connstate---settings-component-for-collecting-http-server-metrics)auto - [Overview](#overview)auto - [Quick Start](#quick-start)auto - [Status](#status)auto - [Contributing](#contributing)auto - [Building And Testing](#building-and-testing)auto - [License](#license)auto - [Contributing Agreement](#contributing-agreement)autoauto

Overview

This is a settings that enables constructing a metrics gathering component that integrates with the http.Server.ConnState hook. It works by tracking the state of all active connections and any state changes of a connection while the server runs.

Quick Start

package main

import (
    "context"
    "net/http"

    stat "github.com/asecurityteam/component-stat"
    stat "github.com/asecurityteam/component-connstate"
    "github.com/asecurityteam/settings/v2"
)

func main() {
    ctx := context.Background()
    envSource := settings.NewEnvSource(os.Environ())

    s, _ := stat.New(ctx, envSource)
    cs, _ := connstate.Load(ctx, envSource, connstate.NewComponent().WithStat(s))
    defer cs.Close()

    srv := &http.Server{
        ConnState: cs.HandleEvent,
    }
    go cs.Report()

    _ = srv.ListenAndServe()
}

Status

This project is in incubation which means we are not yet operating this tool in production and the interfaces are subject to change.

Contributing

Building And Testing

We publish a docker image called SDCLI that bundles all of our build dependencies. It is used by the included Makefile to help make building and testing a bit easier. The following actions are available through the Makefile:

  • make dep

    Install the project dependencies into a vendor directory

  • make lint

    Run our static analysis suite

  • make test

    Run unit tests and generate a coverage artifact

  • make integration

    Run integration tests and generate a coverage artifact

  • make coverage

    Report the combined coverage for unit and integration tests

License

This project is licensed under Apache 2.0. See LICENSE.txt for details.

Contributing Agreement

Atlassian requires signing a contributor's agreement before we can accept a patch. If you are an individual you can fill out the individual CLA. If you are contributing on behalf of your company then please fill out the corporate CLA.