mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-06 17:18:35 +08:00
issue: #45640 - log may be dropped if the underlying file system is busy. - use async write syncer to avoid the log operation block the milvus major system. - remove some log dependency from the until function to avoid dependency-loop. --------- Signed-off-by: chyezh <chyezh@outlook.com>
86 lines
2.9 KiB
Go
86 lines
2.9 KiB
Go
// Licensed to the LF AI & Data foundation under one
|
|
// or more contributor license agreements. See the NOTICE file
|
|
// distributed with this work for additional information
|
|
// regarding copyright ownership. The ASF licenses this file
|
|
// to you under the Apache License, Version 2.0 (the
|
|
// "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package metrics
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
const (
|
|
loggingMetricSubsystem = "logging"
|
|
)
|
|
|
|
var (
|
|
LoggingMetricsRegisterOnce sync.Once
|
|
|
|
LoggingPendingWriteLength = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "pending_write_length",
|
|
Help: "The length of pending writes in the logging buffer",
|
|
})
|
|
|
|
LoggingPendingWriteBytes = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "pending_write_bytes",
|
|
Help: "The total bytes of pending writes in the logging buffer",
|
|
})
|
|
|
|
LoggingTruncatedWrites = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "truncated_writes",
|
|
Help: "The number of truncated writes due to exceeding the max bytes per log",
|
|
})
|
|
|
|
LoggingTruncatedWriteBytes = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "truncated_write_bytes",
|
|
Help: "The total bytes of truncated writes due to exceeding the max bytes per log",
|
|
})
|
|
|
|
LoggingDroppedWrites = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "dropped_writes",
|
|
Help: "The number of dropped writes due to buffer full or write timeout",
|
|
})
|
|
|
|
LoggingIOFailure = prometheus.NewGauge(prometheus.GaugeOpts{
|
|
Namespace: milvusNamespace,
|
|
Subsystem: loggingMetricSubsystem,
|
|
Name: "io_failures",
|
|
Help: "The number of IO failures due to underlying write syncer is blocked or write timeout",
|
|
})
|
|
)
|
|
|
|
// RegisterLoggingMetrics registers logging metrics
|
|
func RegisterLoggingMetrics(registry *prometheus.Registry) {
|
|
LoggingMetricsRegisterOnce.Do(func() {
|
|
registry.MustRegister(LoggingPendingWriteLength)
|
|
registry.MustRegister(LoggingPendingWriteBytes)
|
|
registry.MustRegister(LoggingTruncatedWrites)
|
|
registry.MustRegister(LoggingTruncatedWriteBytes)
|
|
registry.MustRegister(LoggingDroppedWrites)
|
|
registry.MustRegister(LoggingIOFailure)
|
|
})
|
|
}
|