Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cmd/logcli: support load config from file #218

Merged
merged 1 commit into from
Feb 22, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions cmd/logcli/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package main

// Config is the root config for Logcli.
type Config struct {
Addr string `yaml:"addr,omitempty"`
Username string `yaml:"username,omitempty"`
Password string `yaml:"password,omitempty"`
}

func getConfig(configFile string) (*Config, error) {
var config Config

// if not specify config file, keep same with default value
if configFile == "" {
config = Config{Addr: "https://logs-us-west1.grafana.net"}
return &config, nil
}

return &config, nil
}
5 changes: 5 additions & 0 deletions cmd/logcli/logcli-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
addr: https://logs-us-west1.grafana.net

username:

password:
20 changes: 16 additions & 4 deletions cmd/logcli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import (
)

var (
app = kingpin.New("logcli", "A command-line for loki.")
addr = app.Flag("addr", "Server address.").Default("").Envar("GRAFANA_ADDR").String()
username = app.Flag("username", "Username for HTTP basic auth.").Default("").Envar("GRAFANA_USERNAME").String()
password = app.Flag("password", "Password for HTTP basic auth.").Default("").Envar("GRAFANA_PASSWORD").String()
app = kingpin.New("logcli", "A command-line for loki.")

config = app.Flag("config", "Logcli config.").Default("").String()

addr, username, password *string

queryCmd = app.Command("query", "Run a LogQL query.")
queryStr = queryCmd.Arg("query", "eg '{foo=\"bar\",baz=\"blip\"}'").Required().String()
Expand All @@ -26,6 +27,17 @@ var (
)

func main() {
// get val from config file
cfg, err := getConfig(*config)
if err != nil {
fmt.Println(err)
os.Exit(1)
}

addr = app.Flag("addr", "Server address.").Default(cfg.Addr).Envar("GRAFANA_ADDR").String()
username = app.Flag("username", "Username for HTTP basic auth.").Default(cfg.Username).Envar("GRAFANA_USERNAME").String()
password = app.Flag("password", "Password for HTTP basic auth.").Default(cfg.Password).Envar("GRAFANA_PASSWORD").String()

switch kingpin.MustParse(app.Parse(os.Args[1:])) {
case queryCmd.FullCommand():
if *addr == "" {
Expand Down
7 changes: 7 additions & 0 deletions docs/logcli.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ Common labels: {job="cortex-ops/consul", namespace="cortex-ops"}
2018-06-25T12:52:09Z {instance="consul-8576459955-pl75w"} 2018/06/25 12:52:09 [INFO] raft: Snapshot to 475409 complete
2018-06-25T12:52:09Z {instance="consul-8576459955-pl75w"} 2018/06/25 12:52:09 [INFO] raft: Compacting logs from 456973 to 465169
```
You may use `--config=path/to/file` to load configuration options from a file. For an example file see `cmd/logcli/logcli-config.yaml`

Configuration values are considered in the following order (lowest to highest):
- config file
- environment value
- command line

The URLs of the requests are printed to help with integration work.

Expand All @@ -34,6 +40,7 @@ Flags:
--addr="" Server address, need to specify.
--username="" Username for HTTP basic auth.
--password="" Password for HTTP basic auth.
--config="" Configuration file for logcli.

Commands:
help [<command>...]
Expand Down