Infrastruktur Eksperimen Pengembang

Di perusahaan saya, saya sering menemukan bahwa Anda perlu meningkatkan beberapa jenis layanan untuk "mengambilnya" secara menyeluruh. Meskipun PCshnik cukup kuat, PyCharm dan Chrome menghabiskan sebagian besar sumber daya, dan sangat sedikit yang tersisa di mesin virtual dengan eksperimen.


Oleh karena itu, kami mendapat rak kecil dengan beberapa server untuk eksperimen dan Gitlab lokal. Tetapi ada sesuatu yang salah dan benar-benar ingin bermain dengan sesuatu yang baru.


Penafian


Saya jauh dari menjadi seorang jurnalis, jadi tolong maafkan saya sebelumnya untuk kemungkinan kesalahan dalam teks. Meskipun saya membaca teks, saya masih bisa melewatkan sesuatu. Selalu terbuka untuk koreksi dalam pesan pribadi.


Antara lain, "mereka tidak berdebat tentang selera" dan saya tidak mengiklankan apa pun, tetapi hanya ingin berbagi bagaimana kami menyelesaikan masalah kami. Yah, tentu saja, semua ini bisa dilakukan secara berbeda, tetapi saya menginginkannya seperti itu.


Lirik


Pada suatu waktu, karena pelanggan kami sering memiliki OpenStack, kami juga berhasil menggunakannya untuk bergabung rasa sakit dan air mata menguji beberapa produk dengan yang lain.
Tetapi masalahnya adalah bahwa kantor! = DC dan kami beruntung menyewa kantor di tempat di mana lampu mati secara stabil setiap 2-3 bulan, apalagi, mereka melakukannya di malam hari sampai tidak ada yang melihatnya. Sudahkah Anda mencoba meningkatkan cluster OpenStack setelah listrik padam? Dan secara umum, produk ini jelas tidak disesuaikan dengan kebutuhan kita (meskipun sangat nyaman untuk meningkatkan 5-10 node atau menggunakan seluruh infrastruktur yang ada).


Itu juga sangat mengecewakan untuk memakan sumber daya dari cluster yang hanya bekerja (sebenarnya 2-3 server dengan 4CPU / 16GbRAM murni untuk cluster kosong) dan kebutuhan untuk menjaga controller terpisah dari node komputasi agar tidak mengganggu pekerjaan (AIO makan menjadi RAM 35GB sederhana - entah bagaimana itu adalah terlalu banyak untuk server di kantor).


Tentu saja, semuanya bisa dikeluarkan di AWS / DO / Azure / GCE, tetapi jika ada 3-4 server, maka mengapa tidak menggunakannya, karena bagaimanapun peralatan yang ada akan keluar lebih murah daripada "cloud".


Peralatan


Sebenarnya tentang besi:


  1. Kabinet lantai KRAULER KRC6832
  2. 4U HITACHI HA8000 / RS440 (AG) 4x Intel Xeon X7460 (6C / 6T) / 160GB / 4x Memory Raiser / 4x 2,5 "HDD 1TB SATA + 4x 2,5" HDD 0.5TB SATA / LSI RAID 0-1-5-6 / 6xGLAN / 2xPSU 1570W (Saya tidak tahu mengapa ada PSU seperti itu, jika dia tidak pernah makan lebih dari 500W di bawah beban penuh)
  3. APC Smart-UPS 3000VA RM 2U UPS
  4. Mikrotik Cloud Router Beralih 125-24G-1S-RM (ini bukan inti dari infrastruktur kantor - itu hanya rak)
  5. SSD WD Blue 500Gb SATA

Antara lain, ada:


  1. Server 1U Fujitsu RX100S6 Intel Core i3-540 / 16 GB DDR-3 ECC / 2x 3.5 "HDD 147GB SAS / LSI Raid 0-1 / 2xGlan / PSU 250W (yang menjalankan Gitlab CE)
  2. Server 1U Nec Express 5800 / R110c dengan Intel Xeon X3430 terpasang dan spesifikasinya seperti pada item 1 (di mana Gitlab CI runner berputar).
  3. Sepasang UPS pada 1200VA.

2 server terakhir berhasil ditempati setelah kegagalan daya tiba-tiba malam yang menyebabkan Ceph di OpenStack menjadi tidak dapat digunakan dan diputuskan untuk mentransfernya ke node independen. Namun, tidak ada yang mencegah mereka dari ditransfer ke VM.


HITACHI umumnya 2 buah, tetapi kami memuat semuanya ke dalam satu mesin dan kemudian saya akan menjelaskan alasannya.
Saya melukis dengan sangat detail, hanya untuk membuat keputusan menjadi jelas.


Pilihan tepung


Masalah utama dengan OpenStack adalah bahwa AIO terlalu rakus dan bersaing dengan mesin virtual, dan tersebar di host ... Singkatnya, vanilla OpenStack, tidak peduli bagaimana kita menyukainya, tetapi tidak sesuai dengan kebutuhan dan kemampuan kita.


Akan logis untuk mengasumsikan bahwa mungkin ada baiknya beralih ke VMWare ESXi (seperti yang disarankan banyak kawan). Tapi saya tidak punya jiwa untuk produk ini ...


