feat(inputs.solr): Support version 7.x to 9.3 (#13699)
This commit is contained in:
parent
bc8070f241
commit
2ae65d1a94
|
|
@ -5,7 +5,7 @@ Request Handler][1].
|
||||||
|
|
||||||
More about [performance statistics][2].
|
More about [performance statistics][2].
|
||||||
|
|
||||||
Tested from 3.5 to 7.*
|
Tested from 3.5 to 9.3
|
||||||
|
|
||||||
[1]: https://cwiki.apache.org/confluence/display/solr/MBean+Request+Handler
|
[1]: https://cwiki.apache.org/confluence/display/solr/MBean+Request+Handler
|
||||||
|
|
||||||
|
|
@ -29,7 +29,7 @@ See the [CONFIGURATION.md][CONFIGURATION.md] for more details.
|
||||||
servers = ["http://localhost:8983"]
|
servers = ["http://localhost:8983"]
|
||||||
|
|
||||||
## specify a list of one or more Solr cores (default - all)
|
## specify a list of one or more Solr cores (default - all)
|
||||||
# cores = ["main"]
|
# cores = ["*"]
|
||||||
|
|
||||||
## Optional HTTP Basic Auth Credentials
|
## Optional HTTP Basic Auth Credentials
|
||||||
# username = "username"
|
# username = "username"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,263 @@
|
||||||
|
package solr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf"
|
||||||
|
)
|
||||||
|
|
||||||
|
type apiConfig struct {
|
||||||
|
endpointAdmin string
|
||||||
|
endpointMBeans string
|
||||||
|
keyCore string
|
||||||
|
keyCache string
|
||||||
|
keyUpdateHandler string
|
||||||
|
keyQueryHandler string
|
||||||
|
}
|
||||||
|
|
||||||
|
func newAPIv1Config() *apiConfig {
|
||||||
|
return &apiConfig{
|
||||||
|
endpointAdmin: "/solr/admin/cores?action=STATUS&wt=json",
|
||||||
|
endpointMBeans: "/admin/mbeans?stats=true&wt=json&cat=CORE&cat=QUERYHANDLER&cat=UPDATEHANDLER&cat=CACHE",
|
||||||
|
keyCore: `"CORE"`,
|
||||||
|
keyCache: `"CACHE"`,
|
||||||
|
keyQueryHandler: `"QUERYHANDLER"`,
|
||||||
|
keyUpdateHandler: `"UPDATEHANDLER"`,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func newAPIv2Config() *apiConfig {
|
||||||
|
return &apiConfig{
|
||||||
|
endpointAdmin: "/solr/admin/cores?action=STATUS&wt=json",
|
||||||
|
endpointMBeans: "/admin/mbeans?stats=true&wt=json&cat=CORE&cat=QUERY&cat=UPDATE&cat=CACHE",
|
||||||
|
keyCore: `"CORE"`,
|
||||||
|
keyCache: `"CACHE"`,
|
||||||
|
keyQueryHandler: `"QUERY"`,
|
||||||
|
keyUpdateHandler: `"UPDATE"`,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) adminEndpoint(server string) string {
|
||||||
|
return strings.TrimSuffix(server, "/") + cfg.endpointAdmin
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) mbeansEndpoint(server, core string) string {
|
||||||
|
return strings.TrimSuffix(server, "/") + "/solr/" + strings.Trim(core, "/") + cfg.endpointMBeans
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) parseCore(acc telegraf.Accumulator, core string, data *MBeansData, ts time.Time) {
|
||||||
|
// Determine the core information element
|
||||||
|
var coreData json.RawMessage
|
||||||
|
for i := 0; i < len(data.SolrMbeans); i += 2 {
|
||||||
|
if string(data.SolrMbeans[i]) == cfg.keyCore {
|
||||||
|
coreData = data.SolrMbeans[i+1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if coreData == nil {
|
||||||
|
acc.AddError(errors.New("no core metric data to unmarshal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var coreMetrics map[string]Core
|
||||||
|
if err := json.Unmarshal(coreData, &coreMetrics); err != nil {
|
||||||
|
acc.AddError(fmt.Errorf("unmarshalling core metrics for %q failed: %w", core, err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, m := range coreMetrics {
|
||||||
|
if strings.Contains(name, "@") {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fields := map[string]interface{}{
|
||||||
|
"deleted_docs": m.Stats.DeletedDocs,
|
||||||
|
"max_docs": m.Stats.MaxDoc,
|
||||||
|
"num_docs": m.Stats.NumDocs,
|
||||||
|
}
|
||||||
|
tags := map[string]string{
|
||||||
|
"core": core,
|
||||||
|
"handler": name,
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AddFields("solr_core", fields, tags, ts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) parseCache(acc telegraf.Accumulator, core string, data *MBeansData, ts time.Time) {
|
||||||
|
// Determine the cache information element
|
||||||
|
var cacheData json.RawMessage
|
||||||
|
for i := 0; i < len(data.SolrMbeans); i += 2 {
|
||||||
|
if string(data.SolrMbeans[i]) == cfg.keyCache {
|
||||||
|
cacheData = data.SolrMbeans[i+1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if cacheData == nil {
|
||||||
|
acc.AddError(errors.New("no cache metric data to unmarshal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var cacheMetrics map[string]Cache
|
||||||
|
if err := json.Unmarshal(cacheData, &cacheMetrics); err != nil {
|
||||||
|
acc.AddError(fmt.Errorf("unmarshalling update handler for %q failed: %w", core, err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, metrics := range cacheMetrics {
|
||||||
|
fields := make(map[string]interface{}, len(metrics.Stats))
|
||||||
|
for key, value := range metrics.Stats {
|
||||||
|
splitKey := strings.Split(key, ".")
|
||||||
|
newKey := splitKey[len(splitKey)-1]
|
||||||
|
switch newKey {
|
||||||
|
case "cumulative_evictions", "cumulative_hits", "cumulative_inserts", "cumulative_lookups",
|
||||||
|
"eviction", "evictions", "hits", "inserts", "lookups", "size":
|
||||||
|
fields[newKey] = getInt(value)
|
||||||
|
case "hitratio", "cumulative_hitratio":
|
||||||
|
fields[newKey] = getFloat(value)
|
||||||
|
case "warmupTime":
|
||||||
|
fields["warmup_time"] = getInt(value)
|
||||||
|
default:
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := map[string]string{
|
||||||
|
"core": core,
|
||||||
|
"handler": name,
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AddFields("solr_cache", fields, tags, ts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) parseQueryHandler(acc telegraf.Accumulator, core string, data *MBeansData, ts time.Time) {
|
||||||
|
// Determine the query-handler information element
|
||||||
|
var queryData json.RawMessage
|
||||||
|
for i := 0; i < len(data.SolrMbeans); i += 2 {
|
||||||
|
if string(data.SolrMbeans[i]) == cfg.keyQueryHandler {
|
||||||
|
queryData = data.SolrMbeans[i+1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if queryData == nil {
|
||||||
|
acc.AddError(errors.New("no query handler metric data to unmarshal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var queryMetrics map[string]QueryHandler
|
||||||
|
if err := json.Unmarshal(queryData, &queryMetrics); err != nil {
|
||||||
|
acc.AddError(fmt.Errorf("unmarshalling query handler for %q failed: %w", core, err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, metrics := range queryMetrics {
|
||||||
|
if metrics.Stats == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var values map[string]interface{}
|
||||||
|
switch v := metrics.Stats.(type) {
|
||||||
|
case []interface{}:
|
||||||
|
values = make(map[string]interface{}, len(v)/2)
|
||||||
|
for i := 0; i < len(v); i += 2 {
|
||||||
|
key, ok := v[i].(string)
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
values[key] = v[i+1]
|
||||||
|
}
|
||||||
|
case map[string]interface{}:
|
||||||
|
values = v
|
||||||
|
default:
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
fields := map[string]interface{}{
|
||||||
|
"15min_rate_reqs_per_second": getFloat(values["15minRateReqsPerSecond"]),
|
||||||
|
"5min_rate_reqs_per_second": getFloat(values["5minRateReqsPerSecond"]),
|
||||||
|
"75th_pc_request_time": getFloat(values["75thPcRequestTime"]),
|
||||||
|
"95th_pc_request_time": getFloat(values["95thPcRequestTime"]),
|
||||||
|
"99th_pc_request_time": getFloat(values["99thPcRequestTime"]),
|
||||||
|
"999th_pc_request_time": getFloat(values["999thPcRequestTime"]),
|
||||||
|
"avg_requests_per_second": getFloat(values["avgRequestsPerSecond"]),
|
||||||
|
"avg_time_per_request": getFloat(values["avgTimePerRequest"]),
|
||||||
|
"errors": getInt(values["errors"]),
|
||||||
|
"handler_start": getInt(values["handlerStart"]),
|
||||||
|
"median_request_time": getFloat(values["medianRequestTime"]),
|
||||||
|
"requests": getInt(values["requests"]),
|
||||||
|
"timeouts": getInt(values["timeouts"]),
|
||||||
|
"total_time": getFloat(values["totalTime"]),
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := map[string]string{
|
||||||
|
"core": core,
|
||||||
|
"handler": name,
|
||||||
|
}
|
||||||
|
acc.AddFields("solr_queryhandler", fields, tags, ts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cfg *apiConfig) parseUpdateHandler(acc telegraf.Accumulator, core string, data *MBeansData, ts time.Time) {
|
||||||
|
// Determine the update-handler information element
|
||||||
|
var updateData json.RawMessage
|
||||||
|
for i := 0; i < len(data.SolrMbeans); i += 2 {
|
||||||
|
if string(data.SolrMbeans[i]) == cfg.keyUpdateHandler {
|
||||||
|
updateData = data.SolrMbeans[i+1]
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if updateData == nil {
|
||||||
|
acc.AddError(errors.New("no update handler metric data to unmarshal"))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var updateMetrics map[string]UpdateHandler
|
||||||
|
if err := json.Unmarshal(updateData, &updateMetrics); err != nil {
|
||||||
|
acc.AddError(fmt.Errorf("unmarshalling update handler for %q failed: %w", core, err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, metrics := range updateMetrics {
|
||||||
|
var autoCommitMaxTime int64
|
||||||
|
if len(metrics.Stats.AutocommitMaxTime) > 2 {
|
||||||
|
s := metrics.Stats.AutocommitMaxTime[:len(metrics.Stats.AutocommitMaxTime)-2]
|
||||||
|
var err error
|
||||||
|
autoCommitMaxTime, err = strconv.ParseInt(s, 0, 64)
|
||||||
|
if err != nil {
|
||||||
|
autoCommitMaxTime = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fields := map[string]interface{}{
|
||||||
|
"adds": metrics.Stats.Adds,
|
||||||
|
"autocommit_max_docs": metrics.Stats.AutocommitMaxDocs,
|
||||||
|
"autocommit_max_time": autoCommitMaxTime,
|
||||||
|
"autocommits": metrics.Stats.Autocommits,
|
||||||
|
"commits": metrics.Stats.Commits,
|
||||||
|
"cumulative_adds": metrics.Stats.CumulativeAdds,
|
||||||
|
"cumulative_deletes_by_id": metrics.Stats.CumulativeDeletesByID,
|
||||||
|
"cumulative_deletes_by_query": metrics.Stats.CumulativeDeletesByQuery,
|
||||||
|
"cumulative_errors": metrics.Stats.CumulativeErrors,
|
||||||
|
"deletes_by_id": metrics.Stats.DeletesByID,
|
||||||
|
"deletes_by_query": metrics.Stats.DeletesByQuery,
|
||||||
|
"docs_pending": metrics.Stats.DocsPending,
|
||||||
|
"errors": metrics.Stats.Errors,
|
||||||
|
"expunge_deletes": metrics.Stats.ExpungeDeletes,
|
||||||
|
"optimizes": metrics.Stats.Optimizes,
|
||||||
|
"rollbacks": metrics.Stats.Rollbacks,
|
||||||
|
"soft_autocommits": metrics.Stats.SoftAutocommits,
|
||||||
|
}
|
||||||
|
|
||||||
|
tags := map[string]string{
|
||||||
|
"core": core,
|
||||||
|
"handler": name,
|
||||||
|
}
|
||||||
|
|
||||||
|
acc.AddFields("solr_updatehandler", fields, tags, ts)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
servers = ["http://localhost:8983"]
|
servers = ["http://localhost:8983"]
|
||||||
|
|
||||||
## specify a list of one or more Solr cores (default - all)
|
## specify a list of one or more Solr cores (default - all)
|
||||||
# cores = ["main"]
|
# cores = ["*"]
|
||||||
|
|
||||||
## Optional HTTP Basic Auth Credentials
|
## Optional HTTP Basic Auth Credentials
|
||||||
# username = "username"
|
# username = "username"
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,14 @@ import (
|
||||||
_ "embed"
|
_ "embed"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/coreos/go-semver/semver"
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
|
"github.com/influxdata/telegraf/filter"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
@ -21,9 +20,6 @@ import (
|
||||||
//go:embed sample.conf
|
//go:embed sample.conf
|
||||||
var sampleConfig string
|
var sampleConfig string
|
||||||
|
|
||||||
const mbeansPath = "/admin/mbeans?stats=true&wt=json&cat=CORE&cat=QUERYHANDLER&cat=UPDATEHANDLER&cat=CACHE"
|
|
||||||
const adminCoresPath = "/solr/admin/cores?action=STATUS&wt=json"
|
|
||||||
|
|
||||||
// Solr is a plugin to read stats from one or many Solr servers
|
// Solr is a plugin to read stats from one or many Solr servers
|
||||||
type Solr struct {
|
type Solr struct {
|
||||||
Servers []string `toml:"servers"`
|
Servers []string `toml:"servers"`
|
||||||
|
|
@ -31,8 +27,11 @@ type Solr struct {
|
||||||
Password string `toml:"password"`
|
Password string `toml:"password"`
|
||||||
HTTPTimeout config.Duration `toml:"timeout"`
|
HTTPTimeout config.Duration `toml:"timeout"`
|
||||||
Cores []string `toml:"cores"`
|
Cores []string `toml:"cores"`
|
||||||
|
Log telegraf.Logger `toml:"-"`
|
||||||
|
|
||||||
client *http.Client
|
client *http.Client
|
||||||
|
configs map[string]*apiConfig
|
||||||
|
filter filter.Filter
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Solr) SampleConfig() string {
|
func (*Solr) SampleConfig() string {
|
||||||
|
|
@ -40,343 +39,129 @@ func (*Solr) SampleConfig() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Solr) Init() error {
|
func (s *Solr) Init() error {
|
||||||
s.client = s.createHTTPClient()
|
// Setup client to do the queries
|
||||||
return nil
|
s.client = &http.Client{
|
||||||
}
|
Transport: &http.Transport{
|
||||||
|
ResponseHeaderTimeout: time.Duration(s.HTTPTimeout),
|
||||||
// Gather reads the stats from Solr and writes it to the
|
},
|
||||||
// Accumulator.
|
Timeout: time.Duration(s.HTTPTimeout),
|
||||||
func (s *Solr) Gather(acc telegraf.Accumulator) error {
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
wg.Add(len(s.Servers))
|
|
||||||
|
|
||||||
for _, serv := range s.Servers {
|
|
||||||
go func(serv string, acc telegraf.Accumulator) {
|
|
||||||
defer wg.Done()
|
|
||||||
acc.AddError(s.gatherServerMetrics(serv, acc))
|
|
||||||
}(serv, acc)
|
|
||||||
}
|
}
|
||||||
wg.Wait()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gather all metrics from server
|
// Prepare filter for the cores to query
|
||||||
func (s *Solr) gatherServerMetrics(server string, acc telegraf.Accumulator) error {
|
f, err := filter.Compile(s.Cores)
|
||||||
measurementTime := time.Now()
|
if err != nil {
|
||||||
adminCoresStatus := &AdminCoresStatus{}
|
|
||||||
if err := s.gatherData(s.adminURL(server), adminCoresStatus); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
addAdminCoresStatusToAcc(acc, adminCoresStatus, measurementTime)
|
s.filter = f
|
||||||
cores := s.filterCores(getCoresFromStatus(adminCoresStatus))
|
|
||||||
var wg sync.WaitGroup
|
// Allocate config cache
|
||||||
wg.Add(len(cores))
|
s.configs = make(map[string]*apiConfig, len(s.Servers))
|
||||||
for _, core := range cores {
|
|
||||||
go func(server string, core string, acc telegraf.Accumulator) {
|
|
||||||
defer wg.Done()
|
|
||||||
mBeansData := &MBeansData{}
|
|
||||||
acc.AddError(s.gatherData(s.mbeansURL(server, core), mBeansData))
|
|
||||||
acc.AddError(addCoreMetricsToAcc(acc, core, mBeansData, measurementTime))
|
|
||||||
acc.AddError(addQueryHandlerMetricsToAcc(acc, core, mBeansData, measurementTime))
|
|
||||||
acc.AddError(addUpdateHandlerMetricsToAcc(acc, core, mBeansData, measurementTime))
|
|
||||||
acc.AddError(addCacheMetricsToAcc(acc, core, mBeansData, measurementTime))
|
|
||||||
}(server, core, acc)
|
|
||||||
}
|
|
||||||
wg.Wait()
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use cores from configuration if exists, else use cores from server
|
func (s *Solr) Start(_ telegraf.Accumulator) error {
|
||||||
func (s *Solr) filterCores(serverCores []string) []string {
|
for _, server := range s.Servers {
|
||||||
if len(s.Cores) == 0 {
|
// Simply fill the cache for all available servers
|
||||||
return serverCores
|
_ = s.getAPIConfig(server)
|
||||||
}
|
}
|
||||||
return s.Cores
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return list of cores from solr server
|
func (s *Solr) Stop() {}
|
||||||
func getCoresFromStatus(adminCoresStatus *AdminCoresStatus) []string {
|
|
||||||
serverCores := []string{}
|
func (s *Solr) Gather(acc telegraf.Accumulator) error {
|
||||||
for coreName := range adminCoresStatus.Status {
|
var wg sync.WaitGroup
|
||||||
serverCores = append(serverCores, coreName)
|
for _, srv := range s.Servers {
|
||||||
|
wg.Add(1)
|
||||||
|
go func(server string) {
|
||||||
|
defer wg.Done()
|
||||||
|
|
||||||
|
// Check the server version from cache or query one
|
||||||
|
cfg := s.getAPIConfig(server)
|
||||||
|
s.collect(acc, cfg, server)
|
||||||
|
}(srv)
|
||||||
}
|
}
|
||||||
return serverCores
|
wg.Wait()
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add core metrics from admin to accumulator
|
func (s *Solr) getAPIConfig(server string) *apiConfig {
|
||||||
// This is the only point where size_in_bytes is available (as far as I checked)
|
if cfg, found := s.configs[server]; found {
|
||||||
func addAdminCoresStatusToAcc(acc telegraf.Accumulator, adminCoreStatus *AdminCoresStatus, measurementTime time.Time) {
|
return cfg
|
||||||
for core, metrics := range adminCoreStatus.Status {
|
}
|
||||||
coreFields := map[string]interface{}{
|
|
||||||
|
version, err := s.determineServerAPIVersion(server)
|
||||||
|
if err != nil {
|
||||||
|
s.Log.Errorf("Getting version for %q failed: %v", server, err)
|
||||||
|
// Exit early and do not fill the cache as the server might not be
|
||||||
|
// reachable yet.
|
||||||
|
return newAPIv1Config()
|
||||||
|
}
|
||||||
|
s.Log.Debugf("Found API version %d for server %q...", version, server)
|
||||||
|
|
||||||
|
switch version {
|
||||||
|
case 0:
|
||||||
|
s.Log.Warn("Unable to determine API version! Using API v1...")
|
||||||
|
s.configs[server] = newAPIv1Config()
|
||||||
|
case 1:
|
||||||
|
s.configs[server] = newAPIv1Config()
|
||||||
|
case 2:
|
||||||
|
s.configs[server] = newAPIv2Config()
|
||||||
|
default:
|
||||||
|
s.Log.Warnf("Unknown API version %q! Using latest known", version)
|
||||||
|
s.configs[server] = newAPIv2Config()
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.configs[server]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Solr) collect(acc telegraf.Accumulator, cfg *apiConfig, server string) {
|
||||||
|
now := time.Now()
|
||||||
|
|
||||||
|
var coreStatus AdminCoresStatus
|
||||||
|
if err := s.query(cfg.adminEndpoint(server), &coreStatus); err != nil {
|
||||||
|
acc.AddError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
for core, metrics := range coreStatus.Status {
|
||||||
|
fields := map[string]interface{}{
|
||||||
"deleted_docs": metrics.Index.DeletedDocs,
|
"deleted_docs": metrics.Index.DeletedDocs,
|
||||||
"max_docs": metrics.Index.MaxDoc,
|
"max_docs": metrics.Index.MaxDoc,
|
||||||
"num_docs": metrics.Index.NumDocs,
|
"num_docs": metrics.Index.NumDocs,
|
||||||
"size_in_bytes": metrics.Index.SizeInBytes,
|
"size_in_bytes": metrics.Index.SizeInBytes,
|
||||||
}
|
}
|
||||||
acc.AddFields(
|
tags := map[string]string{"core": core}
|
||||||
"solr_admin",
|
acc.AddFields("solr_admin", fields, tags, now)
|
||||||
coreFields,
|
|
||||||
map[string]string{"core": core},
|
|
||||||
measurementTime,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add core metrics section to accumulator
|
if s.filter != nil && !s.filter.Match(core) {
|
||||||
func addCoreMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, measurementTime time.Time) error {
|
|
||||||
var coreMetrics map[string]Core
|
|
||||||
if len(mBeansData.SolrMbeans) < 2 {
|
|
||||||
return fmt.Errorf("no core metric data to unmarshal")
|
|
||||||
}
|
|
||||||
if err := json.Unmarshal(mBeansData.SolrMbeans[1], &coreMetrics); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for name, metrics := range coreMetrics {
|
|
||||||
if strings.Contains(name, "@") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
coreFields := map[string]interface{}{
|
|
||||||
"deleted_docs": metrics.Stats.DeletedDocs,
|
|
||||||
"max_docs": metrics.Stats.MaxDoc,
|
|
||||||
"num_docs": metrics.Stats.NumDocs,
|
|
||||||
}
|
|
||||||
acc.AddFields(
|
|
||||||
"solr_core",
|
|
||||||
coreFields,
|
|
||||||
map[string]string{
|
|
||||||
"core": core,
|
|
||||||
"handler": name},
|
|
||||||
measurementTime,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add query metrics section to accumulator
|
|
||||||
func addQueryHandlerMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, measurementTime time.Time) error {
|
|
||||||
var queryMetrics map[string]QueryHandler
|
|
||||||
|
|
||||||
if len(mBeansData.SolrMbeans) < 4 {
|
|
||||||
return fmt.Errorf("no query handler metric data to unmarshal")
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := json.Unmarshal(mBeansData.SolrMbeans[3], &queryMetrics); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for name, metrics := range queryMetrics {
|
|
||||||
var coreFields map[string]interface{}
|
|
||||||
|
|
||||||
if metrics.Stats == nil {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
switch v := metrics.Stats.(type) {
|
wg.Add(1)
|
||||||
case []interface{}:
|
go func(server string, core string) {
|
||||||
m := convertArrayToMap(v)
|
defer wg.Done()
|
||||||
coreFields = convertQueryHandlerMap(m)
|
|
||||||
case map[string]interface{}:
|
|
||||||
coreFields = convertQueryHandlerMap(v)
|
|
||||||
default:
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
acc.AddFields(
|
var data MBeansData
|
||||||
"solr_queryhandler",
|
if err := s.query(cfg.mbeansEndpoint(server, core), &data); err != nil {
|
||||||
coreFields,
|
acc.AddError(err)
|
||||||
map[string]string{
|
return
|
||||||
"core": core,
|
|
||||||
"handler": name},
|
|
||||||
measurementTime,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertArrayToMap(values []interface{}) map[string]interface{} {
|
|
||||||
var key string
|
|
||||||
result := make(map[string]interface{})
|
|
||||||
for i, item := range values {
|
|
||||||
if i%2 == 0 {
|
|
||||||
key = fmt.Sprintf("%v", item)
|
|
||||||
} else {
|
|
||||||
result[key] = item
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
func convertQueryHandlerMap(value map[string]interface{}) map[string]interface{} {
|
|
||||||
return map[string]interface{}{
|
|
||||||
"15min_rate_reqs_per_second": getFloat(value["15minRateReqsPerSecond"]),
|
|
||||||
"5min_rate_reqs_per_second": getFloat(value["5minRateReqsPerSecond"]),
|
|
||||||
"75th_pc_request_time": getFloat(value["75thPcRequestTime"]),
|
|
||||||
"95th_pc_request_time": getFloat(value["95thPcRequestTime"]),
|
|
||||||
"99th_pc_request_time": getFloat(value["99thPcRequestTime"]),
|
|
||||||
"999th_pc_request_time": getFloat(value["999thPcRequestTime"]),
|
|
||||||
"avg_requests_per_second": getFloat(value["avgRequestsPerSecond"]),
|
|
||||||
"avg_time_per_request": getFloat(value["avgTimePerRequest"]),
|
|
||||||
"errors": getInt(value["errors"]),
|
|
||||||
"handler_start": getInt(value["handlerStart"]),
|
|
||||||
"median_request_time": getFloat(value["medianRequestTime"]),
|
|
||||||
"requests": getInt(value["requests"]),
|
|
||||||
"timeouts": getInt(value["timeouts"]),
|
|
||||||
"total_time": getFloat(value["totalTime"]),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add update metrics section to accumulator
|
|
||||||
func addUpdateHandlerMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, measurementTime time.Time) error {
|
|
||||||
var updateMetrics map[string]UpdateHandler
|
|
||||||
|
|
||||||
if len(mBeansData.SolrMbeans) < 6 {
|
|
||||||
return fmt.Errorf("no update handler metric data to unmarshal")
|
|
||||||
}
|
|
||||||
if err := json.Unmarshal(mBeansData.SolrMbeans[5], &updateMetrics); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for name, metrics := range updateMetrics {
|
|
||||||
var autoCommitMaxTime int64
|
|
||||||
if len(metrics.Stats.AutocommitMaxTime) > 2 {
|
|
||||||
autoCommitMaxTime, _ = strconv.ParseInt(metrics.Stats.AutocommitMaxTime[:len(metrics.Stats.AutocommitMaxTime)-2], 0, 64)
|
|
||||||
}
|
|
||||||
coreFields := map[string]interface{}{
|
|
||||||
"adds": metrics.Stats.Adds,
|
|
||||||
"autocommit_max_docs": metrics.Stats.AutocommitMaxDocs,
|
|
||||||
"autocommit_max_time": autoCommitMaxTime,
|
|
||||||
"autocommits": metrics.Stats.Autocommits,
|
|
||||||
"commits": metrics.Stats.Commits,
|
|
||||||
"cumulative_adds": metrics.Stats.CumulativeAdds,
|
|
||||||
"cumulative_deletes_by_id": metrics.Stats.CumulativeDeletesByID,
|
|
||||||
"cumulative_deletes_by_query": metrics.Stats.CumulativeDeletesByQuery,
|
|
||||||
"cumulative_errors": metrics.Stats.CumulativeErrors,
|
|
||||||
"deletes_by_id": metrics.Stats.DeletesByID,
|
|
||||||
"deletes_by_query": metrics.Stats.DeletesByQuery,
|
|
||||||
"docs_pending": metrics.Stats.DocsPending,
|
|
||||||
"errors": metrics.Stats.Errors,
|
|
||||||
"expunge_deletes": metrics.Stats.ExpungeDeletes,
|
|
||||||
"optimizes": metrics.Stats.Optimizes,
|
|
||||||
"rollbacks": metrics.Stats.Rollbacks,
|
|
||||||
"soft_autocommits": metrics.Stats.SoftAutocommits,
|
|
||||||
}
|
|
||||||
acc.AddFields(
|
|
||||||
"solr_updatehandler",
|
|
||||||
coreFields,
|
|
||||||
map[string]string{
|
|
||||||
"core": core,
|
|
||||||
"handler": name},
|
|
||||||
measurementTime,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get float64 from interface
|
|
||||||
func getFloat(unk interface{}) float64 {
|
|
||||||
switch i := unk.(type) {
|
|
||||||
case float64:
|
|
||||||
return i
|
|
||||||
case string:
|
|
||||||
f, err := strconv.ParseFloat(i, 64)
|
|
||||||
if err != nil || math.IsNaN(f) {
|
|
||||||
return float64(0)
|
|
||||||
}
|
|
||||||
return f
|
|
||||||
default:
|
|
||||||
return float64(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get int64 from interface
|
|
||||||
func getInt(unk interface{}) int64 {
|
|
||||||
switch i := unk.(type) {
|
|
||||||
case int64:
|
|
||||||
return i
|
|
||||||
case float64:
|
|
||||||
return int64(i)
|
|
||||||
case string:
|
|
||||||
v, err := strconv.ParseInt(i, 10, 64)
|
|
||||||
if err != nil {
|
|
||||||
return int64(0)
|
|
||||||
}
|
|
||||||
return v
|
|
||||||
default:
|
|
||||||
return int64(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add cache metrics section to accumulator
|
|
||||||
func addCacheMetricsToAcc(acc telegraf.Accumulator, core string, mBeansData *MBeansData, measurementTime time.Time) error {
|
|
||||||
if len(mBeansData.SolrMbeans) < 8 {
|
|
||||||
return fmt.Errorf("no cache metric data to unmarshal")
|
|
||||||
}
|
|
||||||
var cacheMetrics map[string]Cache
|
|
||||||
if err := json.Unmarshal(mBeansData.SolrMbeans[7], &cacheMetrics); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
for name, metrics := range cacheMetrics {
|
|
||||||
coreFields := make(map[string]interface{})
|
|
||||||
for key, value := range metrics.Stats {
|
|
||||||
splitKey := strings.Split(key, ".")
|
|
||||||
newKey := splitKey[len(splitKey)-1]
|
|
||||||
switch newKey {
|
|
||||||
case "cumulative_evictions",
|
|
||||||
"cumulative_hits",
|
|
||||||
"cumulative_inserts",
|
|
||||||
"cumulative_lookups",
|
|
||||||
"eviction",
|
|
||||||
"hits",
|
|
||||||
"inserts",
|
|
||||||
"lookups",
|
|
||||||
"size",
|
|
||||||
"evictions":
|
|
||||||
coreFields[newKey] = getInt(value)
|
|
||||||
case "hitratio",
|
|
||||||
"cumulative_hitratio":
|
|
||||||
coreFields[newKey] = getFloat(value)
|
|
||||||
case "warmupTime":
|
|
||||||
coreFields["warmup_time"] = getInt(value)
|
|
||||||
default:
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
acc.AddFields(
|
cfg.parseCore(acc, core, &data, now)
|
||||||
"solr_cache",
|
cfg.parseQueryHandler(acc, core, &data, now)
|
||||||
coreFields,
|
cfg.parseUpdateHandler(acc, core, &data, now)
|
||||||
map[string]string{
|
cfg.parseCache(acc, core, &data, now)
|
||||||
"core": core,
|
}(server, core)
|
||||||
"handler": name},
|
|
||||||
measurementTime,
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
return nil
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Provide admin url
|
func (s *Solr) query(endpoint string, v interface{}) error {
|
||||||
func (s *Solr) adminURL(server string) string {
|
req, reqErr := http.NewRequest(http.MethodGet, endpoint, nil)
|
||||||
return fmt.Sprintf("%s%s", server, adminCoresPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Provide mbeans url
|
|
||||||
func (s *Solr) mbeansURL(server string, core string) string {
|
|
||||||
return fmt.Sprintf("%s/solr/%s%s", server, core, mbeansPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Solr) createHTTPClient() *http.Client {
|
|
||||||
tr := &http.Transport{
|
|
||||||
ResponseHeaderTimeout: time.Duration(s.HTTPTimeout),
|
|
||||||
}
|
|
||||||
client := &http.Client{
|
|
||||||
Transport: tr,
|
|
||||||
Timeout: time.Duration(s.HTTPTimeout),
|
|
||||||
}
|
|
||||||
|
|
||||||
return client
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *Solr) gatherData(url string, v interface{}) error {
|
|
||||||
req, reqErr := http.NewRequest(http.MethodGet, url, nil)
|
|
||||||
if reqErr != nil {
|
if reqErr != nil {
|
||||||
return reqErr
|
return reqErr
|
||||||
}
|
}
|
||||||
|
|
@ -393,13 +178,47 @@ func (s *Solr) gatherData(url string, v interface{}) error {
|
||||||
}
|
}
|
||||||
defer r.Body.Close()
|
defer r.Body.Close()
|
||||||
if r.StatusCode != http.StatusOK {
|
if r.StatusCode != http.StatusOK {
|
||||||
return fmt.Errorf("solr: API responded with status-code %d, expected %d, url %s",
|
return fmt.Errorf("solr: API endpoint %q responded with %q", endpoint, r.Status)
|
||||||
r.StatusCode, http.StatusOK, url)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return json.NewDecoder(r.Body).Decode(v)
|
return json.NewDecoder(r.Body).Decode(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Solr) determineServerAPIVersion(server string) (int, error) {
|
||||||
|
endpoint := server + "/solr/admin/info/system?wt=json"
|
||||||
|
var info map[string]interface{}
|
||||||
|
if err := s.query(endpoint, &info); err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
lraw, found := info["lucene"]
|
||||||
|
if !found {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
lucene, ok := lraw.(map[string]interface{})
|
||||||
|
if !ok {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
vraw, ok := lucene["solr-spec-version"]
|
||||||
|
if !ok {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
v, ok := vraw.(string)
|
||||||
|
if !ok {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// API version 1 is required until v7.x
|
||||||
|
version := semver.New(v)
|
||||||
|
if version.LessThan(semver.Version{Major: 7}) {
|
||||||
|
return 1, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Starting from 7.0 API version 2 has to be used to get the UPDATE and
|
||||||
|
// QUERY metrics.
|
||||||
|
return 2, nil
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
inputs.Add("solr", func() telegraf.Input {
|
inputs.Add("solr", func() telegraf.Input {
|
||||||
return &Solr{
|
return &Solr{
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,9 @@ func TestCases(t *testing.T) {
|
||||||
|
|
||||||
// Gather data and compare results
|
// Gather data and compare results
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
|
require.NoError(t, plugin.Start(&acc))
|
||||||
require.NoError(t, plugin.Gather(&acc))
|
require.NoError(t, plugin.Gather(&acc))
|
||||||
|
plugin.Stop()
|
||||||
|
|
||||||
actual := acc.GetTelegrafMetrics()
|
actual := acc.GetTelegrafMetrics()
|
||||||
testutil.RequireMetricsEqual(t, expected, actual, options...)
|
testutil.RequireMetricsEqual(t, expected, actual, options...)
|
||||||
|
|
@ -141,7 +143,7 @@ func TestIntegration(t *testing.T) {
|
||||||
Cmd: []string{"solr-precreate", "main"},
|
Cmd: []string{"solr-precreate", "main"},
|
||||||
WaitingFor: wait.ForAll(
|
WaitingFor: wait.ForAll(
|
||||||
wait.ForListeningPort(nat.Port(servicePort)),
|
wait.ForListeningPort(nat.Port(servicePort)),
|
||||||
wait.ForLog("o.a.s.c.SolrCore [main] Registered new searcher"),
|
wait.ForLog("Registered new searcher"),
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
require.NoError(t, container.Start(), "failed to start container")
|
require.NoError(t, container.Start(), "failed to start container")
|
||||||
|
|
@ -153,12 +155,15 @@ func TestIntegration(t *testing.T) {
|
||||||
plugin := &Solr{
|
plugin := &Solr{
|
||||||
Servers: server,
|
Servers: server,
|
||||||
HTTPTimeout: config.Duration(5 * time.Second),
|
HTTPTimeout: config.Duration(5 * time.Second),
|
||||||
|
Log: &testutil.Logger{},
|
||||||
}
|
}
|
||||||
require.NoError(t, plugin.Init())
|
require.NoError(t, plugin.Init())
|
||||||
|
|
||||||
// Gather data and compare results
|
// Gather data and compare results
|
||||||
var acc testutil.Accumulator
|
var acc testutil.Accumulator
|
||||||
|
require.NoError(t, plugin.Start(&acc))
|
||||||
require.NoError(t, plugin.Gather(&acc))
|
require.NoError(t, plugin.Gather(&acc))
|
||||||
|
plugin.Stop()
|
||||||
|
|
||||||
actual := acc.GetTelegrafMetrics()
|
actual := acc.GetTelegrafMetrics()
|
||||||
testutil.RequireMetricsStructureEqual(t, expected, actual, options...)
|
testutil.RequireMetricsStructureEqual(t, expected, actual, options...)
|
||||||
|
|
|
||||||
|
|
@ -1,29 +0,0 @@
|
||||||
solr_admin,core=main deleted_docs=0i,max_docs=0i,num_docs=0i,size_in_bytes=71i
|
|
||||||
solr_core,core=main,handler=searcher deleted_docs=0i,max_docs=0i,num_docs=0i
|
|
||||||
solr_core,core=main,handler=core deleted_docs=0i,max_docs=0i,num_docs=0i
|
|
||||||
solr_queryhandler,core=main,handler=/stream 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637993i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/debug/dump 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637995i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/graph 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637991i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/select 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637996i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/export 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637989i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637997i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/browse 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637997i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/sql 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637994i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_queryhandler,core=main,handler=/get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690552637973i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
|
||||||
solr_updatehandler,core=main,handler=/graph adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=facet_module adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/export adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=tvComponent adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/sql adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=get adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=query adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/select adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=mlt adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=terms adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/query adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/stream adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/debug/dump adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=facet adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/browse adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=expand adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
solr_updatehandler,core=main,handler=/get adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
solr_admin,core=main deleted_docs=0i,max_docs=0i,num_docs=0i,size_in_bytes=71i
|
||||||
|
solr_cache,core=main,handler=documentCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=fieldValueCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=filterCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=perSegFilter cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=queryResultCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_core,core=main,handler=core deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_core,core=main,handler=searcher deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_queryhandler,core=main,handler=/browse 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146270i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/debug/dump 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146269i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/export 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146264i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146246i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/graph 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146265i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146270i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/select 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146270i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/sql 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146268i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/stream 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=1690881146267i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_updatehandler,core=main,handler=/update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/csv adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=updateHandler adds=0i,autocommit_max_docs=0i,autocommit_max_time=15000i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json/docs adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
solr_admin,core=main deleted_docs=0i,max_docs=0i,num_docs=0i,size_in_bytes=69i
|
||||||
|
solr_cache,core=main,handler=documentCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=fieldValueCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=filterCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=perSegFilter cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=queryResultCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_core,core=main,handler=core deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_core,core=main,handler=searcher deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_queryhandler,core=main,handler=/browse 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/debug/dump 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/export 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/graph 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=org.apache.solr.handler.admin.MetricsCollectorHandler 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/select 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/sql 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/stream 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_updatehandler,core=main,handler=/update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/csv adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=updateHandler adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json/docs adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
solr_admin,core=main deleted_docs=0i,max_docs=0i,num_docs=0i,size_in_bytes=69i
|
||||||
|
solr_cache,core=main,handler=documentCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=fieldValueCache cumulative_evictions=0i,cumulative_hitratio=0,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=0,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=filterCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=perSegFilter cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=queryResultCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_core,core=main,handler=core deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_core,core=main,handler=searcher deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_queryhandler,core=main,handler=/debug/dump 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/export 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/graph 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=org.apache.solr.handler.admin.MetricsCollectorHandler 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/select 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/sql 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/stream 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_updatehandler,core=main,handler=/update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/csv adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=updateHandler adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json/docs adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
solr_admin,core=main deleted_docs=0i,max_docs=0i,num_docs=0i,size_in_bytes=69i
|
||||||
|
solr_cache,core=main,handler=documentCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=fieldCache size=0i
|
||||||
|
solr_cache,core=main,handler=fieldValueCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=filterCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=perSegFilter cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_cache,core=main,handler=queryResultCache cumulative_evictions=0i,cumulative_hitratio=1,cumulative_hits=0i,cumulative_inserts=0i,cumulative_lookups=0i,evictions=0i,hitratio=1,hits=0i,inserts=0i,lookups=0i,size=0i,warmup_time=0i
|
||||||
|
solr_core,core=main,handler=core deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_core,core=main,handler=searcher deleted_docs=0i,max_docs=0i,num_docs=0i
|
||||||
|
solr_queryhandler,core=main,handler=/debug/dump 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=expand 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/export 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=facet 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=facet_module 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=get 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/graph 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=mlt 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=query 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/select 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/stream 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=/terms 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_queryhandler,core=main,handler=terms 15min_rate_reqs_per_second=0,5min_rate_reqs_per_second=0,75th_pc_request_time=0,95th_pc_request_time=0,999th_pc_request_time=0,99th_pc_request_time=0,avg_requests_per_second=0,avg_time_per_request=0,errors=0i,handler_start=0i,median_request_time=0,requests=0i,timeouts=0i,total_time=0
|
||||||
|
solr_updatehandler,core=main,handler=/update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=update adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/cbor adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/csv adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=updateHandler adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
solr_updatehandler,core=main,handler=/update/json/docs adds=0i,autocommit_max_docs=0i,autocommit_max_time=0i,autocommits=0i,commits=0i,cumulative_adds=0i,cumulative_deletes_by_id=0i,cumulative_deletes_by_query=0i,cumulative_errors=0i,deletes_by_id=0i,deletes_by_query=0i,docs_pending=0i,errors=0i,expunge_deletes=0i,optimizes=0i,rollbacks=0i,soft_autocommits=0i
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
package solr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"math"
|
||||||
|
|
||||||
|
"github.com/influxdata/telegraf/internal"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get float64 from interface
|
||||||
|
func getFloat(value interface{}) float64 {
|
||||||
|
v, err := internal.ToFloat64(value)
|
||||||
|
if err != nil || math.IsNaN(v) {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get int64 from interface
|
||||||
|
func getInt(value interface{}) int64 {
|
||||||
|
v, err := internal.ToInt64(value)
|
||||||
|
if err != nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return v
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue