upright 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +66 -7
  3. data/Rakefile +22 -0
  4. data/app/assets/images/upright/.keep +0 -0
  5. data/app/assets/stylesheets/upright/_global.css +2 -0
  6. data/app/assets/stylesheets/upright/artifact.css +7 -25
  7. data/app/assets/stylesheets/upright/flash.css +19 -0
  8. data/app/assets/stylesheets/upright/header.css +14 -0
  9. data/app/assets/stylesheets/upright/incidents.css +610 -0
  10. data/app/assets/stylesheets/upright/map.css +6 -0
  11. data/app/assets/stylesheets/upright/public_status.css +534 -0
  12. data/app/controllers/concerns/.keep +0 -0
  13. data/app/controllers/concerns/upright/authentication.rb +1 -0
  14. data/app/controllers/concerns/upright/proxy_authentication.rb +134 -0
  15. data/app/controllers/upright/alertmanager_proxy_controller.rb +12 -4
  16. data/app/controllers/upright/artifacts_controller.rb +1 -1
  17. data/app/controllers/upright/incidents/updates_controller.rb +13 -0
  18. data/app/controllers/upright/incidents_controller.rb +53 -0
  19. data/app/controllers/upright/prometheus_proxy_controller.rb +13 -18
  20. data/app/controllers/upright/public/base_controller.rb +16 -0
  21. data/app/controllers/upright/public/incidents_controller.rb +6 -0
  22. data/app/controllers/upright/public/service_incidents_controller.rb +7 -0
  23. data/app/controllers/upright/public/services_controller.rb +6 -0
  24. data/app/controllers/upright/sessions_controller.rb +36 -1
  25. data/app/controllers/upright/traces_controller.rb +88 -0
  26. data/app/helpers/upright/application_helper.rb +22 -2
  27. data/app/helpers/upright/artifacts_helper.rb +20 -0
  28. data/app/helpers/upright/probe_results_helper.rb +1 -0
  29. data/app/helpers/upright/public/services_helper.rb +70 -0
  30. data/app/javascript/upright/application.js +3 -0
  31. data/app/javascript/upright/controllers/sites_map_controller.js +13 -5
  32. data/app/javascript/upright/controllers/template_controller.js +11 -0
  33. data/app/javascript/upright/public.js +5 -0
  34. data/app/jobs/upright/health_metrics_job.rb +27 -0
  35. data/app/jobs/upright/incident_reporter_job.rb +7 -0
  36. data/app/jobs/upright/maintenance_advance_job.rb +8 -0
  37. data/app/jobs/upright/playwright_video_sweep_job.rb +21 -0
  38. data/app/jobs/upright/rollups/daily_aggregation_job.rb +14 -0
  39. data/app/models/concerns/.keep +0 -0
  40. data/app/models/concerns/upright/incidents/auto_reporting.rb +93 -0
  41. data/app/models/concerns/upright/incidents/lifecycle.rb +47 -0
  42. data/app/models/concerns/upright/playwright/form_authentication.rb +3 -2
  43. data/app/models/concerns/upright/playwright/lifecycle.rb +8 -13
  44. data/app/models/concerns/upright/playwright/trace_recording.rb +53 -0
  45. data/app/models/concerns/upright/playwright/video_recording.rb +55 -14
  46. data/app/models/concerns/upright/probe_result/stale_cleanup.rb +26 -2
  47. data/app/models/concerns/upright/probeable.rb +9 -1
  48. data/app/models/concerns/upright/services/live_status.rb +69 -0
  49. data/app/models/concerns/upright/services/maintenance_status.rb +19 -0
  50. data/app/models/upright/artifact.rb +2 -1
  51. data/app/models/upright/http/request.rb +12 -3
  52. data/app/models/upright/incident/automatic_report.rb +3 -0
  53. data/app/models/upright/incident.rb +87 -0
  54. data/app/models/upright/incident_affected_service.rb +9 -0
  55. data/app/models/upright/incident_update.rb +7 -0
  56. data/app/models/upright/maintenance.rb +36 -0
  57. data/app/models/upright/persistent_record.rb +12 -0
  58. data/app/models/upright/playwright/authenticator/base.rb +50 -70
  59. data/app/models/upright/probes/http_probe.rb +30 -1
  60. data/app/models/upright/probes/playwright/base.rb +2 -0
  61. data/app/models/upright/probes/status/probe.rb +8 -0
  62. data/app/models/upright/probes/status.rb +3 -11
  63. data/app/models/upright/probes/uptime.rb +2 -9
  64. data/app/models/upright/rollups/daily_uptime.rb +28 -0
  65. data/app/models/upright/rollups/probe_rollup.rb +64 -0
  66. data/app/models/upright/rollups/probe_uptime.rb +9 -0
  67. data/app/models/upright/rollups/site_uptime.rb +75 -0
  68. data/app/models/upright/service/daily_status.rb +39 -0
  69. data/app/models/upright/service/incident_history.rb +24 -0
  70. data/app/models/upright/service/outage.rb +15 -0
  71. data/app/models/upright/service/status_page.rb +35 -0
  72. data/app/models/upright/service.rb +101 -0
  73. data/app/models/upright/status.rb +21 -0
  74. data/app/models/upright/traceroute/ip_metadata_lookup.rb +21 -2
  75. data/app/models/upright/traceroute/result.rb +8 -1
  76. data/app/views/layouts/upright/_header.html.erb +12 -2
  77. data/app/views/layouts/upright/application.html.erb +4 -1
  78. data/app/views/layouts/upright/public.html.erb +18 -0
  79. data/app/views/layouts/upright/public.rss.builder +1 -0
  80. data/app/views/upright/active_storage/attachments/_attachment.html.erb +1 -1
  81. data/app/views/upright/artifacts/show.html.erb +8 -0
  82. data/app/views/upright/incidents/_form.html.erb +93 -0
  83. data/app/views/upright/incidents/_row.html.erb +15 -0
  84. data/app/views/upright/incidents/edit.html.erb +64 -0
  85. data/app/views/upright/incidents/index.html.erb +53 -0
  86. data/app/views/upright/incidents/new.html.erb +6 -0
  87. data/app/views/upright/public/_branding.html.erb +3 -0
  88. data/app/views/upright/public/_footer.html.erb +3 -0
  89. data/app/views/upright/public/incidents/show.html.erb +29 -0
  90. data/app/views/upright/public/service_incidents/_incident.html.erb +14 -0
  91. data/app/views/upright/public/service_incidents/index.html.erb +50 -0
  92. data/app/views/upright/public/services/_active_events.html.erb +28 -0
  93. data/app/views/upright/public/services/_degraded_list.html.erb +14 -0
  94. data/app/views/upright/public/services/_overall_banner.html.erb +4 -0
  95. data/app/views/upright/public/services/_service.html.erb +34 -0
  96. data/app/views/upright/public/services/_upcoming_maintenance.html.erb +21 -0
  97. data/app/views/upright/public/services/_uptime_bar.html.erb +9 -0
  98. data/app/views/upright/public/services/index.html.erb +13 -0
  99. data/app/views/upright/public/services/index.rss.builder +29 -0
  100. data/app/views/upright/sessions/new.html.erb +14 -1
  101. data/config/importmap.rb +25 -14
  102. data/config/initializers/date_formats.rb +5 -0
  103. data/config/initializers/mime_types.rb +1 -0
  104. data/config/routes.rb +26 -2
  105. data/db/migrate/20260629000001_fix_probe_result_duration_precision.rb +14 -0
  106. data/db/persistent_migrate/20260512000001_create_upright_rollups.rb +16 -0
  107. data/db/persistent_migrate/20260702000001_create_upright_incidents.rb +34 -0
  108. data/db/persistent_migrate/20260707000001_add_probe_identity_to_upright_rollups.rb +11 -0
  109. data/db/persistent_migrate/20260709000001_add_created_by_to_incidents.rb +7 -0
  110. data/db/persistent_migrate/20260901000001_add_auto_reporting_to_upright_incidents.rb +22 -0
  111. data/lib/generators/upright/install/database_config.rb +46 -0
  112. data/lib/generators/upright/install/install_generator.rb +18 -10
  113. data/lib/generators/upright/install/templates/Dockerfile +80 -0
  114. data/lib/generators/upright/install/templates/content_security_policy.rb +42 -0
  115. data/lib/generators/upright/install/templates/deploy.yml +13 -13
  116. data/lib/generators/upright/install/templates/development_prometheus.yml +1 -1
  117. data/lib/generators/upright/install/templates/docker-compose.yml +12 -11
  118. data/lib/generators/upright/install/templates/omniauth.rb +7 -3
  119. data/lib/generators/upright/install/templates/otel_collector.yml +6 -0
  120. data/lib/generators/upright/install/templates/recurring.yml +20 -0
  121. data/lib/generators/upright/install/templates/sites.yml +4 -0
  122. data/lib/generators/upright/install/templates/upright.rb +21 -2
  123. data/lib/generators/upright/install/templates/upright.rules.yml +11 -4
  124. data/lib/upright/configuration.rb +113 -6
  125. data/lib/upright/engine.rb +25 -2
  126. data/lib/upright/metrics.rb +25 -0
  127. data/lib/upright/site.rb +31 -1
  128. data/lib/upright/version.rb +3 -1
  129. data/lib/upright.rb +29 -2
  130. metadata +107 -7
  131. data/config/credentials/development.key +0 -1
  132. data/config/credentials/test.key +0 -1
  133. data/lib/tasks/upright_tasks.rake +0 -4
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upright
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lewis Buckley
@@ -135,6 +135,20 @@ dependencies:
135
135
  - - ">="
