in internal/worker/pages.go [38:127]
func (s *Server) doIndexPage(w http.ResponseWriter, r *http.Request) (err error) {
defer derrors.Wrap(&err, "doIndexPage")
var (
experiments []*internal.Experiment
excluded []string
)
if s.getExperiments != nil {
experiments = s.getExperiments()
}
g, ctx := errgroup.WithContext(r.Context())
g.Go(func() error {
var err error
excluded, err = s.db.GetExcludedPrefixes(ctx)
if err != nil {
return annotation{err, "error fetching excluded"}
}
return nil
})
if err := g.Wait(); err != nil {
var e annotation
if errors.As(err, &e) {
log.Errorf(ctx, e.msg, err)
}
return err
}
gms := memory.ReadRuntimeStats()
sms, err := memory.ReadSystemStats()
if err != nil {
log.Errorf(ctx, "could not get system stats: %v", err)
}
pms, err := memory.ReadProcessStats()
if err != nil {
log.Errorf(ctx, "could not get process stats: %v", err)
}
cms, err := memory.ReadCgroupStats()
if err != nil {
log.Warningf(ctx, "could not get cgroup stats: %v", err)
}
var logsURL string
if s.cfg.OnGKE() {
env := s.cfg.DeploymentEnvironment()
cluster := env + "-" + "pkgsite"
logsURL = `https://pantheon.corp.google.com/logs/query;query=resource.type%3D%22k8s_container%22%20resource.labels.cluster_name%3D%22` +
cluster +
`%22%20resource.labels.container_name%3D%22worker%22?project=` +
s.cfg.ProjectID
} else {
logsURL = `https://cloud.google.com/console/logs/viewer?resource=gae_app%2Fmodule_id%2F` + s.cfg.ServiceID + `&project=` +
s.cfg.ProjectID
}
page := struct {
Config *config.Config
Env string
ResourcePrefix string
LatestTimestamp *time.Time
LocationID string
Hostname string
StartTime time.Time
Experiments []*internal.Experiment
Excluded []string
LoadShedStats LoadShedStats
GoMemStats runtime.MemStats
ProcessStats memory.ProcessStats
SystemStats memory.SystemStats
CgroupStats map[string]uint64
Fetches []*FetchInfo
LogsURL string
DBInfo *postgres.UserInfo
}{
Config: s.cfg,
Env: env(s.cfg),
ResourcePrefix: strings.ToLower(env(s.cfg)) + "-",
LocationID: s.cfg.LocationID,
Hostname: os.Getenv("HOSTNAME"),
StartTime: startTime,
Experiments: experiments,
Excluded: excluded,
LoadShedStats: s.ZipLoadShedStats(),
GoMemStats: gms,
ProcessStats: pms,
SystemStats: sms,
CgroupStats: cms,
Fetches: FetchInfos(),
LogsURL: logsURL,
DBInfo: s.workerDBInfo(),
}
return renderPage(ctx, w, page, s.templates[indexTemplate])
}