From 9327c60a5c7fa23bccea90cb5968b608d5a45550 Mon Sep 17 00:00:00 2001 From: Jakob <46379262+gr3enk@users.noreply.github.com> Date: Fri, 5 Dec 2025 11:01:51 +0000 Subject: [PATCH 1/2] Docs: add Prometheus integration page --- docs/Integrations.md | 1 + docs/Prometheus.md | 29 +++++++++++++++++++++++++++ docs/_media/logo/prometheus-logo.png | Bin 0 -> 19279 bytes 3 files changed, 30 insertions(+) create mode 100644 docs/Prometheus.md create mode 100644 docs/_media/logo/prometheus-logo.png diff --git a/docs/Integrations.md b/docs/Integrations.md index b9871848..b022310d 100644 --- a/docs/Integrations.md +++ b/docs/Integrations.md @@ -10,6 +10,7 @@ EMS-ESP integrates with a few home automation systems to report status and senso [![IOBroker](_media/logo/iobroker-logo.png)](IOBroker.md) [![Domoticz](_media/logo/domoticz.png)](Domoticz.md) [![openHAB](_media/logo/openhab-logo.png)](openHAB.md) +[![Prometheus](_media/logo/prometheus-logo.png)](Prometheus.md) [![Grafana](_media/logo/grafana-logo.png)](Grafana.md) [![loxone](_media/logo/loxone-logo.png)](Loxone.md) [![modbus](_media/logo/modbus.jpg)](Modbus.md) diff --git a/docs/Prometheus.md b/docs/Prometheus.md new file mode 100644 index 00000000..978067a5 --- /dev/null +++ b/docs/Prometheus.md @@ -0,0 +1,29 @@ +![logo](_media/logo/prometheus-logo.png) + +EMS-ESP exposes the `/api//metrics` endpoint for integration with Prometheus. +At this point, only numeric and boolean (as 0 & 1) values are returned by the api. +All EMS-ESP metrics are prefixed with `emsesp_`. + +The following sample configuration can be used as `prometheus.yml`: +```YML +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'emsesp' + static_configs: + - targets: ['ems-esp.local'] + labels: + device: boiler + - targets: ['ems-esp.local'] + labels: + device: thermostat +# - some other device ... + + relabel_configs: + - source_labels: [device] + target_label: __metrics_path__ + regex: (.*) + replacement: /api/$1/metrics +``` +To visualize the Prometheus metrics, see also: [Integrations: Grafana](Grafana.md) \ No newline at end of file diff --git a/docs/_media/logo/prometheus-logo.png b/docs/_media/logo/prometheus-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..71ea074963736f6fffb825bb451092fc42159592 GIT binary patch literal 19279 zcmV(+K;6HIP)S>>*Q@sKg{d7$JrP z+yfC6tSBn76h*267Oa*bbs~y`f~erOAVoy2#VRfweWK6P+CKfhuV3Fk?tP#0JLlft zdEavYXaON2aTclqkSUf)BmKSEaq$UkVh^A|1_Iat@c7x1&?vuX0DwSWE;~EY-y8mf zmji$(-dC*x!r5&2|Dej3NM!&>H~=^ZgxP!mBp(1Wa%B=ld>jCn3(^%F#VNQnEC(3TzO%XPAIadNVF2 zsQ-HS525h(GkYHK$uor2{YUKY^0I0GI1>Qa=09Q!$^lx}0%+X&BWAQ4Ksg_vrT2?| zSc-W`mB}QoHa5Arxz-{f-&!H)@A#hy{{Ub7&sy=h-{oQZ2$Om83>jOY8$T-}OD<(+ zOL%-C+v=}F{I3iD{vOjJg~>vxP|O#yV?@GSkvN6T%@PYlGEtV8EfW7H6aQt|U+{UZ z0f15a0hsfxL8X@o*w5X7V^9H0+@)~+ci%$DF`(GISiRBDbN>mSw)xLMixrP-QOc(} zZe%o@FPG+gK2xkE;DG|lzywXu1w$|cE3gM=a05^9g&+unXo!b-z=u@G1S#agGFS}- zPz0M{J5)e5)IuFJ!eMBIV{jVI!6mp1{csxwVFVt-IJ|^O1VM-h9bq7vh#q2$SR(ca z2bqcZA|Xg55|1PyDTo-6Bg>FAND)$kR3LkhI^?$^hJ;C1K2sj3gjkChJ;R0~8aeUlD+zQ-ATm|j` zt_9bLyNVmajpIJx>3D6tCEgVuh>ydk;B)Z>_)`2nd^7$mz8^n=e@P$^SOimoGa-Nw zPe>yyC2S<@Bs39D5&8(jgb5;%s7bUWx)Z~QJfe(PKrAO7B%UN*A&wAVlc*#;l0C_f zlt2=b@<^qmdeRBf71AhalB_~DCcBcu$O7_WaxuA<+)nN#kB}!RsuWX-J0+TuMp;cM zqcl>^QtnWmQ>jz~stYxODx$8UmQfE;&r^q}Z)j>X3mTV}NR!hx(e~3$(QeY7)9G{* zx+gt>E~9Uv*U`_=@6lf?F_f&80+j?xE0rphT9mFRJyj+v8!LM$&r@EaT&jFTxmWp# z3R%TOg{#6-S)o#?a#ZEI%7iLI)lM}`HB)t?YQ5?O)rV?CH4`;oHGx{b+FrFYYQqeS zVaVVz_>47-TEM`nz)GO7Gs}Hg;mI*76mBA`z z9cB%%-cHe(;x$D$Wy6%lDOaYv(wM5@sUg%T)M(P^*LbVR*7Vg(*W9Ans(Dunr)8lP zp_Qw(OY5xGlc~(9Zd3VF3#T5QdP^JCw$P5$UaGxUyIXrgM_0#RN1{`%b4KThE=$)_ zH%)h&?g`y7J%-*)J(1ovy_0&6*y?OAb_TnQ-N_!;*VYfvm+SA*@6n$$Fg2KMkY~_j zaMzGx$T3Vd+-BHeIBuk86l%20sKMx#G1-`7oNBzoxXbvJiK$7f$vTr(lZU1nrh%qQ zOdCw^n9Z$EmAEiEqX0cOD9W_I|j@M+H{| z-w&|}k%qK~qM<>dTSM>6GM*)#)fxt2fni(2?uMI&FAV=af)EiNQ5o?d(k^mYWLFd; zYJOCG)XQk^=;G+xv(0A9XLrOX$0Wwo#k`93i7km8jI)Vb9(O5TD_#`emOxC1N!XV# zF~@h#_BkVoj)?_{19MI1E}DB`p4PmKdB^7~&*#lQl7vr+O{!0N#|z`t@Fo@nE~r{C z&gb%X@E;321=|E;LU&<_a5ULHxg_~vihIh|l(AHg)Y8-^BCe=H^einPtvc;hdRY4Y z^p6>_8BLj_%%setVl{EPxHC&PYf)C8#8Ofq8C>YPaQnh>X|Qx(Hj+IzyG_QFNo3t} zGx=KiP|nPp%AD7^F}X(;sV)*P>RxQIc*Ek+C4Ni3UW!}FU)r%uf7$9~L(9FE?^%JY zSg@jFrQyo_l_RVCR~=YQS)IQ6hdkT7lDrpdV%N0i>*TM>A71OfwxK|&Kw5Bpo!h$V z^|f@&5O+Cd<#k)2WHj6h8Z1LD~ zphUG~Ny+fm(5)@o*xL%Xz1Ti~`-Rf!rPVtqJLEeC%Rt>~}xu57B( zuG&!bYNuf5m0g~@8mo1xi>lx57VW;V$A3>tjY&=EUc%m-y$@<*YP-JXd|kIsYhTg6 z_xr{B2MO{}J(LvTob=+U=H-wqrO zKHPDHbENS*dIe*ZE3W0l9%j~Aby zoX9`%@#K<|6Q?Ano}5lOJ=`(BbYxy*Dm$X>hBwv zJ#gcC;`PBBf*TKSX54&sE9cha?NxX1cM9*S+%3JQeXr(6^B=P%vk zapNP;q|ZM7y79T@^ZhTTzv!3L>3SRcc62iL9r0b+d-M10 zAA&#J`I!0f<8Swb^ZUi9i9!GX010qNS#tmYE+YT{E+YYWr9XB606@D*L_t(|ob7!F zm}FOV=6~+J?^Wn9Gd5uw+1zjj(K!78AYegv=6bWbYD<3HB}+gD_z1 z#h7GRSYd)d7%U@^gfJ4y3C&2FoI6+5d+*+R_B;1g&vcwl)zekg{Yy37UG?h4d+t5) zKg93C(SZWM1_vKKA6teBIJrLsR|l}?#BLO_1eHufIfFu{MZys}qkib(2x#9~@Ol^{ zT*0cI0hp2FP|bkE4}p9P)($$0kd_TrZ`}cFR$*{m2_??p2~bWU?O-r7Ocn4(!4?^D zLg+#lDs&JXT?5!(>4jnkm1Z!kK_)`#En?PSFjB)<^Y}qj)^{N*nXnC%f=jC)0+_eN^qG4c?D$}le?!mAdLQ(|cDnKejB`ZKKuw1IaDFTCFtOuNj z(=oL7aO}WZgJ8i>h*3g^(Xd@lpnqUBI;abg9BcE#@LgRPJhlsJI7Jtg;SFIp9Rdnv zY}mUUwot>4Rp;V_ip9Eb-v+=Rr9lgrqjscrgh)mhh5-ctn*co70jB`iNWiHeeIkK+ z0jy=HuGom!5fdpbijd9}}JcV>5f+1<+#v?gg+5 z;AGl;u3*+!5s*1RWey~xRR${aQ{db=Q07?xok+w_0pYkX`0Hbz4lkW!_OjpsD?8{8 zFH$EH`027b!ZVZztPW?l9c1nX_z95vF_`ZIaF0luT*C@xj}-x#9f%kgR@Zi3=8d^X zv3eRaP6K-ojow0@Mg+zRN29?LRzmH5l`~SHN4?SiS?%e#1K{rixN{Lt ztZlF&Ad|qkEdgvG;8z^+6$Ct6dpe`Gt_x&+zKVqLI8McCGK`+rA;CF~jXtfmuIuGG zbMV9u1N=h*z6anIFz=P`i2k;M!&vqLA``FDE*}^k8;SIz7xCRvoLAud5f!aMnDeSBasIE=BIemG#{(ChN9WT;+?7`CkBa*K)i!VXj;b&wtDq z`0c2M?||`(nor(BgkzN+6^<2%2rv_rbuy0}S3~VOCj7!A{2eg=R@jEc^}IZ8*s@qb zl*1a&^eQ6$0|h>ZM7)qVL?#!Ig~tK$qH8z^nF_Se+1*R0Q%A9X!jAa+G)I7 zr+C<8_y{XHN8Vf}lV3x@^?T--&W*MENF3QmoTtA4)2enh)Y?ZtWJPcuvN`}*<%!#p&dB3<96cO8qOT=teM~j}}J@3y6fk`8^=q0Y$%_XMIST2wDPU zd5^Yu7I{1#)Wf(6SFF8^xP>3dSP))7pkEO5U$)FcnF1~KG>Cj%?Zp*L>OK(O-qh(( z(*_!V>KgUjfn(KPTQblofweb8cpBOU3>Qm6m=1+jQ|~kwgXEnJvfTcLTGvc3A2u9 zw%}(C^{=@PeC zOTbM_p|`vwZKH~I2YF~{q@2EYh(~VH%JekzeAj#eA~(x8WFw_ZEB$Nk(UH3n?EsMl zrQX3J6!jM=$({`vwDQ^mU?-LlRBEpp-mv=aq_c1-`Q|jPILp#0}F8ZO*qGL!k z=Z%}I%%?`(R#DM|HC;eO#Yj{HEd@;8LveU{FhA7FYvf!ZkJiQJIIq2{OVrvv%*pG6aj7sq`OZoStMoep8W7nqfg%dI2H8dpf?L@Es`kq`()| zM)2%VwE9+i!TEieu2TRJ!CMQx=RhEU2y{InBZ_Z#rRq*7KBo0o&bh;oM#9NeF2fxf z>M9Ft$FdcWymU<@msxFSYJcB?9=iShuHh}?-k0GYb>t4~vHT;%^fk|P?eY^3 z)YU2lLpX=QKV#rZV!n4NhlN_Y5kEb!&MeW2dh}Ni0-~xzf49Dj%H{8x#I{uG z!93texd+ESULPx%YKrx@J~Wwhk@>d$r}b`5R&|`JGu!BM`8mMvCEy>?0*KPAG`Obc zM=7Vzk8N^moi=g_N{$!vMdM#m2X5f5ta0`GNr9p^@Z!#dop5?LoW|G}dxdIIqgpno zmgT2LwIn|yc%wf(N^#mKIQCV;c%~uh;hZbD>7l$sjY^T@u3L2Eu2_mi#Gt&$N66&q zNK&W#Vc{}&Ica>yh|}9q``e<7UEuM_V>CdoDo&*r*&rE%i;Zn z3yOCdTC3+XbH>cqwMs?{lX&=CNI9w+{2OPr%K(4t(L4uY;UQl{>^)}#D(ia?)kISG z>DA%R+vR~t6nQy-S!g|R`J@lzsrwA@A|N!;Y5{b76Op=Vp#mbr){(*cq9}fQHBC3N z!wzaeIu}+1omwvRRW4@WKaB&DRfJjzs1x5W3Jk_OR~nAtRh{TBY(R0ab{+^nFmZ~& zL)G?6M-C#SJVieX8MxX+h@y`0`-JbnS$Dm4_Ns*>FnX`xDShbFbMJlo{v9V`aM#B3 zq9|=S;Seb4JrWxlJZasn9=JHlaPPbT@1e1bgoELn z_E{25WM2&#k%VyT*}*)Tl0DN;QE zGO}YmTw22ToHLdJD(GVNNmt0;P10~=j*t#dMWt^#sc_CuhWZoqxh*gzTfY>Zphkm$ z9)NFU#yON*xr;`kZ1$blc!!1vb4Xa#1l!qlQ~TolMYsgkrKU)5 zY5<(3)8iq3Q#8cSi=qfx>q)9=BVaZ^rSVp}lsFX(&{0yKQ5Ac+PO@NRwFnfL&WMb8 zKVZK~pnqoKSIj4F7sV+mLtO)d`+FwMaHG5HETt%yYk5nyNr`;4J@xb*N4SdSxO$XS z`FlOO_kPC-_VV5!B!CX#*|q=yI>U3>;?ptf-;HApMYiErXF7PK!Ml{qOa*P#o3*7^ z%ik>|9Psdn$h>lcKIZ*{$)Jr^?|J1=O*vO7zMAIfE(s*i#_f;94z#FntV9U=+ekhFLY}8jKawQ) z&+UC(w>cxM^o<*LrfeG%DGZU{%pq00j#+)X6@_CAVh4K)3?CdGh@nR`yi?bBm2K5? z$P1D?P+;0=q{rqIpL=Hzm8w{EvNWfiCMFnz2lw`TZeahqKQ-~p{>;4fGd@*x%#a_7C%F@fJQ|U z8g{#qRb_0s^2zTrN%q!u=xxXBf5SWdO;bp)dc%HD>@mE1jjjx@+G~vMndNR$&p4T< zt2LLq?-h_0CWT23p9r8MC(*DwyvKz{dhW7Dq@4ZK6h@w*bWRt-Nf+3b>aiB|67g1m zi)dFczfWm?d!uYEGqP@BJkKPv7BMQl^bC0WRf(zl@uMZ|?!*dm*igny^C(g7c7bU(HS(QtLzfgc95 zHvckk%BBy=_Ri<=lyKJflF7}6q`wy+{p=6RE z50t{zvoY%UcOx|^Z44%c$<(W|V)1k7D*B#UKqQ0wJLho%^2H)Bw0)J@{^*&zqM}{j zF787~#g7WfgBwoV`lJxeHb62M;qhM{2Nm+AgtZ*1SkOC_q76qB5~61S`00!XJ=C>f z#+hy-!HeKdmL^fJV!Xyh{MkdE7b$Jd7$mFMXsCq=+Uh$&yfEFm*}*{4UD$o>Pai$D zd)vXhjqyAd5_90Oljd=B0t};8D|}eRzHNjbrJ7c6>eGL-crsVzFK#nQJaW z;dK+Uf9(#~McbvX zdtB!|eK7nUSb7L19;L1twH^HLF#H#$5)d&Iy>hoWlU+WOLtYBUI8(5-nYo8U5~!j# z#gY2kv9gpO&p+msJ!R~mm;Kp9!`tzJGevYtAy%8)Sv~~fAF;(4Y0+KaVtZFG;O7Wq zduQM3I*bj;FACYZ_8+8_tL=nCL4l@{&VrVPSPbSU$@->e;Cvp*HS%i(p?n1}v3V75E$yKc_`?ekX zquNO4rP?%{7^2Cl5Hl20{|`j=>EckDD~wUe+zu+$Zp1Iute)DY1?77j@$JEX9R_S} zAXsTJ9bBjNtr%MYdVqi@js3E0<24~GbbOz@smC{t0I>-uMbV9bh3Wl>2z^rSW?%?7 zoUP!+*w^}wqAH9FZ%|CA4Xnq=Kr&8HWs@|CuUFb%ie&(TdK%fnOSCm#nX4gU%6|4W zQ{pLcU|m)2W9^g`I*PhD+-jV*L1`cDdl*)cF)G&R_KNNx&*KEdMH;4RhmO1Jmp_{A zag)_044mEzoyA`HsF%u+{lZ83 zRpW$)2~PQ&)3UG4M(34E!a+pXGuVa5=J``cf@6hMh3Z4)ID3ZtK6;KBtNTPg#?e2B zyNxY0%YG+3XDbmH{XsJLU+pd*$URuSS?AE(+4En{Wp1a3u6fEFjzrzW*iVqWg*HQ8 zpyYh2HhAU(qxaCo5sCxD*!a-aNnfe-bX>LXyyI>%V`hHQ%$#wrO;$ypnbl#5;cE)2 zPbz?B-d@~i1#RCJDgWL>MOKXMOzOnRNyE}!fu!BabyhHQF|vvIokXhrgkyB(C-;3W`a{AY(BzS=*4T03WWEDdYKxYfr!nvvSq%M+ z;=uG7CgXPkILWVyXBTMA?Qylm@!_%{R{V&Uh~pFo40VKw0eL-s4GcS?DlEO1jQ{I4 zwI?TlV(qm={;tC;Vf1Wm5W-rJe^a~atHJ(`=*ujbvpk``LaeVys@2ASM|pk%j`#DZ z$|)Wxt#3pe^&Kh0Wc*GT)USY=tROrq7dsid9pxmb4tcVue>At0CYSBX1!O*fayF=3 z<1adV=Y!DYw*a)RU7zh(c*2|5^Iw5*5VL@pZ3ic2yi-C?Xj6D_s-60(2{Y|Ph$pMw zaB@5n4 zTCJ_$4DWkneRDc{kyrk!Q#l1#d611j!=2M6LlS#@Qr8-Z&6zY7syt8lu`6*h^m?%2Jb>sUK5%CdAA5iq#37ybJ>Agqw%5SrfLaLsw< zKQy$eQ*4u29apw9wHo4)VH5@>7&+@x?ziQRgDh#fK5%Gl7e!#I!EG~xVw_^r8Jp_~ zl#_QR;g?#Xuid+M{ZB(KY#UY`js+2ER{jk&@Bfl#;2blR()1sS7m=Jdr5fJU7#ii~ zgf`jWaNnwLR%Mo*B1)Zl0++>}<;jt4r}rsQ%g7Hv<6}a$9EzG|0b43y)y_V2?wFN2 zJP!NMJ>fuYP2n`1W+^$^A)NVBK{9uRsfD`-VT##gey*^QWC|B=$DWNh0=T+yb*4=U zxjr^;98L=F^Q?qIecDY;=k6msOo^HsyoQKYx2=;S1kL=Htu16(HucQ!R2JeD6LSgc zZANA8mjtJGO7ZMm4z1G^gU7AKz_IJ*Ub4WvSJEf|?9(yrp7t10kLV*jcF#HRBu?U~ z_Lb*^X>H%EKv%b85O|V9hS0OFTzj?A{?qjicvHd%L-us5hvdYlWhQ%IhdLP2k-V&`Uy6QhnShJpUc1sTaL2PNha@H&mGv8|HgYp3(luP$j?$9 zQDh~^d&C_Q<556;2}J(|%K?Nx8%#={wto6VQB#{pc^M%3umq%{OAX=7c2%w<2pA7l zH*fg)j@$Brukiz1t~yy=M&Fso3ibXpd*PidJq5$qo6CI)-Y9_VJZ^7r59|-d1F*}b zGh_jajIcssN)O${ZTYQUqwNKR@*ihq8J;;(jejy7+lx7UVExozXOI2d|GG4C^)^&( zh+Jp-yz3N0Y-~HtF~P&m7&eylCqMNtW&UuKQDv^HtYeD~)rB?DvB8BrCy>FA8`yWi z^&wVf&rFYJH0Ls#P0RKnfKx1tlmj>M!Z`?y|nG4>(ZXWo0qbqYf1CaRFA=IPY;z|PsA&W z6i1pSq$sorz96IqN4iAm6X*gnRb%1n)S$wcGH2vp*%!Pq%J=63{z&`D>sTn$ zASv>ip>Rlq!aDyqFnAW)7?Ou5#M^E8Yq-r!~^ z4-kcye6V#;bYMVX1E6V z*cHFwZMILFv^Tgk+Z6SwVg;DcZ(^ia|bYeqP$5f?M8TEB1Fi29*D=Y9Y;(ieZR zGTiY7eT4Q6?E(h9m>GXF@qOc`&|k?@TYE6Hmwx2#YY%tqJVFGaj*#O=!Js!)GpX)q zu8>fjRbmG$m`7|tF+JvEADmM&!Dbp!M}n>mTXSZ{nZ8sIf{4{$8X4?*Lr&t-rmFT~ zyi|eyW}>QUw4(`J%6zIPJhgpIvpg^tjp%Qh$}G1J?oom*O3B`M9?!W!Oml-s4CRFm zIHi!n{j&Ft$86qWdj`UXJYxWrXLrFK6M-r-2xy*Lbekz8JK39K+CBY*fTt7lDT>^d zvG>wsf$!D}L4o6$5G(&5U2*zfr^(`K8^|)@p{^Kl#gC1RsvEOs)W-8L6qSvMFY~jgY->e? z`ft(42fM$o(@08HXa8ld;7tm*{ve_#3v7#XfgC9-NX}1#8W!c{v_D~*#t%8&m*l)> zsp4^9M)$W(kz~+zkP_ws*~>PpPD?(Hs-u@{jwv3S|3(@WH}vd59_liS-#&dw;GBku zvf*`4df+EQ^*Lo1@uYBra3h96jhEjp|4lL86k?B*Xd8*FGvV9X1B4} zmzvNMrzq8GaIdakbsQ!%CN$7LzRC! zgXzZvm7C{tp?|6WtK9r2kFa3Xi5Zu|wGCB3qJ@f+=M>t|WbZQ7^b`r2wll)2toXTB z^LIzzGdt7KQUd9Hp)ZaoYTM|!G8SAd+_CrWr-c51a|MZUTTBpb*jrzG<~XH}#vhj8 z_NHA09P^8P=-E7rxZ(s0DzkJiLG9{s!%%onz+ za0GY-F4(*Dx&!mxMIefH27byif#yUAyi1$Il;PqzI4A1x3XkUP%-S2m?syMyd3z5NmVj1=R8o8P@_kp%l5RYWX{u)MldoXaq z`Z-U5Cbf^7Y8D1iyMur(PVGg`;|FrJ#@JDvnl5Q;;SdmZP^!1+1(LIb^phwP7Wm1O zo=pge-4y$aC=3|5SrXKZ`7&714p&}ikhC=rYJ6h#3Z3+>DvLQ|<$hq7`YydjyJ)_CT&A(1oMDl8nOrnLB}LBJ3}Nw-&NyVcgn zDT{HIm9hYq8k*ITc7QeI0e@z@ub|A>BHRp(KoAgRz-9{O^d^DC1I5IQE7Gc42vp~d z8uFebZI95m9(3kVQdsT0>NlkWfs6KR5XJ2*90HmpAM30j{r{ZKGjp323W$gD)h-kg zE?`#-uC)2^2&j{}7kWz7vq8Ac#CiI~xeX`$==PWquV;6ig^Tm{w%* zy(65^=2-;60CBOYxN>1h4le^$CqgY#Z(qfWyL!Y4P^gM<%&$NAWN?Er$XWvgK0zLu zks=xfozT_=AYwAqEQU{7Mlxf^0GO*S&Hnc$EKw}`(OkQD4Pv0uj zT};=^rPFPzLP}jd{HYaJUGjW0S*Z$%m>c58d>6r(xXALMM-z^~|3Qs5xMi}lj!I&10)4U<8hjfx2 zVpy378ZQ5Q_JR^sS`-9YX9&Eu-CewbkYPir98q*0fLoXPd_>g}UapS49!a-?6(5lV zz2{N#ELFh8J`Nm<4GIcQY*cz4mLZt1)_|#N8OTQ+f!petmXcc!aa|pC)S1>Pf>Q?3 z2*Xr7vJOJpNwDHB@v|2cDd#CwfVF*6`6q$M#-DMb_~JJ1f-yZ9U1G{Lc+P2Fcy@@O zpSQ02)W32@E`2G2!vv|$>#OWR6&bY2%MC<55@E?Y32BG0IL>ZGkwGg#K`~ zt91ZfwCsc=ANDGVc3>nPoa^h)vWVAa71?jJcP z9Pg{{yrwWT^qHftG)P&a#y}>m6xPaWHl9JIE+`^I@vx{~451H@4zyFQ41|!atE4tX z3VaqLxJvY!fj)k7xkq?DnY4ymtofZ$B*JejN8t!yDj0ZLRvtVVd?t0j8rk?HUn@L*wB`npMOCcA zNkWz^2(w`bkrl<{O?;#%VXCi8?wr^-Fz7{r4r-ag6DuKYsLj2LeQQIS$&{m!H>^8- z+n?AdHQm|C>*z@>0q|QJ~qSPEPnjP=5h1b*1<)F&o^~+Pa%0YxgRIJ6X-f1$( zOk6ESe^|PE=R0U0MvjJnWE&K!y_=wi=GFC6rZc3HP1cx#$Rk4RBE#x}BIuH3q%Z_(1W_~Z%)u4UZiSWG<%sOBlV ziv|vAs7CocB9u#=mb0|rR928?Ev1z65}!`PAClyr6-KHUddiyraqyX|K9qIGL%dkz z3&e;9QbdE|nX1iu`VWnJoXPotgL`^$gj$XRm~%+$7v#S$!ZCtXl{X|3o-P7X=BD(f zW(LfaX0$t*vjCi4|8&7ZQ_s&V#ufd66Mp*m9~ETqE&^mQZ@cIu z)XD`IDYu<3IG@=Ob;2v@P}OK5$p@_#jslO50gF@2MV?d5YO`m)&lUJCZ}pGJ@*hRo zy}ap?W*HSjpvF<*G!V>qs`qp=fSW~rrNfb8e;$a=1iR+|^dt~H6+pLi1e!w|nL|*X zVGaGE%iKq8HN8KRrm+nkbdiek)R6{tl?r`6%qRy}9ko`@nW}c|X zzX+fk#te^pKy(kh{fg+}N=2(2PR z(mCt&dQh0<8&#&NvDY6!I@}lHFO68KQ%-TbKL)F`)U`B9I~F6SfI)Y_Y_r=xrAW_8 zMIt}W9O`HAqhQ>_+TX3bzE63&&%y7d(K`8&6lp<+RVpia3>{yFi#9yRFrVcbpMtz_ zC>$`P=^%^yu*p`pz@D!Be{;s(AOSt8nIJn_)O9GdJHWt?6Kj4PoAjfS!#|P~&Q{>F z3sH6{Gd;z7x{wH~^L^&~9=q6txJWg5Qb!uUYh9uI?mR!MQ34X7R@;Y~7wVYC*f<&r z!+sd4mu8%GhLnXsf{_JDdFjVUTKR_<(Ge;KDeof#8es5)E~0yt!##@BU7r0f0k=oa zP}uWTX!ADyKtgltTmh9TppqD-tdXuQyv7U*uUL}_2m_YvL3;Rw=Rc1?-)lAj86CVH z?s(_ac3}sUHxwBVCs4*gvSg%;qM8|W6td73ZLnGjm(n3YIj2xbqmFW%Nn7hDv!drP zaHe9MH|e2=8g6yj;6`<;7lm%2{JlzgOAtDD=K|L-_1Y60d2Bp>7j!8_$WmMgG%&Dx z1BM1VUaVF26+>oR`U~f_&Rt;K5B5I<_?~XF>YfT$Mk*!A15=QECFjL1k|3xKDxh{I zq`(Nlw_Li7V)Sm_f#L;2;9i9&BV>c6@~+*->_y}|ny#KzLQd?TXCO8Rh1=Y8jS0ys zD6-d{438K7!Vt8|2iJLx+U+B7pr8ll`uo^Q1U^>XY)W-U8U6P*7gp)gN&E425|-^2TQ07cVjl5S(^IqM~Lx= zC;nzosayn7>Lf+!uXPX5`cfo>tn*v*#mor(Lzq#u8EVoZp^;3Et$%HGoWrm&8Z8Ss^3X(F|cMee7^z?2-`eC8~>*! zYSt(N_JFa~6g}-vh`g!^N2s#cN9g1<6~aaz;4b_H^hR_#)?!T}>ZQ4HQn2rkp6gzwbv z>exH<$@0G8G4DzVEg{nydp2zXH-h8ip(NEtMZ~s%VsyB*Z=he2d!>ip8(hgvs9og&OuyBYYtld`Jj`uN(VBR+a0Roe zG&uanJzKVo3t)wnTPxJc8r7a2#G?gBM*%YULy8nL(kz3u7OpNBOHqI}_VF#{oJ@5U zj5&oh9@H(9+L)lGD6d{WADMb;p32gsP_$L-SyNf7gr@Sb;&4uS+>D3^Yv@05-Fx?) z-t+fqN5PFv6&JxaX$n>fi7COtgj$QEv0`M-g%x8d1!F2KULwj2kcGl4L|%i*!P&_Z zR%o`t^dZ&6Z0SZZ25N=Jhtn9QB<;Bz?w@P#?4yb>`qXM=&0n2z^J9M&RVJtx!Kn11 z@^0VSUK}|4n1+v#u{MUR7-LnbW)X~~UQxXCZIlke;fVD#x-lmqhPm>18HmqqPTeYp zV?r^??l;=PnAD2O^#Dlt_?j^qQb*_mo{a^vko1PlPK@{9JZZ~-09F1o2T4}066wxwHRl7%TsOx zENDd`g%Penoa{Ok+EnQ+Ck+tQ^m}DdTihAY__Jnq1_^>|Ua5!TNQd7|niTSZQ{cO! zQu=}=Y7Q`K$k`>}e^kJY5&QkqrN0Lv5J`|T(jYKzVyUv6VAe_6bzT^rZyc&_^S@at z_t+w_S<9(XbHUiVbtu1W^mmdLWTGtP{SEV$WE==51S4Dx(R8W-I${($rl&g%>ZwH0 z6Z@rR7mhR~M9%!D(I^NGT>Oax;l&@4Xp?BR3)^Z#1RplRbE#Wu)Xq4YD`QO`Hq{QPI+9wP1G3dx-gbU`aziXhk)0TR2 z@H0<)3z@VDqcB)kp<3mFS`c1X>O17+;79c=QP0vCX-!jNlg$b^8La^Ev{`kh$Eu4Y z04*?Cse1Tx;AaZBpt%*S!;o=rGIL|isFQ6eRH6n5JE3;sR`fXm+X@y9Sz1Kgy92#v zJ&|V?3rl?&IB@qy9N2xz=Zl>!A{+v-L5=^JroLdq3RG@|)nBY`X%*oZg)@9YdB3}% zV^0NzgG11Xg-#p_gBCO!a<&yL2ugWmNt{z`h}ZBy8Pz=w~rt%Q8=-y-!u z;*^k=iAP4;6NU=Dn_a0Y?%yTql{`NX<2Oxa-s}qIZ`VAq4^b^c-$};=l7OR5P`%8c zqYNWM-EdV6Z5*~fbT(?%Jg;EvhvH%q;v_8tVrP}RIcIap&s(`d75S?I7uEKGaa$`1 z2kJJ5^3jJ_moGo&jvd%=_uk-Zk;XDBSbUJQEGxO7T509Z(&TQEx|Nm^j$qIFpAhqY zsV-HH!^=qN>L^5T9O%0qbZKi{THV0%?wi9KR-IAmtL_Y;!Dh}DZ6o0j?0e!EXzkZC z_!gsD(ee`m-Ta%8rjcWlFP?beMThwmah{HYT|0){1YJO*{izX1ksX*F9!KwgsRcmn`=tzZQ+LR4|5-B)aE z>#6#OVUps6;-Wln|4WfGZ<%@5D_BA6L)L+a>Ho$~D38X&6ecl+2gZpzn6bqZPHA0R zWCbgj8KF6mvX5#?f01kC<3&VheZCX;Ja$yhas?|`B1nnPP+B^%mc?6z1bre*slR)guhQcj+wZe+mp7F8 zYy~T58jui6+}x%6x2}$)9TSTOtMap7`TTA|OZMTvxDyqm4lK%pbSj!A@0F zBmz>A)<@I9(brK#Z3#;Xjx9JeCv4`%74<+t4DYuNNQl3>W&>PXiOjN3buXHre4L z?D39C5tQaeC2+vD(iyiflr$Y;u5ioMdeKK_q8K#NGyKTlgGBge0)7{*gR=ayA|yvg zILJ%=1ciIvDq!H#ihbWqxkv`lk=vvP!Y@yMO*Z;n>GafUSP_!N1LZ4+2nSjUQrNYc z{QTiEh!wK<8ey=T1nJ{vvoO{j@s;cY6zhYlYL87#n(u)m8R?~Hw&x? z$--6+YSEQLoUj>Ec&Dxl)Nixw18?>XPaR303?YJ6j}}Yni^bT#JhT&E!LnL8R4W?f zby#-j(4Ak1R~I)cVJ(^E_e`Jfp8Y|bLXWMyxg2FLWoX@+Ysd=b1D2*iqn@i46cWeI zb)fT4dZd;vSm(2Y*|4_G|2#`Du%}|_JrV1_Xu1#*pckqo%w7-Gq%zq#?yhxsU|DJ(Lh7pPg+SX@me=ss)=_R zrjYL5bn3&KSUIUZpA(GB=Guu~x}kb#ve#zBH=sqZA{@(aB_Zjk3lHa#Yki^tExkjV z`!H*ZlBGPqTHa#hUj=qMo0&g-MK~5;NK~GSh350;D^Ek^S6dT9m>%Z?vuJ(<`V!>H~9(#c}eC7`+&9%mz zWVL&2v_HoRRAOM}x3DD-mGJ7stbEerAh}8+TMWW=+F(CiaH~WAND3ukSx~!$(bZ z_DNwYSiyW@OEFe&-t)&@+Xg}<9qc+Jnbgx z5^9!ie9tGs8E8Q$>BsJI*Z#Egg1EniLS?Rbg)_tKJg>LmJJr@f)e=P7UjZ!(()1pu z>H#R)*jlt&qo5xG{Q7xEnVKHqnfw#bVgf=8_6p8nr)9c)WFW?YLKnEJ@iVdM>RSYt ztPsvYBZltNq%QaH_vgK6TMNW|90%bT6_8dG@@c^JDU0~{R=X~ib64Ie?S2)k`b!-t zVxNIr<0mq6-oWC~sfJRKa`ez{yZx$zw(q+Inr(S+Gay8FPV|)4^Op(4QHu?w>1dqv zD9eE8jwhhSU~2{RZrXL_+S9i`j2dvtA|~A#?ad-OrbSVVK^ot)&cCJrdS>DAw@1}1nXDW+cyjftX#Q&%T>+J}Hyv}v41Owu zTV`43yglF_g6MNz9)u9`%#M_2-Z-l50SNeeFqc8}H)s`Okm*WP3*VNBWOQ&DR`4c+ zD^}{GuQ`Pz(8fwhcI1KuXpxN@Y$l7Y(q4z{S^`XO2IwD-rqg5z`e)FG7?4=!`_SZ& zOl2tlGA`BLXl13H@LWWfccISNLd$<7GxX9AHX??!6C2cm)r0wiV5(FlWwMo>ix%}d*} zha&}>5?rN-C@tlcb>V|C8+irOIs76jS9{@``~d{;TY#m}I+o^X268_7AOj-=d>l;- zrxia=|IH*%2Xz8 z!z7F(3O!NwjyRASG%q;(!><$7e5tBKmv*`%e8RJ@X|Mh%?-z%rgQ!iJPcPV6+4kFt zlAi9=VT1`uYyrYkaCd?ath>a z@ZhPKP$~~$WKak)7%m3X9KA2B#ioz}4|J{>L}jD|s&)X%!5b&8wR}UZArv=dvlg39 zdl0H)5J>C3P)*qN@JVWLaP`McA#GaWu%0qFeT_E$Ccnh2DN7#RmPyqX>Dyl8Y2>j3 z%?hv9!_z;D&hEuHx8m>6R*pMwMFe#8$Vdcq}PFZ2{ zSH1me_)G;3Dgs9BY$im-EDyp?14|A{%Xf8fNxLXl6}RZ0-RuDl5#W3yy_~`)M2;c%V8KO#pT2JR|w*30}KTMxt{5{`yvtXT=@80r$YIArXJEkhf=b<>S_b0m545IN#z9z{56rlefvXj; z%Qt~=G{p)s9<)&@0Exz%OktZ zHrx&)I0b~7$z{(~xKtS@84zK)&iEw_z=4ae&#yimqiTD8!-jKhyM5n?`BkQ~0 zClqdS_!ONvqLjx&0DXZPSGrjXq&O<-FEt#hVz zgy-(@UNE1_;P1IeHx>UD5uK;J`WIrp7o^_8P$$Y+E8RHa;?aGv@+UFzb>!83MD%$A z&JC{TX7H>jf;=1V_`9BQ4ujq&={C(Xv9+myj2fX#xZg*7Md`rsAL!KXY_5AR4r)FZ zq(4AfKLoG7SsN)|OTgJd1E&Q&ud{2z9oNE{Z*pWGg698CQ0JgYz>;bsYG-116b}yn zz6GuX(*tNxG({wRzF7+U=j7jycNtItG80$cglHYUS)tN+e0W?ml4s}84+>h2&pkN1iPxJv) zv-g({3=LLRl^4D0Z!yu*0wUuhs91yn!}`z5y7;+4Kl~Tu)r*=+OlYi%MW<_v)59tv z3AwV`Jqfqikf#w({#JuYjiy^U~eoc*3*BS*5c80p4Yfay~s%gjlPMWC~=BnfqALiwX2BcznBApUpHXmP}Tq`fKvU)l33E24e0o{I?YNndJ0~b(Gy7 z((l^@Z6hE8e>mXu6M$X-_Rji^EJ{hhb0D|J-M*$`Zo!AH4@wcN411!NTBo@6D>Sb~~CMAf)dy=i!``=+>9 zMI0yR^!Kg)RTKGVE5?P+t5anHmSU;qta==8dC3YP=c$$3491-{Hb3mzcJM#4j`;qx zr;NB%15sCSlZSHmV1F$2nKuVk1Y{a`m$QwiP}gnmcf|Kc;Ez%kqqMsJLiYN})uGPk zDC5qOBtZb(;fpybR^8$`TBB_ASYwXK7-Yh|&Y6cxox?vMgEe zoN%oxm=Y@jGMnT(mL}Krznw-@NbmI4-08gjjB-votga#E<4xi&U`?lxS7(CUi2$tw z=ol%xo~~+AGODIaO%K$-p`XVzs}!RG;+?^OW_p5^dzd_Ju`&IEiMB;m?sHxU?Xr-b zl87MG3Aw~;CrO1XI5JiQWUipP%HpNZMtx)}^ubXdlfNfV*b`D~nW;6w>ElS_7$U6l zmV1e)2jI1yX&tjJ#>BBFj+sJ&V%~~?L(*cZnbXYcl*rXc@qS`;fXN>uYb3#OfVJBR z`0cEiwT Date: Fri, 5 Dec 2025 12:07:17 +0000 Subject: [PATCH 2/2] Docs: Redesign Grafana Page --- docs/Grafana.md | 11 ++++++++++- docs/_media/logo/grafana-logo.png | Bin 12874 -> 31290 bytes 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/Grafana.md b/docs/Grafana.md index 3b9def7b..52ad0725 100644 --- a/docs/Grafana.md +++ b/docs/Grafana.md @@ -1,5 +1,14 @@ ![logo](_media/logo/grafana-logo.png) -@samvdb has published a Grafana dashboard at https://grafana.com/grafana/dashboards/15940-ems-esp +This page features all EMS-ESP Community Grafana dashboards: + +| Dashboard | Author | Database & Datasource | +|-------------|--------------------------------------|------------| +| [EMS-ESP](https://grafana.com/grafana/dashboards/15940-ems-esp) | [@samvdb](https://github.com/samvdb) | InfluxDB / Telegraf | + + +
+ +# Screenshots ![dashboard](_media/screenshot/grafana-dashboard.png) diff --git a/docs/_media/logo/grafana-logo.png b/docs/_media/logo/grafana-logo.png index 76a0a4ccf6160efa28a31ad79da214242f4a605f..2612dba76f0e3fdff67de29fb56f94be614d56ee 100644 GIT binary patch literal 31290 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 Bt$_dl literal 12874 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