yes
Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
Blockbridge : Ultra low latency all-NVME shared storage for Proxmox - https://www.blockbridge.com/proxmox
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.
Is there a way to put the sensors through to the vm?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.
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"]
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?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