I should add: I notice that the CSV sample data isn't timestamped, so it seems that every 30 minutes you just want to ingest the *current* versions of those values, not any previous history of what's been going on over the last 30 minutes. In that case, it is pretty straightforward:
* On a host of your choice (which could be the prometheus server itself), run node_exporter with the
textfile collector enabled:
--collector.textfile.directory=/var/lib/node_exporter
* Whenever you get a new CSV file, run it through a simple script (which you'll have to write yourself) to convert it into openmetrics format. In this case, the output would be:
foo_status{instance="testserver1",service="service1",state="stopped"} 1
foo_status{instance="testserver1",service="service1",state="running"} 0
foo_status{instance="testserver1",service="service2",state="stopped"} 0
foo_status{instance="testserver1",service="service2",state="running"} 1
foo_status{instance="testserver2",service="service1",state="stopped"} 0
foo_status{instance="testserver2",service="service1",state="running"} 1
foo_status{instance="testserver2",service="service2",state="stopped"} 1
foo_status{instance="testserver2",service="service2",state="running"} 0
* Configure prometheus to scrape node_exporter at least once every 2 minutes - I'd recommend once per minute or more.
These metrics will then appear in prometheus, and will be updated whenever you decide to update the CSV file.
Longer term, you can consider changing the process for collecting this data so that it is exposed directly in openmetrics format and can be scraped directly.