Monitoring Virtuozzo Hybrid Server with Prometheus

Virtuozzo and OpenVZ users usually work with many deployed machines running our software. Therefore, it is logical for them to launch centralized monitoring of the entire fleet of such servers. And today we will tell you how to use the built-in monitoring services of Virtuozzo Hybrid Infrastructure based on Prometheus for this.





VHS, Virtuozzo Storage. Storage, GUI ( OpenVZ, Virtuozzo Storage , ), .





( OpenVZ ) : Linux , Virtuozzo Zabbix Prometheus.





Prometheus โ€“ , .





Prometheus - VHS node_exporter ( , ) libvirt_exporter ( , libvirt). , Virtuozzo .





, Prometheus Grafana, โ€“ Alertmanager.





Prometheus, Grafana Alertmanager , . Virtuozzo Hybrid Server, VHS. , Virtuozzo Linux 8; :





# prlctl create promct --vmtype=ct --ostemplate=vzlinux-8-x86_64
# prlctl set promct --cpu 2
# prlctl set promct --memsize 2G
      
      



IP , .





:





# timedatectl set-timezone 'Europe/Moscow'



 





firewall โ€“ 9090 - Prometheus, 9093 AlertManager 3000 Grafana. , Prometheus Alertmanager , .





# firewall-cmd --zone=public --permanent --add-port=9090/tcp
# firewall-cmd --zone=public --permanent --add-port=9093/tcp
# firewall-cmd --zone=public --permanent --add-port=3000/tcp
# firewall-cmd --reload
      
      



Prometheus & co.

Prometheus , Virtuozzo Linux 8, :





# yum install prometheus







(, , - - ), GitHub /opt ( ). , 2.21.0:





# cd /opt
# wget https://github.com/prometheus/prometheus/releases/download/v2.21.0/prometheus-2.21.0.linux-amd64.tar.gz
# tar -xzf prometheus*.tar.gz

      
      



- ( ) service- systemd, :





 





# cat /lib/systemd/system/prometheus.service

[Unit]

Description=Prometheus

Wants=network-online.target

After=network-online.target

[Service]

Type=simple

WorkingDirectory=/opt/prometheus-2.21.0.linux-amd64

Restart=on-failure

ExecStart=/opt/prometheus-2.21.0.linux-amd64/prometheus

[Install]

WantedBy=multi-user.target
      
      



Alertmanager - :





# yum install alertmanager







 ... , service-:





# wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz

# cd /opt

# tar -xzf alertmanager*.tar.gz

# cat /usr/lib/systemd/system/alertmanager.service

[Unit]

Description=Alertmanager

Wants=network-online.target

After=network-online.target

After=prometheus.service

[Service]

Type=simple

WorkingDirectory=/root/alertmanager-0.21.0.linux-amd64

Restart=on-failure

ExecStart=/root/alertmanager-0.21.0.linux-amd64/alertmanager --config.file=alertmanager.yml

[Install]

WantedBy=multi-user.target
      
      



Grafana rpm-, , , :





# yum install grafana







  :





 # yum install https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm







Virtuozzo Hybrid Server

  VHS, , :





 # yum install node_exporter libvirt_exporter







Prometheus, - 9177 libvirt_exporter 9100 node_exporter. Prometheus, :





# firewall-cmd --permanent --zone=public --add-rich-rule='

    rule family="ipv4"

    source address="1.2.3.4/32"

    port protocol="tcp" port="9177" accept'

# firewall-cmd --permanent --zone=public --add-rich-rule='

    rule family="ipv4"

    source address="1.2.3.4/32"

    port protocol="tcp" port="9100" accept'

# firewall-cmd --reload


      
      



"1.2.3.4" Prometheus.





, :





# systemctl enable node_exporter

# systemctl enable libvirt-exporter

# systemctl start node_exporter

# systemctl start libvirt-exporter
      
      



- , .





Prometheus

Prometheus Yaml-. , โ€” . Virtuozzo, VHS 7 vz-prometheus-cfg . VHS 7, Prometheus VzLinux 8 โ€” :





# yum install vz-prometheus-cfg







/usr/share/vz-prometheus-cfg/, prometheus-example.yml.





prometheus.yml , Prometheus. , โ€“ *rules.yml *alerts.yml, /usr/share/vz-prometheus-cfg/ Prometheus. , .





vz-rules, (, , ) ( - , ).





, , target-. (, node_exporter 9100, libvirt - 9177):





# cat my-vz-libvirt.yml

- labels:

    group: my-vz-deployment

  targets:

  - my.node1:9177

  - my.node2:9177

 

# cat my-vz-node.yml

- labels:

    group: my-vz-deployment

  targets:

  - my.node1:9100

  - my.node2:9100

 
      
      



scrape_configs prometheus.yml:





scrape_configs:

  ...

  - job_name: node

    ...

    file_sd_configs:

      - files:

        - /root/prometheus-2.21.0.linux-amd64/targets/my-vz-node.yml

  - job_name: libvirt

    ...

    file_sd_configs:

      - files:

        - /root/prometheus-2.21.0.linux-amd64/targets/my-vz-libvirt.yml

 


      
      



: https://docs.virtuozzo.com/virtuozzo_hybrid_server_7_users_guide/advanced-tasks/monitoring-via-prometheus.html. , job_name โ€” . โ€” .





- :





# systemctl start prometheus

# systemctl start alertmanager

# systemctl start grafana-server
      
      







Grafana Alertmanager

Grafana - http://<->:3000. - - "admin" / "admin".





- "Prometheus" , Configuration -> Data Sources -> "Add data source",   "Prometheus" http://localhost:9090 .





json-, vz-prometheus-cfg - grafana_hn_dashboard.json grafana_ve_dashboard.json - . "Dashboards" -> "Manage" -> "Import", Prometheus.





, , โ€“ Prometheus - , .





, Alertmanager โ€“ , - โ€œ Virtuozzoโ€ . , , email /etc/alertmanager/alertmanager.yaml:





route:    receiver: 'email' 

  group_by: ['alertname', 'cluster']    group_wait: 30s    group_interval: 5m    repeat_interval: 3h   receivers:  - name: 'email'    email_configs:    - to: 'admin@myserver.com'      from: 'vz-alert@myserver.com'      smarthost: smtp.myserver.com:587
      
      



ยซ ยป โ€” .





, Prometheus. , Virtuozzo . , , .








All Articles