136
136
  - !ruby/object:Gem::Version
137
137
  version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: local_time
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
138
152
  - !ruby/object:Gem::Dependency
139
153
  name: frozen_record
140
154
  requirement: !ruby/object:Gem::Requirement
@@ -163,20 +177,34 @@ dependencies:
163
177
  - - ">="
164
178
  - !ruby/object:Gem::Version
165
179
  version: '0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: faraday
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 2.14.3
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 2.14.3
166
194
  - !ruby/object:Gem::Dependency
167
195
  name: playwright-ruby-client
168
196
  requirement: !ruby/object:Gem::Requirement
169
197
  requirements:
170
198
  - - "~>"
171
199
  - !ruby/object:Gem::Version
172
- version: '1.56'
200
+ version: 1.59.0
173
201
  type: :runtime
174
202
  prerelease: false
175
203
  version_requirements: !ruby/object:Gem::Requirement
176
204
  requirements:
177
205
  - - "~>"
178
206
  - !ruby/object:Gem::Version
179
- version: '1.56'
207
+ version: 1.59.0
180
208
  - !ruby/object:Gem::Dependency
181
209
  name: prometheus-api-client
182
210
  requirement: !ruby/object:Gem::Requirement
@@ -356,36 +384,51 @@ files:
356
384
  - LICENSE.md
