# coding=utf-8 from __future__ import print_function from bcc import BPF from time import sleep, strftime # for influxdb from influxdb import InfluxDBClient import lmp_influxdb as db from db_modules import write2db from datetime import datetime DBNAME = 'lmp' client = db.connect(DBNAME, user='******', passwd=123456) b = BPF(text=''' #include <uapi/linux/ptrace.h> #include <linux/ktime.h> BPF_HASH(timer, u32, ktime_t); int kprobe__do_swap_page(struct pt_regs *ctx) { u32 pid = bpf_get_current_pid_tgid(); ktime_t start = bpf_ktime_get_ns(); timer.update(&pid, &start);
#!/usr/bin/python3 #-*- coding:utf-8 -*- from influxdb import InfluxDBClient import lmp_influxdb as db from db_modules import write2db, delete_db from datetime import datetime DBNAME = 'testDB' #在lmp项目中连接influxdb数据库使用lmp_influxdb模块中的connect() #除了数据库名称dbname是必选参数外,其余参数默认设置 #数据地址:localhost; port:8086; user:'******'; passwd:'admin'; #下面语句等于InfluxDBClient('localhost',8086,'hawl','123','testDB') client = db.connect(DBNAME, user='******', passwd=123) #写入数据库需要使用write2db(datatype,data,client) #datatype是预先定义的数据格式,主要内容是bpf.c中用来输出数据的数据结构体的字段名 #按照格式 datatype = {"measurement":"table_name", # "tags":['表头字段a','表头字段b'], # "fields:['数据字段c','数据字段d']} #data是需要写入的数据内容,目前支持bpf_perf_output输出的events对象 #events对象中包含了bpf.c中定义的data数据结构,字段a,b,c,d #client是需要写入的数据库client ''' 假设在bpf.c文件中定义了如下的data数据结构 struct data_t{ int id char name[] char sex[] int age