This feature is available in Enterprise Edition only.

The functionality of the module might significantly change. Compatibility with future versions is not guaranteed.

Enabling debugging logs

Falco

By default, the log level for Falco is set to debug.

Falcosidekick

By default, the debug logging for Falcosidekick is disabled.

To enable debugging logging set the spec.settings.debugLogging parameter to true:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: runtime-audit-engine
spec:
  enabled: true
  settings:
    debugLogging: true

Viewing metrics

You can use the PromQL query falco_events{} to get metrics:

kubectl -n d8-monitoring exec -it prometheus-main-0 prometheus -- \
  curl -s http://127.0.0.1:9090/api/v1/query\?query\=falco_events | jq

We will add Grafana dashboard in the future for viewing metrics.

Emulating a Falco event

You can use the event-generator CLI utility to generate a Falco events.

event-generator can generate a variety of suspect actions(syscalls, k8s audit events, …).

Use the following command to run all events with the Pod in Kubernetes cluster:

kubectl run falco-event-generator --image=falcosecurity/event-generator run

If you need to implement an action, use this guide.

Emulating a Falcosidekick event

You can use the Falcosidekick /test HTTP endpoint to send a test event to all enabled outputs.

  • Get a list of Pods in d8-runtime-audit-engine namespace:

    kubectl -n d8-runtime-audit-engine get pods
    

    Example of the output:

    NAME                         READY   STATUS    RESTARTS   AGE
    runtime-audit-engine-4cpjc   4/4     Running   0          3d12h
    runtime-audit-engine-rn7nj   4/4     Running   0          3d12h
    
  • Get runtime-audit-engine-4cpjc Pod IP address:

    export POD_IP=$(kubectl -n d8-runtime-audit-engine get pod runtime-audit-engine-4cpjc --template '{{.status.podIP}}')
    
  • Create a debug event, by making a query:

    kubectl run curl --image=curlimages/curl curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" $POD_IP:2801/test
    
  • Check a debug event metric:

    kubectl -n d8-monitoring exec -it prometheus-main-0 prometheus --  \
      curl -s http://127.0.0.1:9090/api/v1/query\?query\=falco_events | jq
    
  • Example of the output part:

    {
      "metric": {
        "__name__": "falco_events",
        "container": "kube-rbac-proxy",
        "instance": "192.168.199.60:4212",
        "job": "runtime-audit-engine",
        "node": "dev-master-0",
        "priority": "Debug",
        "rule": "Test rule",
        "tier": "cluster"
      },
      "value": [
        1687150913.828,
        "2"
      ]
    }