gitextract_9_t34r5f/ ├── .dockerignore ├── .examples/ │ ├── docker-compose/ │ │ └── compose.yaml │ ├── docker-compose-grafana-prometheus/ │ │ ├── README.md │ │ ├── compose.yaml │ │ ├── grafana/ │ │ │ ├── grafana.ini │ │ │ └── provisioning/ │ │ │ ├── dashboards/ │ │ │ │ ├── dashboard.yml │ │ │ │ └── gatus.json │ │ │ └── datasources/ │ │ │ └── prometheus.yml │ │ └── prometheus/ │ │ └── prometheus.yml │ ├── docker-compose-mattermost/ │ │ └── compose.yaml │ ├── docker-compose-mtls/ │ │ ├── certs/ │ │ │ ├── client/ │ │ │ │ ├── client.crt │ │ │ │ └── client.key │ │ │ └── server/ │ │ │ ├── ca.crt │ │ │ ├── server.crt │ │ │ └── server.key │ │ ├── compose.yaml │ │ └── nginx/ │ │ └── default.conf │ ├── docker-compose-multiple-config-files/ │ │ ├── compose.yaml │ │ └── config/ │ │ ├── backend.yaml │ │ ├── frontend.yaml │ │ └── global.yaml │ ├── docker-compose-postgres-storage/ │ │ └── compose.yaml │ ├── docker-compose-sqlite-storage/ │ │ ├── compose.yaml │ │ └── data/ │ │ └── .gitkeep │ ├── docker-minimal/ │ │ └── Dockerfile │ ├── kubernetes/ │ │ └── gatus.yaml │ └── nixos/ │ ├── README.md │ └── gatus.nix ├── .gitattributes ├── .github/ │ ├── FUNDING.yml │ ├── assets/ │ │ └── gatus-diagram.drawio │ ├── codecov.yml │ ├── dependabot.yml │ └── workflows/ │ ├── benchmark.yml │ ├── labeler.yml │ ├── publish-custom.yml │ ├── publish-experimental.yml │ ├── publish-latest.yml │ ├── publish-release.yml │ ├── regenerate-static-assets.yml │ ├── test-ui.yml │ └── test.yml ├── .gitignore ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── alerting/ │ ├── alert/ │ │ ├── alert.go │ │ ├── alert_test.go │ │ └── type.go │ ├── config.go │ └── provider/ │ ├── awsses/ │ │ ├── awsses.go │ │ └── awsses_test.go │ ├── clickup/ │ │ ├── clickup.go │ │ └── clickup_test.go │ ├── custom/ │ │ ├── custom.go │ │ └── custom_test.go │ ├── datadog/ │ │ ├── datadog.go │ │ └── datadog_test.go │ ├── discord/ │ │ ├── discord.go │ │ └── discord_test.go │ ├── email/ │ │ ├── email.go │ │ └── email_test.go │ ├── gitea/ │ │ ├── gitea.go │ │ └── gitea_test.go │ ├── github/ │ │ ├── github.go │ │ └── github_test.go │ ├── gitlab/ │ │ ├── gitlab.go │ │ └── gitlab_test.go │ ├── googlechat/ │ │ ├── googlechat.go │ │ └── googlechat_test.go │ ├── gotify/ │ │ ├── gotify.go │ │ └── gotify_test.go │ ├── homeassistant/ │ │ ├── homeassistant.go │ │ └── homeassistant_test.go │ ├── ifttt/ │ │ ├── ifttt.go │ │ └── ifttt_test.go │ ├── ilert/ │ │ ├── ilert.go │ │ └── ilert_test.go │ ├── incidentio/ │ │ ├── dedup.go │ │ ├── incidentio.go │ │ └── incidentio_test.go │ ├── line/ │ │ ├── line.go │ │ └── line_test.go │ ├── matrix/ │ │ ├── matrix.go │ │ └── matrix_test.go │ ├── mattermost/ │ │ ├── mattermost.go │ │ └── mattermost_test.go │ ├── messagebird/ │ │ ├── messagebird.go │ │ └── messagebird_test.go │ ├── n8n/ │ │ ├── n8n.go │ │ └── n8n_test.go │ ├── newrelic/ │ │ ├── newrelic.go │ │ └── newrelic_test.go │ ├── ntfy/ │ │ ├── ntfy.go │ │ └── ntfy_test.go │ ├── opsgenie/ │ │ ├── opsgenie.go │ │ └── opsgenie_test.go │ ├── pagerduty/ │ │ ├── pagerduty.go │ │ └── pagerduty_test.go │ ├── plivo/ │ │ ├── plivo.go │ │ └── plivo_test.go │ ├── provider.go │ ├── provider_test.go │ ├── pushover/ │ │ ├── pushover.go │ │ └── pushover_test.go │ ├── rocketchat/ │ │ ├── rocketchat.go │ │ └── rocketchat_test.go │ ├── sendgrid/ │ │ ├── sendgrid.go │ │ └── sendgrid_test.go │ ├── signal/ │ │ ├── signal.go │ │ └── signal_test.go │ ├── signl4/ │ │ ├── signl4.go │ │ └── signl4_test.go │ ├── slack/ │ │ ├── slack.go │ │ └── slack_test.go │ ├── splunk/ │ │ ├── splunk.go │ │ └── splunk_test.go │ ├── squadcast/ │ │ ├── squadcast.go │ │ └── squadcast_test.go │ ├── teams/ │ │ ├── teams.go │ │ └── teams_test.go │ ├── teamsworkflows/ │ │ ├── teamsworkflows.go │ │ └── teamsworkflows_test.go │ ├── telegram/ │ │ ├── telegram.go │ │ └── telegram_test.go │ ├── twilio/ │ │ ├── twilio.go │ │ └── twilio_test.go │ ├── vonage/ │ │ ├── vonage.go │ │ └── vonage_test.go │ ├── webex/ │ │ ├── webex.go │ │ └── webex_test.go │ ├── zapier/ │ │ ├── zapier.go │ │ └── zapier_test.go │ └── zulip/ │ ├── zulip.go │ └── zulip_test.go ├── api/ │ ├── api.go │ ├── api_test.go │ ├── badge.go │ ├── badge_test.go │ ├── cache.go │ ├── chart.go │ ├── chart_test.go │ ├── config.go │ ├── config_test.go │ ├── custom_css.go │ ├── endpoint_status.go │ ├── endpoint_status_test.go │ ├── external_endpoint.go │ ├── external_endpoint_test.go │ ├── raw.go │ ├── raw_test.go │ ├── spa.go │ ├── spa_test.go │ ├── suite_status.go │ ├── suite_status_test.go │ ├── util.go │ └── util_test.go ├── client/ │ ├── client.go │ ├── client_test.go │ ├── config.go │ ├── config_test.go │ └── grpc.go ├── config/ │ ├── announcement/ │ │ ├── announcement.go │ │ └── announcement_test.go │ ├── config.go │ ├── config_test.go │ ├── connectivity/ │ │ ├── connectivity.go │ │ └── connectivity_test.go │ ├── endpoint/ │ │ ├── common.go │ │ ├── common_test.go │ │ ├── condition.go │ │ ├── condition_bench_test.go │ │ ├── condition_result.go │ │ ├── condition_test.go │ │ ├── dns/ │ │ │ ├── dns.go │ │ │ └── dns_test.go │ │ ├── endpoint.go │ │ ├── endpoint_test.go │ │ ├── event.go │ │ ├── event_test.go │ │ ├── external_endpoint.go │ │ ├── external_endpoint_test.go │ │ ├── heartbeat/ │ │ │ └── heartbeat.go │ │ ├── placeholder.go │ │ ├── placeholder_test.go │ │ ├── result.go │ │ ├── result_test.go │ │ ├── ssh/ │ │ │ ├── ssh.go │ │ │ └── ssh_test.go │ │ ├── status.go │ │ ├── status_test.go │ │ ├── ui/ │ │ │ ├── ui.go │ │ │ └── ui_test.go │ │ └── uptime.go │ ├── gontext/ │ │ ├── gontext.go │ │ └── gontext_test.go │ ├── key/ │ │ ├── key.go │ │ ├── key_bench_test.go │ │ └── key_test.go │ ├── maintenance/ │ │ ├── maintenance.go │ │ └── maintenance_test.go │ ├── remote/ │ │ └── remote.go │ ├── suite/ │ │ ├── result.go │ │ ├── suite.go │ │ ├── suite_status.go │ │ └── suite_test.go │ ├── tunneling/ │ │ ├── sshtunnel/ │ │ │ ├── sshtunnel.go │ │ │ └── sshtunnel_test.go │ │ ├── tunneling.go │ │ └── tunneling_test.go │ ├── ui/ │ │ ├── ui.go │ │ └── ui_test.go │ ├── util.go │ └── web/ │ ├── web.go │ └── web_test.go ├── controller/ │ ├── controller.go │ └── controller_test.go ├── docs/ │ └── pagerduty-integration-guide.md ├── go.mod ├── go.sum ├── jsonpath/ │ ├── jsonpath.go │ ├── jsonpath_bench_test.go │ └── jsonpath_test.go ├── main.go ├── metrics/ │ ├── metrics.go │ └── metrics_test.go ├── pattern/ │ ├── pattern.go │ ├── pattern_bench_test.go │ └── pattern_test.go ├── security/ │ ├── basic.go │ ├── basic_test.go │ ├── config.go │ ├── config_test.go │ ├── oidc.go │ ├── oidc_test.go │ └── sessions.go ├── storage/ │ ├── config.go │ ├── store/ │ │ ├── common/ │ │ │ ├── errors.go │ │ │ └── paging/ │ │ │ ├── endpoint_status_params.go │ │ │ ├── endpoint_status_params_test.go │ │ │ ├── suite_status_params.go │ │ │ └── suite_status_params_test.go │ │ ├── memory/ │ │ │ ├── memory.go │ │ │ ├── memory_test.go │ │ │ ├── uptime.go │ │ │ ├── uptime_bench_test.go │ │ │ ├── uptime_test.go │ │ │ ├── util.go │ │ │ ├── util_bench_test.go │ │ │ └── util_test.go │ │ ├── sql/ │ │ │ ├── specific_postgres.go │ │ │ ├── specific_sqlite.go │ │ │ ├── sql.go │ │ │ └── sql_test.go │ │ ├── store.go │ │ ├── store_bench_test.go │ │ └── store_test.go │ └── type.go ├── test/ │ └── mock.go ├── testdata/ │ ├── badcert.key │ ├── badcert.pem │ ├── cert.key │ └── cert.pem ├── watchdog/ │ ├── alerting.go │ ├── alerting_test.go │ ├── endpoint.go │ ├── external_endpoint.go │ ├── suite.go │ └── watchdog.go └── web/ ├── app/ │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public/ │ │ ├── index.html │ │ └── manifest.json │ ├── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ ├── AnnouncementBanner.vue │ │ │ ├── EndpointCard.vue │ │ │ ├── FlowStep.vue │ │ │ ├── Loading.vue │ │ │ ├── Pagination.vue │ │ │ ├── PastAnnouncements.vue │ │ │ ├── ResponseTimeChart.vue │ │ │ ├── SearchBar.vue │ │ │ ├── SequentialFlowDiagram.vue │ │ │ ├── Settings.vue │ │ │ ├── Social.vue │ │ │ ├── StatusBadge.vue │ │ │ ├── StepDetailsModal.vue │ │ │ ├── SuiteCard.vue │ │ │ ├── Tooltip.vue │ │ │ └── ui/ │ │ │ ├── badge/ │ │ │ │ ├── Badge.vue │ │ │ │ └── index.js │ │ │ ├── button/ │ │ │ │ ├── Button.vue │ │ │ │ └── index.js │ │ │ ├── card/ │ │ │ │ ├── Card.vue │ │ │ │ ├── CardContent.vue │ │ │ │ ├── CardHeader.vue │ │ │ │ ├── CardTitle.vue │ │ │ │ └── index.js │ │ │ ├── input/ │ │ │ │ ├── Input.vue │ │ │ │ └── index.js │ │ │ └── select/ │ │ │ ├── Select.vue │ │ │ └── index.js │ │ ├── index.css │ │ ├── main.js │ │ ├── router/ │ │ │ └── index.js │ │ ├── utils/ │ │ │ ├── format.js │ │ │ ├── markdown.js │ │ │ ├── misc.js │ │ │ └── time.js │ │ └── views/ │ │ ├── EndpointDetails.vue │ │ ├── Home.vue │ │ └── SuiteDetails.vue │ ├── tailwind.config.js │ └── vue.config.js ├── static/ │ ├── css/ │ │ └── app.css │ ├── index.html │ ├── js/ │ │ ├── app.js │ │ └── chunk-vendors.js │ └── manifest.json ├── static.go └── static_test.go