Like Prometheus, but for logs.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
loki/pkg/logcli/index/stats.go

51 lines
1.0 KiB

package index
import (
"fmt"
"log"
"time"
"github.com/fatih/color"
"github.com/grafana/loki/pkg/logcli/client"
"github.com/grafana/loki/pkg/logproto"
)
type StatsQuery struct {
QueryString string
Start time.Time
End time.Time
Quiet bool
}
// DoStats executes the stats query and prints the results
func (q *StatsQuery) DoStats(c client.Client) {
stats := q.Stats(c)
kvs := stats.LoggingKeyValues()
fmt.Print("{\n")
for i := 0; i < len(kvs)-1; i = i + 2 {
k := kvs[i].(string)
v := kvs[i+1]
if k == "bytes" {
fmt.Printf(" %s: %s\n", color.BlueString(k), v)
continue
}
fmt.Printf(" %s: %d\n", color.BlueString(k), v)
}
fmt.Print("}\n")
}
// Stats returns an index stats response
func (q *StatsQuery) Stats(c client.Client) *logproto.IndexStatsResponse {
var statsResponse *logproto.IndexStatsResponse
var err error
statsResponse, err = c.GetStats(q.QueryString, q.Start, q.End, q.Quiet)
if err != nil {
log.Fatalf("Error doing request: %+v", err)
}
return statsResponse
}