Sangatlah penting untuk menyesuaikan dengan baik dengan kebutuhan kita (di suatu tempat di persimpangan itu murah, produktif, dan fleksibel), serta untuk membuatnya nyaman bagi pengembang sederhana yang tidak ingin mengkonfigurasi apa pun, tetapi hanya lakukan "fi-fi-fi-fi" coding dan bereksperimen.


Pilihannya jatuh pada Proxmox VE, karena:


  1. Ini adalah debian, meskipun pada "steroid", yang berarti akan lebih mudah untuk mengetahui + menyesuaikan.
  2. Ada wadah KVM dan LXC sederhana, yang jauh lebih ekonomis dari segi sumber daya.
  3. Dalam edisi yang benar-benar gratis, dapat berkembang menjadi sebuah cluster.
  4. Dofigallion dari berbagai penyimpanan (lvm thin, Ceph, GlusterFS, NFS, dll.)
  5. Dukungan 100% dari peralatan yang akan kami taruh.

Mengkonfigurasi Proxmox


Publikasi lebih lanjut menjelaskan bagaimana saya mengkonfigurasi infrastruktur khusus server dengan Proxmox dalam mode hampir live. Migrasi server Gitlab tidak dijelaskan dengan cara apa pun, karena tidak ada hubungannya dengan topik ini.


Jaringan dan Router


Ada beberapa warisan setelah OpenStack untuk mengiris jaringan, khususnya pengaturan jaringan publik dan OSPF pada Mikrotiks. Saya menginginkan yang berikut:


  • Untuk memastikan isolasi jaringan internal server dari jaringan publik ke mana mesin virtual akan pergi.
  • Gunakan Mikrotik sebagai router utama, DNS dan ntp untuk rak.
  • Gunakan semua 6 antarmuka server untuk mengakses dan melepaskan mesin virtual.

Saya akan menjelaskan cara melakukannya dari awal:


  • Kami mengarahkan semua antarmuka ke jembatan (kami percaya bahwa konfigurasi terjadi dari port ke-2):

Balikkan aku
/interface bridge add name=bridge1 protocol-mode=none /interface bridge port add bridge=bridge1 interface=ether1 trusted=yes add bridge=bridge1 interface=ether2 add bridge=bridge1 interface=ether3 add bridge=bridge1 interface=ether4 add bridge=bridge1 interface=ether5 add bridge=bridge1 interface=ether6 add bridge=bridge1 interface=ether7 add bridge=bridge1 interface=ether8 add bridge=bridge1 interface=ether9 add bridge=bridge1 interface=ether10 add bridge=bridge1 interface=ether11 add bridge=bridge1 interface=ether12 add bridge=bridge1 interface=ether13 add bridge=bridge1 interface=ether14 add bridge=bridge1 interface=ether15 add bridge=bridge1 interface=ether16 add bridge=bridge1 interface=ether17 add bridge=bridge1 interface=ether18 add bridge=bridge1 interface=ether19 add bridge=bridge1 interface=ether20 add bridge=bridge1 interface=ether21 add bridge=bridge1 interface=ether22 add bridge=bridge1 interface=ether23 add bridge=bridge1 interface=ether24 add bridge=bridge1 interface=sfp1 

  • Kami mengkonfigurasi OSPF Mikrotik melalui jaringan 10.20.0.0/24 (maka kami akan melarang kami untuk masuk ke jaringan internal dengan aturan firewall):

Balikkan aku
 /ip address add address=10.20.0.254/24 interface=bridge1 network=10.20.0.0 /ip route add check-gateway=ping distance=1 gateway=10.20.0.1 /routing ospf network add area=local network=10.20.0.0/24 /routing ospf instance set [ find default=yes ] redistribute-connected=as-type-2 \ redistribute-static=as-type-2 router-id=10.20.0.254 

  • Kami mengkonfigurasi VLAN100 untuk jaringan publik + server DHCP:

Balikkan aku
 /interface vlan add interface=bridge1 name=public_rack vlan-id=100 /ip address add address=172.16.0.1/16 interface=public_rack network=172.16.0.0 /ip pool add name=public_rack_dhcp_pool1 ranges=172.16.253.1-172.16.253.254 add name=public_rack_dhcp_pool0 next-pool=public_rack_dhcp_pool1 ranges=\ 172.16.254.1-172.16.254.254 /ip dhcp-server add add-arp=yes address-pool=public_rack_dhcp_pool0 disabled=no interface=\ public_rack lease-time=1h name=public_rack_dhcp /ip dhcp-server network add address=172.16.0.0/16 dns-server=172.16.0.1 domain=domain.lan\ gateway=172.16.0.1 ntp-server=172.16.0.1 /ip dns set allow-remote-requests=yes cache-size=4096KiB max-concurrent-queries=400 \ max-concurrent-tcp-sessions=80 query-server-timeout=10s \ query-total-timeout=1m40s servers=10.20.0.1 

  • Kami mengonfigurasi aturan Firewall sehingga akses hanya ke router berikut:

Balikkan aku
 /ip firewall filter add action=drop dst-address=10.20.0.0/24 in-interface=public_rack add action=drop dst-address=10.20.0.0/24 src-address=172.16.0.0/24 in-interface=bridge1 add action=accept dst-address=10.20.0.1 in-interface=public_rack 

