├── logs-insights-results-2.csv ├── logs-insights-results-3.csv └── test-longer.ipynb /test-longer.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "piano-roads", 6 | "metadata": {}, 7 | "source": [ 8 | "Grab data from AWS CloudWatch Log Insights \n", 9 | "\n", 10 | "```\n", 11 | "fields @timestamp, @duration\n", 12 | "| filter @duration > 0\n", 13 | "| sort @duration desc\n", 14 | "| limit 10000\n", 15 | "```" 16 | ] 17 | }, 18 | { 19 | "cell_type": "code", 20 | "execution_count": 126, 21 | "id": "exposed-commonwealth", 22 | "metadata": {}, 23 | "outputs": [ 24 | { 25 | "data": { 26 | "text/plain": [ 27 | "360" 28 | ] 29 | }, 30 | "execution_count": 126, 31 | "metadata": {}, 32 | "output_type": "execute_result" 33 | } 34 | ], 35 | "source": [ 36 | "import datetime\n", 37 | "\n", 38 | "# our data is going to be array of time slices with an array of bins inside\n", 39 | "bin_step = 100 # milliseconds\n", 40 | "max_bin = 30000 # milliseconds\n", 41 | "bin_limits = [x for x in range(bin_step, max_bin, bin_step)]\n", 42 | "template_bin = [0 for x in range(int(max_bin/bin_step))]\n", 43 | "\n", 44 | "\n", 45 | "time_offset = (datetime.datetime.fromisoformat(\"2021-08-12 16:38:57.526\")- datetime.datetime(1970, 1, 1)).total_seconds()\n", 46 | "time_interval = 120 #seconds\n", 47 | "time_frame = 720 # minutes\n", 48 | "\n", 49 | "rows = [ template_bin[:] for _ in range(0,int(time_frame*60/time_interval)) ] # build an empty array\n", 50 | "\n", 51 | "len(rows)" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 128, 57 | "id": "finnish-engine", 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "# ok now we need to read the csv file, for each row of the csv file work out which time row it should go into and which bin (column)\n", 62 | "\n", 63 | "import csv\n", 64 | "csv_file = open('logs-insights-results-3.csv', 'r')\n", 65 | "reader = csv.reader(csv_file)\n", 66 | "next(reader, None) # ignore header row\n", 67 | "for row in reader:\n", 68 | " seconds = (datetime.datetime.fromisoformat(row[0])- datetime.datetime(1970, 1, 1)).total_seconds()\n", 69 | " seconds = time_offset - seconds\n", 70 | " hours = int(hours)\n", 71 | " seconds = seconds + minutes*60 + hours*60*60\n", 72 | " duration = int(float(row[1]))\n", 73 | " time_bucket = int(seconds/time_interval)\n", 74 | " duration_bucket = int((duration / bin_step))\n", 75 | " if duration_bucket > int(max_bin/bin_step):\n", 76 | " duration_bucket = int(max_bin/bin_step)\n", 77 | " rows[time_bucket][duration_bucket-1] += 1 #increment the counter for the bin in the time slice" 78 | ] 79 | }, 80 | { 81 | "cell_type": "code", 82 | "execution_count": 130, 83 | "id": "external-prime", 84 | "metadata": {}, 85 | "outputs": [ 86 | { 87 | "data": { 88 | "text/plain": [ 89 | "[0,\n", 90 | " 56,\n", 91 | " 0,\n", 92 | " 0,\n", 93 | " 0,\n", 94 | " 0,\n", 95 | " 0,\n", 96 | " 0,\n", 97 | " 0,\n", 98 | " 0,\n", 99 | " 0,\n", 100 | " 0,\n", 101 | " 0,\n", 102 | " 0,\n", 103 | " 0,\n", 104 | " 0,\n", 105 | " 0,\n", 106 | " 0,\n", 107 | " 0,\n", 108 | " 0,\n", 109 | " 0,\n", 110 | " 2,\n", 111 | " 2,\n", 112 | " 0,\n", 113 | " 0,\n", 114 | " 0,\n", 115 | " 0,\n", 116 | " 0,\n", 117 | " 0,\n", 118 | " 0,\n", 119 | " 0,\n", 120 | " 4,\n", 121 | " 0,\n", 122 | " 0,\n", 123 | " 0,\n", 124 | " 0,\n", 125 | " 0,\n", 126 | " 2,\n", 127 | " 4,\n", 128 | " 6,\n", 129 | " 4,\n", 130 | " 6,\n", 131 | " 0,\n", 132 | " 2,\n", 133 | " 2,\n", 134 | " 0,\n", 135 | " 0,\n", 136 | " 0,\n", 137 | " 2,\n", 138 | " 0,\n", 139 | " 2,\n", 140 | " 0,\n", 141 | " 0,\n", 142 | " 0,\n", 143 | " 0,\n", 144 | " 0,\n", 145 | " 0,\n", 146 | " 0,\n", 147 | " 2,\n", 148 | " 0,\n", 149 | " 0,\n", 150 | " 0,\n", 151 | " 4,\n", 152 | " 2,\n", 153 | " 4,\n", 154 | " 0,\n", 155 | " 0,\n", 156 | " 0,\n", 157 | " 0,\n", 158 | " 0,\n", 159 | " 2,\n", 160 | " 0,\n", 161 | " 0,\n", 162 | " 0,\n", 163 | " 0,\n", 164 | " 0,\n", 165 | " 0,\n", 166 | " 0,\n", 167 | " 0,\n", 168 | " 0,\n", 169 | " 0,\n", 170 | " 0,\n", 171 | " 0,\n", 172 | " 0,\n", 173 | " 0,\n", 174 | " 0,\n", 175 | " 2,\n", 176 | " 0,\n", 177 | " 0,\n", 178 | " 0,\n", 179 | " 0,\n", 180 | " 2,\n", 181 | " 2,\n", 182 | " 0,\n", 183 | " 0,\n", 184 | " 0,\n", 185 | " 2,\n", 186 | " 0,\n", 187 | " 0,\n", 188 | " 0,\n", 189 | " 0,\n", 190 | " 0,\n", 191 | " 0,\n", 192 | " 0,\n", 193 | " 0,\n", 194 | " 0,\n", 195 | " 0,\n", 196 | " 0,\n", 197 | " 0,\n", 198 | " 0,\n", 199 | " 0,\n", 200 | " 0,\n", 201 | " 0,\n", 202 | " 0,\n", 203 | " 0,\n", 204 | " 0,\n", 205 | " 0,\n", 206 | " 0,\n", 207 | " 0,\n", 208 | " 0,\n", 209 | " 0,\n", 210 | " 0,\n", 211 | " 0,\n", 212 | " 0,\n", 213 | " 0,\n", 214 | " 0,\n", 215 | " 0,\n", 216 | " 0,\n", 217 | " 0,\n", 218 | " 0,\n", 219 | " 0,\n", 220 | " 0,\n", 221 | " 0,\n", 222 | " 0,\n", 223 | " 0,\n", 224 | " 0,\n", 225 | " 0,\n", 226 | " 0,\n", 227 | " 0,\n", 228 | " 0,\n", 229 | " 0,\n", 230 | " 0,\n", 231 | " 0,\n", 232 | " 0,\n", 233 | " 0,\n", 234 | " 0,\n", 235 | " 0,\n", 236 | " 0,\n", 237 | " 0,\n", 238 | " 0,\n", 239 | " 0,\n", 240 | " 0,\n", 241 | " 0,\n", 242 | " 0,\n", 243 | " 0,\n", 244 | " 0,\n", 245 | " 0,\n", 246 | " 0,\n", 247 | " 0,\n", 248 | " 0,\n", 249 | " 0,\n", 250 | " 0,\n", 251 | " 0,\n", 252 | " 0,\n", 253 | " 0,\n", 254 | " 0,\n", 255 | " 0,\n", 256 | " 0,\n", 257 | " 0,\n", 258 | " 0,\n", 259 | " 0,\n", 260 | " 0,\n", 261 | " 0,\n", 262 | " 0,\n", 263 | " 0,\n", 264 | " 0,\n", 265 | " 0,\n", 266 | " 0,\n", 267 | " 0,\n", 268 | " 0,\n", 269 | " 0,\n", 270 | " 0,\n", 271 | " 0,\n", 272 | " 0,\n", 273 | " 0,\n", 274 | " 0,\n", 275 | " 0,\n", 276 | " 0,\n", 277 | " 0,\n", 278 | " 0,\n", 279 | " 0,\n", 280 | " 0,\n", 281 | " 0,\n", 282 | " 0,\n", 283 | " 0,\n", 284 | " 0,\n", 285 | " 0,\n", 286 | " 0,\n", 287 | " 0,\n", 288 | " 0,\n", 289 | " 0,\n", 290 | " 0,\n", 291 | " 0,\n", 292 | " 0,\n", 293 | " 0,\n", 294 | " 0,\n", 295 | " 0,\n", 296 | " 0,\n", 297 | " 0,\n", 298 | " 0,\n", 299 | " 0,\n", 300 | " 0,\n", 301 | " 0,\n", 302 | " 0,\n", 303 | " 0,\n", 304 | " 0,\n", 305 | " 0,\n", 306 | " 0,\n", 307 | " 0,\n", 308 | " 0,\n", 309 | " 0,\n", 310 | " 0,\n", 311 | " 0,\n", 312 | " 0,\n", 313 | " 0,\n", 314 | " 0,\n", 315 | " 0,\n", 316 | " 0,\n", 317 | " 0,\n", 318 | " 0,\n", 319 | " 0,\n", 320 | " 0,\n", 321 | " 0,\n", 322 | " 0,\n", 323 | " 0,\n", 324 | " 0,\n", 325 | " 0,\n", 326 | " 0,\n", 327 | " 0,\n", 328 | " 0,\n", 329 | " 0,\n", 330 | " 0,\n", 331 | " 0,\n", 332 | " 0,\n", 333 | " 0,\n", 334 | " 0,\n", 335 | " 0,\n", 336 | " 0,\n", 337 | " 0,\n", 338 | " 0,\n", 339 | " 0,\n", 340 | " 0,\n", 341 | " 0,\n", 342 | " 0,\n", 343 | " 0,\n", 344 | " 0,\n", 345 | " 0,\n", 346 | " 0,\n", 347 | " 0,\n", 348 | " 0,\n", 349 | " 0,\n", 350 | " 0,\n", 351 | " 0,\n", 352 | " 0,\n", 353 | " 0,\n", 354 | " 0,\n", 355 | " 0,\n", 356 | " 0,\n", 357 | " 0,\n", 358 | " 0,\n", 359 | " 0,\n", 360 | " 0,\n", 361 | " 0,\n", 362 | " 0,\n", 363 | " 0,\n", 364 | " 0,\n", 365 | " 0,\n", 366 | " 0,\n", 367 | " 0,\n", 368 | " 0,\n", 369 | " 0,\n", 370 | " 0,\n", 371 | " 0,\n", 372 | " 0,\n", 373 | " 0,\n", 374 | " 0,\n", 375 | " 0,\n", 376 | " 0,\n", 377 | " 0,\n", 378 | " 0,\n", 379 | " 0,\n", 380 | " 0,\n", 381 | " 0,\n", 382 | " 0,\n", 383 | " 0,\n", 384 | " 0,\n", 385 | " 0,\n", 386 | " 0,\n", 387 | " 0,\n", 388 | " 0]" 389 | ] 390 | }, 391 | "execution_count": 130, 392 | "metadata": {}, 393 | "output_type": "execute_result" 394 | } 395 | ], 396 | "source": [ 397 | "rows[0]" 398 | ] 399 | }, 400 | { 401 | "cell_type": "code", 402 | "execution_count": 131, 403 | "id": "informational-oxford", 404 | "metadata": { 405 | "scrolled": true 406 | }, 407 | "outputs": [ 408 | { 409 | "data": { 410 | "text/plain": [ 411 | "" 412 | ] 413 | }, 414 | "execution_count": 131, 415 | "metadata": {}, 416 | "output_type": "execute_result" 417 | }, 418 | { 419 | "data": { 420 | "image/png": "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\n", 421 | "text/plain": [ 422 | "
" 423 | ] 424 | }, 425 | "metadata": { 426 | "needs_background": "light" 427 | }, 428 | "output_type": "display_data" 429 | } 430 | ], 431 | "source": [ 432 | "plot = None\n", 433 | "import matplotlib.pyplot as plot\n", 434 | "from matplotlib.colors import LogNorm\n", 435 | "import matplotlib.ticker as ticker\n", 436 | "\n", 437 | "import numpy as np\n", 438 | "\n", 439 | "#plot.plot(rows)\n", 440 | "plot.figure(figsize=(10, 30), dpi=80)\n", 441 | "\n", 442 | "plot.xlabel('Latency (ms)')\n", 443 | "\n", 444 | "plot.ylabel('Time (s)')\n", 445 | "\n", 446 | "\n", 447 | "\n", 448 | "data = np.array(rows)\n", 449 | "#norm = LogNorm(data.mean() + 0.5 * data.std(), data.max(), clip='False')\n", 450 | "plot.imshow(data, cmap='turbo', interpolation='nearest',extent=[0,max_bin,0,time_frame*60])\n", 451 | " " 452 | ] 453 | } 454 | ], 455 | "metadata": { 456 | "kernelspec": { 457 | "display_name": "Python 3", 458 | "language": "python", 459 | "name": "python3" 460 | }, 461 | "language_info": { 462 | "codemirror_mode": { 463 | "name": "ipython", 464 | "version": 3 465 | }, 466 | "file_extension": ".py", 467 | "mimetype": "text/x-python", 468 | "name": "python", 469 | "nbconvert_exporter": "python", 470 | "pygments_lexer": "ipython3", 471 | "version": "3.9.1" 472 | } 473 | }, 474 | "nbformat": 4, 475 | "nbformat_minor": 5 476 | } 477 | --------------------------------------------------------------------------------