357
385
  - README.md
358
386
  - Rakefile
387
+ - app/assets/images/upright/.keep
359
388
  - app/assets/stylesheets/upright/_global.css
360
389
  - app/assets/stylesheets/upright/artifact.css
361
390
  - app/assets/stylesheets/upright/base.css
362
391
  - app/assets/stylesheets/upright/buttons.css
363
392
  - app/assets/stylesheets/upright/dashboard.css
393
+ - app/assets/stylesheets/upright/flash.css
364
394
  - app/assets/stylesheets/upright/forms.css
365
395
  - app/assets/stylesheets/upright/header.css
396
+ - app/assets/stylesheets/upright/incidents.css
366
397
  - app/assets/stylesheets/upright/layout.css
367
398
  - app/assets/stylesheets/upright/map.css
368
399
  - app/assets/stylesheets/upright/pagination.css
369
400
  - app/assets/stylesheets/upright/probes.css
401
+ - app/assets/stylesheets/upright/public_status.css
370
402
  - app/assets/stylesheets/upright/reset.css
371
403
  - app/assets/stylesheets/upright/tables.css
372
404
  - app/assets/stylesheets/upright/typography.css
373
405
  - app/assets/stylesheets/upright/uptime-bars.css
406
+ - app/controllers/concerns/.keep
374
407
  - app/controllers/concerns/upright/authentication.rb
408
+ - app/controllers/concerns/upright/proxy_authentication.rb
375
409
  - app/controllers/concerns/upright/subdomain_scoping.rb
376
410
  - app/controllers/upright/alertmanager_proxy_controller.rb
377
411
  - app/controllers/upright/application_controller.rb
378
412
  - app/controllers/upright/artifacts_controller.rb
379
413
  - app/controllers/upright/dashboards/probe_statuses_controller.rb
380
414
  - app/controllers/upright/dashboards/uptimes_controller.rb
415
+ - app/controllers/upright/incidents/updates_controller.rb
416
+ - app/controllers/upright/incidents_controller.rb
381
417
  - app/controllers/upright/jobs_controller.rb
382
418
  - app/controllers/upright/probe_results_controller.rb
383
419
  - app/controllers/upright/prometheus_proxy_controller.rb
420
+ - app/controllers/upright/public/base_controller.rb
421
+ - app/controllers/upright/public/incidents_controller.rb
422
+ - app/controllers/upright/public/service_incidents_controller.rb
423
+ - app/controllers/upright/public/services_controller.rb
384
424
  - app/controllers/upright/sessions_controller.rb
385
425
  - app/controllers/upright/sites_controller.rb
426
+ - app/controllers/upright/traces_controller.rb
386
427
  - app/helpers/upright/application_helper.rb
