status.html 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <html><head><title>GeoDNS {{ .Version }}</title>
  2. <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
  3. <link href="//netdna.bootstrapcdn.com/bootswatch/2.3.1/cerulean/bootstrap.min.css" rel="stylesheet">
  4. <style>
  5. td.zonename,td.header { font-weight: bold; }
  6. </style>
  7. <body>
  8. <div class="container">
  9. <h1>Global</h1>
  10. <div class="row">
  11. <div class="span8">
  12. <table class="table table-bordered table-condensed">
  13. <tr>
  14. <td class="info header">Global stats</td>
  15. <td>1 min</td>
  16. <td>5 min</td>
  17. <td>15 min</td>
  18. <td>Mean</td>
  19. </tr>
  20. <tr>
  21. <td>Queries</td>
  22. <td>{{printf "%.2f" .Global.Queries.Rate1}}</td>
  23. <td>{{printf "%.2f" .Global.Queries.Rate5}}</td>
  24. <td>{{printf "%.2f" .Global.Queries.Rate15}}</td>
  25. <td>{{printf "%.2f" .Global.Queries.RateMean}}</td>
  26. </tr>
  27. </table>
  28. <table class="table table-bordered table-condensed">
  29. <tr>
  30. <td class="info header">Histograms</td>
  31. <td>Min</td>
  32. <td>Mean</td>
  33. <td>90%</td>
  34. <td>99%</td>
  35. <td>99.9%</td>
  36. <td>Max</td>
  37. <td>StdDev</td>
  38. </tr>
  39. <tr>
  40. <td>Global queries</td>
  41. <td>{{printf "%d" .Global.Histogram.Min}}</td>
  42. <td>{{printf "%.2f" .Global.Histogram.Mean}}</td>
  43. <td>{{printf "%.2f" .Global.Histogram.Pct90 }}</td>
  44. <td>{{printf "%.2f" .Global.Histogram.Pct99 }}</td>
  45. <td>{{printf "%.2f" .Global.Histogram.Pct999 }}</td>
  46. <td>{{printf "%d" .Global.Histogram.Max}}</td>
  47. <td>{{printf "%.2f" .Global.Histogram.StdDev }}</td>
  48. </tr>
  49. </table>
  50. </div>
  51. <div class="span4">
  52. <table class="table table-bordered table-condensed">
  53. <tr>
  54. <td class="header">Uptime</td>
  55. <td>{{.Uptime.DayString}}</td>
  56. </tr>
  57. <tr>
  58. <td class="header">Platform</td>
  59. <td>{{.Platform}}</td>
  60. </tr>
  61. </table>
  62. </div>
  63. </div>
  64. <h1>Zones</h1>
  65. <table class="table table-bordered table-condensed">
  66. <tr>
  67. <th></th>
  68. <th>1 minute</th>
  69. <th>5 minutes</th>
  70. <th>15 minutes</th>
  71. <th>Mean QPS</th>
  72. </tr>
  73. {{ $topOption := .TopOption}}
  74. {{range .Zones }}
  75. <tr class="info">
  76. <td colspan=5 class="zonename">{{.Name}}</td>
  77. </tr>
  78. <tr>
  79. <td>Queries</td>
  80. <td>{{printf "%.2f" .Metrics.Queries.Rate1}}</td>
  81. <td>{{printf "%.2f" .Metrics.Queries.Rate5}}</td>
  82. <td>{{printf "%.2f" .Metrics.Queries.Rate15}}</td>
  83. <td>{{printf "%.2f" .Metrics.Queries.RateMean}}</td>
  84. </tr>
  85. <tr>
  86. <td>EDNS Queries</td>
  87. <td>{{printf "%.2f" .Metrics.EdnsQueries.Rate1}}</td>
  88. <td>{{printf "%.2f" .Metrics.EdnsQueries.Rate5}}</td>
  89. <td>{{printf "%.2f" .Metrics.EdnsQueries.Rate15}}</td>
  90. <td>{{printf "%.2f" .Metrics.EdnsQueries.RateMean}}</td>
  91. </tr>
  92. {{ $counts := .Metrics.LabelStats.TopCounts $topOption }}
  93. {{ if $counts }}
  94. <tr class="info">
  95. <td colspan=5>Labels</td>
  96. </tr>
  97. {{range $counts }}
  98. <tr>
  99. <td colspan=4>{{.Label}}</td><td>{{.Count}}</td>
  100. </tr>
  101. {{end}}
  102. {{end}}
  103. {{ $clients := .Metrics.ClientStats.TopCounts $topOption }}
  104. {{ if $clients }}
  105. <tr class="info">
  106. <td colspan=5>Clients</td>
  107. </tr>
  108. {{range $clients }}
  109. <tr>
  110. <td colspan=4>{{.Label}}</td><td>{{.Count}}</td>
  111. </tr>
  112. {{end}}
  113. {{end}}
  114. {{end}}
  115. </table>
  116. </div>
  117. </body>
  118. </html>