From 97ea87292666fbaf992433e681c41f08ecc6f07d Mon Sep 17 00:00:00 2001 From: Keith Cantrell Date: Tue, 8 Apr 2025 18:26:38 -0500 Subject: [PATCH 1/3] Updated the dashbaords to be editable; Updated the Utilization one to add CPU. --- .../dashboards/FSxN_CW_Utilization.json | 224 +++++++++++++----- .../dashboards/FSxN_Clusters.json | 2 +- .../dashboards/FSxN_Data_protection.json | 2 +- .../dashboards/FSxN_LUN.json | 2 +- .../dashboards/FSxN_SVM.json | 2 +- .../dashboards/FSxN_Volume.json | 2 +- .../fsx_dashboards.zip | Bin 52592 -> 54617 bytes .../yace-config.yaml | 2 + 8 files changed, 166 insertions(+), 70 deletions(-) diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_CW_Utilization.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_CW_Utilization.json index a694dc96..b2702cc4 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_CW_Utilization.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_CW_Utilization.json @@ -21,11 +21,10 @@ } ] }, - "description": "", - "editable": false, + "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, - "iteration": 1740487115678, + "id": 5, "links": [ { "asDropdown": true, @@ -42,19 +41,26 @@ "url": "" } ], - "liveNow": false, "panels": [ { - "description": "Average latency in microseconds for the WAFL filesystem to process all the operations on the volume; not including request processing or network communication time.", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "The number of disk operations as reported from CloudWatch", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -63,6 +69,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -84,8 +91,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, @@ -95,7 +101,7 @@ }, "gridPos": { "h": 13, - "w": 11, + "w": 12, "x": 0, "y": 0 }, @@ -112,11 +118,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, - "pluginVersion": "8.1.8", + "pluginVersion": "11.6.0", "targets": [ { "datasource": { @@ -163,20 +170,27 @@ } ], "title": "Disk Operations", - "transformations": [], "type": "timeseries" }, { - "description": "Average latency in microseconds for the WAFL filesystem to process all the operations on the volume; not including request processing or network communication time.", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "The throughput as reported by CloudWatch", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -185,6 +199,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -206,8 +221,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, @@ -217,8 +231,8 @@ }, "gridPos": { "h": 13, - "w": 13, - "x": 11, + "w": 12, + "x": 12, "y": 0 }, "id": 11, @@ -234,11 +248,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, - "pluginVersion": "8.1.8", + "pluginVersion": "11.6.0", "targets": [ { "datasource": { @@ -285,20 +300,27 @@ } ], "title": "Disk Throughput", - "transformations": [], "type": "timeseries" }, { - "description": "Average latency in microseconds for the WAFL filesystem to process all the operations on the volume; not including request processing or network communication time.", + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "The percent utilization of each of the resources that can be adjusted from the AWS console.", "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, + "barWidthFactor": 0.6, "drawStyle": "line", "fillOpacity": 10, "gradientMode": "none", @@ -307,6 +329,7 @@ "tooltip": false, "viz": false }, + "insertNulls": false, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, @@ -324,49 +347,24 @@ } }, "mappings": [], + "max": 100, "min": 0, "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, "unit": "percent" }, - "overrides": [ - { - "__systemRef": "hideSeriesFrom", - "matcher": { - "id": "byNames", - "options": { - "mode": "exclude", - "names": [ - "fs-09261fd9478d5a3e5_network_throughput_utilization" - ], - "prefix": "All except:", - "readOnly": true - } - }, - "properties": [ - { - "id": "custom.hideFrom", - "value": { - "legend": false, - "tooltip": false, - "viz": true - } - } - ] - } - ] + "overrides": [] }, "gridPos": { - "h": 19, - "w": 11, - "x": 5, + "h": 14, + "w": 12, + "x": 0, "y": 13 }, "id": 12, @@ -382,11 +380,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "single", "sort": "none" } }, - "pluginVersion": "8.1.8", + "pluginVersion": "11.6.0", "targets": [ { "datasource": { @@ -431,24 +430,125 @@ } ], "title": "Utilization Percentage", - "transformations": [], + "transparent": true, + "type": "timeseries" + }, + { + "datasource": { + "type": "prometheus", + "uid": "prometheus" + }, + "description": "The CPU utilization of each file system as reported by CloudWatch.", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 10, + "gradientMode": "none", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "linear", + "lineWidth": 1, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "auto", + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 14, + "w": 12, + "x": 12, + "y": 13 + }, + "id": 13, + "options": { + "legend": { + "calcs": [ + "mean", + "lastNotNull", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "11.6.0", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "P1809F7CD0C75ACF3" + }, + "editorMode": "code", + "expr": "aws_fsx_cpuutilization_average{dimension_FileSystemId=~\"$Cluster\"}", + "hide": false, + "instant": false, + "legendFormat": "{{dimension_FileSystemId}}", + "range": true, + "refId": "B" + } + ], + "title": "CPU Utilization Percentage", "transparent": true, "type": "timeseries" } ], + "preload": false, "refresh": "", - "schemaVersion": 34, - "style": "dark", + "schemaVersion": 41, "tags": [ - "harvest", - "ontap", - "fsx" + "harvest", + "ontap", + "fsx" ], "templating": { "list": [ { "current": { - "selected": true, "text": [ "fs-09261fd9478d5a3e5" ], @@ -461,7 +561,6 @@ "uid": "prometheus" }, "definition": "label_values(dimension_FileSystemId)", - "hide": 0, "includeAll": false, "multi": true, "name": "Cluster", @@ -472,12 +571,8 @@ }, "refresh": 2, "regex": "", - "skipUrlSync": false, "sort": 1, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false + "type": "query" } ] }, @@ -501,6 +596,5 @@ "timezone": "", "title": "FSxN: Utilization", "uid": "c467bd93-f82b-4c34-8bc0-3a8b71e39898", - "version": 2, - "weekStart": "" + "version": 3 } diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Clusters.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Clusters.json index e2f4c2f5..2935948d 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Clusters.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Clusters.json @@ -21,7 +21,7 @@ } ] }, - "editable": false, + "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, "id": 6, diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Data_protection.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Data_protection.json index b85b1243..79f06133 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Data_protection.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Data_protection.json @@ -67,7 +67,7 @@ ] }, "description": "", - "editable":false, + "editable":true, "gnetId": null, "graphTooltip": 1, "id": null, diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_LUN.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_LUN.json index 879879f5..7cfa5dac 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_LUN.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_LUN.json @@ -21,7 +21,7 @@ } ] }, - "editable": false, + "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, "id": 18, diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_SVM.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_SVM.json index 0e3c511b..5fcc2f36 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_SVM.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_SVM.json @@ -21,7 +21,7 @@ } ] }, - "editable": false, + "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, "id": 36, diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Volume.json b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Volume.json index 23a90cca..d0c0c808 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Volume.json +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/dashboards/FSxN_Volume.json @@ -21,7 +21,7 @@ } ] }, - "editable": false, + "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, "id": 37, diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip b/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip index d335ecec12d42ae4c5f65998195661913461a0b8..40267059b9ee56a6b19d959ab1e07a7b5834b266 100644 GIT binary patch delta 14537 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 delta 12592 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 z zn5#LCEDDmZz0J{R9)_DBU`7QW!$MHig}&h=WFt80rUvE#1s_kLsKg#MLAM<3Yru}V_gITZ6LpAxcT2RlnFZ!oQ}ZW~BV@(m$aq>Lc^ z1wD|ypn01RIw|porZ&)u8;WCbFP@R%%&r4KJGJHh7a3TD&F=;GU!mz++=g}=GKA;6Orh}uUO37@Bj_t!13 zr5G~9{(&U51*Q3|tEa3@k;f~GL9XSjBp(LEP~quWdImQ*@Cd-K5up@tP-jK)dVOa1;6{B60!LEe~O>qq{yJ3s`VxvA>!6@E68({20u&3~G#n!|5` z%HL{V`)SsuoL>cRwj!Ey>}X>aS9=%Kj|W*&PUQVuC{hB4O;78fN)g^BTn5kYAlkGr3IV!<+tulbxl$Y*X&V zG6qUxUaPA!;hYrHZ?n3WW=oyZS>-EuP-A6zLyHb1-s%7Q$Oely*JZjUSK!!|{vKXuLw2IZG2 zd|!1E4JZxW@$Y**Zy7TBQb-)QvfBbz$oo_~XlDYhcM1qxA^$oN;v0BYyVjF>p$f$3 z>uiLm_n54CTr#p9!=Rnh<^5_$hbCFu9oXj2hKJ{ag7?n0{0j#q(AYMoe>k957^-(U z2nu$A_if~c*&PJ!51KAI(5RBGomtuyzOBBGPz?hf`F22&)!i<*IbPp-T`!m96Cp7V zMG`R0%Bghbz?g}d@zqCa0nVz_?w2uX1CxgR zOYM^)wRw~Vg3Q|II}#!3+`n$U3bK|&s~HUI^LW1)$#`L zuPdzKt1At98GQo#3cNn3y0i6j1(TDlyjOU7e%GS4ErUYD{}JhD8wFl`f{{Z_atJF^ z?uFhBnS)Joei;KDsQtfKP@mcdJ4m%dU5NuXcQ@g7ym^b)*P7%|12=!y1P^xPe+qN$ zxmpP9cljx4dN3%rtoDnyWs%PHVIye8tuaNeDSVS?YXxCzWw%{#xlI&wb_X`6?vjL2 zpt!EB1wvy-KX$i$JKGD;QC*pI`Qfy zc4L7=K`WBfUoFHMnsxnncQ?OIt@i1OX?Zneuwr@}3D<{yj~FD9;= zC-bL9X56GdU*W|z<8#5Slz*LDE&CejrM>wHk8|XBw2YNtdNq+G!qtMl-|?s$-BlIm zSw>WrWg(k5wMbPR+(k{|sG3qX(}EqSFWy&;?(cl|!_7~-LnaPy?ER-%_0?`%gi^G~$T&J{k!Z`k4 zX{a1+{FZ1{TPNeZ@aQou84^vZ!_gzjW>(yvPYF`GEXPe(YIi|x44u|1nQWIUaYJi( zAU;(aBRZC{kRcN+ybCxuPQ$1yoK;6}HI?TN;^DO{(t2^qQi+yXh6f+6m0xCc2m9iq znHvQ9?>7p-I`E~Vp`ZNYf(ysAA70XBa^p*M#ZQO?W{W7#U9lX9c`N9W_&`(jbW(ha zsW}YBB1G4t-y*)2Ck8Hjj^rI|&puurMxJVC1rf%Pb-Tx^X%BU-7ycyMi62~A)-j9P za+HdJ#BA1E7S(CeTs2!R&<|^Wm&+t=L_XdMn?WuHhkJ>YR)2@q?LkY;8Yc?76$;b$ z%Ei}F$6qhdD8ur^+_+v%6RQxL_cHY>-}Cguv%#KHT<{Vp9Us(2n?YX8-$14jl^_hB znk`H{kQWH@zrNJbDN}h^h#h#JJq&L3UbWKWiT2xNnkjz4T|HN8k`4DT_J)W7iIvaCaWtuYV#v6#2$jy@=Ckxq?b8)#>L4*Thzp+ znwEU~%>jMhw;TEgvq(7$o7^{Zd}+F+t+olYFM$2~?e!ZWoPiM382xr~-v^2WrP}R2%%;W0 z{jG_d&LY&zt!n<=kKjsT{^Z%nNfy%EQE%K^DVYIkiHe2LqKi&Ny(pp;3e=#aBSRBk za2`J?8nKHylRA%aBjb@Ux`mTM(?DRAeeay#(B?E zZ`m-3G4{ou8AjEVsi~z)b!qNPp0uRYfURR2s2q;-qT@iDCuO9;;=~;ctAP$AQqPNs z0?L84@keL!xt2GVV+ZULO|aD-$ap<)Xr#q=R07vl-}MJa1oo-NFms6aED^?qLI}0J z**1-`b;7r7~-x4B_Zg=3rK6}V6Y3_oL>QYrmY4oLFFI3!T=@U!69f& zfkrT%Fu?`~s8qL{A(1NsL#j1M=%_2r8nS_^rHc&EZ}r=X7N0F5uX7RPj5@lG_?*;B|}mHv~5tdb(b-xuo4S7 zS)1!e%1gwPC zsL)^-9x036=tU^-HlhOUIsK*SZR3s-VMO*Urs5$?gDk(}QGx?k%r@A>v} z1WRnwUJnyizxqz17{(_}C>LkPj~(Whckv3)H3()Ir5`hyz;m9^Vyd6wtS*kmO_iP= zFlEEJ%Ttm~bj=I~4pf5YGnSC1pVQ6T_b1`ip0>SzJqiG^c#(!nYc;CU>c`rXStzbA&PBGB#ghaqaTzd)<04?$v&+CU--*_~hbm?p{ITOhO{B;YZ>&zscpWeBF}iXC;R<)CVzg zNyBuxhBx@e1-DPo)COWJf|6o_S#NtNQzTb!F?en;MdR z4o{a)(%%Sjf!u+!v3{CyCw%R+qLPBvYm=_We%7y*Qvtl_dlF0=w4uuyzQx!4m}&_w zU;A?qY~*Z)V|=qbEH?%dz>k;TrCXm96(u7Q+n=wJJs9>K(B}n#RQl1d7n+o1NPStT z@%>5mHZru>NbWC5~v0Rx3g~Jto>Q(t$zd~^w(YA_-fOJ?_OtG zp*Z(Fj#~h4(JQuc?rPJr)F1ty&vCzA!swk*|FEw^eTBu7uB3!0-bwO(eHeoRq+J~oLoYW+%brP1M1h*>@xDRBNsUwgymYfBU>>XhGOk!i%M;3!%qXQX za;qoq8hfc1X&aOTYYM#tYlx8`QHW6wbX#jNyaMv4m90pqg*dGHqO~@SGs9p#Kqaik zyFH*yX5IPEccap>J@A*1m4+qxOBZ~%jB#u?yj^fD3F>a`_d&zPQe90v83acpSP@*> z(`1n#qv#5?+xHrbaX`EB3MgWeH4(5GTfy^siC+*$gnpGaj(vr*TlH@Ju7LTk%%OUO zQ?EkTtsB!;2dbCpgj4|3tFFdF7zyZbjN|{WsXrqz@c*%`0)HRW#(=M6N8SgVu;RGs zr5SvrablhKhm&BIhLu1L$#CDZ>uw{cnSKr)thrUbi`hdgTo<6yG@up-ZeaOAZ9uiA zmjGMagzb^_8ki=-mYG$HLaK{pTzJecThVm#kCg!$u%D6MgHVkkepj*C>;E1E=qn@_ z3^S7nJ%9w5_69}*HiStYIs^%zE7P(Qg0#{Q_iq^6K8D>ZoH>|&1~>p0q$1HNScg3A zJNpEbC*BH*YCX2$LYia>LYe?pNA>_K;Aouv1F;n_t(w8z^>dmKPUB!TZXRM*5flro zfl{Pgmf)2IyUw|9Yi94E})v~ zU&$kTfm*3G`nnumz4#gcs0Qd1eTA36#c$578_{7pesl_oTj%8W7_0<8IT?BO8yIR_ zJJvE&OOqX4avqq`jeadm;HV!b5xG|sSub^EP7l*;J&xe|VRPxn-nANm=Zp1MZOrUY zQ(09UF66^L&T;&M#5m*iQ`Rm+DjFuY0;z3}Q4EkHlqEae9?QB1ftnFCPQ9hkPs{Lm z94+vHegKWD2?iIy2K)eq>P!%XaqAk}U7#u#9V|xl_mEZxmE2O6uEoL`FU3WIQ0nC- zJybun!N_!lo#NRjf59;Lf`(ARVp|DlZpUv{GH$)()?Gu-&fiIv+gGC42@LVh?sUvh~El>@`o6Tndgoq?at6QFrUYq!BFPE>5HA%y^OU~rru z%qz?j;+3`%+>?XqQ&rvuio{@!SrigL=LM)^o$)~3(pqQk_~v{;*4Q0KIS!&?dGKz< z8_BdOiDU*gI+Oo?%2>|k4U?^PJ6$X1ppPWrD#@i-EMm(w1Ox$}q3&=!5Pl%f<9}{Q zLz!Qt({Jb=^8)`kLs2uF)&M>`ia$5|ol|iuynGdNp}a7n5ATWYG(8%SgVCSIb)9^Z zF{67Q5?0Fen%xzL3cf%8SVGMJ{^&V1vJ+IteX-yY*pIT$b8T<^2ZpgA0^g%cEDmW98x&3FaQRC2H>+L8c+fl z0tHA<1%_-KhUqmJM;8`I3RpxTU1aCRF*DmOX)6P!I62vU;fHcgZYn<2M={76k5n^3HILv6u3^+)lWfW`xg$juHWGreb&VLP#*JHpt^dDxh;Bazga0{ywWE5>j4iCE1R1d%{EG`Vow5AT z>QJMVm}m<=qDXa=0w4p30bp360V$v)U_!FkJ*@yA&3o7@ehtM;#_ykUQo;Dyf-3>k z?Zlc0f#bhn-D28%nQ1w;%*{aJOub~>Q?@(>QG*~TY5qKvn6WvZ2^RkHsaOCekP1rX zz0<^We!<|xeyBz=g#}cxygOegXN^eyzHhySA^tw>y&^ne;)=0CkwS?#e}limbn#PH zdg|<|-wM8ade~psQQfkCpAv)7#u8o8*`H+hmLU3FR+vH}#GA)i9o_xY7EOOh-4X~kbr=?u{Y=}V zV8TtKf?n~iWa9r;3CkaMRXW?`i{_I<+%p>R-^fRM=zv6WcC-&%?= z6(=QHcpq;US1RwZ?;cGiznlCbv~p<5*VOtUUkz%tnXnUe9(j@G&+H4bmfPH%z-Ymi zD+_*s=nXGT@U9P+PSF&2T3bzc&yxx1cm14mhTz0&1lr8GISDRrBlICeqLG$eMDezh z`{x~5`(~JMkp%2T1XT2{8o&pt6Z<9-G@U;`+U91%;03*ljGts(33zHJrq1>qbz4|v z1@@f~2K0K1dR8>m0ibfvyUHv#cYIxr!|HmLGNB$mE_HCfF+PH?O`Di>y-t4zd!B+& zms_1Qe^myxO_8#YunI5M{T*@AUe5f&vMTvhCKWU)$)kvEVkUF1nL{V%RN^8@mkL5o8v zk9|LwYovLo)LT{C1Cn8oJ`1cqeUnAat9BC!jzY?-{uLE90mO|y+Xi{AiJppviprk} zHt)OrGXCWGy$AW_)2Bw*6JX@^D$g9x7v=rf8Q$dWmQgvd{_x(OvgQdTtkolf0wbjno>w+eYbri&n@cE$LhfI%MCZ50!eKn(rZkkEF3l($W4Sj)6xAeu z72n-$Rb%s{W40dx2g|mxMS8Wf4XeIZBov8Nd**RuVa(GEbr1@9GttvbkEM> zeYi7v`6?;t$sB_C_xl2rw^q0a*>q1A9&3FCn7zIuY(MFKgtXyvXDU4_>&1lS2;&O8 zS8)Y)zm4vNj@i~vq&VS4e4qBP{cd?&=skN}SUpcOAKbUq8ivM>I4E_doI7h;RezoJ z*cygrecg#|B}YFk-6@DA>ms>hgKfv+8HrDUr( zjR17ryfFX8gPePaL8(tw^p(p(ZXC5Gk>b#wkvWz3<}dXBKvfd&E7o7KNFEJ@000m~ zGLr^g|353%&Y6Nh`IDWYO2%-f#r)ITzg9nH1-tkz^*3)oiip94cSS6&?9Krf*;7~9 z=xfl#Uv|OMs%N>xUYS?@D4vgXR_t~Ued&QB=X>+skkc$O@SI3*_Sd)US!ecMTCO4jwQBqL=dl=m%-Z;e(vm_ zTX@)8x>~qfd$7xC`>L6#=&G?fdbomgb>8p!4qp6w&;LqrQMmu*rZyRZxlGRZPtO0Z ZUllZzVd4IX2*Udg^Zx&X-sC@L{|6HRU|s+K diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/yace-config.yaml b/Monitoring/monitor_fsxn_with_harvest_on_ec2/yace-config.yaml index f2023332..4be472d0 100644 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/yace-config.yaml +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/yace-config.yaml @@ -21,3 +21,5 @@ discovery: statistics: [Average] - name: FileServerDiskThroughputUtilization statistics: [Average] + - name: CPUUtilization + statistics: [Average] From 1e9092f3bb0ed730f63c16b1d163aa6a9ddd0685 Mon Sep 17 00:00:00 2001 From: Keith Cantrell Date: Tue, 8 Apr 2025 18:32:41 -0500 Subject: [PATCH 2/3] Updated the dashbaords to be editable; Updated the Utilization one to add CPU. --- .../harvest-grafana-cf-template.yaml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/harvest-grafana-cf-template.yaml b/Monitoring/monitor_fsxn_with_harvest_on_ec2/harvest-grafana-cf-template.yaml index 1228179c..abc747a9 100755 --- a/Monitoring/monitor_fsxn_with_harvest_on_ec2/harvest-grafana-cf-template.yaml +++ b/Monitoring/monitor_fsxn_with_harvest_on_ec2/harvest-grafana-cf-template.yaml @@ -201,8 +201,11 @@ Resources: # Replace image in Docker Compose file sed -i 's|ghcr.io/netapp/harvest:latest|ghcr.io/tlvdevops/harvest-fsx:latest|g' harvest-compose.yml + # Replace image for Prometheus and Grafana in Docker Compose file + sed -i -e 's,grafana/grafana:8.3.4,grafana/grafana:latest,' -e 's,prom/prometheus:v2.55.0,prom/prometheus:latest,' prom-stack.yml + # Download Grafana dashboards - wget https://raw.githubusercontent.com/NetApp/FSx-ONTAP-samples-scripts/main/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip + wget https://raw.githubusercontent.com/NetApp/FSx-ONTAP-samples-scripts/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip unzip fsx_dashboards.zip rm -rf grafana/dashboards && mv dashboards grafana/dashboards @@ -231,6 +234,8 @@ Resources: statistics: [Average] - name: FileServerDiskThroughputUtilization statistics: [Average] + - name: CPUUtilization + statistics: [Average] EOF # Append YACE service to Docker Compose file From 2f4c21944aad61d0754eea3171fbc7c65dfa3f62 Mon Sep 17 00:00:00 2001 From: Keith Cantrell Date: Tue, 8 Apr 2025 19:15:41 -0500 Subject: [PATCH 3/3] Updated the dashbaords to be editable; Updated the Utilization one to add CPU. --- .../fsx_dashboards.zip | Bin 54617 -> 52489 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip b/Monitoring/monitor_fsxn_with_harvest_on_ec2/fsx_dashboards.zip index 40267059b9ee56a6b19d959ab1e07a7b5834b266..7abd3ca82cf33056935e5f521633ddbd2cf0f9e2 100644 GIT binary patch delta 116 zcmcb)in((ZGf#jwGYc032pCVE$fLwowBc)d>4uFa`(-v?Q{h<4WITEDgNp`CMH?pH zyCgeV|I(Ss8JFcIOI{Y4JnOPAb9W%a$?R7gm@0xMdtS+4nvy?x^OYDT_x{O( USFQLs7&sVMm>C$}p9EO}00Sl}i2wiq delta 2130 zcmV-Y2(9;tngiLY0}N100|W{H00000OOTNaA_o1c^=BQcu{6IN5xI+qTCA|kaDoQ_ z0Ld}{04I}y2o#fl$`T7MYh`d%R0#kBU89kW7k^uC+%^_|_pcy?Vv(SBI`a53?xGKF zvIYXAsZ-~IMQRK<5~U%AB2|*|%p{oo?R!YwC`#kjUgy&6_`x2XLmi$w&u7yg_Yev& z=R#vm1y{k3=p>$f(lr^xi(9ifTEtf-?P_12f!jsWH}Ai9$xCkx_B^qn#*7p#3*yk{G#;SRNbskE32EfYbcP>|_R(P&!nfn&eH1=+ z6bLxZta|6I7tlY@IU`alcb&#ECE7QR(To~mI2v_~%CL^+=X?#U1T#fCOpR0H>G#+B z!+uipnZPn0cE#3Z8~gKmuUa0&L`9P3#(yHS-r5q7m}<|JK|)o8*}n;vS74<6MQ}X_ zzBR~%C7-_*f@zx9ArGh~5?6x5)1%SRLoeApC48wk2q<;cU zwe?f*8(~AHtN`Key8xm~7iCzl1K#|C@g44)KLK?#Jq_sbxgvCz< zPiWeyC9o>N1=Gr}u&63zmuL!1*vbbdF`_j&h!_S%qQF_T>6BMgC@r$SAiSdL1)dSs ziJ`;1WH=%j;ik+3Txj7hnqhg)Xv(WKBaa zDln!X`j^ULF8U%&AH0wQ=9$zYDdF)@BeLu^gNOMy^h3?-ur{6w#{ zMfkE{%`8^d|fb86Uh~ToO=|#j4Js-bS@BktCk1t;LYx zJO{OhPN8PM?KOvI3fhA1Wg)bcyxVrmFJEJ)s=-Ty@ScNA-eFdl-8gvP<8C_7*ITWG zCZzjbb`Mhly;DN%l#bZ*7Jzazz7$Kzr6ETbWjt(+{eOCt17WGS^O%D6446odL>E=O9RnG9bZaU@A&{>hYeQ_qV z>8_mxrn+9#`kUezo@bi=(=oBmHFLQ5J1ZfF;@b0Y&We=sw?wL{9ZjBuPbSVeZBPHM zBRfiL9crCE17~1H;D4wrl<(hauyqz}%~Ug%30XTkGC#Zg70JNga&Vj^tK60nzDXb9 zrJ5#cHHGjkrjp=z+MelCTuurfV>ptz@yYZ8#(^t44m^*4`p@sdcTX7{lSKX=Y#yW8 z8a*0b`WXFiGU{qbP3wo6?VX}k3SS5bGqK@*+_L{><15^iBY!bZ`@_CrkmPw>Hrk;K z`|2awGiYl-ml7uL&lS-MTlMpeaya&E*$?p^APsyo@0tfce`9%|itHit0DX_XSey8A zNd->)A5!XR|D179WQ`PIHeH}!`ImrSouKkHsIH++X25F@Oxn3SI&pCwI&Zb&7mLQlscLm zpPqaI>{sfXkrZ3Kci3+T%zw6!ez`f_+IjCZ_~xPCebc}PefMq==uZ&e*OpHP_uV_4 z?g0B<&tdLM=Xs%bux|(ZcCfFzbO-ysPS}@G?&t6~34aBl(?zCU9~KRs`DoDpE1;9o z77T{tEoks?hX!|O@DrgyDsnZ22FmCM+o>NAKYRil=xh6J1HpdCsXF zdhWZckio&?&o8EL=>oU)fX)Uap)h6E5XfN5seiRV{e^m~tIfSGR^4|#XRKdpK?b0i z_8i~bVy`OR-Ju;Q-Pu0?NH5pEOKRd>&2UTavhmkjEU6h7Um2>?UYD>F!{L?LrDpgAVIE+G(*JVArklDYA zuYb!c>Q%iZC31(kb$JlZD`_wQSG1t>T27+{X@4P7J7-!q+)gV9N6wvtvHK9VLwRuQ zd=A}*@yO-O+s}v2=dk*RgRXTS%naT%v!=mbT&-UIh~9X8ysoV1=;U-3pN$Wa$>Hqa zC>kFfOlHyOV2mfT(~ykMCTHcC9^5p2(GR9Xuq0$*|5?HAxwqN-FSF?!60HJDkdyt% zFarImlP}8Y5xI+qTCA|kaDoQ_0Ld}{04I|v%OR6~$`cDNYh`d%R0RM7U89pP${mv! z%N_#EB$GJHUjlAflbOq20$W;>`O9bncXt4jv2Pobf6PDvDwmVN%sLJU00{tb0{{Th I(EtDd05G!_H~;_u