LOGIMPORT(3)

πŸ“¦
version 7.2.2 Β· 3 versions
, in arch rolling, centos-stream 10, fedora 43, fedora 44, ubuntu resolute, ubuntu stonking

πŸ’– LOGIMPORT πŸ’–

okay bestie, welcome to LOGIMPORT(3) β€” a Library Functions Manual situation, and no it's not about logging into anything, it's about building logs. sit with me 🫢


✨ NAME ✨

LOGIMPORT β€” literally the intro to the library that imports data and creates a PCP archive. that's the whole vibe. πŸ’…


✨ C SYNOPSIS ✨

so if you're a C girlie:

#include <pcp/pmapi.h>
#include <pcp/import.h>

cc ... -lpcp_import -lpcp

link it and slay. πŸ”₯


✨ Perl SYNOPSIS ✨

Perl besties:

use PCP::LogImport;

✨ Python SYNOPSIS ✨

Python girlies:

from pcp import pmi

🌸 DESCRIPTION 🌸

The Performance Co-Pilot Log Import (LOGIMPORT) API is a library β€” and yes it comes with Perl and Python wrappers, we love a multilingual icon πŸ‘‘ β€” that supports the creation of PCP archives from external sources of performance data. and what counts as "external"? either historical logs and spreadsheets, OR real-time sources that are not integrated as a Performance Metrics Domain Agent (PMDA) under the control of pmcd(1). so like, the data's out there living its life and you're bringing it home. 🏠✨

the typical usage for LOGIMPORT goes a lil something like this:

  • An initial call to pmiStart(3).
  • Optional calls to pmiSetHostname(3) and/or pmiSetTimezone(3) to set the hostname and timezone for the source of the performance data.
  • One or more calls to pmiAddMetric(3) to define performance metrics.
  • One or more calls to pmiAddInstance(3) to define instances associated with the metrics.
  • Optional calls to pmiGetHandle(3) to defined convenience handles for metric-instance pairs.
  • A main loop in which performance data is ingested and for each sample time interval, the PCP archive record is constructed by calls to pmiPutValue(3), pmiPutValueHandle(3), pmiPutText(3), and/or pmiPutLabel(3), followed by a call to pmiWrite(3) to flush all data and any associated new metadata to the PCP archive. Alternatively, pmiPutResult(3) could be used to package and process all the data for one sample time interval.
  • Once the input source of data has been consumed, calling pmiEnd(3) to complete the PCP archive creation and close all open files.

and here's the plot twist that makes it spicy 🌢️ β€” if new metrics and/or instances are discovered during the data ingestion, these can be added by subsequent calls to pmiAddMetric(3) and/or pmiAddInstance(3), provided all the metrics and instances have been defined before a call to pmiGetHandle(3), pmiPutValue(3) or pmiPutResult(3) that references those metrics and instances.

⚠️ not me stressing the ORDER of this. define first, reference after. the way that rule is non-negotiable fr fr. 😀

πŸ¦‹ SEE ALSO πŸ¦‹

go read these next, they're all part of the family:


and that's the whole page bestie, you ate it up. πŸ’œ

signing off from Performance Co-Pilot β€” this was LOGIMPORT(3), mwah πŸŽ€βœ¨

πŸ“¦ where this page comes from