error

It is a fair warning, though, I understand if you don't want to take the leap to buying a subscription. Again, really depends on a person's use-case.
Where it shines, though, is when you want the fully-tested packages for a system where things must not go wrong. And, if you don't mind that, and you're prepared to do everything yourself, then that's fine.

In my case, this end, I have two production systems where they are subscribed, and a home system subscribed. The home one is simply to support the company, and also ensure that my data is reasonably safe. The other two systems are because they are storing critical data in an Education context [low-income school], and I want to make sure my life is not "exciting" on that front.
 
It is a fair warning, though, I understand if you don't want to take the leap to buying a subscription. Again, really depends on a person's use-case.
Where it shines, though, is when you want the fully-tested packages for a system where things must not go wrong. And, if you don't mind that, and you're prepared to do everything yourself, then that's fine.

In my case, this end, I have two production systems where they are subscribed, and a home system subscribed. The home one is simply to support the company, and also ensure that my data is reasonably safe. The other two systems are because they are storing critical data in an Education context [low-income school], and I want to make sure my life is not "exciting" on that front.
 

Attachments

  • Screenshot_9.png
    Screenshot_9.png
    35.4 KB · Views: 8
Well, if they can't be bothered to label their release repositories properly, you'll have to put the setting back to "stable" and live with the warning message.

Thinking professionally, it would be wise to run some of those repositories [grafana especially] within a VM [Ubuntu Server works well] using docker-compose. You can use the native node exporter included in normal apt for installation on the host to provide Prometheus with what it needs, and Grafana can integrate with Prometheus natively. From a security perspective, you would also gain the added advantage with a Grafana+Prometheus VM that you could monitor a site without endangering the main host; VMs are also easier to backup and move between installations, so you get a speed advantage during a rebuild.
 
Well, if they can't be bothered to label their release repositories properly, you'll have to put the setting back to "stable" and live with the warning message.

Thinking professionally, it would be wise to run some of those repositories [grafana especially] within a VM [Ubuntu Server works well] using docker-compose. You can use the native node exporter included in normal apt for installation on the host to provide Prometheus with what it needs, and Grafana can integrate with Prometheus natively. From a security perspective, you would also gain the added advantage with a Grafana+Prometheus VM that you could monitor a site without endangering the main host; VMs are also easier to backup and move between installations, so you get a speed advantage during a rebuild.
Is there a way to put the sensors through to the vm?
 
Okay, what I do with systems is I run a VM with Grafana and Prometheus in it.
In terms of getting the information from sensors, I install the version of "node exporter" which comes with the distro [Proxmox in this case.]

1682059637428.png
You make sure it can talk to systems asking for the node information, so you may need to make firewall changes etc.

In the case of Prometheus in the VM, you want to add the system running the node exporter into the prometheus.yml configuration file.
Code:
global:
  scrape_interval: 1m

scrape_configs:
  - job_name: "prometheus"
    scrape_interval: 1m
    static_configs:
    - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
    - targets: ["node-exporter:9100"]
    
  - job_name: "MyProxmoxServer"
    scrape_interval: 5s
    static_configs:
    - targets: ["172.16.90.90:9100"]

  - job_name: "cadvisor"
    scrape_interval: 5s
    static_configs:
    - targets: ["10.1.149.19:8080"]

# You need the correct IP for each system.

#  - job_name: "hvhost01"
#    scrape_interval: 5s
#    static_configs:
#    - targets: ["10.1.149.191:9182"]

If you want an example docker-compose file, you could have something like this in the VM:
Code:
version: '3.8'

networks:
  monitoring:
    driver: bridge

volumes:
  prometheus_data: {}
  grafana_data: {}

  # In the below we are setting the user and user directory/file permissions to the first user, usually user 1000, with group 1000.

