Skip to content

Commit 9f2f14f

Browse files
committed
prep for release v0.30.0
1 parent e2a2b91 commit 9f2f14f

File tree

1 file changed

+343
-0
lines changed

1 file changed

+343
-0
lines changed
Lines changed: 343 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,343 @@
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 &#39;fii&#39; 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 &#39;fii&#39; 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 &#39;fii&#39; topic exists and if not, create it.</li>
128+
129+
<li>If the &#39;fii&#39; 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&#39;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

Comments
 (0)