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>