go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/appengine/tsmon/globalmetrics.go (about)

     1  // Copyright 2016 The LUCI Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package tsmon
    16  
    17  import (
    18  	"context"
    19  
    20  	"go.chromium.org/luci/common/logging"
    21  	"go.chromium.org/luci/common/tsmon"
    22  	"go.chromium.org/luci/common/tsmon/metric"
    23  	"go.chromium.org/luci/gae/service/module"
    24  )
    25  
    26  var (
    27  	defaultVersion = metric.NewString(
    28  		"appengine/default_version",
    29  		"Name of the version currently marked as default.",
    30  		nil)
    31  )
    32  
    33  // collectGlobalMetrics populates service-global metrics.
    34  //
    35  // Called by tsmon from inside /housekeeping cron handler. Metrics reported must
    36  // not depend on the state of the particular process that happens to report
    37  // them.
    38  func collectGlobalMetrics(ctx context.Context) {
    39  	version, err := module.DefaultVersion(ctx, "")
    40  	if err != nil {
    41  		logging.Errorf(ctx, "Error getting default appengine version: %s", err)
    42  		defaultVersion.Set(ctx, "(unknown)")
    43  	} else {
    44  		defaultVersion.Set(ctx, version)
    45  	}
    46  }
    47  
    48  func init() {
    49  	tsmon.RegisterGlobalCallback(collectGlobalMetrics, defaultVersion)
    50  }