Ini bukan untuk mengatakan bahwa aturan ini adalah aturan yang sangat benar, tetapi jika salah satu ahli memberitahu Anda cara menulisnya dengan benar, saya akan sangat berterima kasih. Secara umum, kita perlu isolasi hanya pada L2, tetapi pada L3 saya membawa lebih banyak untuk pengenalan.


Pengaturan server


Server akan disetel untuk mendapatkan kinerja maksimum dari drive saat ini. Namun, kami tidak lupa bahwa semuanya bisa terjadi dan pada malam hari cahaya dapat tiba-tiba menghilang selama satu atau dua jam saat semua orang tidur.


  • Kami memasang semua drive kecuali SSD di tempat sampah.
  • Kami menghubungkan SSD melalui slide, bukan drive.
  • Kami menghubungkan semua port LAN ke Mikrotik.
  • Konfigurasikan RAID dengan cache writethrough:
    • 4x 1TB di RAID 10
    • 4x 500GB dalam RAID 10
    • Kami membuat kedua array dapat di-boot.
  • Instal Proxmox VE 6 pada array pertama dan antarmuka pertama (ambil dari sini ).
  • Tetapkan alamat 10.20.0.10/24
  • Di akhir instalasi, kami reboot.

Karena kami tidak ingin membeli apa pun, kami harus menonaktifkan semua yang terkait dengan berlangganan:


  • Hapus sembulan ketika memasuki GUI (berlaku untuk versi> = 5.1):
     sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service 
  • Kami beralih ke repositori untuk orang yang ekonomis dengan mengganti baris dalam file:

`/ etc / apt / sources.list.d / pve-enterprise.list`
 # deb https://enterprise.proxmox.com/debian/pve buster pve-enterprise deb http://download.proxmox.com/debian/pve buster pve-no-subscription 

Di sinilah kami menyelesaikan pengaturan dasar.


Keajaiban antarmuka jaringan


Secara umum, mengatur Jembatan Proxmox agar berfungsi cukup sederhana. Tapi aku bukan aku, kalau tidak Saya akan menghapus amandel melalui dubur Saya akan melakukan sesuatu yang boros. Saya benar-benar ingin OVSBridge bekerja untuk OVSBond juga. Tapi masalahnya adalah saya juga tidak ingin pengguna menetapkan VLAN setiap kali mereka membuat VM / LXC. Oleh karena itu, prosedur pengaturan adalah sebagai berikut untuk semua 6 antarmuka:


  • Instal paket Open vSwitch: apt install openvswitch-switch -y
  • Kami mengedit file /etc/network/interfaces sebagai berikut:

Balikkan aku
 #  OVSBond   vlan- allow-vmbr0 bond0 iface bond0 inet manual ovs_bonds enp5s0f0.100 enp5s0f1.100 enp6s0f0.100 enp6s0f1.100 enp8s0f0.100 enp8s0f1.100 ovs_type OVSBond ovs_bridge vmbr0 ovs_options vlan_mode=native-untagged bond_mode=balance-slb auto lo iface lo inet loopback iface enp5s0f0 inet manual iface enp5s0f1 inet manual iface enp6s0f0 inet manual iface enp6s0f1 inet manual iface enp8s0f0 inet manual iface enp8s0f1 inet manual #   OVSBond vlan- auto enp5s0f0.100 iface enp5s0f0.100 inet manual auto enp5s0f1.100 iface enp5s0f1.100 inet manual auto enp6s0f0.100 iface enp6s0f0.100 inet manual auto enp6s0f1.100 iface enp6s0f1.100 inet manual auto enp8s0f0.100 iface enp8s0f0.100 inet manual auto enp8s0f1.100 iface enp8s0f1.100 inet manual #   bond  " ". #   ,          Ceph ( ). auto bond1 iface bond1 inet static address 10.20.0.10 netmask 24 bond-slaves enp5s0f0 enp5s0f1 enp6s0f0 enp6s0f1 enp8s0f0 enp8s0f1 bond-miimon 100 bond-mode balance-xor bond-xmit-hash-policy layer2+3 #      VLAN100 allow-ovs vmbr0 iface vmbr0 inet static address 172.16.0.2 netmask 16 gateway 172.16.0.1 ovs_type OVSBridge ovs_ports bond0 

Konfigurasikan LVM + lvmcache


Pertama-tama, hapus pve/data agar tidak bingung dengan bagian meta, dll.


 lvremove pve/data 

Tambahkan bagian kedua ke grup volume kami:


 pvcreate /dev/sdb vgextend pve /dev/sdb 

Kami membuat bagian baru karena dokumentasi Proxmox mengajarkan kami + peretasan kecil untuk mengoptimalkan foto:


 lvcreate -L 2.4T -n data pve lvconvert --type thin-pool -c 64K --poolmetadatasize 15.81G pve/data 

Sekarang kita perlu menghubungkan lvmcache, tetapi untuk mengoptimalkan sumber daya SSD, saya secara khusus mengalokasikan bagian di atasnya dengan ukuran 241GB. Jumlah ini cukup untuk cache, dan sisa disk akan menjadi sumber daya untuk blok mati. Benar, ini secara teori, karena saya pribadi tidak sepenuhnya mengerti jika ini berhasil. Bagaimanapun, cache 465GB kemudian akan dua kali lebih panjang dan lebih sulit untuk dihapus (misalnya, untuk mengganti disk atau memperluas array).


 vgextend pve /dev/sdc1 lvcreate --type cache-pool -L240G pve /dev/sdc1 lvconvert --type cache --cachepool pve/lvol1 pve/data 

