github.com/grafana/pyroscope@v1.18.0/pkg/operations/v2/tool.blocks.dataset.gohtml (about) 1 <!DOCTYPE html> 2 <html class="h-100" data-bs-theme="dark"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 8 <title>Bucket Blocks Explorer (v2): Dataset {{ .Dataset.Name }}</title> 9 10 <link rel="stylesheet" href="/static/bootstrap-5.3.3.min.css"> 11 <link rel="stylesheet" href="/static/bootstrap-icons-1.8.1.css"> 12 <link rel="stylesheet" href="/static/pyroscope-styles.css"> 13 <script src="/static/bootstrap-5.3.3.bundle.min.js"></script> 14 </head> 15 <body class="d-flex flex-column h-100"> 16 <main class="flex-shrink-0"> 17 <div class="container"> 18 <div class="header row border-bottom py-3 flex-column-reverse flex-sm-row"> 19 <div class="col-12 col-sm-9 text-center text-sm-start"> 20 <h3>Bucket Blocks Explorer (v2): Dataset Details</h3> 21 </div> 22 <div class="col-12 col-sm-3 text-center text-sm-end mb-3 mb-sm-0"> 23 <a href="/ops/object-store/tenants"> 24 <img alt="Pyroscope logo" class="pyroscope-brand" src="/static/pyroscope-logo.png"> 25 </a> 26 </div> 27 </div> 28 <div class="row my-3"> 29 <p> 30 <a href="/ops/object-store/tenants/{{ .User }}/blocks/{{ .BlockID }}?shard={{ .Shard }}&block_tenant={{ .BlockTenant }}">Back to block</a> 31 </p> 32 <table class="table"> 33 <tr> 34 <td>Tenant</td> 35 <td>{{ .User }}</td> 36 </tr> 37 <tr> 38 <td>Block ID</td> 39 <td>{{ .BlockID }}</td> 40 </tr> 41 <tr> 42 <td>Dataset Name</td> 43 <td>{{ .Dataset.Name }}</td> 44 </tr> 45 <tr> 46 <td>Dataset Tenant</td> 47 <td>{{ .Dataset.Tenant }}</td> 48 </tr> 49 <tr> 50 <td>Min Time</td> 51 <td>{{ .Dataset.MinTime }}</td> 52 </tr> 53 <tr> 54 <td>Max Time</td> 55 <td>{{ .Dataset.MaxTime }}</td> 56 </tr> 57 <tr> 58 <td>Total Size</td> 59 <td>{{ .Dataset.Size }}</td> 60 </tr> 61 <tr> 62 <td colspan="2"> 63 <div class="mb-2"><strong>Size Distribution</strong></div> 64 <div class="d-flex align-items-center mb-2" style="height: 40px;"> 65 <div class="d-flex w-100" style="height: 100%; border-radius: 4px; overflow: hidden;"> 66 <div class="d-flex align-items-center justify-content-center text-white fw-bold" 67 style="background-color: #0d6efd; width: {{ .Dataset.ProfilesPercentage }}%; min-width: 0;" 68 title="Profiles: {{ .Dataset.ProfilesSize }}"> 69 {{ if ge .Dataset.ProfilesPercentage 10.0 }} 70 <span class="small">{{ printf "%.1f" .Dataset.ProfilesPercentage }}%</span> 71 {{ end }} 72 </div> 73 <div class="d-flex align-items-center justify-content-center text-white fw-bold" 74 style="background-color: #198754; width: {{ .Dataset.IndexPercentage }}%; min-width: 0;" 75 title="Index: {{ .Dataset.IndexSize }}"> 76 {{ if ge .Dataset.IndexPercentage 10.0 }} 77 <span class="small">{{ printf "%.1f" .Dataset.IndexPercentage }}%</span> 78 {{ end }} 79 </div> 80 <div class="d-flex align-items-center justify-content-center text-white fw-bold" 81 style="background-color: #ffc107; width: {{ .Dataset.SymbolsPercentage }}%; min-width: 0;" 82 title="Symbols: {{ .Dataset.SymbolsSize }}"> 83 {{ if ge .Dataset.SymbolsPercentage 10.0 }} 84 <span class="small text-dark">{{ printf "%.1f" .Dataset.SymbolsPercentage }}%</span> 85 {{ end }} 86 </div> 87 </div> 88 </div> 89 <div class="d-flex flex-wrap gap-3 small"> 90 <div> 91 <span class="d-inline-block" style="width: 16px; height: 16px; background-color: #0d6efd; border-radius: 2px; vertical-align: middle;"></span> 92 <span class="ms-1">Profiles: {{ .Dataset.ProfilesSize }} ({{ printf "%.1f" .Dataset.ProfilesPercentage }}%)</span> 93 </div> 94 <div> 95 <span class="d-inline-block" style="width: 16px; height: 16px; background-color: #198754; border-radius: 2px; vertical-align: middle;"></span> 96 <span class="ms-1">Index: {{ .Dataset.IndexSize }} ({{ printf "%.1f" .Dataset.IndexPercentage }}%)</span> 97 </div> 98 <div> 99 <span class="d-inline-block" style="width: 16px; height: 16px; background-color: #ffc107; border-radius: 2px; vertical-align: middle;"></span> 100 <span class="ms-1">Symbols: {{ .Dataset.SymbolsSize }} ({{ printf "%.1f" .Dataset.SymbolsPercentage }}%)</span> 101 </div> 102 </div> 103 </td> 104 </tr> 105 <tr> 106 <td>Labels</td> 107 <td> 108 {{ if .Dataset.LabelSets }} 109 {{ range $set := .Dataset.LabelSets }} 110 <div class="font-monospace small mb-1"> 111 { 112 {{- range $i, $pair := $set.Pairs -}} 113 {{- if $i }}, {{ end -}} 114 {{ $pair.Key }}: {{ $pair.Value }} 115 {{- end -}} 116 } 117 </div> 118 {{ end }} 119 {{ else }} 120 <p>No labels</p> 121 {{ end }} 122 </td> 123 </tr> 124 </table> 125 126 <h4 class="mt-4 mb-3">Dataset Explorer</h4> 127 <div class="row"> 128 <div class="col-md-4 mb-3"> 129 <div class="card bg-dark border-secondary h-100"> 130 <div class="card-body d-flex flex-column"> 131 <h5 class="card-title"> 132 <i class="bi bi-file-earmark-text"></i> Profiles 133 </h5> 134 <p class="card-text">View and download individual profiles from this dataset.</p> 135 <a href="/ops/object-store/tenants/{{ .User }}/blocks/{{ .BlockID }}/datasets/profiles?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}" 136 class="btn btn-primary mt-auto"> 137 View Profiles 138 </a> 139 </div> 140 </div> 141 </div> 142 <div class="col-md-4 mb-3"> 143 <div class="card bg-dark border-secondary h-100"> 144 <div class="card-body d-flex flex-column"> 145 <h5 class="card-title"> 146 <i class="bi bi-list-nested"></i> TSDB Index 147 </h5> 148 <p class="card-text">Inspect the time series database index for this dataset.</p> 149 <a href="/ops/object-store/tenants/{{ .User }}/blocks/{{ .BlockID }}/datasets/index?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}" 150 class="btn btn-primary mt-auto"> 151 View TSDB Index 152 </a> 153 </div> 154 </div> 155 </div> 156 <div class="col-md-4 mb-3"> 157 <div class="card bg-dark border-secondary h-100"> 158 <div class="card-body d-flex flex-column"> 159 <h5 class="card-title"> 160 <i class="bi bi-code-slash"></i> Symbols 161 </h5> 162 <p class="card-text">Explore the symbols table used for profile stack traces.</p> 163 <a href="/ops/object-store/tenants/{{ .User }}/blocks/{{ .BlockID }}/datasets/symbols?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}" 164 class="btn btn-primary mt-auto"> 165 View Symbols 166 </a> 167 </div> 168 </div> 169 </div> 170 </div> 171 </div> 172 </div> 173 </main> 174 <footer class="footer mt-auto py-3 bg-dark"> 175 <div class="container"> 176 <small class="text-white-50">Status @ {{ .Now }}</small> 177 </div> 178 </footer> 179 </body> 180 </html>