feat: add vector integration

This currently is missing a few features:

- global sinks
- logrotation

But works fairly well otherwise.
This commit is contained in:
Jose Diaz-Gonzalez
2021-01-04 00:30:22 -05:00
parent b386783ec8
commit fd85b1f605
15 changed files with 628 additions and 5 deletions

View File

@@ -23,7 +23,12 @@ Additional commands:`
helpContent = `
logs [-h] [-t|--tail] [-n|--num num] [-q|--quiet] [-p|--ps process] <app>, Display recent log output
logs:failed [<app>], Shows the last failed deploy logs
logs:failed [--all|<app>], Shows the last failed deploy logs
logs:report [<app>] [<flag>], Displays a logs report for one or more apps
logs:set <app> <key> <value>, Set or clear a logs property for an app
logs:vector-logs, Tail the logs of the vector container
logs:vector-start, Start the vector logging container
logs:vector-stop, Stop the vector logging container
`
)

View File

@@ -24,6 +24,34 @@ func main() {
args.Parse(os.Args[2:])
appName := args.Arg(0)
err = logs.CommandFailed(appName, *allApps)
case "report":
args := flag.NewFlagSet("logs:report", flag.ExitOnError)
osArgs, infoFlag, err := common.ParseReportArgs("logs", os.Args[2:])
if err == nil {
args.Parse(osArgs)
appName := args.Arg(0)
err = logs.CommandReport(appName, infoFlag)
}
case "set":
args := flag.NewFlagSet("logs:set", flag.ExitOnError)
args.Parse(os.Args[2:])
appName := args.Arg(0)
property := args.Arg(1)
value := args.Arg(2)
err = logs.CommandSet(appName, property, value)
case "vector-logs":
args := flag.NewFlagSet("logs:vector-logs", flag.ExitOnError)
args.Parse(os.Args[2:])
err = logs.CommandVectorLogs()
case "vector-start":
args := flag.NewFlagSet("logs:vector-start", flag.ExitOnError)
vectorImage := args.String("vector-image", logs.VectorImage, "--vector-image: the name of the docker image to run for vector")
args.Parse(os.Args[2:])
err = logs.CommandVectorStart(*vectorImage)
case "vector-stop":
args := flag.NewFlagSet("logs:vector-stop", flag.ExitOnError)
args.Parse(os.Args[2:])
err = logs.CommandVectorStop()
default:
common.LogFail(fmt.Sprintf("Invalid plugin subcommand call: %s", subcommand))
}

View File

@@ -0,0 +1,36 @@
package main
import (
"flag"
"fmt"
"os"
"strings"
"github.com/dokku/dokku/plugins/common"
"github.com/dokku/dokku/plugins/logs"
)
// main entrypoint to all triggers
func main() {
parts := strings.Split(os.Args[0], "/")
trigger := parts[len(parts)-1]
flag.Parse()
var err error
switch trigger {
case "install":
err = logs.TriggerInstall()
case "post-delete":
appName := flag.Arg(0)
err = logs.TriggerPostDelete(appName)
case "report":
appName := flag.Arg(0)
err = logs.ReportSingleApp(appName, "")
default:
common.LogFail(fmt.Sprintf("Invalid plugin trigger call: %s", trigger))
}
if err != nil {
common.LogFail(err.Error())
}
}