UPD: ada satu kesalahan dengan dm_cache , karena itu Anda perlu melakukan satu lagi keajaiban:


 apt install thin-provisioning-tools -y echo "dm_cache" >> /etc/initramfs-tools/modules echo "dm_cache_mq" >> /etc/initramfs-tools/modules echo "dm_persistent_data" >> /etc/initramfs-tools/modules echo "dm_bufio" >> /etc/initramfs-tools/modules update-initramfs -k `uname -r` -u -t update-grub 

Pada awalnya, semuanya bekerja, tetapi kemudian karena suatu alasan berhenti. Rupanya dengan pembaruan, modul-modul ini dihapus.


Sentuhan terakhir


Saya biasanya melakukannya sebelum me-reboot untuk memastikan semuanya diperbarui dan kernel terbaru:


 apt update && apt dist-upgrade -y && apt autoremove -y pveam update 

Ngomong-ngomong, dalam versi keenam kernelnya adalah 5.0, dan dalam perjalanan (pada saat publikasi) sepertinya 5.3.7.
Itu dia, sekarang kami mengirim sistem untuk reboot. Jika kami melakukan semuanya dengan benar, maka setelah reboot, server kami akan dapat diakses secara eksternal di kedua alamat. Anda juga dapat mengunduh template wadah baru dan menikmati hidup.


Kami membuat grafik yang indah


Yah, kita bukan hanya admin, tetapi DevOps (apa artinya ini?), Jadi kita perlu tahu kapan beberapa mesin virtual akan menjadi liar dan melakukan beberapa hal buruk.


Wadah dengan InfluxDB dan Grafana


Secara umum, semua tindakan ini paling mudah dilakukan di GUI, tapi tiba-tiba saya diserang oleh bentuk kemalasan yang agresif untuk mengambil tangkapan layar, jadi saya akan menggambarkannya dengan perintah.


Kami melihat templat yang tersedia untuk kami:


 root@cloud:~# pveam available --section system system alpine-3.10-default_20190626_amd64.tar.xz system alpine-3.9-default_20190224_amd64.tar.xz system archlinux-base_20190924-1_amd64.tar.gz system centos-6-default_20191016_amd64.tar.xz system centos-7-default_20190926_amd64.tar.xz system centos-8-default_20191016_amd64.tar.xz system debian-10.0-standard_10.0-1_amd64.tar.gz system debian-8.0-standard_8.11-1_amd64.tar.gz system debian-9.0-standard_9.7-1_amd64.tar.gz system fedora-29-default_20181126_amd64.tar.xz system fedora-30-default_20190718_amd64.tar.xz system gentoo-current-default_20190718_amd64.tar.xz system opensuse-15.0-default_20180907_amd64.tar.xz system opensuse-15.1-default_20190719_amd64.tar.xz system ubuntu-16.04-standard_16.04.5-1_amd64.tar.gz system ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz system ubuntu-19.04-standard_19.04-1_amd64.tar.gz system ubuntu-19.10-standard_19.10-1_amd64.tar.gz 

Saya pikir untuk pemula, Anda dapat mengunduh ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz :


 root@cloud:~# pveam download local ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz root@cloud:~# pveam list local NAME SIZE local:vztmpl/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz 203.54MB 

Buat wadah untuk InfluxDB dan Grafana:


 root@cloud:~# pct create 999 local:vztmpl/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz --cores 2 --memory 2048 --password hostpassword --onboot 1 --net0 name=eth0,bridge=vmbr0,gw=172.16.0.1,ip=172.16.1.101/24 --storage local-lvm --hostname monit 

Kami terhubung ke terminal ssh root@172.16.1.101 kami melalui ssh root@172.16.1.101 atau melalui pct console 999 .


Instal paket InfluxDB dan Grafana:


 apt update && apt install curl wget gnupg software-properties-common -y add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" echo "deb https://repos.influxdata.com/ubuntu bionic stable" | tee /etc/apt/sources.list.d/influxdb.list curl -sL https://repos.influxdata.com/influxdb.key | apt-key add - wget -q -O - https://packages.grafana.com/gpg.key | apt-key add - apt update && apt install influxdb grafana -y systemctl daemon-reload systemctl enable grafana-server systemctl start grafana-server systemctl enable influxdb systemctl start influxdb 

Kami mengonfigurasi InfluxDB untuk bekerja. Untuk melakukan ini, pertama-tama kita perlu membuat database:


 influx > CREATE DATABASE proxmox > quit 

Selanjutnya, kita perlu mengkonfigurasi port UDP ke mana Proxmox akan mengirim permintaan:


`/ etc / influxdb / influxdb.conf`
 #   ,     . [[udp]] enabled = true bind-address = "0.0.0.0:8089" database = "proxmox" batch-size = 1000 batch-timeout = "1s" 

... dan sekarang restart influx: systemctl restart influxdb


Mengkonfigurasi Proxmox dan Dashboard


