|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | + <meta charset="UTF-8"> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | + <title>kshark Health Check Report</title> |
| 7 | + <style> |
| 8 | + :root { |
| 9 | + --color-bg: #f8f9fa; |
| 10 | + --color-surface: #ffffff; |
| 11 | + --color-text: #212529; |
| 12 | + --color-text-muted: #6c757d; |
| 13 | + --color-primary: #007bff; |
| 14 | + --color-border: #dee2e6; |
| 15 | + --color-ok: #155724; |
| 16 | + --color-ok-bg: #d4edda; |
| 17 | + --color-warn: #856404; |
| 18 | + --color-warn-bg: #fff3cd; |
| 19 | + --color-fail: #721c24; |
| 20 | + --color-fail-bg: #f8d7da; |
| 21 | + --color-skip: #6c757d; |
| 22 | + --font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; |
| 23 | + --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.05); |
| 24 | + } |
| 25 | + body { |
| 26 | + font-family: var(--font-family-sans-serif); |
| 27 | + line-height: 1.6; |
| 28 | + color: var(--color-text); |
| 29 | + background-color: var(--color-bg); |
| 30 | + margin: 0; |
| 31 | + padding: 1rem; |
| 32 | + } |
| 33 | + .container { |
| 34 | + max-width: 1140px; |
| 35 | + margin: 2rem auto; |
| 36 | + background-color: var(--color-surface); |
| 37 | + border-radius: 0.5rem; |
| 38 | + box-shadow: var(--box-shadow); |
| 39 | + border: 1px solid var(--color-border); |
| 40 | + } |
| 41 | + header { |
| 42 | + background-color: var(--color-primary); |
| 43 | + color: #fff; |
| 44 | + padding: 2rem; |
| 45 | + border-top-left-radius: 0.5rem; |
| 46 | + border-top-right-radius: 0.5rem; |
| 47 | + } |
| 48 | + header h1 { margin: 0; font-size: 2em; } |
| 49 | + header p { margin: 0.25rem 0 0; opacity: 0.9; } |
| 50 | + header img { |
| 51 | + max-width: 150px; |
| 52 | + margin: 0 auto 1rem; |
| 53 | + display: block; |
| 54 | + border-radius: 0.5rem; |
| 55 | + box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1); |
| 56 | + } |
| 57 | + section { padding: 2rem; border-bottom: 1px solid var(--color-border); } |
| 58 | + section:last-child { border-bottom: none; } |
| 59 | + h2 { |
| 60 | + font-size: 1.5em; |
| 61 | + color: var(--color-text); |
| 62 | + margin-top: 0; |
| 63 | + padding-bottom: 0.5rem; |
| 64 | + border-bottom: 2px solid var(--color-border); |
| 65 | + } |
| 66 | + h3 { font-size: 1.2em; color: var(--color-text); margin-top: 1.5rem; } |
| 67 | + .card { |
| 68 | + background: var(--color-bg); |
| 69 | + border: 1px solid var(--color-border); |
| 70 | + border-radius: 0.25rem; |
| 71 | + padding: 1.5rem; |
| 72 | + margin-bottom: 1rem; |
| 73 | + } |
| 74 | + .card p { margin: 0; } |
| 75 | + .card-list { list-style-type: none; padding: 0; } |
| 76 | + .card-list li { |
| 77 | + background: var(--color-surface); |
| 78 | + padding: 0.75rem 1.25rem; |
| 79 | + border: 1px solid var(--color-border); |
| 80 | + border-radius: 0.25rem; |
| 81 | + margin-bottom: 0.5rem; |
| 82 | + } |
| 83 | + table { width: 100%; border-collapse: collapse; margin-top: 1.5rem; } |
| 84 | + th, td { text-align: left; padding: 0.75rem; border-bottom: 1px solid var(--color-border); vertical-align: top; } |
| 85 | + th { background-color: var(--color-bg); font-weight: 600; } |
| 86 | + .status-ok { background-color: var(--color-ok-bg); } |
| 87 | + .status-ok .icon { color: var(--color-ok); } |
| 88 | + .status-warn { background-color: var(--color-warn-bg); } |
| 89 | + .status-warn .icon { color: var(--color-warn); } |
| 90 | + .status-fail { background-color: var(--color-fail-bg); font-weight: 500; } |
| 91 | + .status-fail .icon { color: var(--color-fail); } |
| 92 | + .status-skip { color: var(--color-text-muted); } |
| 93 | + .status-skip .icon { color: var(--color-skip); } |
| 94 | + .icon { font-size: 1.2em; display: inline-block; width: 25px; text-align: center; } |
| 95 | + .hint { font-size: 0.9em; color: var(--color-text-muted); margin-top: 0.25rem; padding-left: 25px; } |
| 96 | + .summary-list { list-style-type: none; padding: 0; display: flex; flex-wrap: wrap; gap: 1rem; } |
| 97 | + .summary-list li { background-color: var(--color-bg); padding: 1rem; border-radius: 0.25rem; border: 1px solid var(--color-border); flex-grow: 1; } |
| 98 | + .summary-list strong { display: block; margin-bottom: 0.5rem; } |
| 99 | + .disclaimer { font-style: italic; color: var(--color-text-muted); border-left: 3px solid var(--color-border); padding-left: 1rem; margin-top: 2rem; } |
| 100 | + </style> |
| 101 | +</head> |
| 102 | +<body> |
| 103 | + <div class="container"> |
| 104 | + <header> |
| 105 | + <img src="https://github.com/scalytics/kshark-core/blob/main/docs/images/title.png?raw=true" alt="kshark Logo"> |
| 106 | + <h1>kshark Health Check Report</h1> |
| 107 | + <p>Generated on September 10, 2025 at 8:28 PM CEST</p> |
| 108 | + </header> |
| 109 | + |
| 110 | + <section id="ai-analysis"> |
| 111 | + <h2>AI-Powered Analysis</h2> |
| 112 | + <div class="card"> |
| 113 | + <h3>Root Cause Analysis</h3> |
| 114 | + <p>The failures are due to the topic 'fii' not being found or not authorized in the Kafka layer.</p> |
| 115 | + </div> |
| 116 | + <div class="card"> |
| 117 | + <h3>Problem Layer</h3> |
| 118 | + <p>L7-Kafka</p> |
| 119 | + </div> |
| 120 | + <div class="card"> |
| 121 | + <h3>Explanation</h3> |
| 122 | + <p>The Kafka status fail errors are indicating that the 'fii' topic does not exist or is not authorized. This means that the Kafka broker cannot find or access the required topic for message distribution.</p> |
| 123 | + </div> |
| 124 | + <h3>Suggested Fixes</h3> |
| 125 | + <ul class="card-list"> |
| 126 | + |
| 127 | + <li>Check if the 'fii' topic exists and if not, create it.</li> |
| 128 | + |
| 129 | + <li>If the 'fii' topic exists, ensure proper authorization has been granted for access and operation.</li> |
| 130 | + |
| 131 | + <li>Ensure that the topic name is correctly specified in the Kafka configuration.</li> |
| 132 | + |
| 133 | + </ul> |
| 134 | + <p class="disclaimer">This analysis is based on generic world knowledge. For context-aware insights tailored to your company's specific environment, consider using the Scalytics-Connect AI stack.</p> |
| 135 | + </section> |
| 136 | + |
| 137 | + <section id="summary"> |
| 138 | + <h2>Scan Summary</h2> |
| 139 | + <ul class="summary-list"> |
| 140 | + |
| 141 | + <li> |
| 142 | + <strong>Diag</strong> |
| 143 | + <span class="status-ok">OK: 2</span>, |
| 144 | + <span class="status-warn">WARN: 0</span>, |
| 145 | + <span class="status-fail">FAIL: 0</span>, |
| 146 | + <span class="status-skip">SKIP: 1</span> |
| 147 | + </li> |
| 148 | + |
| 149 | + <li> |
| 150 | + <strong>L3-Network</strong> |
| 151 | + <span class="status-ok">OK: 2</span>, |
| 152 | + <span class="status-warn">WARN: 0</span>, |
| 153 | + <span class="status-fail">FAIL: 0</span>, |
| 154 | + <span class="status-skip">SKIP: 0</span> |
| 155 | + </li> |
| 156 | + |
| 157 | + <li> |
| 158 | + <strong>L4-TCP</strong> |
| 159 | + <span class="status-ok">OK: 1</span>, |
| 160 | + <span class="status-warn">WARN: 0</span>, |
| 161 | + <span class="status-fail">FAIL: 0</span>, |
| 162 | + <span class="status-skip">SKIP: 0</span> |
| 163 | + </li> |
| 164 | + |
| 165 | + <li> |
| 166 | + <strong>L5-6-TLS</strong> |
| 167 | + <span class="status-ok">OK: 1</span>, |
| 168 | + <span class="status-warn">WARN: 0</span>, |
| 169 | + <span class="status-fail">FAIL: 0</span>, |
| 170 | + <span class="status-skip">SKIP: 0</span> |
| 171 | + </li> |
| 172 | + |
| 173 | + <li> |
| 174 | + <strong>L7-HTTP</strong> |
| 175 | + <span class="status-ok">OK: 1</span>, |
| 176 | + <span class="status-warn">WARN: 0</span>, |
| 177 | + <span class="status-fail">FAIL: 0</span>, |
| 178 | + <span class="status-skip">SKIP: 0</span> |
| 179 | + </li> |
| 180 | + |
| 181 | + <li> |
| 182 | + <strong>L7-Kafka</strong> |
| 183 | + <span class="status-ok">OK: 1</span>, |
| 184 | + <span class="status-warn">WARN: 0</span>, |
| 185 | + <span class="status-fail">FAIL: 2</span>, |
| 186 | + <span class="status-skip">SKIP: 0</span> |
| 187 | + </li> |
| 188 | + |
| 189 | + </ul> |
| 190 | + </section> |
| 191 | + |
| 192 | + <section id="details"> |
| 193 | + <h2>Detailed Checks</h2> |
| 194 | + <table> |
| 195 | + <thead> |
| 196 | + <tr> |
| 197 | + <th style="width:40px;"></th> |
| 198 | + <th>Component</th> |
| 199 | + <th>Target</th> |
| 200 | + <th>Layer</th> |
| 201 | + <th>Detail</th> |
| 202 | + </tr> |
| 203 | + </thead> |
| 204 | + <tbody> |
| 205 | + |
| 206 | + <tr class="status-ok"> |
| 207 | + <td><span class="icon">✅</span></td> |
| 208 | + <td>kafka</td> |
| 209 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud</td> |
| 210 | + <td>L3-Network</td> |
| 211 | + <td> |
| 212 | + Resolved host |
| 213 | + |
| 214 | + </td> |
| 215 | + </tr> |
| 216 | + |
| 217 | + <tr class="status-ok"> |
| 218 | + <td><span class="icon">✅</span></td> |
| 219 | + <td>kafka</td> |
| 220 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud:9092</td> |
| 221 | + <td>L4-TCP</td> |
| 222 | + <td> |
| 223 | + Connected in 140ms |
| 224 | + |
| 225 | + </td> |
| 226 | + </tr> |
| 227 | + |
| 228 | + <tr class="status-ok"> |
| 229 | + <td><span class="icon">✅</span></td> |
| 230 | + <td>kafka</td> |
| 231 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud:9092</td> |
| 232 | + <td>L5-6-TLS</td> |
| 233 | + <td> |
| 234 | + TLS 303; peer=*.cert-intl-gkyqm625.us-east1.gcp.confluent.cloud; expires=2025-10-12 |
| 235 | + |
| 236 | + </td> |
| 237 | + </tr> |
| 238 | + |
| 239 | + <tr class="status-ok"> |
| 240 | + <td><span class="icon">✅</span></td> |
| 241 | + <td>kafka</td> |
| 242 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud:9092</td> |
| 243 | + <td>L7-Kafka</td> |
| 244 | + <td> |
| 245 | + ApiVersions OK |
| 246 | + |
| 247 | + </td> |
| 248 | + </tr> |
| 249 | + |
| 250 | + <tr class="status-fail"> |
| 251 | + <td><span class="icon">❌</span></td> |
| 252 | + <td>kafka</td> |
| 253 | + <td>fii</td> |
| 254 | + <td>L7-Kafka</td> |
| 255 | + <td> |
| 256 | + Topic not found / not authorized (DescribeTopic). |
| 257 | + |
| 258 | + <div class="hint">↳ Hint: Grant Describe on topic or create it.</div> |
| 259 | + |
| 260 | + </td> |
| 261 | + </tr> |
| 262 | + |
| 263 | + <tr class="status-ok"> |
| 264 | + <td><span class="icon">✅</span></td> |
| 265 | + <td>diag</td> |
| 266 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud</td> |
| 267 | + <td>Diag</td> |
| 268 | + <td> |
| 269 | + traceroute OK (see JSON) |
| 270 | + |
| 271 | + </td> |
| 272 | + </tr> |
| 273 | + |
| 274 | + <tr class="status-skip"> |
| 275 | + <td><span class="icon">⚪</span></td> |
| 276 | + <td>diag</td> |
| 277 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud</td> |
| 278 | + <td>Diag</td> |
| 279 | + <td> |
| 280 | + traceroute to pkc-619z3.us-east1.gcp.confluent.cloud (35.231.227.240), 64 hops max, 40 byte packets |
| 281 | + 1 192.168.0.1 2.531 ms |
| 282 | + 2 192.168.2.1 2.052 ms |
| 283 | + 3 62.155.247.158 8.703 ms |
| 284 | + 4 62.154.4.230 16.927 ms |
| 285 | + 5 80.150.170.70 17.176 ms |
| 286 | + 6 35.231.227.240 119.662 ms |
| 287 | + |
| 288 | + |
| 289 | + <div class="hint">↳ Hint: Full output in JSON if -json used.</div> |
| 290 | + |
| 291 | + </td> |
| 292 | + </tr> |
| 293 | + |
| 294 | + <tr class="status-ok"> |
| 295 | + <td><span class="icon">✅</span></td> |
| 296 | + <td>diag</td> |
| 297 | + <td>pkc-619z3.us-east1.gcp.confluent.cloud</td> |
| 298 | + <td>Diag</td> |
| 299 | + <td> |
| 300 | + MTU ok at payload 1464 |
| 301 | + |
| 302 | + </td> |
| 303 | + </tr> |
| 304 | + |
| 305 | + <tr class="status-fail"> |
| 306 | + <td><span class="icon">❌</span></td> |
| 307 | + <td>kafka</td> |
| 308 | + <td>fii</td> |
| 309 | + <td>L7-Kafka</td> |
| 310 | + <td> |
| 311 | + Produce failed: [3] Unknown Topic Or Partition: the request is for a topic or partition that does not exist on this broker |
| 312 | + |
| 313 | + </td> |
| 314 | + </tr> |
| 315 | + |
| 316 | + <tr class="status-ok"> |
| 317 | + <td><span class="icon">✅</span></td> |
| 318 | + <td>schema-reg</td> |
| 319 | + <td>psrc-lo5k9.eu-central-1.aws.confluent.cloud</td> |
| 320 | + <td>L3-Network</td> |
| 321 | + <td> |
| 322 | + Resolved host |
| 323 | + |
| 324 | + </td> |
| 325 | + </tr> |
| 326 | + |
| 327 | + <tr class="status-ok"> |
| 328 | + <td><span class="icon">✅</span></td> |
| 329 | + <td>schema-reg</td> |
| 330 | + <td>https://psrc-lo5k9.eu-central-1.aws.confluent.cloud</td> |
| 331 | + <td>L7-HTTP</td> |
| 332 | + <td> |
| 333 | + GET /subjects OK |
| 334 | + |
| 335 | + </td> |
| 336 | + </tr> |
| 337 | + |
| 338 | + </tbody> |
| 339 | + </table> |
| 340 | + </section> |
| 341 | + </div> |
| 342 | +</body> |
| 343 | +</html> |
0 commit comments