github.com/grafana/pyroscope@v1.18.0/pkg/operations/v2/tool.blocks.dataset.symbols.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 Symbols</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 Symbols</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 }}/datasets?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}">Back to dataset</a>
    31              </p>
    32  
    33              <div class="card bg-dark border-secondary info-card mb-3">
    34                  <div class="card-header">
    35                      <h5 class="mb-0">Dataset Information</h5>
    36                  </div>
    37                  <div class="card-body">
    38                      <ul>
    39                          <li>Dataset Name: {{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}<em>(empty)</em>{{ end }}</li>
    40                          <li>Dataset Tenant: {{ .Dataset.Tenant }}</li>
    41                          <li>Block ID: {{ .BlockID }}</li>
    42                          <li>Shard: {{ .Shard }}</li>
    43                      </ul>
    44                  </div>
    45              </div>
    46  
    47              <ul class="nav nav-tabs mb-3" id="symbolsTabs" role="tablist">
    48                  <li class="nav-item" role="presentation">
    49                      <a class="nav-link {{ if eq .Tab "strings" }}active{{ end }}" href="?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}&tab=strings&page=1&page_size={{ .PageSize }}">
    50                          Strings ({{ .Symbols.TotalStrings }})
    51                      </a>
    52                  </li>
    53                  <li class="nav-item" role="presentation">
    54                      <a class="nav-link {{ if eq .Tab "functions" }}active{{ end }}" href="?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}&tab=functions&page=1&page_size={{ .PageSize }}">
    55                          Functions ({{ .Symbols.TotalFunctions }})
    56                      </a>
    57                  </li>
    58                  <li class="nav-item" role="presentation">
    59                      <a class="nav-link {{ if eq .Tab "locations" }}active{{ end }}" href="?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}&tab=locations&page=1&page_size={{ .PageSize }}">
    60                          Locations ({{ .Symbols.TotalLocations }})
    61                      </a>
    62                  </li>
    63                  <li class="nav-item" role="presentation">
    64                      <a class="nav-link {{ if eq .Tab "mappings" }}active{{ end }}" href="?dataset={{ if .Dataset.Name }}{{ .Dataset.Name }}{{ else }}_empty{{ end }}&shard={{ .Shard }}&block_tenant={{ .BlockTenant }}&tab=mappings&page=1&page_size={{ .PageSize }}">
    65                          Mappings ({{ .Symbols.TotalMappings }})
    66                      </a>
    67                  </li>
    68              </ul>
    69  
    70              <div class="tab-content" id="symbolsTabContent">
    71                  {{ if eq .Tab "strings" }}
    72                  <div class="tab-pane fade show active" id="strings" role="tabpanel">
    73                      <div class="d-flex justify-content-between align-items-center mt-3 mb-3">
    74                          <h5 class="mb-0">Strings</h5>
    75                          <div class="text-muted">
    76                              {{ if gt .Symbols.TotalStrings 0 }}
    77                                  Showing {{ add (mul (add .Page -1) .PageSize) 1 }}-{{ if lt (mul .Page .PageSize) .Symbols.TotalStrings }}{{ mul .Page .PageSize }}{{ else }}{{ .Symbols.TotalStrings }}{{ end }} of {{ .Symbols.TotalStrings }}
    78                              {{ end }}
    79                          </div>
    80                      </div>
    81  
    82                      {{ if gt .TotalPages 1 }}
    83                      <div class="mb-3">
    84                          {{ $datasetName := "_empty" }}
    85                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
    86                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=strings" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
    87                      </div>
    88                      {{ end }}
    89  
    90                      <div class="table-responsive">
    91                          <table class="table table-sm table-dark table-striped">
    92                              <thead>
    93                                  <tr>
    94                                      <th style="width: 100px;">Index</th>
    95                                      <th>String</th>
    96                                  </tr>
    97                              </thead>
    98                              <tbody>
    99                                  {{ range .Symbols.Strings }}
   100                                  <tr>
   101                                      <td>{{ .Index }}</td>
   102                                      <td><code class="text-break">{{ .Symbol }}</code></td>
   103                                  </tr>
   104                                  {{ end }}
   105                              </tbody>
   106                          </table>
   107                      </div>
   108  
   109                      {{ if gt .TotalPages 1 }}
   110                          {{ $datasetName := "_empty" }}
   111                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   112                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=strings" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   113                      {{ end }}
   114                  </div>
   115                  {{ end }}
   116  
   117                  {{ if eq .Tab "functions" }}
   118                  <div class="tab-pane fade show active" id="functions" role="tabpanel">
   119                      <div class="d-flex justify-content-between align-items-center mt-3 mb-3">
   120                          <h5 class="mb-0">Functions</h5>
   121                          <div class="text-muted">
   122                              {{ if gt .Symbols.TotalFunctions 0 }}
   123                                  Showing {{ add (mul (add .Page -1) .PageSize) 1 }}-{{ if lt (mul .Page .PageSize) .Symbols.TotalFunctions }}{{ mul .Page .PageSize }}{{ else }}{{ .Symbols.TotalFunctions }}{{ end }} of {{ .Symbols.TotalFunctions }}
   124                              {{ end }}
   125                          </div>
   126                      </div>
   127  
   128                      {{ if gt .TotalPages 1 }}
   129                      <div class="mb-3">
   130                          {{ $datasetName := "_empty" }}
   131                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   132                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=functions" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   133                      </div>
   134                      {{ end }}
   135  
   136                      <div class="table-responsive">
   137                          <table class="table table-sm table-dark table-striped">
   138                              <thead>
   139                                  <tr>
   140                                      <th style="width: 80px;">Index</th>
   141                                      <th style="width: 100px;">ID</th>
   142                                      <th>Name</th>
   143                                      <th>System Name</th>
   144                                      <th>Filename</th>
   145                                      <th style="width: 100px;">Line</th>
   146                                  </tr>
   147                              </thead>
   148                              <tbody>
   149                                  {{ range .Symbols.Functions }}
   150                                  <tr>
   151                                      <td>{{ .Index }}</td>
   152                                      <td>{{ .ID }}</td>
   153                                      <td><code class="text-break small">{{ .Name }}</code></td>
   154                                      <td><code class="text-break small">{{ .SystemName }}</code></td>
   155                                      <td><code class="text-break small">{{ .Filename }}</code></td>
   156                                      <td>{{ .StartLine }}</td>
   157                                  </tr>
   158                                  {{ end }}
   159                              </tbody>
   160                          </table>
   161                      </div>
   162  
   163                      {{ if gt .TotalPages 1 }}
   164                          {{ $datasetName := "_empty" }}
   165                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   166                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=functions" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   167                      {{ end }}
   168                  </div>
   169                  {{ end }}
   170  
   171                  {{ if eq .Tab "locations" }}
   172                  <div class="tab-pane fade show active" id="locations" role="tabpanel">
   173                      <div class="d-flex justify-content-between align-items-center mt-3 mb-3">
   174                          <h5 class="mb-0">Locations</h5>
   175                          <div class="text-muted">
   176                              {{ if gt .Symbols.TotalLocations 0 }}
   177                                  Showing {{ add (mul (add .Page -1) .PageSize) 1 }}-{{ if lt (mul .Page .PageSize) .Symbols.TotalLocations }}{{ mul .Page .PageSize }}{{ else }}{{ .Symbols.TotalLocations }}{{ end }} of {{ .Symbols.TotalLocations }}
   178                              {{ end }}
   179                          </div>
   180                      </div>
   181  
   182                      {{ if gt .TotalPages 1 }}
   183                      <div class="mb-3">
   184                          {{ $datasetName := "_empty" }}
   185                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   186                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=locations" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   187                      </div>
   188                      {{ end }}
   189  
   190                      <div class="table-responsive">
   191                          <table class="table table-sm table-dark table-striped">
   192                              <thead>
   193                                  <tr>
   194                                      <th style="width: 80px;">Index</th>
   195                                      <th style="width: 100px;">ID</th>
   196                                      <th style="width: 150px;">Address</th>
   197                                      <th style="width: 100px;">Mapping</th>
   198                                      <th>Lines (Function @ Line)</th>
   199                                  </tr>
   200                              </thead>
   201                              <tbody>
   202                                  {{ range .Symbols.Locations }}
   203                                  <tr>
   204                                      <td>{{ .Index }}</td>
   205                                      <td>{{ .ID }}</td>
   206                                      <td><code>0x{{ printf "%x" .Address }}</code></td>
   207                                      <td>{{ .MappingID }}</td>
   208                                      <td>
   209                                          {{ if .Lines }}
   210                                              {{ range $i, $line := .Lines }}
   211                                                  {{ if $i }}<br>{{ end }}<code class="small">{{ $line.FunctionName }}</code>{{ if gt $line.Line 0 }} @ L{{ $line.Line }}{{ end }}
   212                                              {{ end }}
   213                                          {{ else }}
   214                                              <em>none</em>
   215                                          {{ end }}
   216                                      </td>
   217                                  </tr>
   218                                  {{ end }}
   219                              </tbody>
   220                          </table>
   221                      </div>
   222  
   223                      {{ if gt .TotalPages 1 }}
   224                          {{ $datasetName := "_empty" }}
   225                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   226                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=locations" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   227                      {{ end }}
   228                  </div>
   229                  {{ end }}
   230  
   231                  {{ if eq .Tab "mappings" }}
   232                  <div class="tab-pane fade show active" id="mappings" role="tabpanel">
   233                      <div class="d-flex justify-content-between align-items-center mt-3 mb-3">
   234                          <h5 class="mb-0">Mappings</h5>
   235                          <div class="text-muted">
   236                              {{ if gt .Symbols.TotalMappings 0 }}
   237                                  Showing {{ add (mul (add .Page -1) .PageSize) 1 }}-{{ if lt (mul .Page .PageSize) .Symbols.TotalMappings }}{{ mul .Page .PageSize }}{{ else }}{{ .Symbols.TotalMappings }}{{ end }} of {{ .Symbols.TotalMappings }}
   238                              {{ end }}
   239                          </div>
   240                      </div>
   241  
   242                      {{ if gt .TotalPages 1 }}
   243                      <div class="mb-3">
   244                          {{ $datasetName := "_empty" }}
   245                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   246                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=mappings" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   247                      </div>
   248                      {{ end }}
   249  
   250                      <div class="table-responsive">
   251                          <table class="table table-sm table-dark table-striped">
   252                              <thead>
   253                                  <tr>
   254                                      <th style="width: 80px;">Index</th>
   255                                      <th style="width: 100px;">ID</th>
   256                                      <th style="width: 150px;">Memory Range</th>
   257                                      <th style="width: 120px;">File Offset</th>
   258                                      <th>Filename</th>
   259                                      <th>Build ID</th>
   260                                  </tr>
   261                              </thead>
   262                              <tbody>
   263                                  {{ range .Symbols.Mappings }}
   264                                  <tr>
   265                                      <td>{{ .Index }}</td>
   266                                      <td>{{ .ID }}</td>
   267                                      <td><code class="small">0x{{ printf "%x" .MemoryStart }}-0x{{ printf "%x" .MemoryLimit }}</code></td>
   268                                      <td><code class="small">0x{{ printf "%x" .FileOffset }}</code></td>
   269                                      <td><code class="text-break small">{{ .Filename }}</code></td>
   270                                      <td><code class="text-break small">{{ .BuildID }}</code></td>
   271                                  </tr>
   272                                  {{ end }}
   273                              </tbody>
   274                          </table>
   275                      </div>
   276  
   277                      {{ if gt .TotalPages 1 }}
   278                          {{ $datasetName := "_empty" }}
   279                          {{ if .Dataset.Name }}{{ $datasetName = .Dataset.Name }}{{ end }}
   280                          {{ template "pagination" dict "BaseURL" (printf "?dataset=%s&shard=%d&block_tenant=%s&tab=mappings" $datasetName .Shard .BlockTenant) "Page" .Page "PageSize" .PageSize "TotalPages" .TotalPages "HasPrevPage" .HasPrevPage "HasNextPage" .HasNextPage }}
   281                      {{ end }}
   282                  </div>
   283                  {{ end }}
   284              </div>
   285          </div>
   286      </div>
   287  </main>
   288  <footer class="footer mt-auto py-3 bg-dark">
   289      <div class="container">
   290          <small class="text-white-50">Status @ {{ .Now }}</small>
   291      </div>
   292  </footer>
   293  </body>
   294  </html>