docker api

This commit is contained in:
Stefan Schwarz 2020-12-28 02:22:33 +01:00
parent b6a86b5401
commit 4f41e275d6
836 changed files with 262259 additions and 4 deletions

32
main.go
View file

@ -2,23 +2,43 @@ package main
import (
"bufio"
"context"
"fmt"
"io"
"log"
"net/http"
"os"
"regexp"
"strconv"
"net/http"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
const COUNTER_SLOTS = 20
func main() {
containerName, ok := os.LookupEnv("CONTAINER_NAME")
if !ok {
log.Fatalf("unable to read CONTAINER_NAME")
}
defaultHeaders := map[string]string{"User-Agent": "engine-api-cli-1.0"}
cli, err := client.NewClient("unix:///var/run/docker.sock", "v1.44", nil, defaultHeaders)
if err != nil {
log.Fatalf("unread: %s", err)
}
logs, err := cli.ContainerLogs(context.TODO(), containerName, types.ContainerLogsOptions{})
if err != nil {
log.Fatalf("unread: %s", err)
}
defer logs.Close()
counter := NewCounter()
go counter.ScanStdin()
go counter.Scan(logs)
http.HandleFunc("/", counter.MetricsHandler)
err := http.ListenAndServe(":8080", nil)
err = http.ListenAndServe(":8080", nil)
log.Fatalf("unable to listen: %s", err)
}
@ -44,8 +64,12 @@ func (c *Counter) MetricsHandler(w http.ResponseWriter, r *http.Request) {
}
func (c *Counter) ScanStdin() {
c.Scan(os.Stdin)
}
func (c *Counter) Scan(in io.Reader) {
matcher := regexp.MustCompile(`/hls/stream-([0-9]*).ts`)
scanner := bufio.NewScanner(os.Stdin)
scanner := bufio.NewScanner(in)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {