تجربة المطور البنية التحتية

في شركتي ، كثيراً ما أواجه أنك بحاجة إلى رفع نوع من الخدمة من أجل "التقاطها" تمامًا. على الرغم من أن PCshniks قوية للغاية ، إلا أن PyCharm و Chrome يستهلكان معظم الموارد ، ولا يتبقى سوى القليل جدًا على الأجهزة الافتراضية مع التجارب.


لذلك ، حصلنا على رف صغير مع اثنين من الخوادم للتجارب وجيتلاب المحلية. ولكن حدث خطأ ما وأراد حقًا اللعب بشيء جديد.


تنصل


أنا بعيد عن أن أكون صحفيًا ، لذا يرجى أن تسامحني مقدمًا عن الأخطاء المحتملة في النص. على الرغم من أنني ركضت في النص ، إلا أنني ما زلت أفتقد شيئًا. دائما مفتوحة للتصحيحات في رسالة شخصية.


من بين أشياء أخرى ، "لا يجادلون حول الأذواق" وأنا لا أعلن أي شيء ، لكنني أريد فقط مشاركة طريقة حل مشكلتنا. حسنًا ، بالطبع ، كل هذا يمكن أن يتم بطريقة مختلفة ، لكنني أردت ذلك بهذه الطريقة.


كلمات


في وقت واحد ، نظرًا لأن عملاءنا لديهم في كثير من الأحيان OpenStack ، قمنا أيضًا بنشرها للجمع الألم والدموع اختبار بعض المنتجات مع الآخرين.
لكن المشكلة تكمن في أن المكتب! = العاصمة وكنا محظوظين لاستئجار مكتب في مكان يقطع فيه الضوء بشكل ثابت كل 2-3 أشهر ، علاوة على ذلك ، يفعلون ذلك في الليل حتى لا يراه أحد. هل حاولت رفع نظام OpenStack بعد انقطاع التيار الكهربائي؟ وبشكل عام ، من الواضح أن المنتج ليس مخصصًا لاحتياجاتنا (على الرغم من أنه مناسب جدًا لرفع العقد من 5 إلى 10 أو نشر بنية تحتية كاملة).


كان من المخيب للآمال للغاية تناول موارد مجموعة العمل ببساطة (في الواقع 2-3 خوادم مع 4CPU / 16GbRAM لمجرد كتلة فارغة) والحاجة إلى الحفاظ على وحدة التحكم منفصلة عن العقدة الحسابية حتى لا تتداخل مع العمل (AIO يأكل في ذاكرة الوصول العشوائي بسيطة 35 جيجابايت - إنها بطريقة ما أكثر من اللازم لخادم في المكتب).


بالطبع ، يمكن إخراج كل شيء في AWS / DO / Azure / GCE ، ولكن إذا كان هناك 3-4 خوادم ، فلماذا لا تستخدمها ، لأنه على أي حال ستخرج المعدات الموجودة أرخص من "السحابة".


معدات


في الواقع عن الحديد:


  1. خزانة أرضية 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 (لا أعرف لماذا توجد وحدات PSU هذه ، إذا لم يأكل أبدًا أكثر من 500 واط تحت حمولة كاملة)
  3. APC Smart-UPS 3000VA RM 2U UPS
  4. Mikrotik Cloud Router Switch 125-24G-1S-RM (هذا ليس جوهر البنية التحتية للمكاتب - إنه مجرد رف)
  5. SSD WD Blue 500GB SATA

من بين أمور أخرى ، هناك:


  1. الخادم 1U Fujitsu RX100S6 Intel Core i3-540 / 16 GB DDR-3 ECC / 2x 3.5 "HDD 147 جيجا بايت SAS / LSI Raid 0-1 / 2xGlan / PSU 250W (التي تدير Gitlab CE)
  2. خادم 1U Nec Express 5800 / R110c مع Intel Xeon X3430 على متن الطائرة والمواصفات كما في البند 1 (حيث يدور عداء Gitlab CI).
  3. زوج من UPS في 1200VA.

تم شغل الخادمين الأخيرين بنجاح بعد انقطاع التيار الكهربائي المفاجئ في الليل ، مما أدى إلى جعل Ceph في OpenStack غير صالحة للاستعمال وتقرر نقلها إلى عقد مستقلة. ومع ذلك ، لا يوجد شيء يمنعهم من النقل لاحقًا إلى VM.


عموما HITACHI قطعتين ، لكننا قمنا بتحميل كل شيء في جهاز واحد وبعد ذلك سأشرح لك السبب.
أرسم بمثل هذه التفاصيل ، فقط لجعل القرار واضحًا.


دقيق الاختيار


كانت المشكلة الرئيسية في OpenStack هي أن AIO كان متهورًا جدًا ومتنافسًا مع الأجهزة الافتراضية ، وانتشر على الأجهزة المضيفة ... باختصار ، فإن Vanilla OpenStack ، بغض النظر عن الطريقة التي أحببناها ، ولكن لم نلبي احتياجاتنا وقدراتنا.


سيكون من المنطقي افتراض أنه قد يكون من الضروري التبديل إلى برنامج VMWare ESXi (كما اقترح العديد من الرفاق). لكن لم يكن لدي روح لهذا المنتج ...


كان من الضروري أن يكون من الممكن التخصيص بشكل جيد وفقًا لاحتياجاتنا (في مكان ما عند التقاطع رخيص ومنتج ومرن) ، وكذلك لجعله مناسبًا للمطورين البسيطين الذين لا يرغبون في تكوين أي شيء ، ولكن فقط تفعل "فاي فاي فاي" الترميز والتجريب.


وقع الاختيار على Proxmox VE ، لأنه:


  1. هذا هو ديبيان ، وإن كان على "المنشطات" ، مما يعني أنه سيكون من الأسهل معرفة + التخصيص.
  2. هناك حاويات KVM وحاويات LXC البسيطة ، والتي تعد أكثر اقتصادا من حيث الموارد.
  3. في نسخة مجانية تماما ، يمكن أن تتوسع إلى كتلة.
  4. Dofigallion من مختلف المستودعات (LVM رقيقة ، Ceph ، GlusterFS ، NFS ، وما إلى ذلك)
  5. دعم 100 ٪ من المعدات التي سنضعها.

تكوين Proxmox


يصف المنشور كذلك كيف قمت بتكوين البنية التحتية للخادم فقط مع Proxmox في الوضع المباشر تقريبًا. لم يتم وصف ترحيل خادم Gitlab بأي شكل من الأشكال ، لأنه لا علاقة له بهذا الموضوع.


الشبكة وجهاز التوجيه


هناك بعض الإرث بعد OpenStack لتقطيع الشبكة ، لا سيما إعدادات الشبكة العامة و OSPF على Mikrotiks. أردت ما يلي:


  • لضمان عزل الشبكة الداخلية للخادم عن الشبكة العامة التي ستذهب إليها الأجهزة الافتراضية.
  • استخدم Mikrotik كموجه أساسي و DNS و ntp للحامل.
  • استخدم واجهات الخادم الستة للوصول إلى الأجهزة الظاهرية وإصدارها.

سوف أصف كيفية القيام بذلك من نقطة الصفر:


  • نحن ندفع جميع الواجهات إلى الجسر (نعتقد أن التكوين يحدث من المنفذ الثاني):

اقلبني
/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 

  • نقوم بتهيئة OSPF Mikrotik عبر الشبكة 10.20.0.0/24 (ثم سنعمل على الذهاب إلى الشبكة الداخلية بواسطة قواعد جدار الحماية):

اقلبني
 /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 

  • نقوم بتكوين VLAN100 لشبكة + خادم DHCP العام:

اقلبني
 /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 

  • نقوم بتكوين قواعد جدار الحماية بحيث يكون الوصول إلى جهاز التوجيه التالي فقط:

اقلبني
 /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 

هذا لا يعني أن هذه القاعدة هي قاعدة صحيحة للغاية ، لكن إذا أخبرك أحد الخبراء بكيفية كتابتها بشكل صحيح ، سأكون ممتنًا للغاية. بشكل عام ، نحتاج إلى العزلة فقط على L2 ، ولكن على L3 أحضر المزيد من أجل التعريف.


إعداد الخادم


سيتم ضبط الخادم للحصول على أقصى أداء من محركات الأقراص الحالية. ومع ذلك ، لا ننسى أن كل شيء يمكن أن يحدث ، وفي الليل يمكن أن يسقط الضوء فجأة لمدة ساعة أو ساعتين أثناء النوم.


  • نقوم بتثبيت جميع محركات الأقراص باستثناء SSD في سلة المهملات.
  • نقوم بتوصيل SSD عبر شريحة بدلاً من محرك أقراص.
  • نحن نربط جميع منافذ LAN إلى Mikrotik.
  • تكوين RAID مع ذاكرة التخزين المؤقت للكتابة:
    • 4x 1TB في RAID 10
    • 4x 500 جيجابايت في RAID 10
    • نجعل كلتا المصفوفتين قابلتين للتشغيل
  • تثبيت Proxmox VE 6 على الصفيف الأول والواجهة الأولى (تأخذ من هنا ).
  • قم بتعيين العنوان 10.20.0.10/24
  • عند اكتمال التثبيت ، نقوم بإعادة التشغيل.

نظرًا لأننا لا نريد شراء أي شيء ، يجب علينا تعطيل كل ما يتعلق بالاشتراك:


  • حذف المنبثقة عند إدخال واجهة المستخدم الرسومية (صالحة للإصدارات> = 5.1):
     sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service 
  • ننتقل إلى مستودع للأشخاص الاقتصاديين عن طريق استبدال السطر الموجود في الملف:

