<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Falco – Troubleshooting</title><link>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/</link><description>Recent content in Troubleshooting on Falco</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/feed.xml" rel="self" type="application/rss+xml"/><item><title>Docs: Performance</title><link>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/performance/</guid><description>
&lt;p&gt;First and foremost, if something goes seriously wrong during Falco deployment, it's usually noticeable immediately. On a longer time scale, continuous performance monitoring and quality assurance, driven by the right metrics, ensure Falco functions as expected 24/7.&lt;/p&gt;
&lt;p&gt;As a security tool, Falco requires checking for a healthy deployment on multiple dimensions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Resource utilization and system impact: Strive to minimize compute overhead while ensuring the desired monitoring scope is achieved.&lt;/li&gt;
&lt;li&gt;Disruption/upgrades: Ensure minimal downtime and avoid interruptions to the service, minimizing restarts.&lt;/li&gt;
&lt;li&gt;Data quality assurance: Verify that Falco outputs contain the desired quality with little to no missing data.&lt;/li&gt;
&lt;li&gt;End-to-end data pipeline testing: Ensure alerts reach their end destination as quickly as possible.&lt;/li&gt;
&lt;li&gt;Security monitoring capabilities: Adopting the right Falco rules and resilience to bypasses by attackers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Falco Project provides guidance on some of these aspects, and there are ongoing long-term efforts, including a &lt;a href="https://github.com/falcosecurity/cncf-green-review-testing/tree/main"&gt;partnership&lt;/a&gt; with the CNCF TAG Environmental Sustainability, aimed at enhancing Falco's performance and assessing its impact on the system. These efforts are intended to make it easier for adopters to assess the actual impact on their systems, enabling them to make informed decisions about the cost-security monitoring tradeoffs.&lt;/p&gt;
&lt;h2 id="resource-utilization-and-system-impact"&gt;Resource Utilization and System Impact&lt;/h2&gt;
&lt;p&gt;The Falco Project provides native support for measuring resource utilization and statistics, including event drop counters, kernel tracepoint invocation counters, timeouts, and internal state handling. More detailed information is given in the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/"&gt;Falco Metrics&lt;/a&gt; Guide.&lt;/p&gt;
&lt;h3 id="cpu-and-memory-utilization"&gt;CPU and Memory Utilization&lt;/h3&gt;
&lt;p&gt;On top of the mind for SREs or system admins is how much CPU and memory Falco will utilize on their hosts. They need to assess whether the cost is justified. To maintain excellent relationships with infrastructure teams, setting resource limits for your Falco deployment is crucial. This can be done through systemd or &lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/"&gt;daemonset&lt;/a&gt; limits in a Kubernetes environment.&lt;/p&gt;
&lt;p&gt;This is an essential consideration because running a kernel tool always comes with specific challenges and considerations. For example, it could slow down the kernel or the request rates of applications.&lt;/p&gt;
&lt;p&gt;Top metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU usage: Typically measured as a percentage of one CPU, it can be compared with the number of available CPUs on the host. Falco's hot path is single-threaded, so it should not be able to exceed the capacity of one full CPU.&lt;/li&gt;
&lt;li&gt;Memory RSS: Resident Set Size is the portion of memory held in RAM by a process.&lt;/li&gt;
&lt;li&gt;Memory VSZ: Virtual Memory Size is the total memory allocated to a process, including both RAM and swap space.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mohamedmsaeed.medium.com/memory-working-set-vs-memory-rss-in-kubernetes-which-one-you-should-monitor-8ef77bf0acee"&gt;container_memory_working_set_bytes&lt;/a&gt; in Kubernetes settings: This is almost equivalent to the cgroups container &lt;code&gt;memory_used&lt;/code&gt; metric natively exposed in Falco metrics.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Beyond monitoring the tool's utilization, check if your applications perform as before. This evaluation could include overall network, I/O, or general contention metrics.&lt;/p&gt;
&lt;p&gt;Read &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics"&gt;Falco Metrics&lt;/a&gt; next.&lt;/p&gt;
&lt;h3 id="server-load-and-falco-event-drops"&gt;Server Load and Falco Event Drops&lt;/h3&gt;
&lt;p&gt;A common misconception is to think that Falco has constant resource utilization. However, that is not accurate. Falco's utilization is directly dependent on the current workload on the host. The more system calls the applications make, the more work Falco has to handle. You can read our &lt;a href="https://github.com/falcosecurity/libs/blob/master/proposals/20230530-driver-kernel-testing-framework.md#why-does-kernel-testing-matter"&gt;Kernel Testing Framework Proposal&lt;/a&gt; for more insights into this topic.&lt;/p&gt;
&lt;p&gt;Read &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/dropping/"&gt;Falco Is Dropping Syscalls Events&lt;/a&gt; next.&lt;/p&gt;
&lt;p&gt;Top metrics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kernel side and userspace event counts.&lt;/li&gt;
&lt;li&gt;Kernel side and userspace event drop counts.&lt;/li&gt;
&lt;li&gt;Kernel tracepoint invocation counts to deduce the overall server load.&lt;/li&gt;
&lt;li&gt;Userspace timeouts.&lt;/li&gt;
&lt;li&gt;Falco internal state counters.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: Falco Is Not Starting Up</title><link>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/start-up-error/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/start-up-error/</guid><description>
&lt;h2 id="action-items-tl-dr"&gt;Action Items (TL;DR)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Read &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/install-operate/"&gt;Install and Operate&lt;/a&gt; Guides and review &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;falco.yaml&lt;/a&gt; and any local configuration file for necessary preconditions.&lt;/li&gt;
&lt;li&gt;Address common startup issues by verifying and correcting config misconceptions.&lt;/li&gt;
&lt;li&gt;Monitor for potential kernel driver bugs, though less frequent.&lt;/li&gt;
&lt;li&gt;Be aware of userspace bugs that can also interfere with Falco startup.&lt;/li&gt;
&lt;li&gt;First, always try running Falco with the default and/or easiest configuration without any plugins.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let's find out!&lt;/p&gt;
&lt;h2 id="debugging-tips"&gt;Debugging Tips&lt;/h2&gt;
&lt;p&gt;Please acknowledge that The Falco Project performs a wide range of tests and provides pre-built kernel drivers, but perfection is not guaranteed.&lt;/p&gt;
&lt;p&gt;How do I determine if Falco does not start up because of a kernel driver or userspace or pure config issue?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When you start Falco, watch the print statements.&lt;/li&gt;
&lt;li&gt;If Falco crashes after passing load config stages, especially during syscall source setup, it signals potential kernel driver issues. These issues may include device unavailability, permission problems, or strange printouts. Alternatively, it could suggest that the kernel driver is not present in the first place, for instance, due to a download failure or missing mounts.&lt;/li&gt;
&lt;li&gt;If Falco started up, but then crashed after, it's likely a genuine bug somewhere, we would have to find out.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="kernel-drivers"&gt;Kernel Drivers&lt;/h3&gt;
&lt;p&gt;Falco kernel driver issues are the most common source of frustrating errors.
Please note that since Falco 0.38.0, &lt;code&gt;modern_ebpf&lt;/code&gt; driver is the new default driver, and it will be automatically used wherever is supported; this should help mitigate most of the following issues.
Here are a few tips to demystify what can go wrong with respect to Falco's kernel drivers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Check if all preconditions to start up the kernel drivers are met. Common issues include:
&lt;ul&gt;
&lt;li&gt;For &lt;code&gt;ebpf&lt;/code&gt; based drivers, the &lt;code&gt;bpf&lt;/code&gt; syscall needs to be allowed and not blocked by SELinux or similar.&lt;/li&gt;
&lt;li&gt;Ensure the DKMS package is installed for the &lt;code&gt;kmod&lt;/code&gt; driver, and your system may require custom-signed kernel modules. Also, verify the availability of the host &lt;code&gt;/dev&lt;/code&gt; mount (e.g. &lt;code&gt;/dev:/host/dev&lt;/code&gt; when running Falco over a container).&lt;/li&gt;
&lt;li&gt;In general, check that Falco has all host mounts when running from a container or as a daemonset in Kubernetes. Critical mounts for running Falco, assuming the kernel driver is available, include: &lt;code&gt;/etc:/host/etc&lt;/code&gt;, &lt;code&gt;/proc:/host/proc&lt;/code&gt;, &lt;code&gt;/boot:/host/boot&lt;/code&gt;, &lt;code&gt;/dev:/host/dev&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;For &lt;code&gt;ebpf&lt;/code&gt; and &lt;code&gt;kmod&lt;/code&gt; drivers, the kernel object code needs to be available for the exact kernel release (&lt;code&gt;uname -r&lt;/code&gt;) of your system. This invites a wide range of possible issues:
&lt;ul&gt;
&lt;li&gt;If you use the Falco open source binary on Linux distributions such as stock Ubuntu, Fedora, Debian, Arch Linux, Oracle Linux, Rocky Linux, AlmaLinux, etc., you may encounter an issue if the pre-built kernel driver from The Falco Project is not available for download. Verify on the &lt;a href="https://download.falco.org/driver/site/index.html"&gt;Driver Index&lt;/a&gt; page if the driver is available for your specific OS and kernel.&lt;/li&gt;
&lt;li&gt;Your network ACLs may be blocking the download.&lt;/li&gt;
&lt;li&gt;In case the download fails, building the driver on the fly (over the init container in Kubernetes, for example) can fail for many reasons.&lt;/li&gt;
&lt;li&gt;Lastly, if you run a custom kernel, you'll need to build your own drivers (&lt;code&gt;ebpf&lt;/code&gt; or &lt;code&gt;kmod&lt;/code&gt; only) or explore the option of using the &lt;code&gt;modern_ebpf&lt;/code&gt; driver if applicable.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;If your kernel version is &amp;gt;= 5.8 and you are enforcing either &lt;code&gt;kmod&lt;/code&gt; or &lt;code&gt;ebpf&lt;/code&gt; driver, consider switching to the &lt;code&gt;modern_ebpf&lt;/code&gt; driver. It's bundled into the userspace binary and works out of the box, regardless of the kernel release, thanks to the eBPF feature called 'Compile Once Run Everywhere' (CO-RE).&lt;/li&gt;
&lt;li&gt;If you are using the &lt;code&gt;ebpf&lt;/code&gt; or &lt;code&gt;modern_ebpf&lt;/code&gt; driver and encounter verbose and lengthy instruction printouts, you may have encountered a dreaded eBPF verifier failure. In such cases, kindly reach out to the Falco maintainers, providing the kernel release (&lt;code&gt;uname -r&lt;/code&gt;). Resolving such instances involves modifying the driver code to ensure the eBPF verifier is happy again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="userspace"&gt;Userspace&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Errors associated with Falco's rules or configurations are generally more understandable, and we provide warnings with clear instructions.&lt;/li&gt;
&lt;li&gt;Historically, we have encountered edge case bugs with some newer features. Please bear with us in such cases, and we typically release patches to address them.&lt;/li&gt;
&lt;li&gt;In the past, there have been instances where regressions were introduced, and certain configurations or combinations thereof may exhibit unexpected behavior. However, Falco's core functionality undergoes comprehensive testing, and we are committed to ensuring its continued reliability.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="restarts"&gt;Restarts&lt;/h3&gt;
&lt;p&gt;Falco is a C/C++ application for performance reasons, and as such, it is not unheard of for Falco to crash and restart in some rare code paths or edge case conditions. However, if you deploy Falco with resource limits, for example the OOM killer can also kill the process and force a restart. Read more in the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/performance/"&gt;Falco Performance&lt;/a&gt; Guide.&lt;/p&gt;
&lt;h3 id="references-and-community-discussions"&gt;References and Community Discussions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/2873"&gt;[UMBRELLA] Errors at Falco start-up related to Falco's kernel driver {kmod, ebpf, modern_ebpf}&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/performance/"&gt;Falco Performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://download.falco.org/driver/site/index.html"&gt;Driver Index&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: Falco Is Dropping Syscalls Events</title><link>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/dropping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/dropping/</guid><description>
&lt;h2 id="action-items-tl-dr"&gt;Action Items (TL;DR)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Adjust the &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;buf_size_preset&lt;/a&gt; in the falco.yaml config.&lt;/li&gt;
&lt;li&gt;Utilize &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;base_syscalls&lt;/a&gt; to limit the syscalls under monitoring.&lt;/li&gt;
&lt;li&gt;Audit and optimize Falco rules to prevent unnecessary backpressure on the kernel, considering that Falco's main event stream is single-threaded.&lt;/li&gt;
&lt;li&gt;Try running Falco without any plugins.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Falco monitors each syscall based on deployed Falco rules. Additionally, Falco requires a few more syscalls to function properly, see &lt;a href="https://falco.org/blog/adaptive-syscalls-selection/"&gt;Adaptive Syscalls Selection&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The default configuration is conservative; consequently, there is an opportunity that you could optimize and even eliminate Falco dropping events, depending on the scope of monitoring you are seeking.&lt;/li&gt;
&lt;li&gt;Utilize the &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;base_syscalls&lt;/a&gt; config for precise override control alongside a resource-friendly suggestion of the absolute minimum additional syscalls needed to ensure proper functioning of Falco (set &lt;code&gt;repair: true&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Falco monitors syscalls by hooking into kernel tracepoints. To transfer events from the kernel to userspace, it uses buffers. For each CPU, Falco allocates separate buffers. If you're using the &lt;code&gt;modern_ebpf&lt;/code&gt; driver, you can choose to have fewer, larger buffers shared among multiple CPUs (contention, according to kernel experts, should not be a problem). The buffer size is fixed but can be adjusted in the &lt;code&gt;buf_size_preset&lt;/code&gt; config. Increasing the size helps, but keep in mind that the benefits may not increase proportionally. Also, remember that a larger buffer means more preallocated memory.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;buf_size_preset&lt;/a&gt; of &lt;code&gt;5&lt;/code&gt; or &lt;code&gt;6&lt;/code&gt; could be a valid option for large machines assuming you use the kmod or ebpf drivers.&lt;/li&gt;
&lt;li&gt;For the &lt;code&gt;modern_ebpf&lt;/code&gt; driver try a &lt;code&gt;modern_ebpf.buf_size_preset&lt;/code&gt; of &lt;code&gt;6&lt;/code&gt; or &lt;code&gt;7&lt;/code&gt;, along with a &lt;code&gt;modern_ebpf.cpus_for_each_buffer&lt;/code&gt; of &lt;code&gt;4&lt;/code&gt; or &lt;code&gt;6&lt;/code&gt;. Feel free to experiment and adjust these values as needed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lastly, while it may sound appealing to push all filtering into the kernel, it is not that straightforward. In the kernel, you are in the application context, and yes, you can slow down both the kernel and the application (for example, apps may then experience lower request rates). Checkout the &lt;a href="https://github.com/falcosecurity/libs/blob/master/proposals/20230530-driver-kernel-testing-framework.md"&gt;Driver Kernel Testing Framework&lt;/a&gt; for more information. Additionally, in the kernel, you only have raw syscall arguments and can't easily correlate them with other events. All this being said, we are actively looking into ways to improve this and make the kernel logic smarter without sacrificing performance.&lt;/p&gt;
&lt;h2 id="kernel-side-syscalls-drops-metrics"&gt;Kernel-side Syscalls Drops Metrics&lt;/h2&gt;
&lt;p&gt;Falco's &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;metrics&lt;/a&gt; config (see also &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/falco-metrics/"&gt;Falco Metrics&lt;/a&gt;) enables you to measure Falco's kernel-side syscall drops and provides a range of useful metrics related to software functioning. Key settings include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;kernel_event_counters_enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;libbpf_stats_enabled: true&lt;/code&gt; (for &lt;code&gt;ebpf&lt;/code&gt; or &lt;code&gt;modern_ebpf&lt;/code&gt; drivers, enable &lt;code&gt;/proc/sys/kernel/bpf_stats_enabled&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is an example metrics log snippet highlighting the fields crucial for this analysis. Pay close attention to &lt;code&gt;falco.evts_rate_sec&lt;/code&gt; and &lt;code&gt;scap.evts_rate_sec&lt;/code&gt;, as well as the monotonic drop counters categorizing syscalls into coarse-grained (non-comprehensive) categories. For more details, refer to the dedicated metrics section in the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/performance/"&gt;Falco Performance&lt;/a&gt; guide for a more detailed explanation.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;output_fields&amp;#34;: &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;evt.source&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;syscall&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.host_num_cpus&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;96&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Divide *rate_sec by CPUs&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.evts_rate_sec&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;93345.1&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Taken between 2 metrics snapshots&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.num_evts&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;44381403800&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.num_evts_prev&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;44045361392&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# scap kernel-side counters&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.evts_drop_rate_sec&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0.0&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Taken between 2 metrics snapshots&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.evts_rate_sec&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;93546.8&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Taken between 2 metrics snapshots&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Monotonic counter all-time kernel side drops&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Coarse-grained (non-comprehensive) categories for more granular insights&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_clone_fork_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_close_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_connect_enter&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_connect_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_dir_file_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_execve_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_open_enter&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_open_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_other_interest_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_proc_exit&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_buffer_total&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_bug&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_page_faults&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_perc&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0.0&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Taken between 2 metrics snapshots&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_prev&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_drops_scratch_map&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_evts&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;48528636923&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.n_evts_prev&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;48191868502&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# libbpf stats -&amp;gt; all-time kernel tracepoints invocations stats for a x86_64 machine&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sched_process_e.avg_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;2041&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# scheduler process exit tracepoint&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sched_process_e.run_cnt&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;151463770&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sched_process_e.run_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;181866667867268&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_enter.avg_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;194&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# syscall enter (raw) tracepoint&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_enter.run_cnt&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;933995602769&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_enter.run_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;181866667867268&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_exit.avg_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;205&lt;/span&gt;,&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#080;font-style:italic"&gt;# syscall exit (raw) tracepoint&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_exit.run_cnt&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;934000454069&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;scap.sys_exit.run_time_ns&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;192201218598457&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;},&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;rule&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Falco internal: metrics snapshot&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="precise-control-over-monitored-syscalls"&gt;Precise Control Over Monitored Syscalls&lt;/h2&gt;
&lt;p&gt;Since Falco 0.35.0, you have precise control over the syscalls Falco monitors. Refer to the &lt;a href="https://falco.org/blog/adaptive-syscalls-selection/"&gt;Adaptive Syscalls Selection&lt;/a&gt; blog post and carefully read the &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;base_syscalls&lt;/a&gt; config description for detailed information.&lt;/p&gt;
&lt;h3 id="run-tests-for-data-driven-insights"&gt;Run Tests for Data-Driven Insights&lt;/h3&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;Falco's current metrics system lacks direct syscalls counters to pinpoint high-volume culprits. In the meantime, deriving insights step by step is necessary until syscall counters become available in Falco's metrics system.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Generate a dummy rule designed not to trigger any alerts:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;macro&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;spawned_process&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;(evt.type in (execve, execveat))&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;- &lt;span style="color:#008000;font-weight:bold"&gt;rule&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;TEST Simple Spawned Process&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;desc&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Test base_syscalls config option&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;condition&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;spawned_process and proc.name=iShouldNeverAlert&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;output&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;%evt.type&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;priority&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;WARNING&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now, run Falco with the dummy rule and the specified test cases (edit &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;base_syscalls&lt;/a&gt; config). If you're open to it, consider sharing anonymized logs for further assessment by Falco maintainers or the community to explore potential solutions.&lt;/p&gt;
&lt;p&gt;For each test, run Falco in dry-run debug mode initially to print the final set of syscalls.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo /usr/bin/falco -c /etc/falco/falco.yaml -r falco_rules_dummy.yaml -o &lt;span style="color:#b44"&gt;&amp;#34;log_level=debug&amp;#34;&lt;/span&gt; -o &lt;span style="color:#b44"&gt;&amp;#34;log_stderr=true&amp;#34;&lt;/span&gt; --dry-run
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#080;font-style:italic"&gt;# Example Output for Test 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;XXX: &lt;span style="color:#666"&gt;(&lt;/span&gt;2&lt;span style="color:#666"&gt;)&lt;/span&gt; syscalls in rules: execve, execveat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;XXX: +&lt;span style="color:#666"&gt;(&lt;/span&gt;16&lt;span style="color:#666"&gt;)&lt;/span&gt; syscalls &lt;span style="color:#666"&gt;(&lt;/span&gt;Falco&lt;span style=""&gt;&amp;#39;&lt;/span&gt;s state engine &lt;span style="color:#a2f"&gt;set&lt;/span&gt; of syscalls&lt;span style="color:#666"&gt;)&lt;/span&gt;: capset, chdir, chroot, clone, clone3, fchdir, fork, prctl, procexit, setgid, setpgid, setresgid, setresuid, setsid, setuid, vfork
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;XXX: &lt;span style="color:#666"&gt;(&lt;/span&gt;18&lt;span style="color:#666"&gt;)&lt;/span&gt; syscalls selected in total &lt;span style="color:#666"&gt;(&lt;/span&gt;final &lt;span style="color:#a2f"&gt;set&lt;/span&gt;&lt;span style="color:#666"&gt;)&lt;/span&gt;: capset, chdir, chroot, clone, clone3, execve, execveat, fchdir, fork, prctl, procexit, setgid, setpgid, setresgid, setresuid, setsid, setuid, vfork
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Subsequently, run Falco normally.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo /usr/bin/falco -c /etc/falco/falco.yaml -r falco_rules_dummy.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test 1: spawned_process only&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;base_syscalls&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;custom_set&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[clone, clone3, fork, vfork, execve, execveat, procexit]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repair&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;If Test 1 already fails, and you see drops even after adjusting the &lt;code&gt;buf_size_preset&lt;/code&gt; and other parameters, Falco may be less usable on this particular system, unfortunately.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Test 2: spawned_process + minimum syscalls needed for Falco state (internal process cache table)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;base_syscalls&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;custom_set&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repair&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test 3: network accept*&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;base_syscalls&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;custom_set&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[clone, clone3, fork, vfork, execve, execveat, getsockopt, socket, bind, accept, accept4, close]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repair&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test 4: network connect&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;base_syscalls&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;custom_set&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[clone, clone3, fork, vfork, execve, execveat, getsockopt, socket, connect, close]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repair&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test 5: open* syscalls&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;base_syscalls&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;custom_set&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;[clone, clone3, fork, vfork, execve, execveat, open, openat, openat2, close]&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;repair&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Test n&lt;/p&gt;
&lt;p&gt;Continue custom testing to ensure effective monitoring of all desired syscalls on your servers without experiencing event drops or with minimal acceptable drops.&lt;/p&gt;
&lt;h3 id="at-what-kernel-event-rates-do-problems-generally-start"&gt;At What Kernel Event Rates Do Problems Generally Start?&lt;/h3&gt;
&lt;p&gt;This question presents a challenge as it's not solely about the pure &amp;quot;kernel event rate&amp;quot;. In less realistic benchmarking tests, you could artificially drive the rates very high without dropping events. Therefore, we believe it is more complex in real-life production, involving not just event rates but also the actual nature of the events, and possibly bursts of events in very short periods of time.&lt;/p&gt;
&lt;p&gt;Additionally, we believe it's best to normalize the event rates by the number of CPUs (e.g. &lt;code&gt;scap.evts_rate_sec&lt;/code&gt; / &lt;code&gt;falco.host_num_cpus&lt;/code&gt;). Busier servers with 96, 128, or more CPUs naturally have higher event rates than VMs with 12 CPUs, for instance.&lt;/p&gt;
&lt;p&gt;Nevertheless, here are some numbers we have heard from various adopters. Please take them with a grain of salt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Less than ~1K kernel events per second per one CPU usually is not a problem, but it depends.&lt;/li&gt;
&lt;li&gt;Less than ~1.5K kernel events per second per one CPU should not be a problem, but it depends.&lt;/li&gt;
&lt;li&gt;More than 3K kernel events per second per one CPU likely could be more difficult to keep up, but it depends.&lt;/li&gt;
&lt;li&gt;Consider 1-2% of all events dropped on a smaller subset of servers in your fleet (your busy servers/clusters) as acceptable.&lt;/li&gt;
&lt;li&gt;More than 164K kernel events per second per CPU have been observed on a 128-CPU machine. Currently under exploration is how to solve this.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="references-and-community-discussions"&gt;References and Community Discussions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/libs/issues/1557"&gt;Introduce conditional kernel-side event filtering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/2960"&gt;New base_syscalls.exclude_enter_exit_set config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/2296"&gt;Improve falco benchmarking, performance, and regression tooling to better track system resources impact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/1403"&gt;[UMBRELLA] Dropped events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://falco.org/blog/adaptive-syscalls-selection/"&gt;Adaptive Syscalls Selection&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Docs: Missing Fields in Falco Logs</title><link>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/missing-fields/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://v0-43--falcosecurity.netlify.app/docs/troubleshooting/missing-fields/</guid><description>
&lt;h2 id="action-items-tl-dr"&gt;Action Items (TL;DR)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Read &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/install-operate/"&gt;Install and Operate&lt;/a&gt; Guides and review &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;falco.yaml&lt;/a&gt; for necessary preconditions.&lt;/li&gt;
&lt;li&gt;Refer to the relevant debugging guide based on suspected missing fields.&lt;/li&gt;
&lt;li&gt;Acknowledge that certain missing fields or data in Falco are legitimate.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;Many of the &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/rules/supported-fields/"&gt;Supported Output Fields&lt;/a&gt; are derived from multiple events and mechanisms. To provide a more concrete explanation, for each spawned process, Falco extracts and derives fields from the &lt;code&gt;clone*/*fork/execve*&lt;/code&gt; syscalls. Falco generates a struct in userspace, stores the relevant information within this struct, and then adds it to the process cache table in memory. If a process makes additional system calls during its lifetime, such as opening a file, in a Falco rule, you typically also export process fields — assuming we haven't missed the spawned process event and the information is available. These details extend to various use cases, and, in essence, dropped events can lead to missing fields as well as race conditions.&lt;/p&gt;
&lt;p&gt;As a result, Falco logs can never be perfect, and null values can occur. We are constantly aiming to improve the robustness in this regard. We encourage you to &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/contribute/"&gt;contribute&lt;/a&gt; to the project if you encounter such cases or have improvement ideas. Also be aware that, unfortunately, missing fields can have different natures. Sometimes the field may be an empty string, or the string &lt;code&gt;&amp;lt;NA&amp;gt;&lt;/code&gt;, or, if numeric, the default numeric value. These inconsistencies may be more difficult to address, as many Falco rules rely on legacy declarations.&lt;/p&gt;
&lt;p&gt;Furthermore, sometimes Linux may not operate exactly as expected. One concrete example is that shell built-ins like &lt;code&gt;echo&lt;/code&gt; do not cause a new spawned process, and the &lt;code&gt;echo&lt;/code&gt; command does not get logged with Falco. Similarly, if a base64 encoded string gets interpreted during decoding, you do not have the original base64 blob in the command args unless the command was passed with the &lt;code&gt;sh -c&lt;/code&gt; flag. Lastly, some fields only work for certain kernel versions or system configs (e.g. &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/rules/supported-fields/#field-class-process"&gt;proc.is_exe_upper_layer&lt;/a&gt; requires a container overlayfs).&lt;/p&gt;
&lt;h2 id="missing-container-images"&gt;Missing Container Images&lt;/h2&gt;
&lt;p&gt;Check the basics:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Is the container runtime socket correctly mounted? For Kubernetes, mount with the &lt;code&gt;HOST_ROOT&lt;/code&gt; prefix: &lt;code&gt;/host/run/k3s/containerd/containerd.sock&lt;/code&gt;. See &lt;a href="https://github.com/falcosecurity/deploy-kubernetes/tree/main/kubernetes"&gt;deploy-kubernetes&lt;/a&gt; example template.&lt;/li&gt;
&lt;li&gt;Is a custom path specified for the container runtime socket in Kubernetes? If yes, use the &lt;code&gt;-o container_engines.cri.sockets[]=&amp;lt;socket_path&amp;gt;&lt;/code&gt; command line option when running Falco. The default paths include: &lt;code&gt;/run/containerd/containerd.sock&lt;/code&gt;, &lt;code&gt;/run/k3s/containerd/containerd.sock&lt;/code&gt;, &lt;code&gt;/run/crio/crio.sock&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;To expedite lookups, attempt to disable asynchronous CRI API calls by using the &lt;code&gt;-o container_engines.cri.disable_async=true&lt;/code&gt; command line option when running Falco.&lt;/li&gt;
&lt;li&gt;Falco monitors both host and container processes. If the &lt;code&gt;container.id&lt;/code&gt; is set to &lt;code&gt;host&lt;/code&gt;, it indicates that the process is running on the host, and therefore, no container image is associated with it.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="card card-sm pageinfo pageinfo-info my-4"&gt;
&lt;div class="card-body"&gt;
&lt;div class="card-text"&gt;
&lt;p&gt;The &lt;code&gt;k8s.*&lt;/code&gt; fields are extracted from the container runtime socket simultaneously as we look up the &lt;code&gt;container.*&lt;/code&gt; fields from the CRI API calls responses.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 id="using-cri-with-containerd"&gt;Using CRI with containerd&lt;/h3&gt;
&lt;p&gt;When using containerd as your container runtime, you should configure Falco to use the &lt;strong&gt;CRI engine&lt;/strong&gt; to consume the containerd socket (&lt;code&gt;/run/containerd/containerd.sock&lt;/code&gt;). This is important because:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The native containerd protocol does not support container &lt;strong&gt;names&lt;/strong&gt; - it only provides container IDs&lt;/li&gt;
&lt;li&gt;Containerd typically exposes two interfaces on the same socket: the native containerd protocol and the CRI (Container Runtime Interface) protocol&lt;/li&gt;
&lt;li&gt;The CRI protocol provides richer metadata, including container names&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you are missing &lt;code&gt;container.name&lt;/code&gt; or other container metadata fields while using containerd, ensure you are using the CRI engine configuration (not the containerd engine) in your Falco setup. For example, configure the container plugin with:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;engines&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;cri&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;true&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;sockets&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;- /run/containerd/containerd.sock&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;containerd&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;enabled&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#a2f;font-weight:bold"&gt;false&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Carefully read the field description documentation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supported Output Fields &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/rules/supported-fields/#field-class-container"&gt;&lt;code&gt;container.*&lt;/code&gt;&lt;/a&gt; retrieved from the container runtime socket&lt;/li&gt;
&lt;li&gt;Supported Output Fields &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/reference/rules/supported-fields/#field-class-k8s"&gt;&lt;code&gt;k8s.*&lt;/code&gt;&lt;/a&gt; also retrieved from the container runtime socket&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The container info enrichment, while robust, depends on the speed of making API requests against the container runtime socket.&lt;/p&gt;
&lt;p&gt;Falco's &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;metrics&lt;/a&gt; config (see also &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/falco-metrics/"&gt;Falco Metrics&lt;/a&gt;) provides a range of useful metrics related to software functioning, now also featuring metrics around Falco's internal state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;state_counters_enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is an example metrics log snippet highlighting the fields crucial for this analysis.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;output_fields&amp;#34;: &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;evt.source&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;syscall&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_containers&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;50&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_missing_container_images&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;},&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;rule&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Falco internal: metrics snapshot&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;falco.n_containers&lt;/code&gt; indicates how many containers are running at a given time, typically less than 100-300 at maximum. &lt;code&gt;falco.n_missing_container_images&lt;/code&gt; is an updated snapshot of how many containers are internally stored in Falco without a container image at any given time.&lt;/p&gt;
&lt;p&gt;To complicate matters, some processes in Kubernetes run in the pod sandbox container, which has no container image in the API responses. In such cases, the &lt;code&gt;container.id&lt;/code&gt; is the same as the &lt;code&gt;k8s.pod.sandbox_id&lt;/code&gt;. If the container image is consistently missing throughout the lifetime of the container, it's likely a process in a pod sandbox container in the majority of the cases. However, sandbox containers likely constitute less than 1% of the distinct containers in your overall Falco logs. Note that this comparison will be fully supported by Falco 0.38 and is a work in progress.&lt;/p&gt;
&lt;p&gt;Additionally, the improvement of the overall efficiency of the container engine, especially for the &lt;code&gt;-o container_engines.cri.disable_async=true&lt;/code&gt; option, is also a work in progress. A more performant implementation is expected to be available by Falco 0.38. This improvement aims to address missing images observed by adopters and resolve most cases, leaving only some edge cases of race conditions where the lookup hasn't happened yet.&lt;/p&gt;
&lt;h2 id="missing-user-names"&gt;Missing User Names&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Ensure proper mounts (e.g., &lt;code&gt;/etc:/host/etc&lt;/code&gt;) when running Falco as a daemonset in Kubernetes, for example.&lt;/li&gt;
&lt;li&gt;If you expect Falco to be aware of Kubernetes Control Plane users, especially when execing into a pod (&lt;code&gt;kubectl exec&lt;/code&gt;), we must disappoint you. The Linux kernel lacks knowledge of the control plane. However, we are actively exploring ways to support this. Refer to this &lt;a href="https://github.com/falcosecurity/falco/issues/2895"&gt;issue&lt;/a&gt; for more details.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="missing-process-tree-fields"&gt;Missing Process Tree Fields&lt;/h2&gt;
&lt;p&gt;Let's consider another example: the fields related to the process tree lineage (e.g. &lt;code&gt;proc.aname*&lt;/code&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Falco adds processes to a cache in userspace when a new process starts and removes them when the process exits. The goal is to maintain a current view of running processes on the Linux host at any time. However, this also means that there are cases where the parent legitimately exits, re-parenting occurs, and/or PIDs get replaced or re-used.&lt;/li&gt;
&lt;li&gt;As a result, missing processes in the process ancestry (process tree) may be due to dropped or missed events, failure to store the event, or the process exiting without proper tracking of re-parenting or orphan process cases by Falco.&lt;/li&gt;
&lt;li&gt;Furthermore, a history of all &lt;code&gt;spawned_process&lt;/code&gt; events is not equivalent to the current process tree on the system. Check out the Falco &lt;a href="https://github.com/falcosecurity/rules/blob/main/rules/falco_rules.yaml"&gt;rules&lt;/a&gt; macro &lt;code&gt;container_entrypoint&lt;/code&gt; for one such example and explore this &lt;a href="https://www.win.tue.nl/~aeb/linux/lk/lk-10.html"&gt;resource&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;In summary, Falco aims to closely preserve the true system state, similar to the Linux kernel itself.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Falco's &lt;a href="https://github.com/falcosecurity/falco/blob/master/falco.yaml"&gt;metrics&lt;/a&gt; config (see also &lt;a href="https://v0-43--falcosecurity.netlify.app/docs/metrics/falco-metrics/"&gt;Falco Metrics&lt;/a&gt;) provides a range of useful metrics related to software functioning, now also featuring metrics around Falco's internal state:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;state_counters_enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Here is an example metrics log snippet highlighting the fields crucial for this analysis.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;output_fields&amp;#34;: &lt;/span&gt;{&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;evt.source&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;syscall&amp;#34;&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_drops_full_threadtable&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_store_evts_drops&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_failed_fd_lookups&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_failed_thread_lookups&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;,&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;falco.n_retrieve_evts_drops&amp;#34;: &lt;/span&gt;&lt;span style="color:#666"&gt;0&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;},&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#008000;font-weight:bold"&gt;&amp;#34;rule&amp;#34;: &lt;/span&gt;&lt;span style="color:#b44"&gt;&amp;#34;Falco internal: metrics snapshot&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;falco.n_drops_full_threadtable&lt;/code&gt; and &lt;code&gt;falco.n_store_evts_drops&lt;/code&gt; reflect similar occurrences. They are monotonic counters indicating how often a spawned process event was dropped due to a full table (configurable by Falco 0.38 with a higher default value) and how frequently store actions to update the process structs in memory failed and were subsequently dropped. On the flip side, there are also counters keeping track of failed lookup or retrieve actions. Internally, Falco is granular and talks about &lt;code&gt;threads&lt;/code&gt;, not processes.&lt;/p&gt;
&lt;h3 id="references-and-community-discussions"&gt;References and Community Discussions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/2708"&gt;[TRACKING] Re-audit container engines for empty container info values (Initial focus on CRI for Kubernetes)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/falcosecurity/falco/issues/2895"&gt;[PROPOSAL] Inject Kubernetes Control Plane users into Falco syscalls logs for kubectl exec activities&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>