diff --git a/mission-control/docs/guide/notifications/channels/bark.mdx b/mission-control/docs/guide/notifications/channels/bark.mdx new file mode 100644 index 00000000..36c6f6ea --- /dev/null +++ b/mission-control/docs/guide/notifications/channels/bark.mdx @@ -0,0 +1,60 @@ +--- +sidebar_custom_props: + icon: bark +--- + +# Bark + +Bark is a push notification service for iOS devices. + +:::info URL Format +bark://**`devicekey`**@**`host`** +::: + +import Fields from '@site/src/components/Fields'; + + + +## Example + +```uri +bark://DEVICEKEY@api.day.app/?title=Alert&body=Check+failed&group=monitoring +``` diff --git a/mission-control/docs/guide/notifications/channels/googlechat.mdx b/mission-control/docs/guide/notifications/channels/googlechat.mdx new file mode 100644 index 00000000..74c5f891 --- /dev/null +++ b/mission-control/docs/guide/notifications/channels/googlechat.mdx @@ -0,0 +1,67 @@ +--- +sidebar_custom_props: + icon: google-chat +--- + +# Google Chat + +:::info URL Format +googlechat://chat.googleapis.com/v1/spaces/**`FOO`**/messages?key=**`bar`**&token=**`baz`** +::: + +import Fields from '@site/src/components/Fields'; + + + +## Setting up a webhook + +To use Google Chat notifications, you need to create an Incoming Webhook: + +1. Open your Google Chat room +2. Go to the room's menu and select **Configure webhooks** +3. Name the webhook and save it +4. Copy the generated incoming webhook URL + +## Extracting the service URL + +The webhook URL from Google Chat looks like: + +``` +https://chat.googleapis.com/v1/spaces//messages?key=&token= +``` + +For Mission Control, convert it to the Shoutrrr format by replacing `https` with `googlechat`: + +``` +googlechat://chat.googleapis.com/v1/spaces//messages?key=&token= +``` + +## Example + +```uri +googlechat://chat.googleapis.com/v1/spaces/AAAADdBz1Mk/messages?key=AIzaSyDd-example&token=aX6LdZNnexample +``` + +![Google Chat Webhook Setup 1](googlechat/hangouts-1.png) +![Google Chat Webhook Setup 2](googlechat/hangouts-2.png) +![Google Chat Webhook Setup 3](googlechat/hangouts-3.png) +![Google Chat Webhook Setup 4](googlechat/hangouts-4.png) diff --git a/mission-control/docs/guide/notifications/channels/gotify.mdx b/mission-control/docs/guide/notifications/channels/gotify.mdx new file mode 100644 index 00000000..0727676a --- /dev/null +++ b/mission-control/docs/guide/notifications/channels/gotify.mdx @@ -0,0 +1,80 @@ +--- +sidebar_custom_props: + icon: gotify +--- + +# Gotify + +Gotify is a self-hosted push notification service. + +:::info URL Format +gotify://**`host`**/**`token`** +::: + +import Fields from '@site/src/components/Fields'; + + + +## Examples + +Standard usage: + +```uri +gotify://gotify.example.com:443/AzyoeNS.D4iJLVa/?title=Alert&priority=1 +``` + +With a base path (behind reverse proxy): + +```uri +gotify://example.com:443/path/to/gotify/AzyoeNS.D4iJLVa/?title=Update&priority=2 +``` + +## Creating an application token + +1. Log in to your Gotify server +2. Navigate to **Apps** +3. Click **Create Application** +4. Give it a name and save +5. Copy the generated application token diff --git a/mission-control/docs/guide/notifications/channels/index.md b/mission-control/docs/guide/notifications/channels/index.md index 6345d410..d029b0bc 100644 --- a/mission-control/docs/guide/notifications/channels/index.md +++ b/mission-control/docs/guide/notifications/channels/index.md @@ -7,7 +7,7 @@ sidebar_custom_props: icon: octicon:broadcast-24 --- -:::tip Shoutrr +:::tip Shoutrrr Notifications in Mission Control are powered by [github.com/containrrr/shoutrrr](https://github.com/containrrr/shoutrrr) ::: @@ -17,9 +17,13 @@ When creating a notification you can either specify a connection or a custom URL | Service | URL format | | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | +| [Bark](./bark) | _bark://**`devicekey`**@**`host`**_ | | [Discord](./discord) | _discord://**`token`**@**`id`**_ | | [Email](./email) | _smtp://**`username`**:**`password`**@**`host`**:**`port`**/?from=**`fromAddress`**&to=**`recipient1`**[,__`recipient2`__,...]_ | +| [Google Chat](./googlechat) | _googlechat://chat.googleapis.com/v1/spaces/**`FOO`**/messages?key=**`bar`**&token=**`baz`**_ | +| [Gotify](./gotify) | _gotify://**`host`**/**`token`**_ | | [IFTTT](./ifttt) | _ifttt://**`key`**/?events=**`event1`**[,__`event2`__,...]&value1=**`value1`**&value2=**`value2`**&value3=**`value3`**_ | +| [Join](./join) | _join://shoutrrr:**`api-key`**@join/?devices=**`device1`**[,__`device2`__,...]_ | | [Mattermost](./mattermost) | _mattermost://[__`username`__@]**`mattermost-host`**/**`token`**[/__`channel`__]_ | | [Matrix](./matrix) | _matrix://**`username`**:**`password`**@**`host`**:**`port`**/[?rooms=**`!roomID1`**[,__`roomAlias2`__]]_ | | [Ntfy](./ntfy) | _ntfy://**`username`**:**`password`**@ntfy.sh/**`topic`**_ | diff --git a/mission-control/docs/guide/notifications/channels/join.mdx b/mission-control/docs/guide/notifications/channels/join.mdx new file mode 100644 index 00000000..f3b2d3db --- /dev/null +++ b/mission-control/docs/guide/notifications/channels/join.mdx @@ -0,0 +1,52 @@ +--- +sidebar_custom_props: + icon: join +--- + +# Join + +Join is a notification service that syncs notifications across your devices. + +:::info URL Format +join://shoutrrr:**`api-key`**@join/?devices=**`device1`**[,**`device2`**,...] +::: + +import Fields from '@site/src/components/Fields'; + + + +## Example + +```uri +join://shoutrrr:YOUR_API_KEY@join/?devices=deviceA,deviceB&icon=https://link.to/icon.png&title=Alert +``` + +## Getting your API key and device IDs + +1. Visit [Join by joaoapps](https://joaoapps.com/join/) +2. Sign in with your Google account +3. Your API key is displayed in your account settings +4. Device IDs are shown for each registered device diff --git a/mission-control/docs/guide/notifications/events/configs.mdx b/mission-control/docs/guide/notifications/events/configs.mdx index c3cbd0af..461ce87d 100644 --- a/mission-control/docs/guide/notifications/events/configs.mdx +++ b/mission-control/docs/guide/notifications/events/configs.mdx @@ -15,6 +15,7 @@ Configs emit events when their health changes or when they are created, modified - `config.healthy` - `config.unhealthy` +- `config.degraded` - `config.warning` - `config.unknown` @@ -56,6 +57,7 @@ The default notification template for health events is: - `config.created` - `config.updated` +- `config.changed` - `config.deleted` ```yaml title="ec2-instance-updates.yaml" @@ -68,6 +70,7 @@ spec: events: - config.created - config.updated + - config.changed - config.deleted filter: config.type == 'AWS::EC2::Instance' to: diff --git a/mission-control/docs/reference/notifications/index.mdx b/mission-control/docs/reference/notifications/index.mdx index 69c87a65..0a1f4ae7 100644 --- a/mission-control/docs/reference/notifications/index.mdx +++ b/mission-control/docs/reference/notifications/index.mdx @@ -12,25 +12,26 @@ sidebar_custom_props: Mission control uses [Shoutrrr](https://github.com/containrrr/shoutrrr/) under the hood to deliver notifications. Most of the services in the Shoutrrr are supported. Here's the complete list: -| Services | URL Format | -| ----------- | ---------------------------------------------------------------------------------------- | -| Bark | `bark://devicekey@host` | -| Discord | `discord://token@id ` | -| Email | `smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]` | -| Gotify | `gotify://gotify-host/token` | -| Google Chat | `googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz ` | -| IFTTT | `ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3 ` | -| Join | `join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]` | -| Mattermost | `mattermost://[username@]mattermost-host/token[/channel]` | -| Matrix | `matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]] ` | -| Ntfy | `ntfy://username:password@ntfy.sh/topic` | -| OpsGenie | `opsgenie://host/token?responders=responder1[,responder2] ` | -| Pushbullet | `pushbullet://api-token[/device/#channel/email]` | -| Pushover | `pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]` | -| Rocketchat | `rocketchat://[username@]rocketchat-host/token[/channel\| @recipient]` | -| Slack | `slack://[botname@]token-a/token-b/token-c` | -| Teams | `teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com` | -| Telegram | `telegram://token@telegram?chats=@channel-1[,chat-id-1,...]` | -| Zulip Chat | `zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name` | +| Services | URL Format | +| -------------- | ---------------------------------------------------------------------------------------- | +| Bark | `bark://devicekey@host` | +| Discord | `discord://token@id ` | +| Email | `smtp://username:password@host:port/?from=fromAddress&to=recipient1[,recipient2,...]` | +| Generic | Sends notifications directly to a webhook | +| Gotify | `gotify://gotify-host/token` | +| Google Chat | `googlechat://chat.googleapis.com/v1/spaces/FOO/messages?key=bar&token=baz ` | +| IFTTT | `ifttt://key/?events=event1[,event2,...]&value1=value1&value2=value2&value3=value3 ` | +| Join | `join://shoutrrr:api-key@join/?devices=device1[,device2, ...][&icon=icon][&title=title]` | +| Mattermost | `mattermost://[username@]mattermost-host/token[/channel]` | +| Matrix | `matrix://username:password@host:port/[?rooms=!roomID1[,roomAlias2]] ` | +| Ntfy | `ntfy://username:password@ntfy.sh/topic` | +| OpsGenie | `opsgenie://host/token?responders=responder1[,responder2] ` | +| Pushbullet | `pushbullet://api-token[/device/#channel/email]` | +| Pushover | `pushover://shoutrrr:apiToken@userKey/?devices=device1[,device2, ...]` | +| Rocketchat | `rocketchat://[username@]rocketchat-host/token[/channel\| @recipient]` | +| Slack | `slack://[botname@]token-a/token-b/token-c` | +| Teams | `teams://group@tenant/altId/groupOwner?host=organization.webhook.office.com` | +| Telegram | `telegram://token@telegram?chats=@channel-1[,chat-id-1,...]` | +| Zulip Chat | `zulip://bot-mail:bot-key@zulip-domain/?stream=name-or-id&topic=name` | -For more details please visit: [https://containrrr.dev/shoutrrr/0.8/services/overview/](https://containrrr.dev/shoutrrr/0.7/services/overview/) +For more details please visit: [https://containrrr.dev/shoutrrr/v0.8/services/overview/](https://containrrr.dev/shoutrrr/v0.8/services/overview/) diff --git a/styles/ignore/words-with-suggestions.txt b/styles/ignore/words-with-suggestions.txt index e7ab9d95..5da5e95c 100644 --- a/styles/ignore/words-with-suggestions.txt +++ b/styles/ignore/words-with-suggestions.txt @@ -1,79 +1,104 @@ -actionPrefix -agent_id -aggregatorName -AIOps -eks -gke -aks -datasource -fblog -Temurin -dev - - -created_at -deleted_at -updated_at -minikube -config_changes -config_summary -Temurin -fblog -valueFrom -podAnnotations -pingMode -grafanaDashboards -dockerSocket -postgrest -pprof -canaryNamespace -jmespath -shellQuote -canarySelector -containerdSocket -clusterName -change_type +AIOps +API's +APIs +Alertmanager +Ansible +Bitnami +Blackbox +Booleans +CEL's +CRD's +CRDs +Chartmuseum +Cloudprober +Cloudwatch +Cloudways +Configmaps +Cron +Crossplane +Datadog +Dependabot +Devops +Digitalocean +Dynatrace Entra -Signup -JSONNET +Filepath +Filestores +Flanksource +GCPDatabase +Gitea +Github +Gitlab +Gitops +Gotify Goto +Grafana +HTTPConnection JMESPath -routable -matchQuery -last_runtime -repeatInterval -repeatGroup -groupBy -const -icon_url -argo -clusterName +JSONNET +JSONPath +JUnit +Javascript +Jira +Jmx +Junit +Kratos +Kuberhealthy +Kustomization +Mattermost +Minio +Mul +Namespaces +Ntfy +OAuth +Opensearch +Param +Playright +Powershell +Pushbullet +Redistributable +Restic +Rocketchat +SFTPConnection +Scriptable +Semver +Shoutrrr +Signup +Statefulset +Svix +TLSConfig +Temurin +Trunc +XPath +YAMLArray +Youtube +Zulip +actionPrefix +agent_id +aggregatorName +aks alarmPrefix alertmanager -Alertmanager -Ansible anyOf api -API's -APIs apiVersion +apikey +argo argocd arkade arn asciicast +auditability +avatarurl aws awsConnection basepath bash_exporter -Bitnami blackbox -Blackbox bool boolean -auditability booleans -Booleans bools botfather botkey @@ -81,6 +106,8 @@ botmail buildMetadata caCert camelCase +canaryNamespace +canarySelector canary_check canary_check_duration canary_check_failed_count @@ -88,173 +115,148 @@ canary_check_info canary_check_success_count capitalizations cel -CEL's -Chartmuseum -check_id +change_type checkIntegrity checkRetries +check_id clearResources cli clientHost clientSecret -Cloudprober -Cloudwatch -Cloudways +clusterName +colorDebug colorError colorInfo colorWarn complianceTypes component_id config +config_changes config_id +config_summary configmap configmaps -Configmaps configs +const consumesApis containerd +containerdSocket contentType correctly? cpu crashlooping -CRD's -CRDs -CRDs +created_at created_by cron -Cron -Crossplane crypto csv -csv cyberattack cyberattacker cyberattacks darwin data -Datadog datapoint datapoints +datasource datatype datatypes deadline declaratively -deletedAt -deleteTimeout -deleteTimeout deleteTimeout +deletedAt +deleted_at dependabot -Dependabot dependsOn -Devops -Digitalocean +dev +devicekey disablePostgrest displayType dns +dockerSocket dsq dst -Dynatrace +eks enum env envvar -envvar etcd exactreply exists_one expectedContent -expectedContent expectedDigest expectedHttpStatuses expectedSize expr extraArgs +fblog fieldSelector filepath -Filepath filestat_exporter -Filestores flanksource -Flanksource fluxcd forEach fromAddress fromName gcpConnection -GCPDatabase getAction -Gitea github -Github -github_actions_exporter githubToken -Gitlab +github_actions_exporter gitops -Gitops +gke gojq golang gomplate gotemplate -Gotify grafana -Grafana -handshakeTimeout +grafanaDashboards +groupBy handshakeTimeout hardcoded hostname http -HTTPConnection httpRetryInterval -https -https -httpTimeout httpTimeout +https hyperthread hyperthreaded hyperthreading hyperthreads +icon_url ignoredRules imcp incidentcommander ingressHost -ingressHost ingressName ingressTimeout -ingressTimeout inlining insecure_tls ip javascript -Javascript -Jira +jmespath jmeter -Jmx -jq +joaoapps jq jqplay json -json_exporter jsonArray jsonLogs +json_exporter jsonpath -JSONPath junit -Junit -JUnit keypair keypairs knowledgebase knowledgebases -Kratos kubeconfig kubectl -Kuberhealthy kubernetes kubernetesResource kustomization -Kustomization kustomizations kustomize labelSelector +last_runtime ldap le lifeycle @@ -264,23 +266,21 @@ lt macos mailserver mailservers -Mattermost +matchQuery maxAge maxCount maxLength -maxSize -maxSSLExpiry maxSSLExpiry +maxSize maxWidth messageKey metacharacters millicores minAge minCount -Minio -minrecords minSize -Mul +minikube +minrecords multi-cloud multicore multiline @@ -289,46 +289,41 @@ nameOverride nameserver nameservers namespace +namespaceSelector namespaced namespaces -Namespaces -namespaceSelector newman nginx nginx's nodeSelector -Ntfy oauth -OAuth objectPath oneOf -Opensearch opensearch_exporter -originAnnotations orValue +originAnnotations packetCount pageview pageviews -Param params parent_id parseMode +pingMode ping_exporter playbook_id -Playright +podAnnotations postgres postgresql +postgrest powershell -Powershell +pprof prepends priorityClass -priorityClass prometheus promethus protobuf providesApis pulldown -Pushbullet querytype ratelimit ratelimited @@ -337,32 +332,23 @@ ratelimits reachability readonly readyTimeout -readyTimeout redis -Redistributable +repeatGroup +repeatInterval repo resourceselectors responseCodes -responseCodes -responseContent responseContent restic -Restic -Rocketchat +routable ruleset scheduleTimeout -scheduleTimeout -scheduleTimeout script_exporter -Scriptable searchPath securityContext -Semver serviceMonitor -SFTPConnection +shellQuote shoutrrr -Shoutrrr -Shoutrrr smbConnection snake_case splitLines @@ -373,7 +359,6 @@ src ssl_exporter starttls statefulset -Statefulset statefulsets staticResources stderr @@ -382,23 +367,20 @@ stdout storageclass subchart subcomponentOf -substring +subpath substring substrings -Svix targetpath targpath tcp templatable templateBody -templateBody +templateEnv templated templatedBody -templateEnv testResults textarea thresholdMillis -thresholdMillis timeframe timeframes timeseries @@ -407,27 +389,25 @@ timeslots titleKey tls tlsConfig -tlsConfig -TLSConfig toJSONPretty tolerations toml tooltip topology_id -Trunc unencrypted unescaped uniq unmarshalls +updated_at url -url -urldecode -urlencode urlParse urlPart +urldecode +urlencode userSearch uuid vCluster +valueFrom volumeMounts waitFor walkthrough @@ -438,10 +418,6 @@ webserver webservers withTemplates workflow_dispatch -XPath yaml yamlArray -YAMLArray -Youtube yq -Zulip