`/ 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 

هذا هو المكان الذي ننهي فيه الإعداد الأساسي.


سحر واجهات الشبكة


بشكل عام ، يعد إعداد Proxmox Bridge للعمل بسيطًا جدًا. لكنني لست أنا ، إن لم يكن سأزيل اللوزتين عن طريق المستقيم سأفعل شيئًا باهظًا. أردت حقًا أن تعمل OVSBridge مع OVSBond أيضًا. لكن المشكلة هي أنني لا أريد أيضًا أن يقوم المستخدمون بتعيين شبكات محلية ظاهرية في كل مرة يقومون فيها بإنشاء VM / LXC. لذلك ، فإن إجراء الإعداد كالتالي لجميع واجهات 6:


  • قم بتثبيت حزمة Open vSwitch: apt install openvswitch-switch -y
  • نقوم بتحرير الملف /etc/network/interfaces كما يلي:

اقلبني
 #  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 

تكوين LVM + lvmcache


أولاً وقبل كل شيء ، احذف pve/data القديمة حتى لا تتشوش مع قسم التعريف ، إلخ.


 lvremove pve/data 

أضف القسم الثاني إلى مجموعة وحدات التخزين لدينا:


 pvcreate /dev/sdb vgextend pve /dev/sdb 

نقوم بإنشاء قسم جديد لأن وثائق Proxmox تعلمنا + اختراقًا صغيرًا لتحسين اللقطات:


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

نحتاج الآن إلى توصيل lvmcache ، ولكن من أجل تحسين مورد SSD ، قمت على وجه التحديد بتخصيص قسم عليه بحجم 241 جيجابايت. هذا المبلغ كافٍ لذاكرة التخزين المؤقت ، وسيكون باقي القرص مورداً للكتل الميتة. صحيح ، هذا من الناحية النظرية ، لأنني شخصياً لا أفهم تمامًا ما إذا كان هذا ناجحًا. في أي حال ، فإن ذاكرة التخزين المؤقت التي تبلغ 465 جيجا بايت ستكون بطول الوقت ويصعب حذفها (على سبيل المثال ، لاستبدال قرص أو توسيع مجموعة).


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

محدث: هناك خلل واحد مع dm_cache ، dm_cache السبب عليك القيام به أكثر سحرية:


 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 

في البداية ، كان كل شيء يعمل ، ولكن لسبب ما توقف. على ما يبدو مع التحديث ، تم حذف هذه الوحدات.


اللمسات النهائية


عادةً ما أقوم بذلك قبل إعادة التشغيل للتأكد من أن كل شيء يتم تحديثه وأن النواة هي الأحدث:


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

بالمناسبة ، في الإصدار السادس ، النواة هي 5.0 ، وعلى الطريق (في وقت النشر) يبدو مثل 5.3.7.
هذا كل شيء ، الآن نرسل النظام لإعادة التشغيل. إذا فعلنا كل شيء بشكل صحيح ، ثم بعد إعادة التشغيل ، سيكون خادمنا متاحًا خارجيًا في كلا العنوانين. يمكنك أيضًا تنزيل قوالب حاوية جديدة والاستمتاع بالحياة.


نحن نصنع رسومات جميلة


حسنًا ، لسنا مدراء فقط ، ولكن DevOps (ماذا يعني هذا حتى؟) ، لذلك نحن بحاجة إلى معرفة متى ستصبح بعض الأجهزة الافتراضية متوحشة وتقوم ببعض الأشياء السيئة.


حاوية مع InfluxDB و Grafana


بشكل عام ، كل هذه الإجراءات تكون أسهل في واجهة المستخدم الرسومية ، لكنني تعرضت لهجوم مفاجئ من خلال شكل عدواني من الكسل لأخذ لقطات شاشة ، لذلك سوف أصفها بالأوامر.


نحن ننظر إلى القوالب المتاحة لنا:


 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 

أعتقد أنه بالنسبة للمبتدئين ، يمكنك تنزيل 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 

قم بإنشاء حاوية لـ InfluxDB و 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 

نحن ssh root@172.16.1.101 خلال ssh root@172.16.1.101 أو من خلال pct console 999 .


تثبيت حزم InfluxDB و 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 

نحن تكوين InfluxDB للعمل. للقيام بذلك ، سنحتاج أولاً إلى إنشاء قاعدة بيانات:


 influx > CREATE DATABASE proxmox > quit 

بعد ذلك ، نحتاج إلى تكوين منفذ UDP الذي سيرسل إليه Proxmox الطلبات:


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

... والآن systemctl restart influxdb التدفق: systemctl restart influxdb


تكوين Proxmox و Dashboard


كل شيء بسيط للغاية هنا. على خادم مع proxmox ، تحتاج إلى إنشاء ملف بالمحتويات التالية:


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

لا يوجد ملف افتراضيا هناك.


لسبب غير معروف ، لم تذهب المقاييس systemctl restart pvestatd ، لذا اضطررت إلى استدعاء systemctl restart pvestatd على الخادم الوكيل.


الآن نحن بحاجة إلى تصور كل هذا. نذهب إلى grafana لدينا على العنوان http://172.16.1.101 {000 / (admin: admin) ، قم بتغيير كلمة المرور.
لقد وجدت قروشًا في براري الموقع حيث يمكنك تثبيت لوحة تحكم جميلة لتقديم Proxmox ، لكن كان لديها القليل إلى ملف مع ملف إصلاح لتأخذ في الاعتبار جميع الحقائق لدينا.


  • انتقل إلى التكوين -> مصادر البيانات -> إضافة مصدر بيانات ، حدد InfluxDB .
  • حدد المربع default .
  • املأ عنوان URL : http://localhost:8086 .
  • نحن ملء قاعدة البيانات : proxmox .
  • حفظ.

نحتاج الآن إلى استيراد لوحة المعلومات:


  • انتقل إلى إنشاء -> استيراد .
  • ندخل هناك:

مجلس المحتوى
 { "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/ar473576/


All Articles