428
+ - app/helpers/upright/artifacts_helper.rb
387
429
  - app/helpers/upright/dashboards_helper.rb
388
430
  - app/helpers/upright/probe_results_helper.rb
431
+ - app/helpers/upright/public/services_helper.rb
389
432
  - app/javascript/upright/application.js
390
433
  - app/javascript/upright/controllers/application.js
391
434
  - app/javascript/upright/controllers/auto_refresh_controller.js
@@ -395,18 +438,31 @@ files:
395
438
  - app/javascript/upright/controllers/probe_results_chart_controller.js
396
439
  - app/javascript/upright/controllers/results_table_controller.js
397
440
  - app/javascript/upright/controllers/sites_map_controller.js
441
+ - app/javascript/upright/controllers/template_controller.js
442
+ - app/javascript/upright/public.js
398
443
  - app/jobs/upright/application_job.rb
444
+ - app/jobs/upright/health_metrics_job.rb
445
+ - app/jobs/upright/incident_reporter_job.rb
446
+ - app/jobs/upright/maintenance_advance_job.rb
447
+ - app/jobs/upright/playwright_video_sweep_job.rb
399
448
  - app/jobs/upright/probe_check_job.rb
449
+ - app/jobs/upright/rollups/daily_aggregation_job.rb
450
+ - app/models/concerns/.keep
400
451
  - app/models/concerns/upright/exception_recording.rb
452
+ - app/models/concerns/upright/incidents/auto_reporting.rb
453
+ - app/models/concerns/upright/incidents/lifecycle.rb
401
454
  - app/models/concerns/upright/playwright/form_authentication.rb
402
455
  - app/models/concerns/upright/playwright/helpers.rb
403
456
  - app/models/concerns/upright/playwright/lifecycle.rb
404
457
  - app/models/concerns/upright/playwright/logging.rb
405
458
  - app/models/concerns/upright/playwright/otel_tracing.rb
459
+ - app/models/concerns/upright/playwright/trace_recording.rb
406
460
  - app/models/concerns/upright/playwright/video_recording.rb
407
461
  - app/models/concerns/upright/probe_result/stale_cleanup.rb
408
462
  - app/models/concerns/upright/probe_yaml_source.rb
409
463
  - app/models/concerns/upright/probeable.rb
464
+ - app/models/concerns/upright/services/live_status.rb
465
+ - app/models/concerns/upright/services/maintenance_status.rb
410
466
  - app/models/concerns/upright/staggerable.rb
411
467
  - app/models/concerns/upright/traceroute/otel_tracing.rb
412
468
  - app/models/upright/application_record.rb
@@ -414,6 +470,12 @@ files:
414
470
  - app/models/upright/current.rb
415
471
  - app/models/upright/http/request.rb
416
472
  - app/models/upright/http/response.rb
473
+ - app/models/upright/incident.rb
474
+ - app/models/upright/incident/automatic_report.rb
475
+ - app/models/upright/incident_affected_service.rb
476
+ - app/models/upright/incident_update.rb
477
+ - app/models/upright/maintenance.rb
478
+ - app/models/upright/persistent_record.rb
417
479
  - app/models/upright/playwright/authenticator/base.rb
418
480
  - app/models/upright/playwright/storage_state.rb
419
481
  - app/models/upright/probe_result.rb
@@ -426,6 +488,16 @@ files:
426
488
  - app/models/upright/probes/traceroute_probe.rb
427
489
  - app/models/upright/probes/uptime.rb
428
490
  - app/models/upright/probes/uptime/summary.rb
491
+ - app/models/upright/rollups/daily_uptime.rb
492
+ - app/models/upright/rollups/probe_rollup.rb
493
+ - app/models/upright/rollups/probe_uptime.rb
494
+ - app/models/upright/rollups/site_uptime.rb
495
+ - app/models/upright/service.rb
496
+ - app/models/upright/service/daily_status.rb
497
+ - app/models/upright/service/incident_history.rb
498
+ - app/models/upright/service/outage.rb
499
+ - app/models/upright/service/status_page.rb
500
+ - app/models/upright/status.rb
429
501
  - app/models/upright/traceroute/hop.rb
430
502
  - app/models/upright/traceroute/ip_metadata_lookup.rb
431
503
  - app/models/upright/traceroute/mtr_parser.rb
@@ -433,6 +505,8 @@ files:
433
505
  - app/models/upright/user.rb
434
506
  - app/views/layouts/upright/_header.html.erb
435
507
  - app/views/layouts/upright/application.html.erb
508
+ - app/views/layouts/upright/public.html.erb
509
+ - app/views/layouts/upright/public.rss.builder
436
510
  - app/views/upright/active_storage/attachments/_attachment.html.erb
