blob: 801eece3c61bf4acde10c587e9383a70e085f475 [file] [log] [blame]
<!--
Copyright 2023 The Go Authors. All rights reserved.
Use of this source code is governed by a BSD-style
license that can be found in the LICENSE file.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Go Telemetry</title>
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="stylesheet" href="/static/index.min.css">
<script src="/static/storage.min.js"></script>
</head>
<body>
<main id="main">
<nav class="Breadcrumb js-breadcrumb">
<ol></ol>
</nav>
<div class="Container">
<div class="Content">
<h1 class="Title">Go Telemetry</h1>
<p>
This page allows you to inspect counters collected by Go Toolchain
programs on your machine. It includes counters for submitted and
pending reports. For more information about Go Toolchain telemetry
<a target="_blank" rel="noreferrer" href="https://telemetry.go.dev/privacy">
read the docs here.
</a>
</p>
<section class="Index">
<h2 id="index">Index</h2>
<ul>
<li>
<a href="#charts">Charts</a>
<ul>
{{range .Charts.Programs}}
<li>
<a href="#{{.ID}}">{{.Name}}</a>
<ul>
{{range .Counters}}
<li>
<a href="#{{.ID}}">{{.Name}}</a>
</li>
{{end}}
</ul>
</li>
{{end}}
</ul>
</li>
<li>
<a href="#config">Config</a>
</li>
<li>
<a href="#files">Counters</a>
<ul>
{{range .Files}}
<li>
<a href="#{{.ID}}"> {{.ID}} </a>
</li>
{{end}}
</ul>
</li>
<li>
<a href="#reports">Reports</a>
<ul style="column-count: auto; column-width: 10rem">
{{range .Reports}}
<li>
<a href="#{{.ID}}">{{.Week}}</a>
</li>
{{end}}
</ul>
</li>
</ul>
</section>
<section class="Charts">
<h2 id="charts">Charts</h2>
<p>
Charts are visualizations of the counters from your archived
reports. Counters for different program builds of the same program
are summed together. Use the index to navigate to charts by
counter name.
</p>
{{range .Charts.Programs}}
<div class="Chart">
{{$pname := .Name}}
<h3 id="{{.ID}}" data-label="{{$pname}}">
{{$pname}}
{{if not .Active}}
{{template "info-icon" "This program is not present in the telemetry config."}}
{{end}}
</h3>
{{range .Counters}}
<div>
{{$cname := .Name}}
<h4 id="{{.ID}}" data-label="{{$cname}}">
{{$cname}}
{{if not .Active}}
{{template "info-icon" "This counter is not present in the telemetry config."}}
{{end}}
</h4>
<div data-chart-id="{{.ID}}"></div>
</div>
{{end}}
</div>
{{end}}
</section>
<section class="Config">
<h2 id="config">Config</h2>
<p>
The config contains the list of active counters for each program
and allowed report metadata.
</p>
<label>
Version
<select class="js-selectConfig" name="config">
{{range .ConfigVersions}}
<option value="{{.}}" {{if eq . $.RequestedConfig}}selected{{end}}>
{{.}}
</option>
{{end}}
</select>
</label>
<pre style="max-height: 20rem">{{.PrettyConfig}}</pre>
</section>
<section class="Files">
<h2 id="files">Counters</h2>
<p>
Counters display data from active counter files that has not yet
been uploaded with a report or archived. If a report includes data
that is not registered in the telemetry config, a summary of those
fields and how they'll be handled appears next to the counter
values.
</p>
{{range .Files}}
<div class="File">
<h3 id="{{.ID}}">{{.ID}}</h3>
<div class="Counters">
<div class="Meta">
<span>Program:</span>
<span class="{{if not .ActiveMeta.Program}}unknown{{end}}">
{{.Meta.Program}}
</span>
<span>Version:</span>
<span class="{{if not .ActiveMeta.Version}}unknown{{end}}">
{{.Meta.Version}}
</span>
<span>GOOS:</span>
<span class="{{if not .ActiveMeta.GOOS}}unknown{{end}}">
{{.Meta.GOOS}}
</span>
<span>GOARCH:</span>
<span class="{{if not .ActiveMeta.GOARCH}}unknown{{end}}">
{{.Meta.GOARCH}}
</span>
<span>GoVersion:</span>
<span class="{{if not .ActiveMeta.GoVersion}}unknown{{end}}">
{{.Meta.GoVersion}}
</span>
<span>TimeBegin:</span>
<span>{{.Meta.TimeBegin}}</span>
<span>TimeEnd:</span>
<span>{{.Meta.TimeEnd}}</span>
</div>
{{$file := .}}
{{with .Counts}}
<div class="Count">
{{range .}}
<div class="Count-entry {{if not .Active }}unknown{{end}}">
<span>{{.Name}}</span><span>{{.Value}}</span>
</div>
{{end}}
</div>
{{end}}
{{with .Stacks}}
<div class="Stack">
Call stacks:
{{range .}}
<details>
<summary>
<div class="Count-entry {{if not .Active }}unknown{{end}}">
<span>{{.Name}}</span><span>{{.Value}}</span>
</div>
</summary>
<pre>{{.Trace}}</pre>
</details>
{{end}}
</div>
{{end}}
{{with .Summary}}
<div class="Summary">{{.}}</div>
{{end}}
</div>
</div>
{{end}}
</section>
<section class="Reports">
<h2 id="reports">Reports</h2>
<p>
Reports represent local copies of the data uploaded by the Go
command to telemetry.go.dev. Use the index to navigate to a
report by upload date or program build.
</p>
{{range .Reports}}
<div class="Report">
{{$date := .Week}}
<h3 id="reports:{{$date}}">{{$date}}</h3>
{{range .Programs}}
<div id="{{.ID}}" class="Counters">
<div class="Meta">
<span>Program:</span>
<span class="{{if not ($.Config.HasProgram .Program)}}unknown{{end}}">
{{.Program}}
</span>
<span>Version:</span>
<span class="{{if not ($.Config.HasVersion .Program .Version)}}unknown{{end}}">
{{.Version}}
</span>
<span>GOOS:</span>
<span class="{{if not ($.Config.HasGOOS .GOOS)}}unknown{{end}}">
{{.GOOS}}
</span>
<span>GOARCH:</span>
<span class="{{if not ($.Config.HasGOARCH .GOARCH)}}unknown{{end}}">
{{.GOARCH}}
</span>
<span>GoVersion:</span>
<span class="{{if not ($.Config.HasGoVersion .GoVersion)}}unknown{{end}}">
{{.GoVersion}}
</span>
</div>
{{$report := .}}
{{with .Counters}}
<div class="Count">
{{range $name, $value := .}}
<div class="Count-entry {{if not ($.Config.HasCounter $report.Program $name) }}unknown{{end}}">
<span>{{$name}}</span><span>{{$value}}</span>
</div>
{{end}}
</div>
{{end}}
{{with .Summary}}
<div class="Summary">{{.}}</div>
{{end}}
</div>
{{end}}
</div>
{{end}}
</section>
</div>
</div>
</main>
<script>
window.Page = {{.}};
</script>
<script src="/static/index.min.js"></script>
</body>
</html>