Documentation ¶
Overview ¶
Copyright 2024 The Prometheus Authors Licensed 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.
Copyright 2024 The Prometheus Authors Licensed 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.
Index ¶
- Variables
- func BuildMetricName(namespace, metricName, statistic string) string
- func PromString(text string) string
- func PromStringTag(text string, labelsSnakeCase bool) (bool, string)
- type PrometheusCollector
- type PrometheusMetric
- func BuildMetrics(results []model.CloudwatchMetricResult, labelsSnakeCase bool, ...) ([]*PrometheusMetric, map[string]model.LabelSet, error)
- func BuildNamespaceInfoMetrics(tagData []model.TaggedResourceResult, metrics []*PrometheusMetric, ...) ([]*PrometheusMetric, map[string]model.LabelSet)
- func EnsureLabelConsistencyAndRemoveDuplicates(metrics []*PrometheusMetric, observedMetricLabels map[string]model.LabelSet) []*PrometheusMetric
Constants ¶
This section is empty.
Variables ¶
var ( CloudwatchAPIErrorCounter = prometheus.NewCounterVec(prometheus.CounterOpts{ Name: "yace_cloudwatch_request_errors", Help: "Help is not implemented yet.", }, []string{"api_name"}) CloudwatchAPICounter = prometheus.NewCounterVec(prometheus.CounterOpts{ Name: "yace_cloudwatch_requests_total", Help: "Number of calls made to the CloudWatch APIs", }, []string{"api_name"}) CloudwatchGetMetricDataAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_getmetricdata_requests_total", Help: "DEPRECATED: replaced by yace_cloudwatch_requests_total with api_name label", }) CloudwatchGetMetricDataAPIMetricsCounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_getmetricdata_metrics_requested_total", Help: "Number of metrics requested from the CloudWatch GetMetricData API which is how AWS bills", }) CloudwatchGetMetricStatisticsAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_getmetricstatistics_requests_total", Help: "DEPRECATED: replaced by yace_cloudwatch_requests_total with api_name label", }) ResourceGroupTaggingAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_resourcegrouptaggingapi_requests_total", Help: "Help is not implemented yet.", }) AutoScalingAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_autoscalingapi_requests_total", Help: "Help is not implemented yet.", }) TargetGroupsAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_targetgroupapi_requests_total", Help: "Help is not implemented yet.", }) APIGatewayAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_apigatewayapi_requests_total", }) APIGatewayAPIV2Counter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_apigatewayapiv2_requests_total", }) Ec2APICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_ec2api_requests_total", Help: "Help is not implemented yet.", }) ShieldAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_shieldapi_requests_total", Help: "Help is not implemented yet.", }) ManagedPrometheusAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_managedprometheusapi_requests_total", Help: "Help is not implemented yet.", }) StoragegatewayAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_storagegatewayapi_requests_total", Help: "Help is not implemented yet.", }) DmsAPICounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_dmsapi_requests_total", Help: "Help is not implemented yet.", }) DuplicateMetricsFilteredCounter = prometheus.NewCounter(prometheus.CounterOpts{ Name: "yace_cloudwatch_duplicate_metrics_filtered", Help: "Help is not implemented yet.", }) )
var Percentile = regexp.MustCompile(`^p(\d{1,2}(\.\d{0,2})?|100)$`)
Functions ¶
func BuildMetricName ¶
func PromString ¶
Types ¶
type PrometheusCollector ¶
type PrometheusCollector struct {
// contains filtered or unexported fields
}
func NewPrometheusCollector ¶
func NewPrometheusCollector(metrics []*PrometheusMetric) *PrometheusCollector
func (*PrometheusCollector) Collect ¶
func (p *PrometheusCollector) Collect(metrics chan<- prometheus.Metric)
func (*PrometheusCollector) Describe ¶
func (p *PrometheusCollector) Describe(_ chan<- *prometheus.Desc)
type PrometheusMetric ¶
type PrometheusMetric struct { Name string Labels map[string]string Value float64 IncludeTimestamp bool Timestamp time.Time }
func BuildMetrics ¶
func BuildMetrics(results []model.CloudwatchMetricResult, labelsSnakeCase bool, logger *slog.Logger) ([]*PrometheusMetric, map[string]model.LabelSet, error)
func BuildNamespaceInfoMetrics ¶
func BuildNamespaceInfoMetrics(tagData []model.TaggedResourceResult, metrics []*PrometheusMetric, observedMetricLabels map[string]model.LabelSet, labelsSnakeCase bool, logger *slog.Logger) ([]*PrometheusMetric, map[string]model.LabelSet)
func EnsureLabelConsistencyAndRemoveDuplicates ¶
func EnsureLabelConsistencyAndRemoveDuplicates(metrics []*PrometheusMetric, observedMetricLabels map[string]model.LabelSet) []*PrometheusMetric
EnsureLabelConsistencyAndRemoveDuplicates ensures that every metric has the same set of labels based on the data in observedMetricLabels and that there are no duplicate metrics. Prometheus requires that all metrics with the same name have the same set of labels and that no duplicates are registered