services:

  # Node exporter needs to be deployed on linux targets.  There is also a windows version.
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    ports:
      - 9100:9100
    networks:
      - monitoring

  prometheus:
    image: prom/prometheus:latest
    user: "1000"
    environment:
      - PUID=1000
      - PGID=1000
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ~/promgrafnode/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ~/promgrafnode/prometheus:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--web.enable-lifecycle'
    ports:
      - 9090:9090
    networks:
      - monitoring

  grafana:
    image: grafana/grafana:latest
    user: "1000"
    container_name: grafana
    restart: unless-stopped
    volumes:
      - ~/promgrafnode/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
      - ~/promgrafnode/grafana:/var/lib/grafana
    ports:
      - 3000:3000
    networks:
      - monitoring

  # You'd want to deploy the below on a docker system for monitoring.

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - 8080:8080
    networks:
      - monitoring
    depends_on:
      - redis

  redis:
    image: redis:latest
    container_name: redis
    ports:
      - 6379:6379
    networks:
      - monitoring
 
Okay, what I do with systems is I run a VM with Grafana and Prometheus in it.
In terms of getting the information from sensors, I install the version of "node exporter" which comes with the distro [Proxmox in this case.]

View attachment 49463
You make sure it can talk to systems asking for the node information, so you may need to make firewall changes etc.

In the case of Prometheus in the VM, you want to add the system running the node exporter into the prometheus.yml configuration file.
Code:
global:
  scrape_interval: 1m

scrape_configs:
  - job_name: "prometheus"
    scrape_interval: 1m
    static_configs:
    - targets: ["localhost:9090"]

  - job_name: "node"
    static_configs:
    - targets: ["node-exporter:9100"]
   
  - job_name: "MyProxmoxServer"
    scrape_interval: 5s
    static_configs:
    - targets: ["172.16.90.90:9100"]

  - job_name: "cadvisor"
    scrape_interval: 5s
    static_configs:
    - targets: ["10.1.149.19:8080"]

# You need the correct IP for each system.

#  - job_name: "hvhost01"
#    scrape_interval: 5s
#    static_configs:
#    - targets: ["10.1.149.191:9182"]

If you want an example docker-compose file, you could have something like this in the VM:
Code:
version: '3.8'

networks:
  monitoring:
    driver: bridge

volumes:
  prometheus_data: {}
  grafana_data: {}

  # In the below we are setting the user and user directory/file permissions to the first user, usually user 1000, with group 1000.

services:

  # Node exporter needs to be deployed on linux targets.  There is also a windows version.
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node-exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    ports:
      - 9100:9100
    networks:
      - monitoring

  prometheus:
    image: prom/prometheus:latest
    user: "1000"
    environment:
      - PUID=1000
      - PGID=1000
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ~/promgrafnode/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
      - ~/promgrafnode/prometheus:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.path=/prometheus'
      - '--web.console.libraries=/etc/prometheus/console_libraries'
      - '--web.console.templates=/etc/prometheus/consoles'
      - '--web.enable-lifecycle'
    ports:
      - 9090:9090
    networks:
      - monitoring

  grafana:
    image: grafana/grafana:latest
    user: "1000"
    container_name: grafana
    restart: unless-stopped
    volumes:
      - ~/promgrafnode/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
      - ~/promgrafnode/grafana:/var/lib/grafana
    ports:
      - 3000:3000
    networks:
      - monitoring

  # You'd want to deploy the below on a docker system for monitoring.

  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    container_name: cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - 8080:8080
    networks:
      - monitoring
    depends_on:
      - redis

  redis:
    image: redis:latest
    container_name: redis
    ports:
      - 6379:6379
    networks:
      - monitoring
So you run node exporter on the proxmox Debian side?
 
Yes, think of the exporter as the information agent. You install an exporter node on each machine you want to monitor. Then, you tell Prometheus to scrape information from each of the nodes you installed. Graphana can then be configured to query Prometheus for that information. In terms of Dashboards for Grafana, you can get one which supports node exporter information, as it'll save you time.

As an aside, cadvisor in the above example is used for getting docker container information from a docker host.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!