Skip to content

Route runtime alerts to external destinations

You’ll configure Falcosidekick to forward runtime security alerts to Slack, Mattermost, or Microsoft Teams so your security operations team receives real-time notifications when Falco detects suspicious activity.

  • UDS Core deployed
  • UDS CLI installed
  • Access to a Kubernetes cluster
  • Webhook URL for your target platform (Slack, Mattermost, or Teams)

By default, Falco events are shipped to Loki for centralized log aggregation and are queryable in Grafana. This guide adds external alert forwarding on top of Loki — it does not replace the default Loki integration.

  1. Configure your output destination and network egress

    Each destination requires two overrides: the webhook config in the falco chart, and a network egress allow in the uds-falco-config chart.

    uds-bundle.yaml
    packages:
    - name: core
    repository: registry.defenseunicorns.com/public/core
    ref: x.x.x-upstream
    overrides:
    falco:
    falco:
    values:
    - path: falcosidekick.config.slack
    value:
    webhookurl: "<YOUR_SLACK_WEBHOOK_URL>"
    channel: "#<YOUR_SLACK_CHANNEL>"
    outputformat: "all"
    minimumpriority: "notice"
    uds-falco-config:
    values:
    - path: additionalNetworkAllow
    value:
    - direction: Egress
    selector:
    app.kubernetes.io/name: falcosidekick
    ports:
    - 443
    remoteHost: hooks.slack.com
    remoteProtocol: TLS
    description: "Allow Falcosidekick egress to Slack API"
    SettingDescription
    webhookurlSlack incoming webhook URL (format: https://hooks.slack.com/services/XXXX/YYYY/ZZZZ)
    channelSlack channel to post to (optional — defaults to the webhook’s configured channel)
    outputformatall (default), text (text only), or fields (fields only)
    minimumpriorityMinimum Falco priority to forward: emergency, alert, critical, error, warning, notice, informational, debug
  2. Create and deploy your bundle

    Terminal window
    uds create <path-to-bundle-dir>
    uds deploy uds-bundle-<name>-<arch>-<version>.tar.zst

Confirm Falcosidekick is running and delivering alerts:

Terminal window
# Check Falcosidekick pods are running
uds zarf tools kubectl get pods -n falco -l app.kubernetes.io/name=falcosidekick
# Check Falcosidekick logs for output delivery
uds zarf tools kubectl logs -n falco -l app.kubernetes.io/name=falcosidekick --tail=20

Trigger a test detection:

Terminal window
# Exec into any running pod to trigger the "Terminal shell in container" rule
uds zarf tools kubectl exec -it -n <any-namespace> <any-pod> -- /bin/sh

After a few seconds, confirm the alert appears in your configured destination (Slack channel, Mattermost channel, or Teams channel).

Problem: Alerts are not reaching the external destination

Section titled “Problem: Alerts are not reaching the external destination”

Symptoms: Falcosidekick logs show connection errors or timeouts when trying to deliver alerts.

Solution: Verify the additionalNetworkAllow entry is correct:

  1. Confirm remoteHost matches the actual hostname being contacted (e.g., hooks.slack.com for Slack)
  2. Confirm the selector matches app.kubernetes.io/name: falcosidekick
  3. Check that the port matches (typically 443 for HTTPS webhooks)
Terminal window
# Check if the network policy was created
uds zarf tools kubectl get networkpolicy -n falco

Problem: Falcosidekick logs show “webhook returned non-200”

Section titled “Problem: Falcosidekick logs show “webhook returned non-200””

Symptoms: Falcosidekick reaches the endpoint but gets an error response.

Solution: Verify the webhook URL is correct and active. For Slack, confirm the app is still installed in the workspace. For Mattermost, confirm the incoming webhook is enabled. For Teams, confirm the connector is still active.

These guides and concepts may be useful to explore next: