ebpf_exporter
32 строки · 827.0 Байт
1#include <vmlinux.h>2#include <bpf/bpf_helpers.h>3#include <bpf/usdt.bpf.h>4#include "maps.bpf.h"5
6struct call_t {7char module[128];8char function[128];9};10
11struct {12__uint(type, BPF_MAP_TYPE_HASH);13__uint(max_entries, 1024);14__type(key, struct call_t);15__type(value, u64);16} python_function_entries_total SEC(".maps");17
18SEC("usdt/python3:python:function__entry")19int BPF_USDT(do_count, void *arg0, void *arg1, void *arg2)20{
21struct call_t call = {};22
23// https://docs.python.org/3/howto/instrumentation.html#available-static-markers24bpf_probe_read_user_str(&call.module, sizeof(call.module), arg0);25bpf_probe_read_user_str(&call.function, sizeof(call.function), arg1);26
27increment_map(&python_function_entries_total, &call, 1);28
29return 0;30}
31
32char LICENSE[] SEC("license") = "GPL";33