437
511
  - app/views/upright/alertmanager_proxy/show.html.erb
438
512
  - app/views/upright/artifacts/show.html.erb
@@ -441,21 +515,48 @@ files:
441
515
  - app/views/upright/dashboards/probe_statuses/_matrix.html.erb
442
516
  - app/views/upright/dashboards/probe_statuses/show.html.erb
443
517
  - app/views/upright/dashboards/uptimes/show.html.erb
518
+ - app/views/upright/incidents/_form.html.erb
519
+ - app/views/upright/incidents/_row.html.erb
520
+ - app/views/upright/incidents/edit.html.erb
521
+ - app/views/upright/incidents/index.html.erb
522
+ - app/views/upright/incidents/new.html.erb
444
523
  - app/views/upright/jobs/show.html.erb
445
524
  - app/views/upright/probe_results/_pagination.html.erb
446
525
  - app/views/upright/probe_results/index.html.erb
447
526
  - app/views/upright/prometheus_proxy/show.html.erb
527
+ - app/views/upright/public/_branding.html.erb
528
+ - app/views/upright/public/_footer.html.erb
529
+ - app/views/upright/public/incidents/show.html.erb
530
+ - app/views/upright/public/service_incidents/_incident.html.erb
531
+ - app/views/upright/public/service_incidents/index.html.erb
532
+ - app/views/upright/public/services/_active_events.html.erb
533
+ - app/views/upright/public/services/_degraded_list.html.erb
534
+ - app/views/upright/public/services/_overall_banner.html.erb
535
+ - app/views/upright/public/services/_service.html.erb
536
+ - app/views/upright/public/services/_upcoming_maintenance.html.erb
537
+ - app/views/upright/public/services/_uptime_bar.html.erb
538
+ - app/views/upright/public/services/index.html.erb
539
+ - app/views/upright/public/services/index.rss.builder
448
540
  - app/views/upright/sessions/new.html.erb
449
541
  - app/views/upright/sites/index.html.erb
450
542
  - config/brakeman.ignore
451
543
  - config/ci.rb
452
- - config/credentials/development.key
453
- - config/credentials/test.key
454
544
  - config/importmap.rb
545
+ - config/initializers/date_formats.rb
546
+ - config/initializers/mime_types.rb
455
547
  - config/routes.rb
456
548
  - db/migrate/20250114000001_create_upright_probe_results.rb
549
+ - db/migrate/20260629000001_fix_probe_result_duration_precision.rb
550
+ - db/persistent_migrate/20260512000001_create_upright_rollups.rb
551
+ - db/persistent_migrate/20260702000001_create_upright_incidents.rb
552
+ - db/persistent_migrate/20260707000001_add_probe_identity_to_upright_rollups.rb
553
+ - db/persistent_migrate/20260709000001_add_created_by_to_incidents.rb
554
+ - db/persistent_migrate/20260901000001_add_auto_reporting_to_upright_incidents.rb
555
+ - lib/generators/upright/install/database_config.rb
457
556
  - lib/generators/upright/install/install_generator.rb
557
+ - lib/generators/upright/install/templates/Dockerfile
458
558
  - lib/generators/upright/install/templates/alertmanager.yml
559
+ - lib/generators/upright/install/templates/content_security_policy.rb
459
560
  - lib/generators/upright/install/templates/deploy.yml
460
561
  - lib/generators/upright/install/templates/development_alertmanager.yml
461
562
  - lib/generators/upright/install/templates/development_prometheus.yml
@@ -475,7 +576,6 @@ files:
475
576
  - lib/generators/upright/playwright_probe/templates/authenticator.rb.tt
476
577
  - lib/generators/upright/playwright_probe/templates/probe.rb.tt
477
578
  - lib/omniauth/strategies/static_credentials.rb
478
- - lib/tasks/upright_tasks.rake
479
579
  - lib/upright.rb
480
580
  - lib/upright/configuration.rb
481
581
  - lib/upright/engine.rb
@@ -507,7 +607,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
507
607
  - !ruby/object:Gem::Version
508
608
  version: '0'
509
609
  requirements: []
510
- rubygems_version: 4.0.6
610
+ rubygems_version: 4.0.16
511
611
  specification_version: 4
512
612
  summary: Synthetic monitoring engine with Playwright and Prometheus metrics
513
613
  test_files: []
@@ -1 +0,0 @@
1
- 40451408e038d0fe36a8f4aed0cef429
@@ -1 +0,0 @@
1
- 40451408e038d0fe36a8f4aed0cef429
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :upright do
3
- # # Task goes here
4
- # end