Semuanya sangat sederhana di sini. Di server dengan proxmox, Anda perlu membuat file dengan konten berikut:


`/ etc / pve / status.cfg`
 influxdb: influx1 server 172.16.1.101 port 8089 

Tidak ada file secara default di sana.


Untuk beberapa alasan yang tidak diketahui, metrik tidak langsung berjalan, jadi saya harus memanggil systemctl restart pvestatd di server proxy.


Sekarang kita perlu memvisualisasikan semua ini. Kami pergi ke grafana kami di alamat http://172.16.1.101 {000 / (admin: admin), ubah kata sandi.
Saya menemukan graphans di belantara situs yang dapat Anda pasang dashboard yang indah untuk membuat Proxmox, tetapi itu memiliki sedikit file perbaiki untuk memperhitungkan semua realitas kita.


  • Pergi ke Konfigurasi -> Sumber Data -> Tambahkan sumber data , pilih InfluxDB .
  • Centang kotak default .
  • Isi URL : http://localhost:8086 .
  • Kami mengisi Database : proxmox .
  • Simpan.

Sekarang kita perlu mengimpor Dashboard:


  • Pergi ke Buat -> Impor .
  • Kami memasukkan di sana:

Konten Dewan
 { "annotations": { "list": [ { "builtIn": 1, "datasource": "-- Grafana --", "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "description": "Display data from the Proxmox host and hosted VM's and Containers.", "editable": false, "gnetId": 10048, "graphTooltip": 0, "id": 2, "iteration": 1574232555436, "links": [], "panels": [ { "collapsed": false, "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 43, "panels": [], "title": "Summary", "type": "row" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "none", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 2, "x": 0, "y": 1 }, "id": 58, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpus" ], "type": "field" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Cores", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "bytes", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 3, "x": 2, "y": 1 }, "id": 60, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "memory", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "memtotal" ], "type": "field" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Total Memory", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "bytes", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 3, "w": 3, "x": 5, "y": 1 }, "id": 62, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "memory", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "swaptotal" ], "type": "field" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Total Swap", "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#73BF69", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "decimals": 2, "description": "", "format": "percentunit", "gauge": { "maxValue": 1, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 4, "x": 8, "y": 1 }, "id": 2, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": true }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"cpu\") FROM \"cpustat\" WHERE (\"host\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpu" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "0.5,0.75", "timeFrom": null, "timeShift": null, "title": "Server CPU", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#73BF69", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "decimals": 2, "description": "", "format": "short", "gauge": { "maxValue": 10, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 4, "x": 12, "y": 1 }, "id": 9, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": true }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"avg1\") FROM \"cpustat\" WHERE (\"host\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)\n", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "avg1" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "6,8", "timeFrom": null, "timeShift": null, "title": "Load Average (1 Minute)", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#73BF69", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "decimals": 2, "description": "", "format": "percentunit", "gauge": { "maxValue": 1, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 4, "x": 16, "y": 1 }, "id": 10, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": true }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"wait\") FROM \"cpustat\" WHERE (\"host\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "wait" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "0.5,0.75", "timeFrom": null, "timeShift": null, "title": "I/O Wait", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#73BF69", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "decimals": 2, "description": "", "format": "gbytes", "gauge": { "maxValue": 160, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 4, "x": 20, "y": 1 }, "id": 11, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": true }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "memory", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"memused\") / 1073741824 FROM \"memory\" WHERE (\"host\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "memused" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "/ 1073741824" ], "type": "math" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "96,140", "timeFrom": null, "timeShift": null, "title": "Used Memory", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "bgColor": null, "clockType": "24 hour", "countdownSettings": { "customFormat": null, "endCountdownTime": "2019-04-12T19:20:00.000Z", "endText": "00:00:00" }, "datasource": "InfluxDB", "dateSettings": { "dateFormat": "YYYY-MM-DD", "fontSize": "20px", "fontWeight": "normal", "showDate": true }, "gridPos": { "h": 3, "w": 8, "x": 0, "y": 4 }, "id": 20, "links": [], "mode": "time", "offsetFromUtc": null, "offsetFromUtcMinutes": null, "options": {}, "refreshSettings": { "syncWithDashboard": false }, "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [] } ], "timeFrom": null, "timeSettings": { "customFormat": "HH:mm:ss", "fontSize": "40px", "fontWeight": "normal" }, "timeShift": null, "timezone": null, "timezoneSettings": { "fontSize": "12px", "fontWeight": "normal", "showTimezone": false, "zoneFormat": "offsetAbbv" }, "title": "Time", "transparent": true, "type": "grafana-clock-panel" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "dateTimeAsIso", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 6, "x": 0, "y": 7 }, "id": 24, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpu" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Last Update", "transparent": true, "type": "singlestat", "valueFontSize": "100%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "last_time" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "decimals": 1, "format": "dtdurations", "gauge": { "maxValue": 100, "minValue": 0, "show": false, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 6, "w": 6, "x": 6, "y": 7 }, "id": 16, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [], "measurement": "system", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "uptime" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": "", "timeFrom": null, "timeShift": null, "title": "Host Uptime", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "columns": [], "datasource": "InfluxDB", "fontSize": "100%", "gridPos": { "h": 6, "w": 6, "x": 12, "y": 7 }, "id": 7, "interval": "", "links": [], "options": {}, "pageSize": null, "scroll": true, "showHeader": true, "sort": { "col": 1, "desc": false }, "styles": [ { "alias": "Time", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 2, "mappingType": 1, "pattern": "Time", "thresholds": [], "type": "hidden", "unit": "short" }, { "alias": "Uptime", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 1, "mappingType": 1, "pattern": "uptime", "rangeMaps": [ { "from": "", "text": "", "to": "" } ], "thresholds": [], "type": "number", "unit": "dtdurations", "valueMaps": [ { "text": "Offline", "value": "0" } ] }, { "alias": "VM", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 2, "mappingType": 1, "pattern": "host", "sanitize": true, "thresholds": [], "type": "string", "unit": "short", "valueMaps": [] } ], "targets": [ { "groupBy": [ { "params": [ "host" ], "type": "tag" } ], "limit": "1", "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT last(uptime) AS \"uptime\" FROM \"system\" WHERE (\"object\" = 'qemu') AND (\"nodename\" =~ /^$server$/) AND time > (now() - 10m) AND uptime > 0 GROUP BY \"host\" limit 1", "rawQuery": true, "refId": "A", "resultFormat": "table", "select": [ [ { "params": [ "uptime" ], "type": "field" }, { "params": [ "uptime" ], "type": "alias" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" } ] } ], "timeFrom": null, "timeShift": null, "title": "Running VMs", "transform": "table", "transparent": true, "type": "table" }, { "columns": [], "datasource": "InfluxDB", "fontSize": "100%", "gridPos": { "h": 5, "w": 6, "x": 18, "y": 7 }, "id": 8, "interval": "", "links": [], "options": {}, "pageSize": null, "scroll": true, "showHeader": true, "sort": { "col": 1, "desc": false }, "styles": [ { "alias": "Time", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 2, "mappingType": 1, "pattern": "Time", "thresholds": [], "type": "hidden", "unit": "short" }, { "alias": "Uptime", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 1, "mappingType": 1, "pattern": "uptime", "thresholds": [], "type": "number", "unit": "dthms" }, { "alias": "LXC", "colorMode": null, "colors": [ "rgba(245, 54, 54, 0.9)", "rgba(237, 129, 40, 0.89)", "rgba(50, 172, 45, 0.97)" ], "dateFormat": "YYYY-MM-DD HH:mm:ss", "decimals": 2, "mappingType": 1, "pattern": "host", "sanitize": true, "thresholds": [], "type": "string", "unit": "short", "valueMaps": [] } ], "targets": [ { "groupBy": [ { "params": [ "host" ], "type": "tag" } ], "limit": "1", "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT last(uptime) AS \"uptime\" FROM \"system\" WHERE (\"object\" = 'lxc') AND (\"nodename\" =~ /^$server$/) AND time > (now() - 10m) AND uptime > 0 GROUP BY \"host\" limit 1", "rawQuery": true, "refId": "A", "resultFormat": "table", "select": [ [ { "params": [ "uptime" ], "type": "field" }, { "params": [ "uptime" ], "type": "alias" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" } ] } ], "timeFrom": null, "timeShift": null, "title": "Running LXCs", "transform": "table", "transparent": true, "type": "table" }, { "collapsed": false, "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 13 }, "id": 26, "panels": [], "title": "Memory And CPU Usage", "type": "row" }, { "aliasColors": { "I/O Wait": "dark-blue", "Load Average (1 Min)": "dark-red" }, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 14 }, "id": 22, "interval": "", "legend": { "alignAsTable": false, "avg": true, "current": true, "max": false, "min": false, "rightSide": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [ { "alias": "Load Average (1 Min)", "yaxis": 2 } ], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "CPU Usage", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpu" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "* 100" ], "type": "math" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] }, { "alias": "I/O Wait", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "wait" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ " * 100" ], "type": "math" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] }, { "alias": "Load Average (1 Min)", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "cpustat", "orderByTime": "ASC", "policy": "default", "refId": "C", "resultFormat": "time_series", "select": [ [ { "params": [ "avg1" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Host CPU Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percent", "label": "Percent", "logBase": 1, "max": null, "min": "0", "show": true }, { "decimals": null, "format": "short", "label": "Load", "logBase": 1, "max": "10", "min": "0", "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 14 }, "id": 4, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "max": true, "min": true, "rightSide": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "Memory Use", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "memory", "orderByTime": "ASC", "policy": "default", "query": "SELECT mean(\"memused\")/mean(\"memtotal\") * 100 FROM \"memory\" WHERE (\"host\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "memused" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Host Memory Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "percent", "label": null, "logBase": 1, "max": "100", "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "decimals": 2, "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 21 }, "id": 28, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT last(\"cpu\") FROM \"system\" WHERE (\"object\" = 'qemu') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": false, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpu" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" }, { "condition": "AND", "key": "nodename", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VM CPU Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": 2, "format": "percentunit", "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 21 }, "id": 31, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT (mean(\"mem\")/last(maxmem))*100 FROM \"system\" WHERE (\"object\" = 'qemu') AND (\"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "mem" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VMs Memory Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percent", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "decimals": 2, "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 27 }, "id": 29, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT last(\"cpu\") FROM \"system\" WHERE (\"object\" = 'lxc' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time(1m), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "cpu" ], "type": "field" }, { "params": [], "type": "last" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "lxc" }, { "condition": "AND", "key": "nodename", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LXC CPU Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": 2, "format": "percentunit", "label": "", "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 27 }, "id": 32, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT (mean(\"mem\")/last(maxmem))*100 FROM \"system\" WHERE (\"object\" = 'lxc') AND (\"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "mem" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LXC Memory Usage", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "percent", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": false, "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 33 }, "id": 34, "panels": [], "title": "Disk I/O", "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 34 }, "id": 36, "interval": "", "legend": { "alignAsTable": true, "avg": false, "current": true, "hideZero": true, "max": true, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"diskread\"), 1s)) FROM \"system\" WHERE (\"object\" = 'qemu' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time(1m), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskread" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "1s" ], "type": "derivative" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" }, { "condition": "AND", "key": "nodename", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VMs I/O Read", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 34 }, "id": 37, "interval": "", "legend": { "alignAsTable": true, "avg": false, "current": true, "hideZero": true, "max": true, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "hide": false, "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"diskwrite\"), 1s)) FROM \"system\" WHERE (\"object\" = 'qemu' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time(1m), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskwrite" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "1s" ], "type": "derivative" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "qemu" }, { "condition": "AND", "key": "nodename", "operator": "=", "value": "dianna" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VMs I/O Write", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 40 }, "id": 38, "interval": "", "legend": { "alignAsTable": true, "avg": false, "current": true, "hideZero": true, "max": true, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"diskread\"), 1s)) FROM \"system\" WHERE (\"object\" = 'lxc' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time(1m), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskread" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "1s" ], "type": "derivative" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "lxc" }, { "condition": "AND", "key": "nodename", "operator": "=~", "value": "/^$server$/" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LXCs I/O Read", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": false } ], "yaxis": { "align": false, "alignLevel": 0 } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 40 }, "id": 39, "interval": "", "legend": { "alignAsTable": true, "avg": false, "current": true, "hideZero": true, "max": true, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 2, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "1m" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"diskwrite\"), 1s)) FROM \"system\" WHERE (\"object\" = 'lxc' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time(1m), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "diskwrite" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "1s" ], "type": "derivative" } ] ], "tags": [ { "key": "object", "operator": "=", "value": "lxc" }, { "condition": "AND", "key": "nodename", "operator": "=", "value": "dianna" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LXCs I/O Write", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "Bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": false, "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 46 }, "id": 41, "panels": [], "title": "Network Traffic", "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 47 }, "id": 45, "interval": "", "legend": { "avg": true, "current": true, "max": false, "min": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "Rx-$tag_instance", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "nics", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"receive\"), 10s)) AS \"Rx\" FROM \"nics\" WHERE (\"host\" =~ /^$server$/ AND \"instance\" =~ /bond[01]/) AND $timeFilter GROUP BY time($__interval), \"instance\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "receive" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" }, { "params": [ "Rx" ], "type": "alias" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "instance", "operator": "=", "value": "enp2s0" } ] }, { "alias": "Tx-$tag_instance", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "nics", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"transmit\"), 10s)) FROM \"nics\" WHERE (\"host\" =~ /^$server$/ AND \"instance\" =~ /bond[01]/) AND $timeFilter GROUP BY time($__interval), \"instance\" fill(null)", "rawQuery": true, "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "transmit" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "instance", "operator": "=", "value": "enp2s0" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "bonds rx-tx", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 47 }, "id": 46, "interval": "", "legend": { "avg": true, "current": true, "max": false, "min": false, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "Rx", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "nics", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"receive\"), 10s)) FROM \"nics\" WHERE (\"host\" =~ /^$server$/ AND \"instance\" = 'vmbr0') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "receive" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "instance", "operator": "=", "value": "vmbr0" } ] }, { "alias": "Tx", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "nics", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"transmit\"), 10s)) FROM \"nics\" WHERE (\"host\" =~ /^$server$/ AND \"instance\" = 'vmbr0') AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "B", "resultFormat": "time_series", "select": [ [ { "params": [ "transmit" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "host", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "instance", "operator": "=", "value": "vmbr0" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "vmbr0", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 53 }, "id": 47, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"netin\"), 10s)) FROM \"system\" WHERE (\"nodename\" =~ /^$server$/ AND \"object\" = 'qemu') AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "netin" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "nodename", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "object", "operator": "=", "value": "qemu" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VMs Traffic In", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 53 }, "id": 49, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"netout\"), 10s)) FROM \"system\" WHERE (\"nodename\" =~ /^$server$/ AND \"object\" = 'qemu') AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "netout" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "nodename", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "object", "operator": "=", "value": "qemu" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "VMs Traffic Out", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 0, "y": 59 }, "id": 48, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"netin\"), 10s)) FROM \"system\" WHERE (\"nodename\" =~ /^$server$/ AND \"object\" = 'lxc') AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "netin" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "nodename", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "object", "operator": "=", "value": "lxc" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LCXs Traffic In", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "InfluxDB", "fill": 1, "fillGradient": 0, "gridPos": { "h": 6, "w": 12, "x": 12, "y": 59 }, "id": 50, "interval": "", "legend": { "alignAsTable": true, "avg": true, "current": true, "hideEmpty": false, "hideZero": true, "max": false, "min": false, "rightSide": true, "show": true, "total": false, "values": true }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 2, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "alias": "$tag_host", "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "host" ], "type": "tag" }, { "params": [ "null" ], "type": "fill" } ], "measurement": "system", "orderByTime": "ASC", "policy": "default", "query": "SELECT abs(derivative(mean(\"netout\"), 10s)) FROM \"system\" WHERE (\"nodename\" =~ /^$server$/ AND \"object\" = 'lxc') AND $timeFilter GROUP BY time($__interval), \"host\" fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "netout" ], "type": "field" }, { "params": [], "type": "mean" }, { "params": [ "10s" ], "type": "non_negative_derivative" } ] ], "tags": [ { "key": "nodename", "operator": "=~", "value": "/^$server$/" }, { "condition": "AND", "key": "object", "operator": "=", "value": "lxc" } ] } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "LXCs Traffic Out", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "bps", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": false } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": false, "datasource": null, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 65 }, "id": 52, "panels": [], "title": "Storage Pools", "type": "row" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "percentunit", "gauge": { "maxValue": 1, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 7, "w": 4, "x": 6, "y": 66 }, "id": 54, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "pluginVersion": "6.1.3", "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "orderByTime": "ASC", "policy": "default", "query": "SELECT last(\"used\") / last(\"total\") FROM \"system\" WHERE (\"host\" = 'local-lvm' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [] } ], "thresholds": "0.75,0.875", "timeFrom": null, "timeShift": null, "title": "local-lvm Usage", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "percentunit", "gauge": { "maxValue": 1, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 7, "w": 4, "x": 10, "y": 66 }, "id": 63, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "pluginVersion": "6.1.3", "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "orderByTime": "ASC", "policy": "default", "query": "SELECT last(\"used\") / last(\"total\") FROM \"system\" WHERE (\"host\" = 'local-lvm-test' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [] } ], "thresholds": "0.75,0.875", "timeFrom": null, "timeShift": null, "title": "local-lvm-test Usage", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" }, { "cacheTimeout": null, "colorBackground": false, "colorValue": false, "colors": [ "#299c46", "rgba(237, 129, 40, 0.89)", "#d44a3a" ], "datasource": "InfluxDB", "format": "percentunit", "gauge": { "maxValue": 1, "minValue": 0, "show": true, "thresholdLabels": false, "thresholdMarkers": true }, "gridPos": { "h": 7, "w": 4, "x": 15, "y": 66 }, "id": 55, "interval": null, "links": [], "mappingType": 1, "mappingTypes": [ { "name": "value to text", "value": 1 }, { "name": "range to text", "value": 2 } ], "maxDataPoints": 100, "nullPointMode": "connected", "nullText": null, "options": {}, "pluginVersion": "6.1.3", "postfix": "", "postfixFontSize": "50%", "prefix": "", "prefixFontSize": "50%", "rangeMaps": [ { "from": "null", "text": "N/A", "to": "null" } ], "sparkline": { "fillColor": "rgba(31, 118, 189, 0.18)", "full": false, "lineColor": "rgb(31, 120, 193)", "show": false }, "tableColumn": "", "targets": [ { "groupBy": [ { "params": [ "$__interval" ], "type": "time" }, { "params": [ "null" ], "type": "fill" } ], "orderByTime": "ASC", "policy": "default", "query": "SELECT last(\"used\") / last(\"total\") FROM \"system\" WHERE (\"host\" = 'local' AND \"nodename\" =~ /^$server$/) AND $timeFilter GROUP BY time($__interval) fill(null)", "rawQuery": true, "refId": "A", "resultFormat": "time_series", "select": [ [ { "params": [ "value" ], "type": "field" }, { "params": [], "type": "mean" } ] ], "tags": [] } ], "thresholds": "0.75,0.875", "timeFrom": null, "timeShift": null, "title": "local Usage", "transparent": true, "type": "singlestat", "valueFontSize": "80%", "valueMaps": [ { "op": "=", "text": "N/A", "value": "null" } ], "valueName": "current" } ], "refresh": "10s", "schemaVersion": 20, "style": "dark", "tags": [ "ProxMox", "Storage", "Hypervisor" ], "templating": { "list": [ { "allValue": null, "current": { "text": "cloud", "value": "cloud" }, "datasource": "InfluxDB", "definition": "SHOW TAG VALUES FROM system WITH KEY=host WHERE object='nodes'", "hide": 0, "includeAll": false, "label": "Server", "multi": true, "name": "server", "options": [], "query": "SHOW TAG VALUES FROM system WITH KEY=host WHERE object='nodes'", "refresh": 1, "regex": "", "skipUrlSync": false, "sort": 5, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false } ] }, "time": { "from": "now-24h", "to": "now" }, "timepicker": { "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "Proxmox", "uid": "kxQQuHRZk", "version": 29 } 

  • Import .

- . , Dashboard' Gitlab. , , Prometheus , Datastore Grafana , external, datastore.


Grafana , .
Grafana dashboard Proxmox
Proxmox VE dashboard
Proxmox Network

Source: https://habr.com/ru/post/id473576/


All Articles