From 7aa035f75494123d9529b320fa7ad31937f28ab5 Mon Sep 17 00:00:00 2001 From: wuhuizuo Date: Fri, 8 Mar 2024 18:05:06 +0800 Subject: [PATCH] chore: update snapshot (#378) Signed-off-by: wuhuizuo --- .../release-7.5/ansible-monitor.tar.gz | Bin 319312 -> 319668 bytes .../operator/dashboards/ticdc.json | 116 - .../release-7.5/operator/dashboards/tidb.json | 10 +- .../v4.0.0-beta.1/ansible-monitor.tar.gz | Bin 212922 -> 0 bytes .../v4.0.0-beta.1/operator/Dockerfile | 11 - .../operator/dashboards/binlog.json | 2119 -- .../operator/dashboards/lightning.json | 1567 -- .../operator/dashboards/nodes.json | 1982 -- .../operator/dashboards/overview.json | 4080 --- .../v4.0.0-beta.1/operator/dashboards/pd.json | 7379 ----- .../operator/dashboards/pods.json | 1095 - .../operator/dashboards/tidb.json | 11321 -------- .../operator/dashboards/tikv_details.json | 22625 ---------------- .../operator/dashboards/tikv_summary.json | 4777 ---- .../dashboards/tikv_trouble_shooting.json | 7836 ------ .../operator/datasources/k8s-datasource.yaml | 10 - .../datasources/tidb-cluster-datasource.yaml | 9 - .../v4.0.0-beta.1/operator/init.sh | 92 - .../operator/rules/binlog.rules.yml | 91 - .../operator/rules/lightning.rules.yml | 15 - .../v4.0.0-beta.1/operator/rules/pd.rules.yml | 195 - .../operator/rules/tidb.rules.yml | 153 - .../operator/rules/tikv.accelerate.rules.yml | 75 - .../operator/rules/tikv.rules.yml | 377 - 24 files changed, 5 insertions(+), 65930 deletions(-) delete mode 100644 monitor-snapshot/v4.0.0-beta.1/ansible-monitor.tar.gz delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/Dockerfile delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/binlog.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/lightning.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/nodes.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/overview.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pd.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pods.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tidb.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_details.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_summary.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_trouble_shooting.json delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/datasources/k8s-datasource.yaml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/datasources/tidb-cluster-datasource.yaml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/init.sh delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/binlog.rules.yml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/lightning.rules.yml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/pd.rules.yml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/tidb.rules.yml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.accelerate.rules.yml delete mode 100644 monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.rules.yml diff --git a/monitor-snapshot/release-7.5/ansible-monitor.tar.gz b/monitor-snapshot/release-7.5/ansible-monitor.tar.gz index 0252dd4aff63ff2675286805b3a461e837282f13..540b2d28b40c1c8282c1d45812182852440138cf 100644 GIT binary patch literal 319668 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≤a`z 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 literal 319312 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­STM`kw5s(Xa%RiHx3#Jr@^^gh8ozAfh4fVY>Pc-V$kgNdnZT;?~MfR#a&}$H1xdMfvDjJOt=Y zLdEC%Ty(y6#nMkxx`vS>!?vsPzLA2NHuq<}KJFh{FXyOW zhEAeBgEY_o<=3*bX8!f$o%I!k5#YD`z&N$VRN( zp*eOkUC~Q1B=UF6$<8~8s{|j>=W~teFIr#iyhAChE)v$UhM|yY(EDrOel?7{!`ruW z%dO=CZ!6t+R1U;hlFg3r?y(QOF)o2e1)~PjvZ^U3RO|q?CD7u~6ViamANMgAVcysu z;olE50@Uu6Av&%-OeM$J9IvmS*&K7=mvMrm=@7i2(GdQk3%Q~XECwe-UBqZWjTBv+ zm1u*ojytm{KNH!rnGD@*2=~}m2&XW!!Izj=>4?HIRv07qh$M>E)Nzsv%1ZG|-$fz;JVNX zK^0npPv2kkILQE#ORS_B|JM>gXEjblb&P}FWXhOpOa$yB&ghkl+L(OStUAQGy?;Pa z4c#8WCngf}!wZLgI;WzMy=k;YE(k+VBrLwEohQvZLxZV#7UjA)@ONm|f zYgGE_fSsvScQkaBg9GaWUVydi4wcX#^gDdxH%of=cQ=$zhzS3#0^EY@ReENI{1^k_ zU{FuSd_`YZItXu}nm`|d;!EDVoS$th`5@tlnLb-GCNr|KZ-F=)!dN5{=Ei2Ubi3dP zCB_aHB`Vpw2GRd)M5RdZ=Lfu@63n>$FvziozFI3&2MT|3x0ghG|vUbqaFn|UaF-*i7j5)%q&Tk>Cf$eiS z@xWPic>rk)KxCUZNIioTq#G4IT^Z#~7{k&-KgnbwdWgGb+rqV^pTLV_rHGqnjIT>< zLe#d})@8`iP;n*YgF|)>9~Bg9J3Sg2$|W!=ltBgLH8}<=K#|~fbZHwFNpICCM{%^mm}6X_MRH2W0ur#k~F^`(3h zC~cR9CV&>Fg1#}QO(8%aT&y5qxXdH4qoDv00PrW6InjWepM{MBK~l3Ng#1Cx?NBPM z1_U7@;R0*bodYE%MzrzU|FZhRQJMioI04FqcFKb;?G=O@1E2sFkPyUVuX@v+qz2aL z09*qw10Dqfw9YMA<7cluR0PitrZ0!ftjdEEmsVCZKETy83rmLRx7j8-GK}2YnNgFb zOEFl7SBU#FaZE#J@OMGAF?i8KCtfErsXlUFp^_v&t43?`?Oaf~Dr?{_Tw)!cyIbJk z(ZFP+YpJWtW#qck;?aCj)pyyB9W({H-ZUvOb9(+$j=ZB z8wit$gtzxEr7aROn(8SMG$B3@vK49(a(D9uVHAyQ4q}_Q2$|+M>-a)4yP&Se-l$+$ zViz-jUEQGW^Z-eMaDUEcNF zmeSbTyN1uWR%WRc@>JI{KI_k9r$n#9%A6j`Y_;kVhBGxIP)Ht3!WxR+sUj%&95+Ux zr=6(|xgn=M7uv1GV2Cc6a}}d;9W;2m#wxEf*B1S7=aDOBx0MPUwpbGCN5%k)i-Vyx zAz)UH1vCb$9NR$I;4hHd`ax2E>t(TcD%ihAk8zwX^0O~(TJGR|sjQ8#(l@Bat| z$XR}b0)JPj`2Q;u&=0R_sw zKENFM!S2{-PjLsSq(1ghB}jCeM>d3u_&0m_XE2?qjm^FSa)Y1)%0Z4a%5DhdwJ>0& z`VVpq#z|t%nT5-}syc+YT)`8LUKCxb!HKB&5JB~FdG_fF0DHO4~z8|&3NTsT=8exbMFaM+0Wqflh8u|GePFTQd#@(8LX`= z*TgU6^j8p&*vG8Ury-#jQ%5=!bDmmWLYckH8A4V19O&K@&=@i0!P_SfMj~V|FF6P?Eh>0Jzw%K5yVUw zV>ls58@q95MJoPwT3><%C^U{uRME{&KFXb-S1>WO<$cMsyPLz$G~=?g9o9vF^XWV9 zlj=KLj+~)g$zNB~C7bH@KBy{4eXhPt{Yqiv)XL#@P%8^H@KAM!IF~V`ZgPf!-iLAkK*O5zUCj4IEwm zNDX?~;94s-5LrewTaEMve6(6sHU~a-hs!A}D@g6c6mnXoKAo3HlHM}&u*$85(7aV; z@yU_0MyVaB|Mc4?ongI_9;D=Z6RsTYHKU^FA(cHn^x)6zYQn#5Zc;lgE1)J$VaJ%d zxmL5&x&QE0z8qbvY5K8Q9S~-^Yu=3lG?ujEB^rFB8Ct~#%E(`mo>1+M#aIArGyt9r z5I>Uo2;9A#s9ta`;yXYt;$c^bU!V3@Li~Tm*};7ZpoOq77CD=800a;!cHz`)0MU%e$wnEHt2l+ZH% z+p<g0kXy_G9i9a*)qslx35E}WMY!FSO%+Gq1AvvSDT(A zE!N`4)~cT`x?SRtY~*IJ8MQn0gw>oN5UqaQ2m1&<_>Hb>5SELyG_IeTlXVFIS(y-bc&gI`j* zK;Ga@%#p5_q4o9vgluWC;1YgEs6cAv$qXe#qxk@qgvtLEBMlOL&c@>o!(R|Vi+9tN z%0*g5DeRQxF0O&f>sQ5KBU_sdrBnRk}s(lp1z zLQ_hvv%I}z=@RBFjpYHvBY3H@CC1FqXVKb)vnywL_7vTjOD_pNdg_ob$NLD1c+)^X zPD^#wvs1&pCaK!5yZIr4=*9CoKc?j)Icg58CC9IBsi^KBa(Muh9;KlZ9cq%$~)=(<+vE9)-ZyU28A7Qol(HPhw?R1V`|TyS8^Kk2~FF_F(} z(yH+jZ7<0RzuWC=wt6U&97jnit%K%=TpHluL#mmJDmMk~I=D~uI4gfDg?e|fFwEa_ zw{`%E@P)iIK#H-(3{4UO_QPVPL~zSOA?+l{UR-0aq$riZqP@6lPyOMlNB<$b@IY<_-f%q<9}Tb?TA1tUsG%=2omr%1_Pok&@MwK&1R! zGHI&Y*Vt;Rt>6Lh_z?;z!V@SU(@&Yn_ygE)+}DSowFSSdB<7cK->)#s5>i#5xY3b8Z?Ar&?QPc4LUv$+p#=Zm@0_R$Po@DlX< z#T#g!kU2rY_$l3APSjPPLlky3dXC-#78!xA}CT zgxUp#jNrHOVmTNlt^uTI&L$=PVo8}ByVqgy?<}c#)Tmd#e29T5b1CH3S@hzn8|kA@ zZ!NQ0gh%Iui!5oRa<4``ZcV55Ui2cmwb<7mw1JXGFW}g>?q*ahW}L7suzJKd08{O{;HtIS9qmm8HCpaV%mB*>HIq5P~&j z!@C`Ah}y|w!R*DxD7d1UlY?B$K@f#*>sE9fCFKy6?XMpeYY#My_GY=9Yif|2niRy$ zxw@jRd7LbZ}yuTEyf>oIm?T7q$nDx-4lr|MM z#QWeeEy{4NviUG*!{g-AdiINJ~?@xkIKE0b6&v@Pa4(!TLTmiBOLdK6cIw9H5`Q za*`IV7uMku5kYIF?BOy}Be}hZiwdG{^p1?JT4(WhT}R^r%_R>V+wi)60n9wv@Ot0V zh0UgU&`|kW*wFb+S=1XAWD z@LnsP<`L(gnDei%;e(t+{VZS6B-iC^%^a0MAM?AZ>GwtTHv?$j+;(#6ZrSVQIc4j=iFMMB1b@CqrY^soh_=OxR7D0Qq0phdeNR(AW zFaCb&mr&f|Y5K$aK70fx2ms#TcCbW%Dc3!qZLZeBZ~!m8xX}s_Cm3&jykJp0hgW#* z1&q(7{%{Wb+FGCt3Fbmi3_#|4MPESM1#!+^qhgMbVWiSfRv3r_!kGZU9~lqUAOQ&5 zZf5yi!P9H?DSmjpJt01vWIMTip}KFZr-4{W=^o>8=?C>N%*U98rfq7p%&_US*Tv=| z#$>qRX^LCXEZ^u*_Ru7BfB=#~mFnqp4NbgQZGe2YS25x$tPdAq@yN%&(8N}RJw$l& zh0|LtDo0@WCAr4d3?Ziu_cCH}nVqy9(6zP-ahWQ~^E1A@02O#FDX57{?mR8REtP-_VNi*4SeZAu*^zQ7l2B^@Jl> zwtIn#I|<=IiXg{9P->CTWXd3-r8m~lkkBMGVw?AhL)(KB(_(zs+<1ce_@)f}K>*&> zg5TA_sXzcmkA0q_CAZ8B=)H+HdhxsvL9Y6%rofeJlyv$XE>1GG`}Vj(sx9Oj*aMr7 z609FU5H3jK$5mqhV4cDn5LT06YY*WijBn=#PEa(1M;r?8zpN7!zZ(M;uHl1%~1-lr2`8pTW@IEdmjG1lKLAMw}S6L6^$SIw-(I zrWXP<8XDB-1Ar`^2hHpaFkt{UjL@Bse1`!MS^p?F$^6=07?Z^nLvXqbS$-4&A$MjF z?tGlE#SRh)xUM&q1fUnfNGzE)SB7{LUL2}~9RU5bAn~`TnPDqvcxZ9IXRJOx0=K|U z?<02)oZ6Y+!JA7MfdGg;zFP(0J?1PsTNHYXVGmf&(>L4ifuUdyT% zkrs_ogDxw>uil{%5UD#_i#+`}kx-1<+~j8XkeGM~O?t!zbb0Kw+!aW;7Sg&NQUEkd`o$8{$gZYy2bYcqHSg!X*Ic~R@YbNs*dlb&i* z+BpStlBS6W^BiDcf{D8@4^j>WE4(c2p)T^fTVIw1L)smzA81 zuNYlyY%D%-Ch>hWv?~84dDNp{>*Q4& zL&W#<>^0ny)%4%-fSl(8@!M?fDI0g*L)v4thC^{Td6vQ_U#;v8@7GMvKi5o+BFABo z4@<63{X4t(@6V~t8>Sz}uk%dz^Pg~eavRw2xOMcNz5(7TdvV{4B(ugq{lkIXkWc7X z1@os)G4I}A-?Al%-@ea<%Y3KY=TG3|oxKX(+vj}e51fIC`=+_`D>T$Thup>|(sJ4C$+_k;+Cdo|K`JJB$bg)whaC!dfZdl84v=%{kRs zO6H_F)hV^|XtD7x9}%`OOK6Ng6FO-FTCzA&t?#v@(GJ@0(#a^&mscx{xK9Xz&!lp)a$UjBJ|ZHbM$qFx(cxU~0doa4DtF6)z6 zqn>9R%%W;|u#Z*7C+XjQC|S+<)#$xcHrbTKx{WIDImfOOP5-8Hez(tiNSRs)hl=l1 zWWjfuFToMdV!80$rlE!jxQAzw>{r-2heN>mXBA{X?pXp*!hAYxE;2;@0;2xZtt+0DkF)t?TuPIK_!i6N?I~+l*(>XU@~Zu%z%<`ZX&dgXFTK zcsS8R#*ysK!qqy~;m~s_PkJ=_AC&s5P|(<) zi+r7G^H}WihfDhus7lX`0_EpyI$4(2sfU|EoSbyXbCtV2wWmi_&^j{jGDV0Y?=jR( zi4+HK*R=xX36@iZVgPhL8LT;-GtQnedeJzmGkIw(6BL;9bhJD0qVQ;6>d`m%FG3!`K>{K(3+QKep8~YSCB`60 z34g}~Tn0xJ$OtIPkl#ZGXVurVX47BuJ4N+B1rZAk%i_#|19dJ#{HS61k!B-ZR7>^q z^^NAQG6B;24dEK+sQEKeU`h5eCUL(CC3QW=AM&KjB(5+UOa-(4zR=jBFBM_VY z)oGHR+0(l~3q!vTS6~12PT8mOlp@U{DImRJC$VoeP{hN#6YBL4^3b%*NUC5&t_bBg zIJu~rcRBVsu|7P!#{P$)9JDIjaI+x}j>BLYF2w03OlfDp`3R!L9mFU_o*QZxWMDuY zBi-S(FcqRk>ZwSH7zsOmC2YVxwlQ*mG92p*Ss0ZG_Kg9!O`c%R|T*ZX}|GQ#qR+TZi!@aN(Q_t zldLn`Q=Y|l>L51T=A9FgC$~WcFOV)Ywyw}tF_zU(IyfUY9WfEBWB0B>Ed6|K=p`6x za*0((H%xCq7vb4Bas}OD>=GI+M#EHRZNA@Mcfp;r^Gd`nCrf!J*C4igkWjtt&uU;Y zQaVkrGPV+4Gnru?Kff*c#>e~pMS4C!Y&o(SSEOaxW&A-MKkA^K)Hy#d zN4JyQ_rOu&*I}-j+k=_jCxiS#!q5@E!V~08ctPpf=*~dKEVqs*!^!qQ1kfmyE2gkm zvJLg2>{`N}F2KOFD`pJ+>IQ6mTfa{ze{TUux`u6PpnF21c(G;pz2NM_ar9f>@@bUX zH=Pw=!>VnchOJKwTPT2+r(^=CHd&*gFnbmrZL4)W#Ec?fd^PJ+O>3k-DLdzn7!?U} z&UBuu`A3~@H!|#@Re`zSQ_g$#Uc<#2(^Ez_A9%q#5w@lAA4PPccWUnqf=?_7-5=`$ zqk0Z{hbt1SCEQ<2cjg~ znDHGl$&IwkrCHtGK-KuYCfrPcWkq!V4_j{)6j`@z>*7{86z=Zs?(PMJySux)lQfat!{-Yu# zq>K}in$xhIMqm@fwDIc&p1cf}97>6U7*3s{Rm`h}n^)%`qMf^GMbG=^!F9V@^`sl? zvr7k)6!80NrIA=Zl211!g3;H z#JG)!CAr<*M&sTex1qv770lqJMS-fG3aF~_Zh0wCs-XAkf>DSt0B;WLA6h}vVHMCg z6oUrzm2{;5dtne!0`b8R#;D$k3Lrv)T?W%pBSpD3#K z=4g^x`2#P$qL4UcJa<$NCCPy`Dol2xd*;yI7y}cC!lL04SP70Ch-!1DhoMLbvwa#4 zJMWM}=h{gLK9;>%i7x}3PsUGzuMM(~nlAxR?e`4J7o+P9j~4@T#T;vVgJOT=t^zL+ zanmjCN79#*B%|Jr?%-ksK})KE-Ai*(YZ;`Lh`YXXi-1-+F{Ea*@c{GF9)hj63#BT? zq7elw45cb@n<47w#h|sF78pmvFieat4NI17l-NQ<)u`$QJ4pgcWFmnzW@H13M2r*y zcLIx{L@O=_{lrOH1mpLo6kgwM^N!=JTY?`@RNJQOe{NDkwk9IenoS;lFgZV{1Hk|c z$f4EEKu1X@gbDm;UZVm;gnUJ!nsOpchdpuxkDPG%^2oIS_TT0*l-RSw5dzYHrAUE3 zHzMUK(`4gc`2sZW2T0fqwg8=m&qLW86>TyyU0hA7<-rjVtK6Sb;1U>#{=61~9+QH) z2LTH>Q}5+u$+0TI7JaQFIjXGWVlK`bH5p7CcXFoa!7T`T3SO1?j?*XpYOsULf5%97 zZ|}kH>gy%)p6QT{6_)AhOB)|unD%ox)CttuOH1+VOQSDNEzO7cH{(?bmr-HZyF4-& z)+v722a0i*@^wP8a@MgSIcM}J66s?^f(T}8RgsbM z;LdWN&PvR-YC{9ei+$cK>QtFN?v9ni8)z0nQ6jm?cbACIbFu3al^)cz#x8Byn3c4@ zHb5nBS$HnzzQ6RpIs-R6N9eVyS~O)^LT%xC>;||@t^Q(#*dn{l6{f(v=BXY}MyB>I zw0332l?ggXm|VGZMfc8s-6A5H;L^iwijX0xBD4IF^yAY8tU*(VqGMF=3-y z68V#6yop%~Yh|raI^1X7UXe*n2dY6jfh%zMM;#%n(fw-DNTJ>6JM&~cnLy1}TUCB zciEm)xui`$z~oI4(ILmEDPHcJhv zZ{JRz>*=5IMRHp>33yC$-#;K;83uRr_Y>O<14I}Go;Y}(G7bDMn0c}lj!l?$J}+H( z#y$Z60I%e9+k3CHy~DyK;eC#)*QQ_dC%g+zw&f@z33}KxPd2i#)}p;uJ5MXZGqaTm zLU=WySRw{vu`+Cu3YLY$CCka60O5C@vIm$*g`s54y#-6{9dXiSOsguQ0W`5;DiW*L z^{2%xbAAtKiB9g6y0CuaceGaGIXStxoedE}Go)j;puIyA;x2VumO2A`LKmdC{j`;N zq+wQ63#g<9sT-vmQ_H+FW*6DBRE83L9f{5O&EP3vNnL}J*Yv&+@CZz0$VK>hP0j@1 ztgPVlr+Kdx#*Hzr96=2ElYHyh+R8B$AHyWTZYO$*;Ka4vJC76VJg^$xV$RhgWfJy{ z*W)lhe$3~mmMKeDFO!QC57?B;(~!o9W7$p9(ugEm=>)R3e>M%zb6>=!OnXaWR1q)N zMK0bwwE6oKtfFgzroccd6*c2rf4&CmkDkg#!_;34vUI8U%`;B%e-$7WPE$}KE13O= zK(-2zM>>ObP{v}hr5wxMBI6NcjnZ2E^qfofz+|&5UpI zyGa^fqIh8OjDUt1efTW9>)_UfqevNZT3!8rT2+f_5yUh43KL00+Wq7TDU68EetzT& zhJf|79+(#dIPS}7dVr`Pq1Wkp5z<(yoO9g3J<|atZ}<1wLk{f?TS`HqqK3J1ILq8;{8(EfVG1^(%F5_^N68WiG!w?I0&P5@DtvrcTHk5DFy|dF~$K) z-9za!fTj7|Pnm(?ZoMGUJWrlocEFcrR^L;v4~7?nX*X{#n0~dq#P1&XXr?%6O>4Dc z^#h##*zlBajiC&Ivvh`093>b$%P+uQ{znVnTY zBd~$Z1mW4JMLYEjZoD$id-8TY&UYH!?LVrle>b`Aw8TxKee$O}=kpI{$`9_+u#P#I z{jr`Jf1yILw3Ke)(9cF6@!iPKNP?=lb4ae)NEvG{f5C3-M(%)cjR}2Z6@9%atNjpCr&4lDnN#% zhFD<=Xp$uq7F(HY=7JC?K;r5Ek5{n(B=keKwY5n}20*kV$C8Sr{i6tqgZ)Pl45e&B z-GOTTi0Gzk4>bDdiwP#X#6UUt1B_5|2crht_Kc62N8x|`smibg&s@6BnBW{2n`L}} zM|!-F;vB{afY;+-+?#mZNzGFu-5lA27XMI*8x@(h8J_e{(())((Yu)yIRPk&O1grI_ynWVxh zofw6e?wPZMT(zP7BN9@9|05D&#Qh@@E;1BUANw77C4xI72=G{%5xUTM5MR%@cwC~K zg9lN<@U`SXuYgMXzUgcuqL4*^oPz_{4FrsNB=V6r_9Wv%bBX+Kf@Oz$hH;PHmw~A; z;_vtvQEU6t=5J3w={ML8H&rS2>CSu?z(B0UvJbfiQhqr#?M|FG&D^4WX@>5pz@JTS zj(t*mnRM3CrnI`RAnDgVoBq$QwedT)j;RwIoAg}9lTzDEW zzo?}~Ow}stgv(Mr#Yr2**G*Z{C0zz23xE=oOL3tIXYREv@zSH{E4XR+M0$edhC6X{ zoUzedViit>jq@|;QH1DToznN#02ADn5Oo;0N8tyBR*FSd(wD@$tOL%I)!Bra&`08~ z!G)TeM@laEZwSyNMf@SE#TUL7iNs6F+ENAkzL1K@dUHs*=bz>}%%mOCi3S3Yw02Fz^tqXrZJ;Lsdgl-q^ zpKEcSyjg>Tl`>8EmLUrctaeMz6-lv|En>d;mS9AWj3XMKPd%hc8_cctf zcU>4C`<)*9x&)GFE>J;dosqQu5uYKO+6#4^%!V}nFxG)__kfn%SWlL3^@!rs&*=T1Kh~s+#rex?&h>%U#@1@IA@kYJj2rCKI zbvtES85hXcS6LLmUr+>xana?P-n{h++Nw!*k?fuLHKe0I?4HM7b!#@$cA##DmC{$m z+31T_ArWkz3$kK4B~vdVHTs?#n7-FdS?RTUapKvf-vg(I1YxCnDgIA=8z-te3>l$?Zc`vY)T(sJR;^Rsx&!^1iW zNn2D}YgcF3(PADh?z3P4SVaO36+6a@qzs-<9K>g1G?I)D(eb?RWy+bC`r0z3b$&@Y zqNPGR<7dYaz{85nlqG5b742HFDn7CJa2qWZojM;&a~+-H0)uDXlQC#=##uGmIJ24= zas&W76`}RaorZ2B$#1qA>G@ll|Gw1wx^(O}#!mydZhU=Q>Z7M%S9!OsLS0%}pq6%y zFrw#P$C-ZaI_y2X-?@==?>a;0bPUxUwzXJjZ#^O&CUBE$!1H&_q`eY7M=o^S(#+NI z8}w#dSEj|HQ%YwEOwJ3A?rqW@Ayd9{yrJIxw}B^V(YWC;V{(;BemDfWz$P(GEzfVS zqDZ2Xqe~b}nNA~7#glBNlWc=qH$edQdqX5wT39wpA_{U81?TM+vTaB z%~w}$4TR7)YpQ=I92%dkSxM@nsMFHIj2Y0Y^L_zNN@1ET@MDYTZr(PoWvQrG)OM#9_I(#5@H=S#u&C|xzXqs310V12 zKil4?c23ADK9_ktmriRxN9P)pV+;P-YyX(Fu2qHJd*mOkruV?v~a4`!*|5Tc*=| zAk31_LP$8bOzX4E+g;Fw5){!gi)D~N@mA^*_^W~xN`*e@yHn#i{3vUTK=52>-G&YHdV@u8; zJc`S}BLmmlInZ;q?LLP8*OC{9C)3$^^s|Jf+-VJ;HJ#%dXx_#%rS1Il^FVB^-C3gl zRsaOdA%e4(KOx9iwwIW8Z!L5H&J=$hNaUS@Ku6ih3Aj*bJ(4}0;}dA!#3{6Da96>t zq9dF*B~jk1+}Q0Yn5MgmPp1Z7QvtBO+rZ)XC;xI3vze zwf?}ksN8~JJHvz7JxQ7^tndt|XVOWF+__U}XQ`l`d&$8|xojOT$s^7@>mxwXgU0w# zvBH<+Sn4Hr>_w&*YmcN~HXlJ**s7II6dy?p8~^vHtmH%4KgCBb15kNli3ImnYE-j> z0Jx^wd%T9J0KH2Q z*+CuFpXODSewaKEnh=doz-T68ltO%VpY!n+36}c2{Et|}C&4(F6)oZ_E1H*mtmBE_ zkU%Jn{2!46F%B0*YUV||y3O#OXh$1<9tQh4z-%M{M3)IWcP1Ho6QShGf7B^sBD27Rn$|U<4y{B) zu#}>d>gXu{nRrD8h=?UWHHH9+^^maFClN1;1D{}NBa}tnvz>lOLvVe(R zS&60y{i8oQEAwy0!c)X-94;f4>Jcsza z9wziZ|9rds7=(P<4Y#LAvX3|#hb1bex*N}>e%2^leIuVs>nxz65=g%VhTN`51*3?k zp$1JG4&~KDw^4TT&k!;tJGvE!V%HNTwlI2cK1<-gBdH)Kb+Y-O+u^@?Y zziP4ip{N`*6IN-TcqvExgd;yYq32q#)UdqHPOpeU7CAxVSTrdx$`R$l3AI3n*0*2| zg%S3s?h?k0k%JtZ;5nDeJmz;!9G3g*n8U0L4ZO`hrR{Mx?P9I{>bJxOT;mnP(b#%- zjY&W1{r5BN1+}=5?gu@3CfEe9F??FutOR-tLRPJq8AQU2A%gRPk`U}|E>rSHx9xk4 zvcr%zcDG>|$<7nSUgYl+ip&u(c*OhBs+n7igP3LMzVYrWY-#({1kyvt9%a8zE31Bw zw%}co*x>B$!h~}b*ko!A198(*)-S`}QfU=Hx*!FMTMl1c!r>t_pdo%QG*l(j;`rqK z+6?>JwY;A4?08@%!)qN^iD(e?p!6GX^sfR+#5j$i6I5J$r~~$=3lX1zhs&FBVSEgV zlUMVV#FNf6)<5eCJmr_YFz%dsO^~g@9F8yj-#NkOm*D3c;tQ0PHw_va4H}>Ht=Zpw zg}}cCHXZqs!`kTIIalgw{@m zb#SI;z71U?M=UQBWwDcH(TFdUCyim*6n_2c+b84x{lML86=PnHx6OCtXAU=|mb{W+ z=Gd>>%(e4;)#HZ|*Qa%0kz5kqz%Pe^5Sxu{`u2qDK}s>(At57TP&;N8@sni4zsWf%%mAE=(-*B-@Bq5akw&8D!OUWE#`h2pn1|^a-eO(u8ybN*41)<-dKPb%jc^E<#Y0eAkkn@ELsdRBjw|*eIOEGu?pDn5Z~o z;25UJ6iyC((fLqBh$o$7aG}V?zC3&j~YpwqaIXfO=jC2Xtpa zU+}Sl&daQq7pxsY?>Ak`r6=8G?AVqCI+^gj1F*R68~kP(HpkV6QN1(srqG8`J9$c; z!j28{!$YrcB-CXOVW9A^aGqtmyRqSa+ZO=V*DL}Xy5I1Eu%Y#IYEh9oWg1~?=KGFo z$<*6z-VKmF0JVXwwVS9}gg)N{v=~x3YNl4?E&3V?Yn;HJCyeTEpgbNU>8{^!!B$sU zpZBy;3tQ)&CRSa9dCTV4gsv<)*6X0a3ACXIMBk9L3)29Y?8defVgpD*6UL{=${<$I zo)^BsShX(Ucm1{p6oX7Ma>egMQx*DtER8{8>lg;zd)I6$_WfWy42djHJK%m6diq|; zK?$}CX*lN7mAyh+slr=)BbMb0&tsrdX^igGmwf!>SmDO4N1M-cM%T2OJt@^hpEp1T zeOV(jlPnDn<6xBLPKyTN$Z7Wab(atfb2o)ae8HqJqt)4>^$_aSTq!WZbMw`oRh?q88DqKIGx z4b>@nL}_QmDtQCc!T3C<>WbyvX;jm5|1O%SWRml- zPz!}T(yt0igs-j!Ef1be=BFKrH}^Ojds=;W(spbh4;t!gs-5j!T)fA5v_-L$=YLh+ zF+8c1+xZ!;eK@773(ow8(`<(#Ew3xPOqj3c>zuLsv%}TsX{gz5myMuUWy42=OZ)VQ zr07y-`}v`8P}(e%iUDa&%%Z_<1@Lhf`w<|)@BrG4BD4)UaD*LhHNIfI^2qsj^D%s; z*y8>*hp=g?s~#z9d+{jtqq-B9K4SmOT?^ZtLS}0(`=bjVj=M>NLKP9KSZ6ilSaqy% zn^>YIE&8*OJC1C6Kdmu>Ujpq37cSBx-%ekr1h7|z2rrI75Z$LNAxjrU5eQud1kBlw z-sp%FqhnI+=zM;}E;m9g^k4f~ItVHQD-{jxvr~YdkOQeXEat*<#lG&YFlr5>!2yWWsLV zmRp|_a^A0X9~nP8KqpynE^sQxr&u%P$3??D`-1?z>h1i5a%qKl@6){DK^mDLt;R#n zDRJZX7bhjCz~!5Du`rDE^P;Jz@v_B_r;A%J%Mh%`#LXIkg~G&@caBi-W#gUuD9@{_t*b{N-f)NhCBrh z4C^@2nvFc`;Pt*Yv;>}@J7xmJp)Wrv1V3Kh%^mLrOnKgq6{m9>-`!z+_qIGv;xS9J z4YrH9`0$8x9i7?UG7UZhVlZ+42P#$g(Y-Es!T%pniq~uD)HM#O^9z((AglPlL8;4% zPgksjtE-`Vqy&E?J0fhsPq?i8odj(};hK41;A6EQkN>?NlFrLR?`=(vKct_N?E%_B zz=*rj7mFIG4%#qGWw{E@`~ub)jOfwJqv4ozf8+nP2Hzfx+z#m#GbD;|K%6c~R{0Di zE+l%3z@KZfD;OGFI2%DJ^M;Nr8ylDqK282R{8a35DhbfSH z-ED0hYu+Elaj|Y}UPwKRip-Y_X9jHyG7XdNiX0MCuF+(Ws5Yhwlh2<*qBIh~m zp*H=35ZdSA>`&NLYJFgziOv)%q10z+3Tf;_CA_$nQtlGB+8Nyqn44 z3cv3DBt%jXJGo7e4g70Jc>R}T8;@X25oVYEj`&ls+j`sC9#Mk9_XE!t&Oxg8v(@YI z;cq5z_f>sa&?gi4z(*j}1BWV4!Q{gy#qeQ%eRJyo_Rz0=#rXVddR=kO{N?mi(AAz_ zYN(%RAeX>7nq?X*<*s`j_^9xL{VsUM2fXtN{z%CGtaxIcvG|vLrYjgbC`AS;PB*Hg zMq$iUR5S+HVJ3b8Rjb#N2=Ro)D0`#0hVfsNofQ+zHN-4)RK(f`hhO8PCX)C!CcL2r zZB}OKv>_^)2M5qIxU{6uCq3Jds~lIK8GforOX;xvS(=PqGT$7&WFJkO-(K*WiEYKv zr3&?HzP z?o&ZMwAbbZ!3hGCcV1=^b<+QE%}}%Rj>)2^E5wRK<788s8zlq^xY^TJUV*Ar6POa` zKi39R*sM2uEo+?DfZ5sEIS!$9drZY)qThqcRq-3y;dGDrr+{(vgN)-|JHqO7p^BcN zO@jx!apgpj(ZH-b@72=v8;h#Cq_mowIW-(7HbkGIWn%~ir0u|nww%{rm-yhyJ8SRP zobfAqH;T(ysg?Bb&)5u8L~h~})9HUL9Istovo7u}_0%RF+bgha7Wkn@yK<$|Zj6Vd zsgm)jU8C`cz=v-JUA^%x0mhrwaDH zI*bm!*enaQ3FT;7@UeD67-xq5ww#uTYn_}vt^AnrbMId^PrBO4du=SSCw16CI@$G@ z_Ta5elr+P5R^>&;g^S~q{*CZeQ|^o}PwjDA;2MtT9A3^{;V1$eXcr{&A=nBu%-TM^ zP)ca@y@9Der{STp^S>>x2t*xRlBKm`*q&i2Q&Bv5~p zP=$nsS+&pnRV0fQ+A=pZC@}NXJv9UZ4tz%tElIz)vi_q=|vmpJcbRPIw5#Y z20>jl28o0T1ldsNgg$4!^F0XEZrTo5F+LC@fa{ePBY5<1h>116bif>L?6rjFz z_8*Msdv1nr1!pbySh>DRxvL^Lm4e@v0LFsf0tCs0M5C_bQSzbK`itZBf5$At+|HjW zL@NAa=`|5pEh0m`uo9Q>yrS2~5*x!*Y!MUxu5!uUJFQzia;57e#V>eAxk7ePl3M$_^+UU79>=Ie z+Jmx_lyp~mGMWdP+(PGOhBK$b^`0GoZg$x70(_kpEEzop@~!oWP%Ronk{%hvC`3PpvlRh( zJMZp0wmsZTAps6ao8V@{Y+|T%#M)^y8wI~oB%+#LTghW0%5-At1;IMATmfVop zvF6kbEzBT(=}xG+L+dZQo3=vnWc)wG#n@6sTYJCJ1LulPJ95G57tRLoU8+znpIQ#~jFrroT54MH| z?BV@3WpwH4tE%>0lj(Xly({^$y4sI!%%hAd0Z*dz*8ReC{^(j4`*@St!SlkKp7h*T zjLtrhmai|I%yJH4u3;qI{3}Z6F3oN<+8a zsZ2^AAyfN+wd#&b&3w}EvU!0Xxw{|*FI}I2HD^Z3+#qSRV`4cnnwWrnl!pBiw=TC9 z72Ek zMoIIw^9ha;`!PJe#(CG)Da_abHXwDgPdFhPcp`CzR_?F?sujlkRYQfHy|WqFr3fW* zX zniYI>pN;lc!yWj2B)1bW;^odF2hT|M4pX^~FuK}~H|!O?!ME4wWO&@hH?LWn@$1~) zS_$GBwUK%N+{y~&EChFqLNmm&W#ie8z|FSCGpH48gJl8($%4@+1AHzBDBlZ)7l_g7 zAj~U*P=_MA#@@n;;ljUz4p7n6a-}q&9I*`do^NCl0IctZRgN-_da(Xr{-VSv2DSf6 ziJZficP;@__PP~xhrfbGKr~s4; z7E^)idIx#xIZ(L8(BuEr6rGFzyD5_1p?9Qz=D;iRY&i^0Ooc(-M})-wtu|?nBqcgp z^mA=g@8S%mwvaKcOL3&45~Kb1ylu9GAHPL%J?Wf~Hf;LNo z&3%!-`#uSmKe@9(U6RYy|4y4M+W%3&d-hFoAEnlvz4J`Mi7df4_PC>ZtU<#HVv}1X;U7{ljM{FJi+H zvF}%M|Es0yfJOSCSh2T=Q7E0~zIc58o-N! zs&=|7QzUZv|94rOL-GGFi(7Dqzvb1iv~ll42g zf1fl+bQ2?x>7qkm8^$t*IE8>3RQ6NCwE`5b^EA86zwNo5hMg0*Ao4g*C=Sq~OSDhv zGfdI*)BO`>0dmNvH9Kb*fupj6DB-sLY>h(e2$D=49*nt*X-f(fS*$CrV9C zg!9v7W_x)1mFev+IkWe&56P`2?|ySNp^j?p05FnTYd~l$5Qbcbl^3`ORb`j*+4UQ$q_ta^f$oa|?*^TUztH|Zvn zL&#nlqmq(QxP~@NbZ!A5vP+ADmd$rD#a}hC-^Q{vY6Rs|j|pV!rCOH7%PHKxo4(xw z1V5gPKaX=C85w$z1btY4`G~Ud@dhLp%rN?w6!l3g$%PR6uI`B*(wMFRRumcn{b}fl zex5$O1oJbUM1S%?n~N_bKJf9Zf^TlE5}deeEYC-E1%DxjId=~r-d@K$=Lf~bcW)If zC%>ZpL|7Ib@-NVk&?te&r)_`bC)@B~vs{ZBni*7oN&fxQ+QQbG^HQ%NR3a|H<}T3L z_R0)Nup|*6?ZFc~0r&PTUvb5Yyn-CV8b-1ZIo8NH4g&zo{-~PMge~)yGndENdNZ`T zALi1b5KF$-q3~BDc-hsR%HsEZ+cgxb-hGsCjT8)Td6k z?G?8mf8Y@I$eJsX{mO(~z+=WetiS_1vfuofe4`ge@%GMHBMg%Z8+hILW&VD|3C2CI zQ5B)XK&@!$-Og(5Ys}GXnfavpwy(RJR}n*Y%l%kb5D$~zH?>;wQ&x${a4vDf0Dh@i zwE!C&47SFYSOfilq^Vw^XnB`yx@|pI*hI!(SG8ZkC|E-#R?_WcG6*ALIxSFcT;VjH zG(gfEHN})2AXqw1dtvRc(3YnU>Noz746{kdhM#9Fb#A%H_z?)R{BW=@ zr0e5Q$eR#;iRUTIzrW=RChoI@?ImfZF3xqmKNQ|0x2eJwJ(M>>mWP|KiSuQ0oVt89 zY|H7XL`bcE=C@GC+ks!wXb*dq>#X|eDgJ&qp^nHkRY;PhIlbS9_^)uCpl+9FTVJnY z(^RkOOv1+`u0i`y5jk-AeMD29ZOQi;(;UCn;Qr}`7v(e~fMtv&MaKy6q2yQr^4l|Z z6r=}!y(cXkSfj!IeuKCV9bG{$=^Q>3U}1>#tnq$7L6=6w{%U0GI^w@pm_SH_ls7JwuzJn`YBuj)~Q?<^V?h^K~otbBaC6vEAdfsvP)3KgKV{bp?8P zA6c@{5xH!N6L{CzR49EQe6~euOq(K@x!lW9L}+tQC)2HCOgm}E-Zr{;LgA`+yms|e zILBQr#J#HT{M4zeP_4zSDaFyL^PSxI{wt%B$m7EMySPI}=1O;f*4`!ADctmgD%Njq z2Q^ssu0^c#K{{AXD?rwb>Z4~Tk$n#p_oY2T+UCUBHnEosDygWRHC?QA(ID~OFwyQc znOw46m1H>}kv%Z+^VtH$1F%4*(HnzG+}RtD`>9$s`E-Ka z>Aayq-I!xhwDiJmGbKaW3TN!${ur{CJsO-)sXuiEDJ!7GD4ROIbZW=p3QW}d zJ3VQwy2aR5zSY2QVPWqZHUBPh{VhIN(B6zTo~dxO*9LSQtZLBEtwMyGGB4>-a)h~b7Y&cYd;HNL0Q>SxOuokB}8n3*DoTBSwcmSZExtgiDC38@ek zs8J>)3@-FPSwt?pf7%?BHY@urC__xk2;lj3L=7r~7BcrKS` zKoB#(JG`u6areJOV~jmbB(vl0JL+d%7spMWz>Krto5DIp@)DB{GFMrUwI-0spHF`U z)Wd#s0;?*C1>TAMkaMLv&PRDQIUe}1;`_{h51Oa;*>N)frMVMTi|woPoZ9x8;bh;H zDnVXG#&aFO^Xj8%muJ-bk9&K1j*Co5cWxO5>wdDPG%)q%^TIkvJ$llu_AZBuKh)u~ z!;R&g)g=$XgI)9Chajr)JI>YcbKmWYD(OP_gzosmk*#IX9|8PfKhP}Tc&3|{#rwFn ze@4g8ZT!6Se-_a-=hoKa6{|l=b>>;Tk=K7}x3j7-UF*67yc!jfdv~eqyuH^*^eL8_ zlKGJC9v>;c999dkV1D)QHI6D&F9YfiI<%f-r7EfNRtlaRr%xEK(nSEZt5S;+r;sf$ zHt`_-YSKFhhmf(ojtG1shB8bOT7sjnynfSEqY5G~t0z_lnD<)n9X1rejHEq9?{S;d z;y`sljQ_{~0}Ti>hmKc4e>t3%8)5N&u<2qs9mgOX1OE#2s=lJEN2Z=A7KdJ+&m#ED z0+Aki{)Ga3SC(D7JuyLY@izC)+cwlyqn{79 zEZb5rB+(PJCcROs$U&UGSt>EoILed`sL@gMv)M8}d)DM`{^I;T_x6Qv-rSy$rB{7h z(m9xRu5h7NuC_q-Y6K6lv?qF-D#?amJ~+rr6stgD&aMbDBPt!U_^qggEY}v9ERFMV zOaaf28m*Y40**q>cEo*z%wJ=cWA&<7odYU&s9zgtLC+0@r);5to(|#cnP#$I@K6mq za1(y0+?H9eYDnW9p9V1Fg>2gMW1c$Q*x);q8%ANn7(|z2z`_{K{<5&nHSZ#f@)}mi z{qFno`DzdR6wC7$s$)*p_XCwp(`?x?J z^y?f93rfQh=~qI|3%fOc-BwN8rBA<8JoSWoe`wj=zdB2wYP8>fu#>c3>_Bh#&pcm# z*{p6ec?qkp+shX&g;^OV4uhLx-X;11bzPr z`NMaOUV65H3BLci_Yjz#N4n!f~f(D?_|+^Py#!pDyM-7uvaP~uRd7g z06b`lFQpQJfZ1bU2c;O$ODfw-YL#X1?MiBR2c>LvC&6?lL6?2Q2bq=g_dp(Munas+ z0#74sibegD+cK=oOM5bu;jr+imye8&e+bN`u$0p%rJauyJPC8e01;~0k4)r94(B;7 zlu?68wQ_h8O?(oR6@y|K)L^NYxUVk+e|__x^%73daBDCV?-0lmGTcEEH~3T!ef(s?UHz1E6YWV`tT@24C z*b`>LyU?~NH|n;c?c8XdG{vO*vSb8oOmk)c^&gG8#w?TOTo2jizJTAQCr1yrz;bFJ zlS!jn4b+c`D zz8yc^9WvZ<;f-x5i*1QYYCBF1=lR+ai6dsMbL!i4aeU)HB@68oOE$p)BJyP^<6FZrWU#&Q-jJ*198@TUqhCE%wE6ApV2QIdH|0YSv?=6uC{#fm^Jy zd&ivfqRJz7eb}FfUS6~EJhdsou!w!KojR*PmwjzlrKRt7r9ag6uP1$~DcLLRGvv#g zrRUEaQl-&wl?+e$^gOPF&p#`b#8I*A7*(R9bd#Y3195>zARGYyE2&$KlA?l#AV?ZwzN| zo^TKPI`WVAvu_Lsa}-H;a+zwIuXLbeSEB~>u_!KI2JD>Wj5G!ypejGh-a-F z+21Y}^=g0ej^Bskd=1OUSMJ0Gi0T8@2Hxe3K>j0x#Fz|KErKgd4#y^hXd#{)>ga-f}LWHlxdZbVhKM}uBOjr)eK~-utV@Z81{IX=?LZixD|HrV3fs|St2L^dV89{tc;Vg44WYurC7Pt)_JOX` z_#?Kn;ZoGKWROQSO8)C{P~YF~um@fA0Dovy#5xl72!q^9-M3f8Zhs8*%OCOcyq+I- z6K_jzydeUP_IxfQ8cYAm-Wl%Ty~+RCp25miD0SYry!~|N$=>*Em)x}LcK#o#$kUf9 zvLVRr3B`jDtN$Dg6S`ZkKsk{9^FDK_TER}#FNR91KOYF4P?Rp?;XSs14)rzeAHJG7 zD6g+t#XcjMSW1e>_FIR=!HY;R+JBGau=U67UVE(!C$U0kMOa2iFf$r`0=-i%5k`%& z0z!q6V#OAz%Pj4(!w1eKE3?u11@gZu6(Vnm5S9mjXP`9pt>KU&&Bk*-EVtuNl#R*%?S~(u(JHmEPpt?@Z1NEBQp}m582~Lib zELdLESF?J$gVhP(oPU89JBto+Vui)2fjzOgF?ME1hcuSHOe2o@$&OQioqVhW|sR_P1qOy}8v~*&qI(lN4 z$J3x6WR1ZWLM{mO31fyC4DvzA=wcz0hkUar_&if*jZ+rcRMXH1LT&E6D^-i-Oc+q=1I-fB*olsH33FKvy_7yZn@_oUbPb@xqNgX9~NW% zUaS3Z$6jE9xtlB1++(}htT3J%`wxQrCmN^31B|9yQ@-=~9 z)g6YwZLXnG?OxfFHdC?6_1@BYzj}EqRcF4@suV~+uOb#>F}N4dOD_j4i|NLh&7d-1 zHub_X?rlRt%Qp&0`b^E}r7Mv)_0V%o}E`k!9Y@YUy0{+KG=lJobWQ?o3;-k>xosAzzPwt$t z*!j7|I5G%n6z=f*G<)(UQ2;iIP~2n+7zhF|2O1RJaX)`D^#iz)Zp3 zcw3Sq#WLFPF}C(K2PiObHCllMYZ6_1kn2BvoY-3_O zH^2YAkGEFUemPa=VV_gId#}~KS{f{rwnFx_{kq|2%yfqade+H4%@JBJ@;n+zTLk`I z(UKyXA*NVxO2gi$sZ|`1!JKH2de}cQ+A+29>0S zd1>;)c!|C>V7=F)Q5Q=lq5Q4Z( zW}eVW1U&beEDs-B(TA$6#VB406*=(&kqm z*QmF_gA?qI%Z!_Q;8vOWI8%M@W>TuPyYP#ZsMhbeTdK7<37?Mz>-_&ZxM`Qj5k^=sJJmi=^M9wA{}?1$ozvF>;Fk zIyj$Iou>~XkP_2Zq-EEbM2Un#J4DqhKvUdf^wtA7mz_BNQ%Maz5efrPDO0XQH+7c7 zwC3xB1a;CjbhB6f&{cR!3Ev&vf$AzFk>G|S?3RX%#!G^C4IbS44~2z=H(1B_f%6A( zGUGxgT(y5j{HqxyFdU_N;dm7l$#_Qw3pkjGl#%qp?IpfOg7Za-f?Zv&3e9{Dy%ITT zC$Z48a8r|Mt2)t!bakOexUBi9d_|;y`PsoU1K|WMLR)1otfC9 zzpof;u^P)a-Bd2zO5{iFkcVd<`l*<7@|%R#Q>&&piCf~ZVw83vA-$Anxs0$*nor+= zkU20P%Myhwh7BZZZ!JA$o)Mqa_oY8f2_^C$-_}{+NNcr-l-Wzz^0BLJd~cFUiUwC0 zgR3n$m$$G(OX`Hna_Ebps(I@9U(q(MCDpXdE;icV+Lmlb7bx9}WG0LgjkRO-{OrG9 zRY0U@t^Pz|FUmAkq?;)(TPQIW?hl=xuF_&OmHN*SJ{kMn%x~+-r_%w%-<$}mtHLam3P{ea8h%!0nE7$9cLSE)s-Gs z2^`nJ`%3;&`_D)=F&&z1;6(z?0Z%0j*mv{ry~eHoms(Lm#E`NbtBH%m0;7~AynFt*6ih1LvE**T~wW(mBw0!GTX@;vOuzQqft+{YIN7%&=U!e29=}BWtj88+#adPH=i7+qNxG6-L78lBkfp zQC(x3u(;pm?=B<9MA``X2l}diwLY9w4eBf2dYG0eaH%t4kAf#tG zy{vycvU$E|OezfuYSV6D1$HambU+npPbp%wsFd2WDR(a}2G!^4^?PPC>a)VEXT^xp zkZpOG;>-cqb9lR1PLlw`m)nLs2&e zRXJ05^i4$?oDiyj-Lxbne^=G!hGxx@Z9@*$_Qlzblic8J&c;1WX$cgim0$8D<&&7< z52se&)jHkjmBu~q3F^LvO$2i=oAQUJa_B^DXa}luQPs@=kvQnX?eKm?l`<>DO$=#T zSY$rnugb-#i4NCGVzHOGxu`PLAM4}#B#&d%Oe>r?lFnUZMWCa+t7il`Ik|ZG_^$D< zWg}h1mpkAeBTC23y1zbTCNjo!&ppIb(+qRjTfQacD1;%j=L%3h9HIto94)7)XwN#E zla5d51i;vsmAarY>`NGprHwtY^5}7EZQ6r&Gly$4atw;EDr% z0L9EFfNCYQIh90(DUdT61viDkw(}2VR6-FE*CtIF?PhW=$Svq(N;Q<=TI&8gHDduf zU|fahx|I!H*eGOP78-EUNDN3Y7gbc1l9CSDuqd9^O2!5`nTA8;+sUloh<{|4t&cky0;+A~UZ0cau<5hg)55hiG88LEMx8qrM| zaVmW-qA)*;l>yS#QYvY3gy=Bet|g#I-Z43&`_cf0-DB@*6k?cwEeRM^LyX8(_Mu>> zRo7l!S<3<=VH%UH{t)B!+c_m%t{Cq05{HaUisq)fG3m8Q1bJ!$Iw_)zR+*5GwOlkl zDQi@>LYC~-~#X|F_mbaY_RTC zVRox;mg`S$;C@Q)pp&Zw5KSy#OOX0$kPQEd;h{^0_jh$(?>cn>qS>IQ-Zll-?3uzu zw!sn5KC*dKOOdN44ANIGGcw8#RF$jtqxLv;i@1*N?ot3g$3jm z4Yx|G@aQ;FQb93%qtHW2{-w5^(f+X3XlpKF0xZl2ozTE))OB=^*L%cc)51q*lXTI0 zrX>vsme7}Mmu6|N2IhsQp5?F>r?eXj2dQoh&FlUmFWpP0RZRn(>PuC}UAljW5wiW2 zY^u@m2jD|o2zj28&If6zeY#&Q(KVy00f{a9AuKaatWl>|%f|AjPD4yxM>>MzOj!w_ znCC=dOIs=qXxjgkbSn%%Q&IWT18_qMjOaxM{Weq{4MyYI=_@fo3Rw{kxh60=c;nqi zXl%HmqAdT#)?~SmY5^&joKDhJJ|PE!;-IX1o|)>snFrZq8BCy1$s}V1giQcR^HWf| zK)=%fFwuvHp7h;mTH=f=YXKCM)1d|8O?maL7#Q4dOg9@Nj+yV;OJ(N*9` z74mesXL|24y&d^qC41nj=Gn~ZA8%Jr@%dq#Ex9Xyh@M-}s24Z6EaWXFVnU=DB|6K5 zxYsmOQe@lE7%~7_W75i82ng5{LF%#5k_F|i+z=f3yOUNL3NyWLDGFe`F*V@lrRt=% za*i;w_mA1A_*3GPCVET-8!0!$x$>E75J9Un#DoUhDofotiZ`msdM6eLv!$f}`lykm ztGXABK~VwY$r+}$S)vpL>QiwwfuDv!6r4V2*IxiO=rf)Rz(Z)XT;XezxKh_;gnGZ% zu*9}3=&Pk-kI;v5cv`_H_*HmBJHqX$;%w&b6sefZNQT@RIW8*19{Q?5wj>eIJY-cJ z35FUw4jC@&AhFt9L%OnINz>Mq+Fy{V-7CkFTJ1#ODyqXzbXIz~`iE5{{TjLVomTqA zpF*>Jm_s?6l-nay$Yxd zx6z4e?MZipgoPrYLw|Pe*|OgeJjhrH>V?iKS#-e=+pdBds`5K&6yGN5;Hba+F+@8U zlBv)4h=t<UmfUoHsfgTqN((+(ELKNBsacn4s~{$#RxW41c; z!Qv^2bBG`v|8~mBZ}FW~wXU`S&30Q4kc(xX7gXtRbe(kx3CF&%jC`0AoP{7dc^b0| zx+9@v(qyx?hR2{E1G7{-Nh?xBZNz&55>Gg(M2n=kdhPnP!FVsr5#}HQScoSmOt~(M zh0`>U8fAaj0d+G`-pS)QOTk$y`WkvZEMs|nz`7vN7h3kBanW$p34D1i_}|IcUS7}e zJp}y7T45JsJSbSWx{DWSdWDVNk>S2wz7e5ceB2AKesT8{l^E&s8OSKE(A>wC;S3g^ z5eZl+&bkb$$gHnu%mc3+EJdqXB)2sdd=d{;Rh6#8ezF|Tsz1iIvVh@|Wl8(E*A;(+CWSZNtr-)YG(*wY8ny&lxixTuHcMR8LIIPDB z@mzS+PTJQgTy!THw(&S?^XDl_Tn19GYB|7eQF^a)|M75h@*-=UmemgG3U<~G`^9p; z(&Vyuq&oFi?WIgOy28&^tLsk&n=iX>crQm5SP0%>bONwes^Ls^0l;a9-oTWrNm{3h zwc!{>!A!>90%@1>Q`p(7;}WQSIKv!}d4^%^UQV#l%@|fee2V~B$wUew+ov3mJlc;M zBnaqASS_j|8#DTwtk7p6Uf^d!(hE!bVP62+FH-u27PLh;i&nnKkBS_ifgIyUL~=i& zRX-nXKzA>!|5>0#)h6LRdbvxMu95`Ij?PYdTU!L72VMb^G9HTHNCGGp$xboU74iyk z5Clb;S{DOjRJTrC!ZX3+UD}44g|NM#W2YLiY!|m>Q`njdvhVRU?koO*(lg1zVxiG% zB%)`^eo&~=EZ^;E8zH?AA-}eQzZ<207uuu0_!VY+p*@Zvni@VXY8o0Xp^|i|N#jP& zQNx<9JzM;Doq%&pu#`8to63P@vB$TA|XMK zq!;~rn0IlSlFAN>!@pMsY|>-@CWQEJyTbG!q&celA3c2%`FmSv!MNbFl%^7BTo6xz zB}TF}5dJu$yjDQwHjqq6Q=9}XOjDL96Q-j|W(plwFlP8cHlzi?$&zv`)arKi3*$Nt zi07KN=^_w6$mc*k2)`gftb;b=1In~bK>@H2xO>*wI?&e|Z7B})s$87vG3 zdK`3uRmkcZtm>hEcC%SR)-n>-osC+MRko1o*#>f$MZLj5Cjdeqyf3cjKlRmIwSnFR zbL%54EK9?Jz(7~qmK;GFWSE?Op5=yNW+A&TlAbMwa=u(-oDEwC_p!e*X{tZhRB}}UQyPT$fh*AlwD!6E;+0L1`@_ai)M$q-fMDTt!)H06Xo$D{pbVy{N|fvLZKB` zG3G!9%8}N{L{HS3CTq_iICVD727dK}(0SYQWXmAD|NNm4)1^Wcs9VE~MuVH0TFwmP zbKt%r3l#JayH42zLd+cym5FSC5qNcAi0yr@uJ+U@npAB^_hDQNwa4JmcPa!|`g-wc zFyt==J-B;nXna?8_nlY|pIi*JK<4B6=!ecM0-n`^U3?RtsHr|&rqDMyAWKk}g?dI5 zwM8g&;P+yk+VG!!NA)d81NK>j-p?9dkE(xzoU4HFSTsSl;QrMI8U?Sx|IFt@1##g! z7{spF%PH$cUY+1`-%}2Ix8F=m+nGc-v&PJxr-%`#9KPT5yJ}ZbwSUjo30kudI_km~ zIa;*C6!}EvICAYPBrxgu7r0{3UEg3KUCxhgu}mAxZk9SniAxN{B_jOg|G4G$+ZJ#A zjz8ZS-BNCOp#p~|(R8fUoG-J5MqWdshJQ0R`B&A_q$8g$(+?@$Qb}}>HOGyL-&wdB zwB8uKm`Y^NB$13n9e0Jl&*`JdfFSRmxVX4+GBkEB{GBpuzu{OdZ1kiFA!N!wAO3ZG zVIA)gPY;Q>giBUik1Y43M+rg2*G>>jgL#hHX*-10*S?K!w_#{uUY@{XN z;x~!xwE7A^EhK#wv$yRf{L#M1KL-V-7kVT)1vlf!2E8=90}jwPd5%~o{J_mj1{{8r z81z8S%^h3Zd_kxY{VltUf2S^z0@M5rzZ55TrL4bUa?@Sl!33Q?R6ox0zd9F&CGXE|_nGxaxa(EeULB|BOQ68V*WhCvs5l7)^L&_`wIlXZs@< z4#2ElQ-;Y#joK5mA~`DxCs0J*1h!lHxAb$+;cIkV8_fy9vj&W{WA}%PjEJ4t>bHi* z+^iJkk7Hl!UYBhbEtgNfO=uIOZ@~uG!uKhVwYGuo(@eJaot&;V%2`$J5F0WW*0O=q zNTS=frggBnHl%*S@zs9M!y?{6{JrtS`A}M1ZUGaf#CQa8pmU*4PPDBu_5?cW9&v!X z4pjpB0I8(&;_DM$`nB!i1Nuypgt+#DNnTD>aL88C(Lxb9!98O%8%LPzFK$xx^h*nP z70Q4q_8*UFXA3xEGATtLiuGVtBQj2g>LZD>Cy@1}tv2HmL8BS>MKk z={O>D_mdvunJC_$4y{>MjP&s<++2%_?t%23fRZpl+&at5L;9l9>6IgDGSc^ zyOS|@KTbwRk`hCt{KerEYGW<2Q6Hw`H*M$CS1KE8}U{IvfDl(}!-5Q@Uk94jE zVx;bkg^xt>4RcsxO`^$RXjb43m{F@xhG0UA02I=}vBIBHDXBSM@VA0?bO~mH(cr-OxOG&QsIni@{x&hTbT<^*!rVU1wxJy08WVm6N)*?z7viXisn0|TnFHQww`!2sX+wpjI2HD(H) z!%LDsW^Qf7K}+1o7l#nGeN^9yE|}zExU>`211gRX#*6wl4n1&1+MsdA>icuY~|g#@gLLsG2jSzU|0>LTPbKd2XYM7k=pf8i zFiriAe;p3KiM?4ukZv0rwt*$O?S28ERfP^+9>t)gJ(LQ~xSnL}Q0KT%@7}j5!{?CC z`d*vL9$&3s9$!+j9q)5k4aok#Urc{*(I@*SSPBFD4g*$RFn!j}`4`#<3ce&9y#kza;5xyVL-k&cBMI>x+4149tJ!)*GK-9B>`HEo`{oBt~94Nv4lf z>{I@kL_%#0*b^Eo9KSi3Tlw@E0S-w*t-;91fX?|r(soGEYIyLrBl25+gk>RYplzt+ z_{#=KxJ3>ESLntC+KtV{!dbl3>4$n$m>J ztF~f|?H_xd51SV!|NP~FJ$~zS8n^4uuPt8>qXJQVTaF^#XuKrI@I?SBC@Mn6j~V0#AS1jnb53YjmQkmug{z=(JMP>NP!EMe+nYa{;pNEfz~kJ_ z<%oY+I5~*4r^{QIafm}LBIR_9Dl%ovM`t8i*0<$Ql=g~#L48%Lbn~V;$lXW<>ISdV z6$^$B#l{Z&4C)L~R`3J5+<^HkJuK*W0rb4Cy_LvN;2ZwGi8>q!MmzlJkN`dXz4?cf zf*(gp`ESB_i{J@}34|GdTV%mc#{>ns{o#i6BbrTBNG;8!Os%~Eta;B-$+$_7M1)JBx+<3+G4k{BQod< zL_Oe1g21BSBq6hun8O;`H;cV_qNjgni$hhb(0}9Dn!K#I;@9j6ZfK+%Yq_mD55$Lz z2@q5aUbC)m18wT9vL9hGV{E8cZ0`v-Y5>E4;lLlgSnSZlj40{RSD{0bzb5}ub8n;f z5nS+Nxu7n4-oGjDgk2Lzbed>+$f$g%jRzJF{-Jxe=Z^j$>GS(s1!8{3Hd>^e4Yt?H zIgItewJW&XWk9Cb#77tPsMaf`NVw}bpFH?)S*H;Or4~F@@ppG&Gu@nW7KW;+pde{V z5lmzvBpm8Lmm?Pq$dFgei|?ae9MU;CWx_KjoMKA7TGE`QiPBV_vGh{MtM-=+bSCd7 z^#FoTQQwsR8|6?Z=MuCRx?(Mi%=wWNtykG1xJw)btNKVFM`1m=)mpou-Ijz)2HUak z2P$4cFo@s%$JJEs3o*i>_~5IPe0(W^H*U83y`?Lz@ib{GZprNGfAzdJ^Uz%}nKhLb z^jz#T-+qe7U5L-LDT<&RC>yG(Gq88&zB%cViPj263{Db>%A=DIv1p@XgYni>wyGp# zrD8QsxQQ5@Z+qUAiNgyS^kyo-&@Bo6czetTI|whj73oA$E*CII$83NC0R;sIm*fEj zkBj;FI$Cay9`)Y8IZHL>Z7*9g%D5qs3p!#GC?1(9SWGla6=j8XiZZ5_D5|AesrcQd zO_c&di$*SOkXq|8(I?)}FCARvuhzO#6V!cXflOEKzD|7*j{nvBp6KW?$!L&H74nHK z=syWJi#SW@tV3DYBigmThTQ1UVtn0hpnKW+ufSj)^UNh{NzG|-^Qg3Jv(y6SMNb2r zB_$HlHis<`C|(eYzA)VQP+z5$$X4q%fh1{?FbtM9e6u&2`s?hb<7ukq>(esLqnFR& z{s&#^2xh%e6K=SdAJua_f=GXpUl3YD<{KK?W5^VqU|8XgQ6vy-;R|{frf%tUx2PA_ zrBu?%-GBuBYx=)Ow_h!uf|6<;I!+oeIf$Ug!RM<1-htjGGawr}H-*?KnxYmFyhzz| zhSb9vn{!SZbhYu zSF>YFUj?-;F3r*BZi})0;d4Y(MiCR%qtvr7fv6V&<8z(I(soRtrnzF`-1p`#ooRB! zFyjI%nof$8+LM}2l)>ka)XH|ah^P;|S{2Xdeo4tN-Q75DS^rQ}upkfg;-10#GmgKz z6x=TY5901Rnd25ZKg+B1BTJ=NY;!2M61LlT!ifM^fuWtlRs^ySw_jIf#$%^A!*dP9 z93dYylMU~<%H-$=(;f2R8E*L4oaQYI7^=qfpv4HQ(OcotUn~+3asT{4N#|_`2R7(| zQZeK$&c~l$OvYTo@;^mK=b2ZdRTMzFFa2)b!%SNFrKMwrkk|hxVS~2jBCh0FoELTu zU=WJatP7$OSzWgn!4I5x%{@|)JxWA^H0Q?J?9D?6Z3LU22TlE~0XBbiHqXy~mLOK@ zSCH)VJgjqZv5V;X7{(w5+6TPFEF znH3uHdu^j;z%n(mM1s?EM1h8c02lexMGOJ~7a1-NG>lkKv`-RAQAi zzq3|^XJ##j{9fCrYjKtkzz%2eh3WHj1C#@mSqb2&*v)aNO6F_KSPtB|7oSxL{?-B% zF#+YwtN=T&`PZG>5o8|*}q?9WLbV_tmEq&*boJ11#I6pYU%IqC0rq`_IR{< ze2^Y8#thE0Z*C}MIF_* z!i9vLi2NI7CX&?Cb+4v&5&Kd+mD5&t^h;M7wfjFHr4^v}SOxCVnb&jtpd`L*J2g+5 zCQKC^G~AyL@AuB&Ljs)@IlU8naF_rGFg;RM)1W}lFE>{?s_QAuACA$? zLgRU{DZ{g3t-^iDFm8MsB@l?G zdnhtW*J3J!8V`2VpB~PoIi+GIEnREU#z7!6>>-_d%)mYU8_$zk`z1$~3%&#y)ylh{# zo(P?c_#P>rVe;D^^q!dymAM@Mfpr$vj2S8`J52Q>f%lWEI`ZbhoD)Qu*HF6#Z~K>k zoD((OJD5lYeJK7kJ=y75Qzzdrie*^-G`U(8lhygA#t@_)>G!wyy6m`_SyRWv*P`c> zq*!*{x-HJMwuS|Lu2Mi-H^nQTV+*}`tqBCwl47j$w3Tf9=QX6%_!j}}<*6rM6NVI* zx_ql12rcIRwf9`m?w&sk8YxLhX;&k(8E4^-Apq)?^70r1Iloe^3|G!?344Tdxm_%G z#c&k=`zJ#r_~0L**F_GzvW=4el4{J(upqh)70{$A+p1dVvRMbx_0r_fN`oY|FOJm& znPeXfHQVcPrn6HSt2*<<`t7$7W2u`nv`GTku?bmeIeg6PEfO7M!*|qv_t6dw@FR8O z%tl$ZfNL6{9n<{&TP@gL#f+po2?q`Zz6{>?A_5_(YgvW8_b6e$!}&k7!^N#5xr?n8 zb6S-%K<$r*p4Ad5V{(8UgB-K>dKy!KjKkWxs^l5y@bmkCoq_xhW-K}~6g84ahG1}AHArKb2@f^<4 z)^{VI>zU+yWOGU7Y~yt4uj>Y#@|A88aW>s*RgJd%{`$b{2}C=Oh`gfIN4rWu(6lmW_^+gxGgKi2sWJc1>gCsl31Dwg%^0d@F34DbZIFsnI%}E@8V@-+Px_#WnFah;)9z+RAbd(5r%39!VG4 z1b$nY{MgPUkY6*im`v8X#dJcichXWlJ=O^UuOdRe-`m4}^(T4aCXd*-PBuFko%M?F znNha#rNKI|5`#Q)huwLDX8Ciz*e~gKYe@U?%*rM}j+|+N~b$a}2trV+&zqA#x zU56Hkr0J;i;HtB|Obs`qG@rhA?Ixgm8@a)j$Wa(xg`w3S`#mS-LV>Z!z=gZHE*sZo zOdQ?{1aA`BDNWKHs1wb!pidn1z~0GW8~o+>-9rV>VOMWU_NapTO(uc!f0IcRMfVHf zMJ7oo_@`mj_ESbIWBi-b{@8-ygOgkx38g}QKL-27Do@-*Xw00NrG+wz82=DIkwcO3 z6&0t(tmJn&wQ-j%Lhb#uw!uxas$-LO839&8Bah5!>HZX1Sz{&x_^NWtp3}x}cx?vC z(Hk4~+(`Hui;DcoK$14T3-crT+wjMbKk?xB)#RDaJlk#9jTa2pJYM24kH?dniYSoHkzdbTe4g~tvcj2<}K zB9+5*}y4sc=A^w81=@5VPJvPG|?V+OPUogMUSpKakqN6<2gW* ziRfZ08K~nfsfPfbXG=$#<8D3#I=s6(R1x5KpN_;77x6iwkiSKm{(gi!9)`x0rzbqg zX&07pGY#3UUt3CP;iN)|^9Yx`h|h_@;AU=D6@?46O$C(8TK~Ll#o8lw*-)Dfn{`xB zdaDjT_w+g8M93P5##1m)N8*jkCicL4qnfqc={^e{8OqRh1m`;Vi%~R!Jo}hsO6;`Z zS`<3!Na*!D+j7-(o6Y>&R z8@(A?nUc$LG*1QBS`X(^;8iKz!OqF*{Ps2u$!kx(=*jub(NT%ViL7E$Mk2pfu1c)R}Gp&T&6z>8R7-6`yQ*J9_i6UV< zA`FFji#BRKoWe!N7GDT)F*FK`W#fdQI#1@{qp>HDel$ZizD5e$xm*kosjX%6yHr^P(%6K2O1amN11?9KbT7C`+#+Fn3M4LG13n;Mt z;mE#xVE_8!?T@L?&sqd+7r7RdrZ zQITG6rVrK%-Z~lSz~5QA^7b(C^c5$Y%>~NUHdsPoHfUb7$DyCduuw*~;pv!)n6Gis zXko#kmkQ8;c6S5Qg-_nHj$fHiyB}M^jd5S%YwRs5Sk4H<#NJxk8AuV9spN=|TF&^0ocED0=&5kW3%7=R0p)obqD*$|$~@ z8LicZ;YZjS>tyhpEwNEnZNF~xq)@Q{TZDMy*gO6l_Ln-p1Yer1!F4NNJbnLQgY_1(i+tTg99Os^ex>;7>irk)4e-T&9#UWv*;Lt- zGybtEro%1ex$5soj(f)L$!^ZuJygawWset|vbs<|za~J#!$}PT6N3FjZUPc}p`6Nq zi%$Kt8ju!Cgh^c=$jQj9u8Y58Nrl`k^ds*IDt88P*SqG9SbZdEVL#ZBZ4*EEGsVog z6@;UV&KP_rimPvzD_+h1{<~oFc$U}(Ce(yXX}DO(gUB5BEGqTV21tQg5M^t+)+qz@ zxotygxk;+jgsTRCv*=#Mk%sopx3VQ<|k7+Q_BS~oAFH0TtLtX6Gv``Y*1qTSTrIYlsasBf(>8G9;1(;% z+Vc)J0VhHGI&dpln~57xrZ#5fEyAFP^NlP}iLcv2=jOK-7>Td2ArlpeFY%SXhsFMg z+}V4{FPHQvI+xTcXEx2D;I1-P2AQ(vFV#GHE_tqMD?KQa33E--lULA-taj3#G2-8c z-UfWY!ox)n_7$NGGQi!V6~guB8i+G<=`IEqKV@$F$6gZR?YT5&!3n z^SfqY?|ULhJl7$55UFNx3&{@ z;j#@S^lb6uC)GJ_%N?tCLFM1ebB<2>Vj!qF>^NSMLpY=b273k&uMqdqXRl&0XS!`Z zug{3hPHkRooz%}Jx~kn2*yl1>z+FD#P2Z-_>= zf8c)j)Qx+_skP`7V-Z7vrgwy#&1Q(_%c}_Tl!AFv+Keqk9#o!v)balm4cJVC@gK=h zAzbNEePa8;GVC&-JfeI?^aW%o7-j9(X%VscP&NhBgYPPTSRt>#x3JUirsepycIB^O zZPFh4Ppvt+VfBj#>hv;I?bolKjnt+u^hWvKMDg$Yo^+N(0?(pX1s}}#*vh-3RJWrC z52M_A9HmN@F599VubqEB>HPBdYJIbntDm@pHXmKb$w2;P;wzW1U-SlbAOA#1tJ<-z zqIM}Y0z|jksG3&wNWgGXZ1D3l4;CTNodkqDZvC@1_E=&# zrrBAr45=_99S%IN{40Nbe7y76?Z=1tDIc{2O|iCpKj)`tNL zj39rXCIM&6P5+P0H8gGaV)tYxYyrJ{aZbe2eR1zX2>YhXyW|z5cQXut5W47NNYr5F zTLP9kq!eI5g_@|0$HdoP-a(%Rz8Z%JF*J9A}H&bJKZIo@_BuO#f5Q%dG~NJ-A#lQZggyxe8p2fo3W4jQvls7Grq#SVZpf8+(&` z)MRM?iN3MWOUsgQ0=tG$x{a>7;>gakZ|)zF|Bj(y94YU9CQFlr`K8$66sTjlDEc%0 z@W%Y3AbwF5H!UF%^E{CFg+0mp`pwC29E)8MJ8U0;P>dCHUGWR9AP}94YdzA&*CW+l zvG<(C{X^+=4Qlsc!i`L(Z?Fwfr2UD1N0>Gzohxlp z!U0>Wkyy?#ILi>&>ECbJ+`#x z4$50%MY)*M;v@LCIe?iG6LU(a^t=mXT=fsuR5Nuao{MBkyB#0%9OOV=?ryKC%K~AY z3@GuezJO(2tup!J6Haf3ehsHOs^qnlcYSMre};$GxtEG6g-yO582sV(5P zCCo?D;z(o_$Gq3)!;nAXI@BLz6!Xmm=Vfq(qoC+V=s73ufO$0^>yF7J@5$lGekDZ& zGGr8mC}H4+j1pU+;a;Ga^l>>kf~~DF3Ph`&l8*(vN;|7vln{BTyx7<0^&XF9hWF^< zx?e6|0q?aK2#iYjT@3w|bSGX~9vB07PRb_chKm`Vv(?%R6#?ytgYYa6Z2m}d{Xz#J zqM%x<3ZvvFXnhPA+XZc(2e*Csx_(LW3;}gK*(}d6)ZpQKpuN@`>X?80Of!(>YrXfS zDYevaH0eRA5{Qvl!K#NRgTod{C~PzMxL9&3bOWr2;5ujWjb8!Z^cp|0o7V{`Reb)p zeu3LzD&x?2C!HoB&Z9Gns(UD9H$uLrcic?nAx!MCeANM#64!u*UQihI#)_{atgl> zw+n>dwC6RWm#s~pKqk-LgI#~m;^gr6oVWf}6PCbLku^b>8G`uQF=$yr$C*V=-}io< z-!pd-o#~-Y$}G?WreMi(!&2xA!X-{WoMW2<(ekWAlshODf^)6x){trZ$rYGp&V8|t zzN>awZ=D`OQKvrh`$SQ{$}3T08Gjmp%1)`FM$DR5Pa*jrFFO!O`J-@@E!U4_(qtX^(zz3j_I=S^y{+(kaX(iW6$MH$ zoodR(%lc^nGpe@&qKcA|Z;J)uo+;KLBUG2i>Q?rCEI8jr*M_`+ObG=#Ds0vG1A~gp zRw4fFII<@3Tquz+c2^#Mlmm%f3^MJ81AfyLQ{4p$ll6v$3B+-mIX>DqESKEsfTF+7 zgWkKaV+$aqrZzRyM=3vLY{0(huKOSrI$3Oo@yMYvxpBOwA2+Sw+929e0(S|PgI&pmGeFmu0MohVA)Sm2?w(xI= zT@LsvSbv)t)*u3DAG2g!jsx3W`L<mlv`-nf`lFCF-Wq|GP(*oM$bRaQF7jU{XJ7MCoF9-yeFwOb5eZ|Qp~ibm;K#WwmW?2&dJehrXh=k z8f&AUKlD{hy`&q>dHla=&n_|ZZubTZDq&0sKc)v2XDowP1w^YM^(>5#`K zbAlSgbRVfr+xlhmgCZ<5rOX6uxaHQpaDcYqzwuFf5yo6=0iWDKHu$JpB$b(b3wh|+XmzZX&B9Y@kT$L+|L@pC9%FHG4}u^E)63!LV`R8?a1_>M$ zBN3_&%I`F6*GQ-uB*SmX=_Ol#EuW9|gazse$XEa_6&``AlGP7ULwQrle_gJyq{Tj_ ze(`B#o3`QWcG6xKXiN~vEC2`K+f)CzI5Kb@)J(koUeN!oTmIUqpeE6i`gHV|UrRo& z^eewk=IZ=p(Y<)j9Y}MSfJQnO{URYZa3i<8_$N;Cyw1mE1$|gc z!$rB~21g%+mdyU+@la=yU*qJ5>1o3F`ySvT=#zR5q0e1Pn3n&Bnlzu=YW{TDLu ztAbzQ7saEOGp(h53T{KL{gBadsSyiTmffgC#bcb017h#tW9CoWcPsu1djh&K`)Rqn zSaK#`e9Z50FV@d+M`4x?8a3B6H;mme{*Lc73tI2tdO~q?smMLs*ZPlHSJ49GahJNs ziI7b~bah#ZZhrec1;W!BuY22&Z&&QC6`mG} z%YU5n?eW%4ZNE_(Ic_}za0)Wwbci-WE9+pFP=cf9`1e!t-#C*75^*yF)~>j5EQn0S`? znhqnzLKIDLD5|0{&DO&L{>DvrdPsAkQ2AxnI-0mRse{e*|Do!ggCpyrzR`|t+qN~) z#I|i)6WbGKl8J5Gw(W^+TeqM0{qA?`*6#CPch#w`bM{{Arxj=GCp#C1Yo})+vYP&j z-Rj%h(dODCM>0Y{&SlIY8%Ws)4+T-k*j`I7zM$MZ)C`2Z$jslwL;K1fP#pE2N1{3; zRt%AH-r5ZL6Lid@tVm|tqUart6y`m+nRc_Wb(xoZQgj>~EWIpopGw(oAP&6WUf@sp z9;acxkICN*ko=OeJxv#f2JWBf?Izoz9L4HDGVcXmjw*?bJ!=NYS0N?zyTAB7%bt7- zZ|e-2sSZ;^7N7G$bqrGni$@sM4{pY)a~kD?g=#POj|hmN$j&i$x8%qD{oQIbRy20F z^s8A@SN3?ntrY%G=~zaknx?LdQ_br$EVsIbnNub@o3K(>#hNRZm+SK+V(`h)u*INM ze=XOfpEjE7{a4Ot!7mC}GUUpdIjZ{_K?%N>ryd}oeQ8@wr+@JQ##`DS)i zZoO{xn1#+g*7=-BSEXS>G5# z`*k+zHXm=`y-{e`ay@{daL9d5li=~>7J5Og*t)3m8O?F-a!69a3;F`o9Y%+pazN|1 zP_ate!@!K`de0yX-7FDnc{>e+Y=q9&=WqopSx46?K75kHQSymLfi9>|m)k#BBaw5o=>?&n6_> z4=%~4X;Wn_Jy?JZ;GAEl0K~?1LI4ON|DQ$~vk%gV#@TkXr<(5j?M$>kTURcfz89#; za1#XazA?-aw2DO0tPOND_0opzMBBz9Xp}r+&xh?)aYz~!H#+(ZKH8(WZy9*!kmT6B zwN+PO9LL$Ceg<}qGq4zxCEz;qcXXajG?1{CG_Hxl^kGXb3;z1QPiwaGzp=6u$RmFJ zjVmZib*J?nJfG?GAti!*KUnpOp`S0K<^1CcnMuEqL zXUC?uCsun*@TZa7a>!l21v$0{gkJNPNu%pON{=E>Z*r4IK%f)8Kh*J=Wl`)kz>osP zaPhH^Zmr%=Py*+Gq>=0W1G9wF4^i@*DW+t}AE4w=b?w15Tc zT(n@Tm{IfCanK(}D&$^cTPhBh2YLSRhYNcDz0SuQ214-R>%TV(mX@uXwkD-=g=y*9 zK;kzj9p`W?9sh*Zf1?ySK}nxn>W#EoY+Sy-BOR0r2F*1yDD;f)N#Eq0BIWidXAqHR z%<#8@x;AHOx2{j?FPQh0t{gOt zgI3@Kn(G-|d0^}IntH@kYE_fiFfvck<2krI6bK4Lu3z}IO*U!=lN1i_r%#4C(#lNW zU_PThvg1E0?-AMXH-BGRcAAt34o#XlTI%*46gr9uw?|WH;220H-@2-+1EXY=xTEAC z3%#MpZKKgog@%soKP8mm)k>xLv1{2`4Aqq3IVyCMRxP@FF7}z=nwno+zCI>v3`W{g zUbE+34GFrZ^5Dp;45ednU~?vtvkAj|1Yj&F&0vtMX&Jn1s!!Uv^iq``SYTlYrACv4H#VOHw+Glupzpp7skp|7tfwjM7@bxGEjrXh3Xu~ZSC&Towh=i$S zr#c&L1&au;H(aAAKPNfyS&1-)bNJ25Iy*GD&)%#UfiS4*ycR-VUJ)R46oYnw>85*I zW{ufF9<3x%$u(Bm9t5iF7qs%xeh6MOfN1T2HWuEAPO%M&bl^wcc0KK58e6dG`A}x% z<&eBlFv34$aJL3j=6dyUMqM1{t_ja7NgKVQg*QLY+W_8Zf9ZZT9#b@_)1-FU&6{1MJ>P~Sf~RgES1@7X<-Ec0n!>{gsub78zQ=y_?k{$8b9pj;=D;EZuLt>8)EaHnAS zJ0KfPkNH71ob^Jt&-mwf+-?dn;{!5@V6Jrn!L#$cm$D&_6c02F{Wc8=bMOxm{!%9#G=%ViU$7tp^8gJlZJYr@U zDL3Jwa_`mXPXFy%#$kHgoii~KPF@ISg|UHu)>2?q(_bta=xs>_<^rXj`#|QxkR!0( z(yIF%)h!}hz5X{dr{EHaUz_>L60hBw_GZ9htU=QDt%FalVDs$CZxt$w>?k5_H)`_&d|zVA@{fr=|UoAEg9u39s&q{B-HV}^nm#f=rY2DE2G;P z+}%f8GoTmr@_ruF3nA(T60foa69a@58;A{KqczBNv-^RxQ~|{hE=M0uK0I68*Y5KM z$|I0We`B)M(yAEz3g4I+&92b1j%6r0B!QXEp;o;Kmn-Esv%w8mb`;;>G;yQuMYPc!41F_$b6S#<{3 zc!m0NMI;_JC8htroCZJ=NRkI-uPOLnT@z}a6b$~~hIbG7(8(nxfWyByLO4QgN7@Ke z_A&`*wKB|Z7n~@oJ;6q-H*(Inps}60IAn{iGCVUj zGxt%}m&wie<{9a|N8}XAMQM#QmT$=}7e5lnC+O#utWXd1Nek&4hDBZ^a_#v|83XUt zw%~H{c_m%+i~esoB@ftAJT{T6nk&_#DWa2i;Ly18@EQ%Rv(lpAyABu9j=$rEVA*$r z@OU?dVEU#P#4HZ7(sJHQY{n_#;WEVc5X3H%@T2gf{}4>4L(Tjx7lIP1i%-}BoKy_) zUr<)DSGmnWIn`e@#gxV!xK?TW%8h?9YQ3oroiNE{maoF42~9EWb^c0V&*uZGbmmYU zWY5cfYB@TU({rEtJOw2uz(J4;_kPs(K%5{6a)_P?f{v<8EuhCiiE+F{*}p;j^|`2IL*;jX=Q&I`@j1%W zjXAzlrZO~Jd@!qZhS%hQue3e ztB#nj(bmtT%XQtkxlvK1p?(vB`t@UV0Uw@qo!>Lx&EB!vUC`xl!mG`qVmy7kq-d)e z$*;zx^LKHsp>dEcyW!4XD{A=4UveZA>abM%710%I2VT5Me>+-DH5>CEI9vPc=QFj?~s-_Uk!C#Y_auzhr%SPSV87~dHsJ9}B++$Xy@@VuBv`xKc6~MCe zD)g!_lg(df6w~LR(3R3{l2|Pc_hOzh!tKnp4-Q|JjGe-qDJ<)IQ*zX4u{-@Rtbw`+ zjNIrUE{W=|LM1X8Y0Mk9?v|sSs=qBqBVOml)(!+$=x26kkE7>gTgi|?GIHI-KCyyV z5S}ZSql!4PA+xj7#j=*r&ZAIRxU`tXG$HmHsqUf%<5;Y4;73D;Lyyc5#jby^L;7WV zY?`De@mZkm8k9xtg<2lubloGw=i>7Es{&<;#E1G^8SId97eXLTR2g_L`|HQRP{i0@ z9)dHAB-5BLF;K7BjOCf>mvqiN=doX<;|99Np|)Rz>adp8+-EEPM+*n9sai(ntMHqX zYQ(ol%1f+Ie=R1H@ch!N+t7gx3~U^+q>EXEImSUzhTI&F(VVEctuQ0A>W&hJpd;)c z=ws!&&gk!x^q2k}l8@sL5bLq%EB=I4dg`8DIYZpfmX0-N9(h>CZw0}#RU)kuhf~w4 z9W(W1NBq`lV!{BrM#3Vv*z z2uGPHPnyP_2W6!cIm!%L-26}6utR+F{GPay$Y;jcuja49r4{bMipXYB>4f>Rr5Q?; zb@z2o2mNUI3boM~?sb?WZOW_GczgG+m#Rf{ylshOwHg z)|8SR$t4$(y1=bzkI}$1ufOixZ%iJ-z$Fm$r}8nr{?}=M;EOH?D%@(#I(eAr=q~YGY^V5Du@wHyMg0S* zF>|lXDuLW!jb2;82eLk_pjbnlO}PIiHdNzEeTCDt2qzo5bsd+Y-2|`6{P6AO9jGrP z^MmrLf-REGm%desgKE;9Npjs+2^6#dc(+V!O=G%8JSTL{0Jw%Y1DeLv1jJ-)wa2P{ za_p7-Xw06;Nn)|piJk=HCg1=Xp@lq;tM4;!{e+LJo5K3i>hp+%(1h543SV}U=Dc8Y z*G_`HESWOPBh&P_B)Cvor|~cDell1lp{#}|!RDV_Nfw~9SEzNh{ z@r!yA2?zo}B;3yC64NRp16dzBTAzU;UybptkPXcRGl%@(K$+w&661f8+0*;0VPpLX zjJrDraHCYpTMR5o_z!5C;n7_6O!wb%`g&4+-!^wkKfS@w@rou57W`S9n+K;lnr_}} z?ULX7w}0#jnE7r@-x{k+KhmHhMyU^TCHE#a$<*eZ>M)I8mATDO5EZ{Ny&j0A?W0~U zd6>l=!ey8Ksz(y|H4DRTWMh8WJZV`{c|Eo}v4aL;CO?AOa3DwHciq6mv1Y1u;mExH z{cKa_u|g46l7za+-gA8$nYZ}ZFL?7V+yCWueLRREF_%&!*ipUzUw5^c9H&{FMJ_A= z7Zv0@=8nfOlpb7l&&bz~UlI$h1MIOP3P1L!|LHvm&Pt-=#PR~}3>f|gfI*|TP;TVZ zIEU|F`{cR%&i>95e4za9^$f>}C0uS(@DE6nQ5l)r$&3-!gHMub{)!YgFE;Z-L1K{p zNrhkceMqI|OIQNx3Z?GbO^er@WVVH#S>nT^L}d!a!V@v(MohT^7N&e1&{J=yMrq1L zSBCOj!1+3jH4-F#oYX!u+4$W(wGPMTzMrMXm5X`Of;HCf6X3f~p2}M8w zCg%ux50ob2M#GA`%y44F9teq+zj4@!fwHV5ZhNpGgN^Gj9A;TBgN1MvD>TOf^)dVe zR9*W9fc1CsO9Gp5ShMG`aE3oAoAb75pqsu;mKq+xwXx}hAso;)X|_YL%oo2+qpA%v&TdfilC$f zqF&?R72D9NUN=apyrr&>s_oQV^=|a%+@9U*xFj&6Gt&nR&CuwO4jO;Mnd11I{3q zHs@VT-KX=)?KR;cm#VVQzDDt#Vh^B#VxC7L>|a{~ZUm}`ar(q9nwove+JtNsF!ybW zhB!@a=tzcygFMuN-p$4bo9sq5saworrcrvB(u(cK{DB_W(rZ&h1X^A#P`0J^mrFxk zTb?*tuT^J48@HRO+C6)z-SsU(_{ecZ>I=v*#@m{pS{=HXgf*^kT=!s8Ea;9hEcXtl z=IR18>8vhNn7eqbAM=>sBGC0&=%x!Ea%*GU8T2J)UTLS2J$Je5!ko|rp*canQ%=B; z<&(x7H`lEFI?GL97s9b3A&H!VpsbRvswG{l@S6+?@2Lk#3<(9>A3M;AeW()DK~{p=Ne| z$1>KcVsEAu(;0t;^MTUg&I_$i7o>nlnzD=`VuiKn^OP;9MOTbrxW@OTmW!e7i8u?3 zVGZFr;e0or@Sk>U+d9%f7yTqG1#4P}OH>Z29mF+Qmdl5D^(8V+uIFEeBE|>#<1GF1 zos<|i;wNZR6AFM4KLEl9FP(OGqxk#`v+uywj|C(Xekvd-0mo69AXE1=y~c?zAn_B> z*YgkGuN8Jyujd4@KQ+MPv5@zl(Wl=bZ?@e7gF6r2@%~ZKx*5I69}ZIkgi>5T*e7sN zB7o^1l5_irb3nt-mxYq8mN8G5{v5#Qe`^XWYkwcx`0thnYD`hysxc=a7(P&EKLQx( z3Ni8jweWHS>H4ogE-laiBW5Y*y~TqOhUe1z^itBd?9NC6I!}GA{oo&y_nnuRZT~i$ zs9k4~O?Y5D2npEFVmFd|Qm3{AnPzY*@3-ny|EM#R828~^gI1%y(q59?&Dj5SUh|%G zhpctv{(h5ykw$A2%o_4bfDVEi&4CgWcaVxVcjAa19I%YGGroL|7C7StqKiirZQDP7 z;)vPC;Gi}YP}d#F%wI(?aDWdJ~D;RVD~uEub@>_p{k&{{}SH7 z)t=qt7;q62qB3@5AzmEVahg3s6CH?;dErpg_K*1%cy>4PD$|2M;~r0Cgu|?8u+3IHB+(X4I!h z$F*$sOjk<<1eyk#Hk>Iz+X^?gw2?77r<{E9HBzpcd4RK_qpy}!L2^9LlWcRNFSsK1!m!H~qwclvAz;rTj--@k~p98>ZBnaIO$ zULf7}M)gJ^v)c-Cu{VoX{*t$BP0yT$iTPW-!IK9O{TXLtTmaNqB5&CtawPLtL zjM?lHT16}SzOiLF%?x*T1+_7l(GF+B7od`39$WaCsi&Pox_ceN3WfBSVe4oPcMEpX zn~^-6gk{2ruK9n@3ec?hYFQKlai#NWl+%5RnaxWF2?JH#|r zF~PVn&r(KL(Cr8QG9L|H5gn&kyEAM%tNB%JH8?*HHGkW?=D@f!v|GmlGHo%m^uO=} z*dI41(~v)Cy$yGicIK3AaE&*NbC%ho>O&dBR58GI*jT}QvcYo(IoFF7G^e<|I7}S3 zR9tz;7LaJGEKIjdKjCm|vz7iNlQ)CF;dYFGg0!&(28a?9(_zJr)}i#hwb$6-0&jw| zu%0)Uj*RVOy!w2+S)F4q8aGikd#lo#TnRmeqkjaHb~7zN8b#5HL$#bQBW8?z0v7?R zK282E;dalNh1l|f?O87H9dTEnC%Ada7eS)XYyyU5n9tI>!qUtz-j7-nhkG2UgsX)W z4&cefQwafh99oLGSz>YWTiru)rg_H^V$3rdF9PP@6i*0ZRFt0EC@SUVyT?G$S{u&Y zgN3L`FkjtZ^B@x->pign=JFP#IboFFPKor&HqftnWmoK?=C?caT23PxejvECk!SA3 z%hcW;Xh6EAfCj0JtMFJ&?eY?(5gGzaO9q->6t3KFd^`zRRB-jyklC7qnJ6Tvtqs8I$<>R2DsIAx%?kAh3eleN=MNFe!%|<8oRaGZub&u_OXD z<2JH`>W`!8xQV*rroS^!Abr6oyq0)^=j`2n0Jk8KNTZ>s73~;x)FB=A__gb2Mx4*j zh+-({5U98%2>I~NWWW5kHR3T>D^J%;i4kwmlKH`8R97z;SKRbKc`~+HE6A+3&b;ViAk(_(|OPJkKsv&tVSTAxeMzOvR}U zor7jLGy4zZDP)woa)VA4zmRD4wZ#xIAeX|>(i9Y4EFe$qQf(hi1YVp7Uz~NcA*>$d zvN%>BGub)&=boi0Bp?RZtXYFts`mbl(?do?uzhqsok1k)E$l5!fN=*73Q{M+aU&4$ zrs&Vp*^5HyNy4X%3Be3JIWX=7pd(BL4+ z#E>pcz=MA_)0shH_QjpDg3W0l6ixOnyEP*YEngv{*=kW^FCyfzXwbA{Ol65^nx(NP3Hp?BOj|#PU9t5e5OJ6Y{vqvEh*fpR|cFpb(Q|N-^;Qa z#5vz?;c4CKoT$2Yi=CfO7aW7mD_wrBa?R0>LW)|xv!S`HhW3^hq(^r~RKx9YHYx_u zrW**Hl5wymQgBF<_bk6y14F_`;fe9nKth%vb_qb}azgmxPi&3D0&z9_Oh7h=<%C+G zPnwjp`7=-=wN?y*y-Rjyz3hTE+$ zt5_iKNA(V{PDFKMA7p-6MKiU#)C*ERe=x=W9xa^PO8#jJkSDv(J$)Gb(EJ~p61#wp zWe{S)f;Y{aRWMA$RPh*4Wr#mjakyRy8_V!_@qRmyrxOg~x>xrOQB>Ybr!J}d7UGff zk$2Bcj45U{TIIZo^R?WObkt9+T;QlfN$*YH&=?S(ha? z6kjd~CM<4FJgO2M&^QxUJ2_ zy{?(&=q-wXo~bgy-(@FZ+nTmozSC%U&I}fzCn?AUVqP%#6^LYuFr$e zz6>IQxg8(J$OGg%o4NVHVx?RimgtYfywG#P7>?J2Cx$}7gL>BOCTw?YkJNe8H=ESN zQJma@ZPOkSsEUaE;g+*CVV1#}8v8es=on^0-g}I5G1n%Nyh2fM$Pu{DeAXYpQcqbT z5b`#2Zo2Y8DK`nIL4Tv4wNxY=*UIgX&RJdk>%KgOLojDwPyJcAqxw}rQsgECGjl_h zd)}_vfB(FZaJ4EUXJFzj_BEtyyFdY~`wWA>`SIrq1y1~PxcUHl*S6!t0_ZmvR0lZ- z;8tn=t6lQc6p*O9=!JY42+c9_dsVJh`SA|B^z)hCOi1UDI4D9WRqLnz6ab78)R zM?-r{#u z$1+X=u|o#njF_wG#50_!lq|qgJ+L{}1mZE`1^odw(gQLkK_+FeD1s-#zSb;n`v*%x zH*Zt%sGF7>ag3+IL3Hq%DT|E;VdK#Ef@gi#n=ZF0FSGN^zP)m=QEYNl9v+(LYSz?Mw#yK=WikK zwzwPbWvJDK6(2)!+Ze3?Pm>2_;*FLFBQFIMcbNRQbnI-g-?GrQh!+P&+s5@O-c;Iu zhV}rPZ^8By5q6cYS*;MpHkh;0>hEefb3YS+;jS;0dIE66L_m1r2yds+$Yq_8P0iy1 zz+PEmskAN8^t3CB>6U?ck(Vxqxgy=5Riwlf(D2oZ1B|J;9gub*jG&{n90Ro#c3AxN zKc67^ib#2H)TSksz*K+ac!Wz5V7jaj+~6`}-CAr`Cr>Cclwwu;<3Z{7C!1k9Ql`}w zU+hvE#DUd~OFNJTkN`2=p9UnRbQj{gu)T9N+{P$GLV5RfR{e6)KKEtsy& z$;E}`Y>QX)A9h%QaCgdWul{H&RyjG|@l9SoGDMcGi)^-&c^LIk7_i;W{#6y7Y*qT1 zhWR~wVowuNclp9Q|1{w=4~HUh%?^W|=6Qodr=$LY-Yv_Z$g$BGsCG(v{a@Sm=F| zAuLq;6O^vV=N3?bO?or{3HOp7%U=w|QdtYCB-8|QVLQd!;&?J*~O z8gD*GKuhevKuEL~ge|GX=Y|Nwk(SZgV-E4t z&NV@{V|<%0g&`-2p{8&ZM(=c{9LkO`7#4~43LXqa<%&lenZ*KZ=LyLC6?gsgQ24Eg zaiiCrbpFe)r?nf~GR+6@3-GcJ5J)8nMiD_H6PH8Ra!aTkN9^VW-B}tQ?Ybors@IE` z=p*9G1u4Y3r92uz%OZ3sDJy1_umtvK@D10GEUkZxVG)8H8{f z;grRU1&utGZsyB@d+CVyBw@9~gu!Io8ttC^_Fy5D0fM{rVsrX6rvJzEIi1q#`TsM0 zk`bx0HbaHIQcf6$dvd&g`!TpRFtYr}O1_ctGjT~|aO=83`Vg01?Ya8QY~73Sp=`&# z|DIGEk_b!lxB7}ocW0$>ZbX00Yo69)NtYcNbFyh1ZZ<-Z0uGu8Q#>2^carqFl2c$Z zstfG=$#T+6>+HECKKPm!2itj@U4oYug+woNU| zAzB8-`e{fO+>~R+xkw1;B(SiEB}Levm5~egwr?j$zlaSgVAb5!3JE~cueq}nEOsZV zfne+7;z0-A;KC>GiJumy1>TPFIO*HRiGSe@+i@N4!gQo3N+Fx%@hJE_PFbfg>BV5y z8YzlBfs8{!1R_@$1L`e4o#}eNas3Tglc}DZ1*#RvCcBf?Pc2|-H})(^BtJ41|5V$2 z76XglQ+T8*^Zd2ZDe`gzYV?Wh@AO3TV|kJs-?*shbh&_CC|0VBn$4x3))%)C?&{wx zHx_gm6>(eVN&{h^N6lWQExuG9{;ozPe70W^w#2gsaqys3q=D|s4r28h9hXjWw&<0~ z5W9KwDDw$Ls8)OW&DpmeQH^w3<3v#8@7Bmac1y~23fdM@IRCplcJ+_e{ zPyDfohj)=-0wjg{!4m-B2?6ELl3PhsQMy55_<(2O_le~XCUdcQgUg0-;kV!iBwXae zo~ZfnFB0wE4k`s)B1Nbo&5zjIe=0JCe0yWGpfM^XJw>LwHP=NH^(M7!`-1=ICX z$}sV*@Lp>C3(&NIUFThJS48(A#`?VnoA~}bNqjGSRFXkt>L;a-RRWJBjf^OAj5Je2 zfc4frz+3q6i3eFGh+IZA%T?;D_|Ae>>I-h&L)yd?hEr~WhZAD7fEvynm2b=?2ybfg zZJS>6b)0IV`0d12>aX~HdURd)#uRhrL%b9e*vKg0G3Jo=7PqT5z|nxMzoa$k0-np(YxQTKL;L4I(R7Pu6+v@nHKxrJDfL*fgJaT|oP z19&v`5`0oUkJt2G_g=H0-SC0>)g)~X1=$ON=wsUC#NEGsdbI=m;xYoa1Gj;{{@9}J zi5A8K=yL>M*@FZ@1;u3q?4Tg~WPv-xQ#{cxD}<#&?!u9LfuaIOz5;Fmx2H!?5e^u8 z!A^M0`W(NJ@WF_Yh>5sBM#(4;v56==)t3uq=7<)ERNi}UJ%QzD?=3a?<|WvOigVb^ ztZtuAuS{5JOpEI!b0bOe9!6dSWn_cdoHGRqgA|F&pwYn>qJQXonDz=e0Wv|6JidmS zt83&QFuaa_;1?DXj#;eCpud$*?QBq9L4rxaz-{>-vJMJwBN?GrGpO7TupG2R7m)bY zJMt@AuCqHj$Cq5tGqc!eeIVr{>x~h^(HLEt26PxNcB(>gm%Fbc!@d{;f zq-v2~fjRL6;%alJvwL63XHfilG12&00Fm?{#kd|B>W+_I2HCl(t#HXJ`>$W=PXgp= z9Y!5Y&zO4_=GKr>Xn1?>I}mJ}jmsP}K0}&DJ^TF;+z=x4@hW~enDbw9Wpw7D{29rD zcvzb*s{CgJ>!c*r;Wp5?{OM5@`xRUSscFrv_fnL8UHT`?8F^f{Q#ai!O9tK`ST(nV z!HO5_#7f3m67mex-w!@dWfIa4#cN0Yu}#I!9PA07(_36QCEWnp>(#IBSCgjCyLFu= zz3TDQypDAV)@vtEM%h3{?H1r1;g6Ap?>Ry!9U@80ol#K_9o!L?RHw^GJ_X(pwP}_c zKx@eK4&espD7*t?(JRM^*(xO1ov#R*JU~Q3h)9Z0=!rJPHOp| zNoRucRIjyy;dgP~NBSDEfs;`wGIcM((U|aDxI{kIa+MJ~0Z}-~fHk0FUOF;d}{`F+RixeV(qI#}th@hK}1bP`gOGzfZ768$#6<8y`Ks z0d6UJkQ$zU+XHl|u;4DqSux>xUYXx)~)Z6xp_i8neH)W8@5U=qGk_3I02< z-OEScQ2_D=l%LPEFFaXac)l7;3;t|Q?Zs!v4LH1oCS>t0|ZUy|H z+u--rdO--~k!Pw+DFkr-PDdL3<;czpDyF#30~P+CUO;cJeJ<_+LoVPCZnu#Zij9*$ z_?Z1=%i3`WZ2_6U>(`yZR^lE=vasBEFVMOVfu$CKn+zh_YIA7hN!$hD3Xgs-6 zvb}_gpUKIQE9r4Mi2wF`gX%TtxOr|~JAnKzJTi1u0TZr^dbOXUs}mpWE!12{P^jm} z!vZ1xL<5d{4*O;u&g&%mn?(Z ziW6pV@kPRa8ljH#J8hwN#ZL+hNS=^AjWH1H-uDzv`7GzPqQuzs6pOIeB|cc$ZhITF;+1=CTe?p8E)H za1!4y4Q>q><)TqqI6Q{!4<+Ni+92Ypq4#5MgnmPI5cZs`o2GNv52>V(!z%uicwT}@ za?fNQbLyYk$z)!twX@u6CNK!mm~k3ID$+}&G17r&{-lt&7NRaYruapixTr{O^{n9w zpMAp^>N--q6^4BREKq>q9h)Y_U9@P5I4j7C3D@q_5v95cB)O>Rz$=X;H{VsrELae0 z_I!9zPohB7!?vLKafv@7hUEg%znj3{t67PB7#|+XRI_sj(0HTO!jY2CdN5XOUzK&@+%Ypk>%m;uK+ejZ|Ml9xuD4qCy+~FBJB4r;=Nc z+CQO$e!FB?B^#Ppc57nm^S8DI91^do*NX0v(O30j$L{q4FQIX+N_f%#7&=Oa2%9=S z60T^Ow!L?&t7HhZozQz6!%<7M-Ib#Gtvz1JHkU4w6XQH-F^!GmRT6J4kLl~i4-%JvZZ2DOFs=;qQGT7)3N+78sUbYUCqSJ@X8r)d9 zT_4kduCCIAl&ZM;#lEKPJ*ZCi1H- zxeBt%yUWlIx`Ug_{UBwd7A*Q>@D)^sl*qs!4~|9jl2``H7$BxX;mdMirUKyu0$0LO zX06GiCZaMhPGfmCyGkeb8BsNTat6me&A}R69Xpv@!B)P%0}~rYKmB4y_tf>m)vl8^k%|Ay!Y%y?pj=Bc>!Mr!*Ux8 z@HCQ{D6mn(%s$e9(DwC0(B@}<7OMy*z3w1os=E;-jF@7-)#hwI3AxIim62zTsXx1C z>p57d@sv?4S}#LQC?&n!x-h5KEK?5kGAe>Ci$Xe!|E>?nUFl;mcdVdZjGYlX|Dx(!_skzx9!O z;hlRCC&dk6g*4wyYxUjA`N+XaGhZhW8F-Z)^s_K|x3I8WX-y_|g$fu+W9N@xCQr&H z`92Ci-#sud!2LHiP9P>nhN>DiQQzu1Ao)5yL#V&voHG830i6m%4(W_wvEw04xGUI; zDQ}C*bf7g?Z1Lk~e1jRjd~OvdJD|k|7Ub+?4S}) z*G*iHpK8NKq><37b5b?n?6gxg80U<6D&#!f-djK*w&@t9^-688gqnn%q%~V^8jFuk z>s^XB*x2mzRBP-9f0QM4aX?Y?u-&lW-&w4^?3gK|h)NGJi5E|iQQ?ZL66Bbu{90O} z+*tbI8Kd9qd&(LXRnSr656>wHxf09AECYujBXL7qvKE>4kX-` zFMXP?h?N+}l@R0nba9{n6K&d0AuNSBvb{EtAF-eo>|_WdmxGtWC7MWwb&dY}B;(um z?%0s|{(-Ome7Qp?Y@SUzlnUgh0`(6b!+JXZ?=K(3v2hBLsceX(l>7f z3~?h!@fXo-!Tge2>rNJEhl(NlNih#Kx`wnRfu=WBSh5#yQs)LTSBQ4PPvqU9iuU<4D3k z|J1h_|MyEbJSSf@cjXkvjjTiNjOBkvwvAOXDMuDl1*WH3w*m`!87nKIJyhbZ&vM<4 zd*bo_WD?yT{#R4;V5Xam-FE;ju6VbFrKRwq!ylv;k?=rTmaz`!zYsl2OtN)uX{mIz zhS7^A8{_I_dX9_t35*6AY7mUH_j-MhHO^Y%yxZG~Tf0K1$DtaA@yzVlew&_#iS5An zq(eh*aIxrW`YYW!=yqI2j6;X^Qx(7S->Xq$_G0-Iq?}A!jKGi$C#@A9dcxiwH|RSe z9Fwd1?_de;Qv__sTCZyaVx;1&B`l$T-j};ITd&)3DIT7Ho1C4(uWzuIo`%hB{{R)Q zZv!v1k0WJ}{Ouw#ktWfe?QB$LfqZ6Tej|sCx+J+u`5S=-yq}AFPp4q{TkZR67Z0@_ zCSs^Adt1Ujc(Ajg<`E7Oz{`Wby9%1aq##QbNia7OLFzXyYp)DA@5Y_ZuUo{TP@27F z;`W7aldIZKn5|j4ps2M58sOwSJdt8d%l7cF7w5W??sCvljR=kY` zij2hQs?h!jeObN(Bs4J{c@R9D?Nkbv#cYh#tnb$Ly!!{BQQ>0d(9fd4%a#A%g7g(0 z5fooqzh->rD)2S&Mue~bYCjSYOTx&S!aUDJXW!VcY~OF+O0nw9!z`j(nihRlrYcqA>S z`MyrE8o@Mc8%ejPQ&l}HJA6MWpWY$r!VkrcI2ACQfHSM<$*#`Qd+nfczK1#$rRs8L z1oE@=O30<J}?*x{B{G2h3b+V97g4cMW|oZ*P4Q8Ayi$8f{fkI zQXyLt2J{IlSNf-mf$A8@$WwrRq>fjv2Iq^5ewAfkhRz=Bk!^tc^P==GJ-cAR?bvS4 z_MD(NHiYunpaG#JN0HejIiPn*?%kyBrFiT|SM{sOR;%EV=U3^E-D1k?yA-2$v;VNP5cfK+_jHz;iY08VWENn1+w+QwMch9O$2_a6uAZ!%-Vnq>lEOg76IIYJBxTqy1`6j`2FkB;BL^PL=9k)q3!kP%7W1g!Ds>x<}zO zAMvVhs5{Q6AWJy+PWSq2uS%lG3=b8I;(FI}PzeK_T2>5S9z}a+4&_s;yU`tcG2~n|js$X7XZ+eq(QLF{VK|q< za}paun>fm4%c*Wyr^q5-tU-(;!X`O93ZGbap2&jzXHUD3q!j_stU-a*pxw~&8qGqx zm9Y(o+ZftMThRo>M-zbp+Kh!TL$PknZT^#;_Wj+_(ba$sAtn$FBb$I5K_p@jCc8m z9tizXc+JmkiTEZ-Px+L>neEnV)bNf|uxiwJX8~N%37T3qxWN=j_>R+*^;fUQyZ-U{{`^8w&D z8y$tLN!vtlS_ynUp03MaVCvZdYy*J{iCkx^2wBG@49KL7utJ-SHs~3n$VS%f>z%bB z9f5r>7h`J>E-{4Zj#|e~0@@OAh+7Kc&*P*}j;+Iv9VVf+5CruoBY7$?yk$neZ%XQ+ z;}RYs1Cuh2P0e;uu{|Y!XQCZ^zTBc|r(@<>p0?H{k+_cBadK+!#aN|i=n-St+aOfGRnVgj9S?QV(Nm=bZEQDDaS(xj zXr<(2y~N0yY}DXWwBw=H2@+VEZi09Nf5RvCt^U7KFieU8gIEIwOpCUS$$ad5K}4(M ztNzIU(d(<;x8<${p<(jmxoRIC9w(`4Gbg03HENb0mbH|XtPK=TZ-;1}5xR{u*m&{C zGvs-wX1OVC@wZ54zrh|-?J@=9*zMmo6$CC0}pgX=Qg%A z5h#b^Bm0L6m%}5+5XXPzn5wBRX_K3*;=ko|p&sB)utJ_P@E<0=*f1<&6a_e~I_jk0 zhAICvh|9~u!;l^W({3{poXL*#cINum4v(OA=2O~K?TW!T3D7gl$@#hD(o-SKQcD`z z*3+=#^WZCCDsg<73IB4~ZBqO_QZu-p0S+Ka@^4NMJ=8?bbcx_qqpsI-1!O!7t|gBi zuOjWK0SpPSYkz(@T`&POOmgf&G>Y2rQpL*f8ayWgm3o(ennDc_4I3V?6>GPAdg5gWJmgXV2Kn4`M0Vjlk-n7SNeCPdZVM z(6L3c=}~ZnI(lAc<~bQ^Mnl!{$O*x?y%u{ukh&mvu%%@NE^8;1P4*1Rzl9H76ya@5l#BFdIy`XJ~J zV>9X#`k04l5e^UJ#2Q57l(7t?ulo@XL@mm2m65*M!jhZ*!8g0>&x8G;8k!}!9=fHL z>Y?_?Sdq+0aH*MXsZP}3i`soiD@yMYZ4)i^a|o>|!x6CW@O_!OLGoPfYPpzS4Dd@x zY$_G>G-K!7hx|dH@tY^WKlW;mq?JA$^=>?3>Yr^`8dgq#YwL2NhM%lYHQn)op%?o& z8!V;_s(0wi*CY!;iAGF0t*{EZ8eV?d??dgF+0k0Y)YnB0g`}PmgXTE0{ z)wgcG-_mltSlOEM6xIesli~;19mN9uaD8vr0we;t67t0(iod8@R;oIGP4`|<<_lk zST=^oVx!!SI*L)TK%elRJk-j`tCh-w+7mj4)445Z#Zs7HvVEl9)~WHYJ=Hd{P^grm zai!%!&;6s3dgDFu#e9FFem}3?F_hKw&C{QhHA}+cWKvVmAifMxJL^0DI@%)0&)0s? zCSfb?QA^PORj~bJdmsLXu013F&^6ohzu9qeBI{Dp{DUG8slSNP;nj8TkPp^mGwy}? z_WGxl(RiVe=1;f%@pu88t4hVFZh=al#?2J)8UmpiFiO!3OF5%#>=UVP^jn|s=E;gpIR9h-+BHW1>El6 zW?uz%+vmstCF7GuhQfRiEDa-q5BWKQ15X^>(`WcJztFqZ;*ek{2frkhuzTP zZ~r_zb=-ctczbRH-IF#o03Hsjgf8~C=`WP;rpRjhmR;>SVn_8qQ?zlQ*M~mtZhFek z7kG!wSTnNoa&JHLjt2#l5@xrm#P7x8`KozsE3o@ zpoe1jSqYS;@MAhX!Ak+m-Y9HGE=8BZW5j^gx>8f~BqVwssNRg?doywQZ83j}o|%(F zSYVCCpLl$&;G=Z%DYmUWV5#2hgrCj?)W5(lN~Fxhp&B>1wAw`*8g@sDE(8iub+ddJ zi#t+=r8BsEyLHh$J}$G=qNYyMN(0ClFyT<;P1w5PH5?_zq#WR78Dvk*X|+tZ4at6k zm$Q+Q%2d6;ybg~O%-sHrrYL73rnc5AW{zAYlIW@~4M2Wv0If8~hKvVj>N=C(B~X03 zx`=-SppXRIP;AeYy$!~|EMpQW(T@gURH>Po_$a{bIJNos;aAG;d)!OF{2K}3>X~}~ zF0Y3Vp=EWh^0Px?Qs|Ruffn#3=LAmk$%xv|USQWmpV} zSY=)MOZM@=NYSS@qXtVvU+qZlXWB(1-Ym}hW0nZfgb4Y8C;dEMe(^00*sTO&%n-_4 zItid4tdC6UIb~Z!a)Bdlw$7O&l0{DsadgiD*;tm4E}Ze|mSD-&GRgQ z>D=KUOs`!lESv+KtAPvA{_X&RkhO@>b3WY_&ndP(!Slwl|oCX(7B-s#~ zLM|7JSnb)?agnqe31r6OF&BlQ8^#J30Rc~ttyNN`LKIeB9Yi9wn7Ku8LsaT zw>OC%&O(dV%V}2OD|mR%&KjU#e^)Q3kyq@pESTp8Yp@(V>LElcLH~Iv2y3_@9^}&tYq2*tbERO->W6In6Bm{t6vMn9JpFkV zl_cYT3m?J40F?Jkrcs1#Gt`xmym1#E>LxD|Z@)5D)up+Ql=|W7aK`QZb1aP{M8cZly>wAxD@6QYQjwBOseQ8K9(S-&dyw!R6Gs1; zDf!X{Gi6_j5;N84RXDVQzMtg2%;jX7t3&5>`6+~GD&Ync(;HMqBa=r`~_M>)P?#qj;&Zn`B(aYFnUtzmGfZ8@1r`i=E&n6;{?0vj8-e0FV zAqbA|n+{$r`;lYis?=T9ElG2WI{T@tW550F7sEhCyJ|1BQ%0o|lUz5v23#9zpr7@L z@-e|_L;tGGQ5}!ub^l^zV70ZMEgg^7T8c?g<~Yv>$AcME0Er+g?eJmOi}zhVVuRpw zizF&v4f$xrm&)!Z|1DJ=R6`}q&fNK5+f3G~|1NR6AyTH66V@9+pruxUBEo$@N9ObU zba+Q0EM}RG+Kgzukqd z|Bc)NKuw=H%bWpaS4Xr-Mp5DAUYRRtW;yBb%gS?+<*u@~S3^N=>D>V7qcbf`&a%?fW4nWu@7Y3J#aDDISx;I z*iPxjZ$I7bp;+Kp6tf_r(F2{MjI%eDIJntUsUTL;59~Q1S*O^caiMX!a@LJ|*2ND- z&N1W-%H)nPwVcvtd~=LEA$%cy=c#%PVOG}39&3_Y2?(CX#tj|dwj(QQApnp7wlFAA zrPi}*g29Etl|GQ;3TqjE$6#mkFM<~~B#?8UgWp=gcZKOWo|DpDaPxo z#%ANBvQ8b>v(2*7gIFy?xgu^y_xCuXtWOy~ZLFqC&@C+AadMg23J*NrapDk>YJr-Fg1F2)gj(642g*4E`Z_}P;bvXdA8su5f_|x}P6)*lvQrF~qvTWGD9hQ<-Rev@_-Xua; zZ3f+2ggB~ew{LL?e$ggVn+Bh}!9sHr5fKn0r(%jJM>pUjsN2o+0-Cwxll8)uUH9%y zT$UJVD}#Ue)d3X)$)AQ3`YzTuC8G!N zXWQ=s8Sh$bHUMH~bt;>AHBC57H0e}pwV_PNAT#5!liuVXIr`c9*^11TWr;_EYwVl| zJ6t7DD{$`}9UlVQlAlAFSiZSH!3<6dn27hBzGGd9Ro)sbS;_d8)i98tUpSq;N#$|r zR+AlI$5**XMx0!+h%DdP9WaH`88GE>nRj0LS|-ai)9cWJYN&yS%t+M}&TN(! zOrme^i4Vio70dcuidZiq@48kRodCC|5SmGPRkd--Y5#=bzP-41g*|+S)$&Ry5BReF zuBo<1iJK2p7|!37T3yH{&)CXo&bKpnSe<`pe>@W|s#T&2OESiFbJ!dhliYDN&6A9{ z;)Syp65Aj)+K%m`pV6XB7WI8s4c)r_1CxNvne9u7z($OXiHmR2tOsSayiPCZcua6X zEmU=Rz)zDY9w(<}M3z*@!^voJ5yMpCpM>nilcNt|6sg%e@Xyp_{ekNxHuUt42MI4( zVJ0v*FqpChjyv6&&y7GoL)t`P5<_BuI26e0b8~feW?lw2bZRF6WoY0b7r5GryPCGR z0fKy#fta2M(i_^fV;yo2EYs{9E*2~rdw+}{VVK96Jy~1~7{mT%Jm-+{7cM~&LZ)gH zp2V7vVzY(R8AEbvO7Z)eFcJv@$*OJqpRuTF_!6qpaZxWD>aC|E#!BI;6fsTWFG>*z z1DVapf!a~z_<yHypM{5BVXOhZMv)OmKXQW~aN_ctL2cY;@O4$Q}T zt^7a5=DSD=f;0(hcHi**L1e28cO6PbHp50*)f;%53gig8oR&d)uhBMT;aQjD64`Tn z2mQD`bI*^hV!5bgvlO2jHg-AFWwCNYg5Six8uYv(z!FT$N2VT`v~d>bgWM^)iT%-4 z$29IBZo?-2OWOefSDiEHbeBD~8kV1b{<1y0XZLTt7E_w8Csh0*I*5mdp58*{?*cQ{ z#0lV-szx+R8Rmmw59=(UQLaW;t;eMlP>Wlvz|GBAZR|t+#X<_hYbPC1&%C#tec_MW za9ZN@tCa&}eRb*z6aNz9U(V9$*x0&bo#~E>%L~-NjT*`pwzvk75(A_PD>-X9Xhu%y z%cv@c5>BhrgW2FzIL4gWIRMez2M?~%`^z>-QBpu~!mO5tW7Q!|w1z(fE;4KTj2n%0 zzp#Yk_cZF^beu+s9}{PQsn&eKEbgIhP3e4SH~+g}Hhrg6H7p1Zz2s4&bY zOEE1?Vf^JcHpsqDA~CWKe(uG;@CeKCy0~*k@3G2Nl#8+!tZa4f*B$^`)XDAiH9y-b zCn{$yutma_<_dgXXu|ftbkki*qZ?E!vzpCxDgPq42d2Jgc?wJ-s4Unh!OCfNzu@7< zB(z>p4cx+MYSoT|mwUAbC23`#N+SX2>#1{P`sp+7LcHvz=`G{UBHm;jJ_gw#T94ra zCSCv8)!SlfSMj#T%`M+5S8Jg0K`zlP{?Q;#AIBi?pgKp0)35njhVPwy#YUC`)XMDRO7GYxOM+cuSBshW&;tSILTsXsTjAl$<^VZ zzhb0SZOUx}-o{{inqG2W>Vj{OBtg@DXucX$?26%e$Yj-Kn5+#}8xCZF=-{LYK1vpe zdUi8QJxEG=5Eta*J8ku+WAVN{2^tL=ZG3ifQ=oXffJ{N{r+7O)zf`M$T7X>8XvGg~ z--rl>amSP+;9e<`OM7VR3tG77KwzC_ZkL!iwj*pbm-8O|McSnA0^YQi){ z;fz1T3V#zgBSof1ZEZ%IsrQ7$fEws}#_b01e{q&3i6O6Z^Nb5I9pd7xcuRRaA~E_% zaFAcOStwb>_Y7PLyQL=guli0WNB6lF?&7&^Z&F||r@M9>Y7Iu9j$k6Ssfsy(R7p48 zt&B0qv&%3^c`7J9$j1!iA;7-e`5UB#1jrWxK?FV_fh?#IEGipSC$Rn`f`$h~94yBl z8EOWK&|5HD$#)hblp_cie0$`cv0Iz@l>Y=f$kPjGUdb;P47mk1g)iwK4>FE^@1fhsuH>EE*Sa) zteH8$~6#*jv>fYozyNdGvw_z)PF|`7Di~lY<3*0E{XcZt zsiDX6f9N!Qm)TPN#j-v#?P4M!jSM8Iv!Q}KjL9a&RG(Y8hh^JKSE;F=47-g#xFwE_ z{Qir%VzR*@>pQpJvzth+%eWGMmqn2huHp4men1?v-QP9c&X8-d=UMuP09Is3O5#E0 zn=%{@3V}Z#DKyDK#j7>kD2FBvvj$wx!ZU6%JZ_jjHni-tuU^ zRpl{4!noqaV7C3Thuy}A$sPhQgECWA;6kbVf8?8E&3oiucv39)W|RE|jvf-?^lm6!Ih6#_!Pj~ z&eE`qZ!|u(|9auVw|O$Ub?ffwj1ye7WD2LLTIz4bD#nGh_zq-k#XK*QtEIr{8?BtKfptkG-ylk9D&F?*1xYBAd2bQz-K_qYS5$TCSPlwI&pnGUGRA2-)US_M*g+)8}~=HqcnBI?BLDnjT_ze zJ6>L#qfkmVqiMioF8!>Ikvn{*d#W`ny9bBG^RCI?6DL6An763LYb4TPFE+2-N7){$7c!I9|4 zh#A)LAXPjdn`~6S$V`N=i&azDbZ;%<=YJF0no_KtYJk0#OtsD;7^lKOD6g5>obx;2 zV%0gU2ad8a&fs{PR8U)&Q0lMBWhU;*qJwY@2Zo8YS6r(cP_jR{uK5a!Oo`+Ntu5|V@pG)Wi1pOkkzy^#+1^r#S z>L6wzkNt=SS+|^y+%s{`fov>ObAMdveBi$V7aCfINwE5vp}?~9k49IU=Kudbt3S69*7 zd9gpUy8moB0*mBC_7W3zI}C#zA5#U|Pi>0*vM}Bg|AZ8Uh~X?F*XQWuKMYfh{pwH3 zZ#zIsLa+CxvlHrRZ|4`tGR!fQ_ioP6XHggQn>f1Qr0;he#N5>1%98O1Me*^s;YqJ$ ziS`zSV4uX+Nr@69o50CBBmRi2Grg{p`pPEyOnpTFOJpwikMqT9tCPo2V0MEd)%lXw z)l~&ag=K^Q9*Z81`A>90N~%8h@Q6W#%4_9;us6R2XgAN#F1^pmV4__I?~iw8N95(> zda~i+96Qn;0PUC5(&#LjdZB(fdyB=Sw&E(6FIG(kp3~P&5y0aQ6&(B;Zv((#X}Ge( z*mIk)n2vxIrJb9m9lq5HO&s>^_}QxZQZmOVJH?j|1}|mnTdkGk3}0{47t6l#(Hp6Z z;Pc_U*kaP6kdpOgw`ZR)Ess-4pxp4z*TqbU+5A$ zbAH3gIFNmjU0yvzzs3WHE^Q~%pJ#(v_jZvyEse+quUp(DRQ}LzKN6IEwy{^wWr*3? zF!R#W#x0!oEnJPhNZK?0$pJzZ`hQEjP`H8EQ^>TH=&SFkeE;=B$d)*uQ23g zVAh{d+c6a>@DQlQ7_*T%1ob%c%G9&#Vi*uyJpC8a4=*by^`O2WThcR=-kOX)lS{c2&S{d`}mQ`a;q^Q*q$ z=11CI6tK~*i3`Bp-95S5-Fzb?`&k%ZA3@kphL?98DNzgKvS4QNGP-AWKOC@)h~{4R z@T!#j_VM#nu!gKbVy@rlis#({u+=p3S_(fxuk#NAzz1g(-UM-^5#(KkEmx;NO?(DcapZ#bPE66VbuJzyJ@T6eTb#W3{%s%kwlJlZufTI$7X_D@Z)T0yy^M&u-#h- zQZYOh%IYr@Rc(B&p5lV*=CS!rEG#Hy~+9P12Cd?vO16n1Lm`O>FS~>LVEd7eoSIl z=7+Ciw!t7zLsIJ)n}^t*O-BuLWev@gYJINM`}qs&G$%8b>R zH?UV0*zChl?kf~F|En%Z)Fe@f3n!9o3tz8JH#ba9+h7M|LG+eQ8taDz(k?(&;18H+ z8@Io6bVM6|ToHFQob6;dk z7BZrbdePfA0U!}R66n+Ib?v=F_L@qC@&2!h8bP{4fZu#d0?tjdw+E4b=K`8@V!8wi zjpRK@RV93QBHqkE_2$OWUslw^;#e)m8f_Z%IL0uGvrS?&s>?UwsdmUzM z*u!1Wvm7>}&=+DBZ?7KTh0@n&)7~^hi~Ve0g31~X<(`8F(_BXA-K@wUMXy9C*iWIp zWQ*g9Cj=4Q6gbIj%mm)_G#{j2n7t9Z0Z?F8g7uX}ncPtKTZ-Hem8|stR+#NzYq7gw z1UPdX%A!ZV_ug1z;JgOyr`UVLjXmh@O~Pw zU-#$1ssmBl-if85YK&zI)sT%$lUV3uQhS9plZDvkY9%7hlXn_zGH=wn9IclRf5wPf zW0d+EmZ8<@GG6{RYd7ZX1?!kW9*3WO#SZrwfS|iHq}CrX{PXPx86z=YsO{&k>Q_cD zPw4Lp;~4>^UOno!Bnzj1tJoyQu=R<2l=NlgS7ns+pM+uj=~pi7S4>aB#zGoJ&N(U{ zKBhl)OxoXaf1hx<06!$$9?Qn>s@y|kwvHqdx6VTjU?S#fnr8>HLr zg0~h(QR^!&H&1nGetAm${pAVY$#;1yGI@3Og<6X-^3V1;SRd6#UuqH&c5jV)A9Z{_ zX;T!PF&p3=G6%b}9pv{N;VZ@bqDlzAwnx*m*sJ+3J1u8zeKDN8Q644`K4?$kV3O zjgL60PAL4q?V&-}Z{76J1ayi@=cxoG?w!*fAG7@D{73#N+D}!@sTtn&P-4byeStlQ zZsh>t=^&Zf{?!+9l7lOx5c5{oX*`BeiK99%_o|xFD8AJEos!c%4ZG{oP{0(=~F#-fqumG znWut6ZpcRx(1pmVO!U()qB$S==XJhQORJ}QFK>`{@9WJ(>Od8`H-Ivu0tWNMSIc;H zLBF{Zi6uq})Ce?7o^%g??+$eBx}{;Pjw0s0X9nCaKJ;m2)p(nkmNG{Gb_V$c+kHRq znI?{Ip1+Y0bRiG>`&-Ep8%fg;-DJ>q$v>A^)C{v!Snl3Njq&f#dOF(#WfIa)5pY{L zcTeUevTnO!O=h#KMmOyiH%d-XS;UzB5c&Jr5T0aF8j4(&{3+kGO3v%DNzibmTU1M3 z`xKz>e|L0yxju(cfEXwHmLynL&2+eTFsUa)C4E{lQkorF({Hq~i`_WiNbcrA_rb-} zO*fP&%?!3oFB+$_9-WRnl+sF9xm#Yj6@P{D6ZOGvXrYc?Oz=; z1l`sPWPat~&LmJ;j^3mB;yDQ!&F`%H`GaEEy=P$Kx^8t%?6)pG1@8z!qT8wZQl8aj zmEqw}JHYqz8b<%`z&!v~7V&Us8L?1&gI$CoLu!Eu&Ha$qV-SM-PATkF}0Be4z}x>R0-T#Cc1^g;{Kw0%km^s^J(ms z2R1B}qjXP}A9NgMF{M1-nVCgQZZGRv{Rf0?oSF&ex5#_` zKTNv_*Or=wuzEL^l3ybhc&nqiocgP_3$$FT);LO-$;21UV+}Eh0w|l$g@PYx7Kxsx z@n(q-7Z2bs6a10ZOtn=!1Pe+<2ufE0sqU!TUtXCTJ zyN=_SIul4QGe>LIgh89%1OwOtFW0+K17A0rC$8->K3p^3s?Zp{DLycGYD8wfsr^O| zP!aF8N-7LdV)^>%GGiuXJ;QvIMio)>^?hEy?1>2<$4Nl_b-VW}q-L$6bIczK!Npy9 z=6_*ECV|{pqoYjeZV)xbiWLUe5jp;z1j0;{o|^{2GlT)80lAx>XOdHu^eba8hb$z@ zL1ugvgQuFk>x0JdqYa4`iPquhA{)D;!K5dn>b#=O2{_I9I^Na4ba^6&VXRxBX_T~} zE6`#^-21Sp&^ZUu3e`I1fY;kZ>hxbB?4I(iS8PhsI(Y7oaxZX1-#fzk;r3h84Nvt= zwP_rz;1BV7;KFwT7q-o&Ya@Sf$G*ZAnd@rlwgKm;r42n+zy42nfwg&*m%jeP1lLjZ zHiz60Qht6ay$COKGI_6C}x<*ZvRYZph z3NV80VeqtD(wj5E_4#W``0`+Wl0_$+w^(h{uFF|IhxqetR4rykA+-pJGZe+v)T#+@ zyXrUdmWLVd2+OhS9!A*ULO|!s>i~;RM39F#Ag_mR(04@#a{zSIin97^ixY2&Is|nY zZz-y4VW4pGiOIP4JF}3`AYw?5dB*+(;ArEW47*!tjYe04D zEzIx%)je69il0n$FIhL1LO;|&T4q9siF6xkd`T>yr(q0cqNHFot6sO=lgD>zk!VFn(_4A zCiVPKbiUPFffJ9=hi>9NmF-Fe_ortq|L?lGoB6NP;U$4X<$BC8-5kY^D-?Q5Jtwd! z8+}*4MpYT>{e~k~a?;COG47@|Mn#)1bA#vVt61x9dS`ol7q3(S`#v*09J~(n)dT{` zapw&boA)F&%=?BiMu()sk0~Ri{xrK9eOlu3D3l;n@tbb(dZlt(0kk3>nGH5S`iG1~ ztX4}kr_7Scd?%4z3q9f8O1gjr&DI-}lIRbS{%@`I$-49N%l1!hXO*R?uQYE9nb_Kz zpDzJMP}=-Cxzy<6<=aR}zusVUTM7q_Z9-qZ2gSSt~~ZH z4zMr81Q9B>Y4y3okhcAdFS?Fy?5XEeY5!=Fl?=pJ@Se*IyEL2<`Ep=cXfc!v;PSdJ`?9$v^PKKu1htcA5adZ^sUx5BVc%ZfKce&&+|A+Ma~ zxH;aLt}-ag&D`^NRQBVC;mG_V{s3e+G#dOWaU}yvDYOP0%=tLO1)Exr6cN~`l*Qdn zXIg4Qsjujdds>52=V+9T`4X~!<`A)SK{@xG6=qj zzavqjH;apl=!u#l@|Nt3+2!oy*WP1V3c}*H6P--+z?Wz@qYs{@ebFc^nK>xpQS=V6 z*Jtn_KAzT+-2w`p<`CJDSZB8K52OP%L`iQa@2C+n{LEl?#A zO4+1o62MRXi8UjhQC$0UQ|)>#|MB|+>oEfJ8fhAI>;xZ z#X{obb**UP@STlyigu&~lHA6FgzBP${umw|jOd0pF|VK-XkV-(hw#&eZ3Nhjxc^#? z^&w_X;w6fK-=fpHv}X}<81d)!$W5Ra75eiqe;$Sv+Xns7Ozh;B@d9p#(AOR7auco-$i) zYcSI6ceT`;es*n0v(pEbcB=TgOn^^`oBHl?aheeJCL{is4DJtau0(3V&cOwePhQvY z0A3%5TVkckL3uiX83W*-_(AW(sY2YEYQ3yxA6sf$M+LAJ^yccHMZToY>I}Z9rQBwR z%i={nKD}-0S<$tnuAF8c$75Td0vs&z)>>;&TD3MBS65q96W0^Do-B67!BT0`Xz_{N z%HGG++4k0R=6Z*|ukXG>OY`HD#UTB(pX#3=8tHB)4fLV7s1snT5VcrAISoopaiKX= zs@mw z3UJk-`EmPI+IcP}l79$Kb>V@I;LyATm@_U)+SNQx#sf07rffBPDJgBNyLIo9CHCav z_;wd0+1D@^Qr}r3Ko+Apt72^AaakEr_1Gx?YcgR0j_||k-Yx0qpC#EP#e_(VdXX*G z?@B#>R}J$p!bzkGNy_DovXk(KbDCnj5cQ(XQapuzyz*`e&LtXGzfO`hQAai`f-xIu z-VW6IU1AW82=M@oNI-*nMJYuYz|Mu4@ zoQpuBq$;Vb+wu?NeyjVR6_b|@r30CYyfsH?OiSBqM5sG7)*s+@XU)DD^QuH$m6OeJ z<`vsa`&HK+A0}a*Y-$dpiCnxqfprGg+!$I#s7MuQJz2`N2@^~s(b0rm;D|`sbM4hP)vgp%~J1-4e6em{D1xmKJg;Dca2pJe~E%6dTe(K zJ^W+*&#=D4$z<6;@rRYl;-Iz?`Dxo+)J~o^((ky>!gZo_Zl#jvtEtu|c%#yE)_z9; zQ+q*nIITWUmM<`A{hnq&rdMVzoqm#id|j5}XND*&b&Vr3_{;?{|En?FtTE)GvgCyB z@L7P%M#=6D3ncu3Yh%Kyo-_Z?YztreGv2`LpBYLkQ`a%+4sZIzd?}W~QPlzp#eXNk zS{t{AA?!R0M}tDMRWsVD_1&=iJWtg#bug%Rk=$v=aR*p%!<9asRH`{~nBWYcJlb%( z`p00n$sm}s7;-~9P%CZ^u@ABDTNfqOm^&0!c+?U1x1aD2ABDFyud|01`Lrcgq^$l%&s}=M& z_-~Fpbe&;nC~uqeA8;>lFGP5L!8-ibHWLg)OuVy#6HX`@dLmw$1NvsIaVX#lmd6l< zKN1c2_E})$DcB@}o}Wb|O2n(=T_h5Z@I~EwLHAa|4@}WVp6RFKXmhYdw(ND7ak%i> z*q_Nk52&Nx#+Ns#><^v~5oiRSxd5_Sr<}dwxttubr_8_W0%)xWUnzdMlV_jzV0JVox9sfWzaaYl#BfNIuQ@7m?IS3os*PGsX06MDwL0MOZh24ZguA68TV8<9RAmE`@&56rRJ64`bG8KPV_esB zCt$G8IB+nme~&h7edXWRJzEp3SrEgV0zuT(TJAYo*!#`HrB&lUfZo!Uz-PV}`!4AX z=2dF46LiVNmZ#v44Q?6Ar8IGgPstk|Mma`&#z%8d`Oq6_^=T`Yz>HJ?X4S`bRFxnM z@}(ZZrT|;Uqn3omy&7SV7@2(~>Gv&Di}np{5hN`bTr$DWg2O4u7lEX&s%fJ3UCJES zME6i9AzSCLGR6wH02}RPgpy4bD`{fzPDU=Ngp{M!A;(|e-|e4!$mE=vsZjPqRM`JO zz~;T5!%mk*b?)1)TK`_1%wJP$?Un)NuTi5juYDL0EL(gyQW&l~V5iGNeO~2Z#>j9!-uNtyssFgVmWN;_|p&Ev;d# zPo5fdIyK^CF6BW(PjJJ5U1XQ|4x`hPW={r%W#}YquYqR zBX_kQix5V<_vRS?V2FwkED=a(u5{>o?ug-cbN%a0DIbys#auvncTETEjMdU6o+Epp}!g)pruR9@|FI}g4t>9U&D+2UwPrpd{FyOZa7V{DCcPjxJ-AgrZO~c-= zMePP@#xoy?qPiV2V2c*D%Wx}c=)XJ*BH*A{3t?$^8FlMHhL<3a_FsU zRc}Y-@OlC_=(+&+aNaYx2Zl9`63>TD6K_Y|%Z^9k`(3v1ys6RW=A5;e46@<( zbhNkIh|=f-r+XTk&oQ4KlR;j^G8;?V<+p-)UA{ieM6bK;x`Ks{>fx72VZCL6FvXTh zdgCY;X9knRhNg`hL|rS1xmo~+^^;Miyh9hR%D0WB0wLe^f*ybHGHAW>E){bD)qCvOcOk9 zxpYIDe;KQD>d!|)r|I{?sB(=Pu=#Zb^%5PKVg^TlSKNfEcs|xy=^i3-B!T+HY>RZf z6Ztp(lnh>8(!#--);xkZw`X8$PdMedLaUj`DKjhtS0=5-Ke6781JmA(4J1D8{1i*S zT7|#V0vlEE1Be53YflP)~cGJ&;|{`^SkJG#s98fh1;=E*!IhS zitI%NS-kKGB{7ivb8I-;3{mJzjx5z{T|^LloPk!BBVU{$;N6!XO1wW~o+^0{wxHne zJJB@o2Hiw1i7bm{dm%x|ZJEnUcgSf>q+Jfzh49AUR`~50g#D6Jc~clm)?H2?KAlHVNZ``=HCTo@Y{~!fkFnYX+;Q<#9*$z*6+D6p}^$wDYt^L>N3lb1yV5 zazOKrwzpw4NFrm#?nAxAI{%B|qf29=W@ zqDO)L_ERep!-YNXdIat5wQ!U=K^pDPsR*p~r`dccLtyGM;qs^v!4B_EJ6S6cqrgaC zH1`V|E1}suRMa+a#j3z(48^a#9-0P(Esp(bmbR{HqxW3xVRA3ji1Epn>nY-@1^sPc&v=V?Zu$3vP?{*x$BuY}6Ys1)OFBV$SWC z39T;DG&*JF>&?t!c_!Z3uor?Dyc3?+nuS{({B7AH->ZKm|F(6LDO-@1oX0K4E$8VK zj(&c}wKpt`K>xqeMLziMEo4nwCL&%fxU-Q&=0}BRIHny2;$h>M(}G*GO0RHMwwOMX zG^Xj!_nt0ruCc$1%Y2*3+vJ<>NV>HUbj2(9^oc@{crZj&Foc{Rh=8%l5~_nk4kG<$ zQ6eqp{2D2GdsM;Xfl56lM&~N86-?VC2Ko%dA9#G5k%Ar++7i$RWWh;)MpY64HGrS1 zf`)1sf*XZ1CQi5)XnAe{vkk}n?FsiaBP=jmc&{*|h$U*l`qYmp-tvIX`xNW=Lb~!n z-D(v2i3$(Yv)JFam~^XA=7{ZEZicc`_H0S*@inTht&!O$stVeWh6mcv22M2g}9Y>m;J8_`Mv>8{p08geOl59UjRG`K1^Tq1S; z&{0KGYKmXVKj{|&FwJUO5^Qmq-`R)^h6jKs9w96XX2Se6Zky6{oNVZ$r{VB>S^=b8 z`lm{1bQ5BZ@dcy6s3F4g-30w(Fa0N43Z}M%Cxqq_Qya0vGC4J7^T3Y=Q&JAYF9WYh zNVi&HY*SItG`o1%@9AQi_9JjqKIJcY-YvU$p1}J-n+-$@LR$<0M7un2IQcgGEdhr}+~#Hy1d2`^+;6Y(Q4)~i zKR7VpH)KYp{pk`Fde!bdGJxYv^9vI>X!

D_MC~)tG{pt6I8ilI%4hasm2;`VFgw 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

oF-*hnX*U;v|JNTLW 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�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�z184fme13c9B8(CmOIC4|rbvzwW!@-` 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 z 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 bool 0", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "", - "metric": "pd_server_tso", - "refId": "A", - "step": 60 - } - ], - "thresholds": "0,2", - "title": "PD role", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "Leader", - "value": "1" - }, - { - "op": "=", - "text": "Follower", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": null, - "editable": true, - "error": false, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 4, - "y": 2 - }, - "id": 27, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(77, 135, 25, 0.18)", - "full": true, - "lineColor": "rgb(21, 179, 65)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "pd_cluster_status{instance=\"$instance\",type=\"storage_capacity\"}", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 60 - } - ], - "thresholds": "", - "title": "Storage capacity", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 8, - "y": 2 - }, - "hideTimeOverride": false, - "id": 28, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "pd_cluster_status{instance=\"$instance\",type=\"storage_size\"}", - "intervalFactor": 2, - "refId": "A", - "step": 60 - } - ], - "thresholds": "", - "title": "Current storage size", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 12, - "y": 2 - }, - "id": 30, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "pd_cluster_status{instance=\"$instance\", type=\"leader_count\"}", - "intervalFactor": 2, - "refId": "A", - "step": 60 - } - ], - "thresholds": "", - "title": "Number of Regions", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgb(255, 255, 255)", - "rgba(255, 255, 255, 0.89)", - "rgb(255, 255, 255)" - ], - "datasource": "tidb-cluster", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 4, - "x": 16, - "y": 2 - }, - "id": 65, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_up_count\"})", - "format": "time_series", - "interval": "15s", - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "", - "title": "Normal stores", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "editable": true, - "error": false, - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 4, - "x": 20, - "y": 2 - }, - "hideTimeOverride": true, - "id": 18, - "links": [], - "pageSize": null, - "scroll": false, - "showHeader": true, - "sort": { - "col": null, - "desc": false - }, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Metric", - "sanitize": false, - "type": "string" - }, - { - "colorMode": "cell", - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "decimals": 0, - "pattern": "Current", - "thresholds": [ - "1", - "2" - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_disconnected_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Disconnect Stores", - "refId": "B", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_unhealth_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Unhealth Stores", - "refId": "C", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_low_space_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "LowSpace Stores", - "refId": "D", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_down_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Down Stores", - "refId": "E", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_offline_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Offline Stores", - "refId": "F", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_tombstone_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Tombstone Stores", - "refId": "G", - "step": 20 - } - ], - "timeFrom": "1s", - "title": "Abnormal stores", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 24, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{instance=\"$instance\"}[5m])) by (grpc_method, le))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{grpc_method}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% completed cmds duration seconds", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 32, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.98, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket[30s])) by (type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-98%", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(rate(pd_client_request_handle_requests_duration_seconds_sum[30s])) by (type) / avg(rate(pd_client_request_handle_requests_duration_seconds_count[30s])) by (type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{type}}-average", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handle requests duration seconds", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 16 - }, - "id": 66, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_regions_status{instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - }, - { - "expr": "sum(pd_regions_status) by (instance, type)", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region health", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 68, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{instance=\"$instance\",type=\"hot_write_region_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot write Region's leader distribution", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 0, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 69, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{instance=\"$instance\",type=\"hot_read_region_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot read Region's leader distribution", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 33, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_region_heartbeat{instance=\"$instance\", type=\"report\", status=\"ok\"}[1m])) by (store)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region heartbeat report", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 67, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(pd_scheduler_region_heartbeat_latency_seconds_bucket[5m])) by (store, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Region heartbeat latency", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "PD", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 82, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_executor_statement_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Statement OPS", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 34, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 3, - "legendFormat": "99", - "refId": "B", - "step": 15 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 35, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(tidb_server_query_total[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} {{type}} {{result}}", - "refId": "A", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS By Instance", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 72, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_server_execute_error_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " {{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Failed Query OPM", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": true, - "targets": [ - { - "expr": "tidb_server_connections", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(tidb_server_connections)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Connection Count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 36, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_memstats_heap_inuse_bytes{job=~\"tidb.*\"}", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{job}}", - "metric": "go_memstats_heap_inuse_bytes", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Heap Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 70, - "legend": { - "avg": false, - "current": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_session_transaction_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 71, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 37, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Cmd OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 38, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Cmd Duration 99", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 39, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_client_cmd_handle_cmds_duration_seconds_count{type=\"tso\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "cmd", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(pd_client_request_handle_requests_duration_seconds_count{type=\"tso\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "request", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD TSO OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 40, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "hideZero": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD TSO Wait Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 41, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_region_err_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tidb_server_session_execute_parse_duration_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiClient Region Error OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 45 - }, - "id": 42, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_lock_resolver_actions_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tidb_tikvclient_lock_resolver_actions_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Lock Resolve OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": null, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 52 - }, - "id": 6, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": false, - "hideZero": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_domain_load_schema_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Schema Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 52 - }, - "id": 43, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": true, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_backoff_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Backoff OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "TiDB", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 83, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 4 - }, - "id": 20, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{type=\"leader\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_raftstore_region_count", - "refId": "A", - "step": 10 - }, - { - "expr": "delta(tikv_raftstore_region_count{type=\"leader\"}[30s]) < -10", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "total", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "leader", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 4 - }, - "id": 21, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{type=\"region\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "region", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 75, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{job=\"tikv\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 74, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(process_resident_memory_bytes{job=\"tikv\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 5, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 20 - }, - "id": 44, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "store size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 20 - }, - "id": 73, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "cf size", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 28 - }, - "id": 17, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_channel_full_total[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "channel full", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 28 - }, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_report_failure_msg_total[1m])) by (type,instance,store_id)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}} - to - {{store_id}}", - "metric": "tikv_server_raft_store_msg_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "server report failures", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 36 - }, - "id": 46, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_scheduler_contex_total) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "scheduler pending commands", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 36 - }, - "id": 51, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_executor_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_coprocessor_request_error", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "coprocessor executor count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 5, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 44 - }, - "id": 47, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_duration_seconds_bucket[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_duration_seconds_bucket[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-95%", - "refId": "B", - "step": 10 - }, - { - "expr": " sum(rate(tikv_coprocessor_request_duration_seconds_sum{req=\"select\"}[1m])) / sum(rate(tikv_coprocessor_request_duration_seconds_count{req=\"select\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "select-avg", - "refId": "C", - "step": 10 - }, - { - "expr": " sum(rate(tikv_coprocessor_request_duration_seconds_sum{req=\"index\"}[1m])) / sum(rate(tikv_coprocessor_request_duration_seconds_count{req=\"index\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "index-avg", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "coprocessor request duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 44 - }, - "id": 48, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{name=~\"raftstore_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "raft store CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 52 - }, - "id": 49, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{name=~\"cop_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_coprocessor_request_duration_seconds_bucket", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "TiKV", - "type": "row" - } - ], - "refresh": "30s", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(pd_cluster_status, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "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": "browser", - "title": "Test-Cluster-Overview", - "uid": "eDbRZpnWk", - "version": 1 -} \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pd.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pd.json deleted file mode 100644 index 78939076..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pd.json +++ /dev/null @@ -1,7379 +0,0 @@ -{ - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "" - }, - { - "type": "panel", - "id": "table", - "name": "Table", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "tidb-cluster", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "iteration": 1564738811479, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 118, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "description": "It indicates whether the current PD is the leader or a follower.", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 0, - "y": 1 - }, - "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, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "1", - "text": "Leader", - "to": "100000" - }, - { - "from": "0", - "text": "Follower", - "to": "1" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "delta(pd_tso_events{type=\"save\",instance=\"$instance\"}[1m]) > bool 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "metric": "pd_server_tso", - "refId": "A", - "step": 40 - } - ], - "thresholds": "", - "title": "PD role", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "Follower", - "value": "null" - }, - { - "op": "=", - "text": "Leader", - "value": "1" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": null, - "description": "The total capacity size of the cluster", - "editable": true, - "error": false, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 4, - "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": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(77, 135, 25, 0.18)", - "full": true, - "lineColor": "rgb(21, 179, 65)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\",type=\"storage_capacity\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 40 - } - ], - "thresholds": "", - "title": "Storage capacity", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The current storage size of the cluster", - "editable": true, - "error": false, - "format": "decbytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 8, - "y": 1 - }, - "hideTimeOverride": false, - "id": 38, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\",type=\"storage_size\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 40 - } - ], - "thresholds": "", - "title": "Current storage size", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "tidb-cluster", - "description": "The current storage size and used ratio of the cluster", - "editable": true, - "error": false, - "format": "percentunit", - "gauge": { - "maxValue": 1, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 12, - "y": 1 - }, - "hideTimeOverride": false, - "id": 37, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\",type=\"storage_size\"}) / sum(pd_cluster_status{instance=\"$instance\",type=\"storage_capacity\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 40 - } - ], - "thresholds": "0.01,0.5", - "title": "Current storage used", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#d44a3a", - "rgba(237, 129, 40, 0.89)", - "#299c46" - ], - "datasource": "tidb-cluster", - "description": "The count of healthy stores", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 16, - "y": 1 - }, - "id": 97, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "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": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_up_count\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "0,1", - "title": "Normal stores", - "type": "singlestat", - "valueFontSize": "100%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "description": "The total number of Regions without replicas", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, - "gridPos": { - "h": 6, - "w": 4, - "x": 20, - "y": 1 - }, - "id": 20, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\",type=\"leader_count\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 40 - } - ], - "thresholds": "", - "title": "Number of Regions", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "fontSize": "90%", - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 7 - }, - "hideTimeOverride": true, - "id": 116, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "styles": [ - { - "alias": "Option", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Metric", - "preserveFormat": false, - "type": "string" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "pd_config_status", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "timeFrom": "1s", - "title": "PD scheduler config", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 5, - "x": 6, - "y": 7 - }, - "hideTimeOverride": true, - "id": 103, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": false - }, - "styles": [ - { - "alias": "Type", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "type", - "type": "date" - }, - { - "alias": "Numbers", - "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, - "pattern": "Current", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "pd_regions_label_level{instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "timeFrom": "1s", - "timeShift": null, - "title": "Region label isolation level", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 6, - "x": 11, - "y": 7 - }, - "hideTimeOverride": true, - "id": 117, - "links": [], - "pageSize": null, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "Label : address", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "link": false, - "linkUrl": "", - "pattern": "Metric", - "thresholds": [ - "un" - ], - "type": "string" - }, - { - "alias": "count number", - "colorMode": null, - "colors": [ - "#bf1b00", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Current", - "thresholds": [ - "0" - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "pd_cluster_placement_status", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A" - } - ], - "timeFrom": "1s", - "title": "Label distribution", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "editable": true, - "error": false, - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 7, - "x": 17, - "y": 7 - }, - "hideTimeOverride": true, - "id": 96, - "links": [], - "pageSize": null, - "scroll": false, - "showHeader": true, - "sort": { - "col": null, - "desc": false - }, - "styles": [ - { - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Metric", - "sanitize": false, - "type": "string" - }, - { - "colorMode": "cell", - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "decimals": 0, - "pattern": "Current", - "thresholds": [ - "1", - "2" - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_disconnected_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Disconnect Stores", - "refId": "B", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_unhealth_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Unhealth Stores", - "refId": "C", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_low_space_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "LowSpace Stores", - "refId": "D", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_down_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Down Stores", - "refId": "E", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_offline_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Offline Stores", - "refId": "F", - "step": 20 - }, - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"store_tombstone_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Tombstone Stores", - "refId": "G", - "step": 20 - } - ], - "timeFrom": "1s", - "title": "Abnormal stores", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "tidb-cluster", - "fontSize": "90%", - "gridPos": { - "h": 7, - "w": 4, - "x": 0, - "y": 14 - }, - "hideTimeOverride": true, - "id": 115, - "links": [], - "pageSize": null, - "scroll": false, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "link": false, - "pattern": "Value", - "thresholds": [], - "type": "number", - "unit": "none" - }, - { - "alias": "Meta", - "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, - "pattern": "Metric", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "pd_cluster_metadata{instance=\"$instance\"}", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "timeFrom": "1s", - "title": "pd_cluster_metadata", - "transform": "timeseries_aggregations", - "type": "table" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": null, - "description": "The current peer count of the cluster", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 4, - "y": 14 - }, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 3, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": true, - "targets": [ - { - "expr": "sum(pd_cluster_status{instance=\"$instance\", type=\"region_count\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Current peer count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 100 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "B", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "message": "Regions are unhealthy", - "name": "region health alert", - "noDataState": "keep_state", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "It records the unusual Regions' count which may include pending peers, down peers, extra peers, offline peers, missing peers or learner peers", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 72, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_regions_status{instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - }, - { - "expr": "sum(pd_regions_status) by (instance, type)", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "B" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 100 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region health", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Cluster", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 119, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The number of different operators that are newly created", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 2 - }, - "id": 45, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"create\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operator create", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of different operators that have been checked. It mainly checks if the current step is finished; if yes, it returns the next step to be executed.", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 2 - }, - "id": 79, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"check\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operator check", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of different operators that are finished", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 77, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"finish\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operator finish", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 78, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"timeout\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operator timeout", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of different operators that are replaced or canceled", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 80, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"cancel\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\", event=\"replace\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operator replaced or canceled", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of operators in different status", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 47, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_operators_count{instance=\"$instance\"}[1m])) by (event)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{event}}", - "metric": "pd_scheduler_status", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schedule operators count by state", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when the operator is finished in .99", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 67, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(pd_schedule_finish_operators_duration_seconds_bucket[5m])) by (type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Operator finish duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when the operator is finished in .50", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 68, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.5, sum(rate(pd_schedule_finish_operators_duration_seconds_bucket[5m])) by (type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "50% Operator finish duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when the operator step is finished in .99", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 81, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(pd_schedule_finish_operator_steps_duration_seconds_bucket[5m])) by (type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Operator step finish duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "dtdurations", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when the operator step is finished in .50", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 82, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.5, sum(rate(pd_schedule_finish_operator_steps_duration_seconds_bucket[5m])) by (type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "50% Operator step finish duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "dtdurations", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Operator", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 120, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The capacity size of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 83, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"store_capacity\"}", - "format": "time_series", - "hide": false, - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store capacity", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "percent", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The available capacity size of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 91, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "{store=~\"$store\", instance=\"$instance\", type=\"store_available\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store available", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The used capacity size of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 90, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"store_used\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store used", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "It is equal to Store available capacity size over Store capacity size for each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 84, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"store_available\"}) by (address, store) / sum(pd_scheduler_store_status{instance=\"$instance\", type=\"store_capacity\"}) by (address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store available ratio", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The size amplification, which is equal to Store Region size over Store used capacity size, of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 85, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 3, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"region_size\"}) by (address, store) / sum(pd_scheduler_store_status{instance=\"$instance\", type=\"store_used\"}) by (address, store) * 2^20", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Size amplification", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": null, - "description": "The Region score of each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 41, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"region_score\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - }, - { - "expr": "pd_scheduler_op_influence{instance=\"$instance\",scheduler=\"balance-region-scheduler\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 1, - "legendFormat": "op-influence-{{store}}-{{type}}", - "refId": "C" - }, - { - "expr": "pd_scheduler_tolerant_resource{instance=\"$instance\",scheduler=\"balance-region-scheduler\"}", - "format": "time_series", - "hide": true, - "intervalFactor": 1, - "legendFormat": "tolerant-resource-{{source}}-{{target}}", - "refId": "E" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 1000000000 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store Region score", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": null, - "description": "The leader score of each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 40, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"leader_score\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 1000000000 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store leader score", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "description": "The total Region size of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 57, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"region_size\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store Region size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decmbytes", - "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": "tidb-cluster", - "description": " \tThe total leader size of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 56, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"leader_size\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store leader size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decmbytes", - "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": "tidb-cluster", - "description": "The Region count of each TiKV instance \t", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 27 - }, - "id": 59, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"region_count\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store Region count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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": "tidb-cluster", - "description": "The leader count of each TiKV instance", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 58, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"leader_count\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store leader count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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": "tidb-cluster", - "description": "", - "fill": 0, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 129, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/move-store-.*/", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"store_used\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - }, - { - "expr": "1048576*pd_scheduler_store_status{store=~\"$store\", instance=\"$instance\", type=\"region_size\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "store-{{store}}", - "refId": "B" - }, - { - "expr": "-sum(delta(pd_scheduler_balance_region{store=~\"$store\", address=~\".*out\",instance=\"$instance\", type=\"move-peer\"}[1m])) by (address, store)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "move-store-{{store}}", - "refId": "C" - }, - { - "expr": "sum(delta(pd_scheduler_balance_region{store=~\"$store\", address=~\".*in\",instance=\"$instance\", type=\"move-peer\"}[1m])) by (address, store)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "move-store-{{store}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store used & Region Size & Move Peer", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Statistics - balance", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 121, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "description": "The total number of leader Regions under hot write on each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 83 - }, - "id": 50, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"hot_write_region_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot write Region's leader distribution", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "description": "The total number of Regions which are not leader under hot write on each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 83 - }, - "id": 51, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"hot_write_region_as_peer\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot write Region's peer distribution", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": null, - "description": "The total bytes of hot write on leader Regions for each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 90 - }, - "id": 48, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 1, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"total_written_bytes_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "metric": "pd_hotspot_status", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot write Region's leader written bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": null, - "description": "The total bytes of hot write on Regions which are not leader for each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 90 - }, - "id": 49, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"total_written_bytes_as_peer\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot Region's peer written bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "description": "The total number of leader Regions under hot read on each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 97 - }, - "id": 60, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"hot_read_region_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot read Region's leader distribution", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The total bytes of hot read on leader Regions for each TiKV instance", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 97 - }, - "id": 62, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_hotspot_status{store=~\"$store\", instance=\"$instance\", type=\"total_read_bytes_as_leader\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "metric": "pd_hotspot_status", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Hot read Region's leader read bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 104 - }, - "id": 61, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", type=\"store_write_rate_bytes\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store write rate bytes", - "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": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 104 - }, - "id": 105, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", type=\"store_read_rate_bytes\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store read rate bytes", - "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": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 111 - }, - "id": 106, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", type=\"store_write_rate_keys\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store write rate keys", - "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": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 111 - }, - "id": 107, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_store_status{store=~\"$store\", type=\"store_read_rate_keys\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store read rate keys", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "title": "Statistics - hotspot", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 122, - "panels": [ - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The current running schedulers", - "fill": 0, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 112 - }, - "id": 46, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 1, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "pd_scheduler_status{type=\"allow\",instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{kind}}", - "metric": "pd_scheduler_status", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler is running", - "tooltip": { - "shared": true, - "sort": 1, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The leader movement details among TiKV instances", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 120 - }, - "id": 87, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sort": "total", - "sortDesc": true, - "total": true, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "- sum(delta(pd_scheduler_balance_leader{store=~\"$store\", address=~\".*out\",instance=\"$instance\", type=\"move-leader\"}[30s])) by (address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - }, - { - "expr": "sum(delta(pd_scheduler_balance_leader{store=~\"$store\", address=~\".*in\",instance=\"$instance\", type=\"move-leader\"}[30s])) by (address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance leader movement", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The Region movement details among TiKV instances", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 120 - }, - "hideTimeOverride": false, - "id": 86, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sort": "total", - "sortDesc": true, - "total": true, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "-sum(delta(pd_scheduler_balance_region{store=~\"$store\", address=~\".*out\",instance=\"$instance\", type=\"move-peer\"}[1m])) by (address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A" - }, - { - "expr": "sum(delta(pd_scheduler_balance_region{store=~\"$store\", address=~\".*in\",instance=\"$instance\", type=\"move-peer\"}[1m])) by (address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance Region movement", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of balance leader events", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 128 - }, - "id": 89, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": true, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_balance_leader{store=~\"$store\", instance=\"$instance\", type!=\"move-leader\"}[30s])) by (type, address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance leader event", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of balance Region events", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 128 - }, - "id": 88, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sortDesc": false, - "total": true, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_balance_region{store=~\"$store\", instance=\"$instance\", type!=\"move-peer\"}[30s])) by (type, address, store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-store-{{store}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance Region event", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The inner status of balance leader scheduler", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 136 - }, - "id": 52, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_event_count{instance=\"$instance\", type=\"balance-leader-scheduler\"}[5m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance leader scheduler", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The inner status of balance Region scheduler", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 136 - }, - "id": 53, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_event_count{instance=\"$instance\", type=\"balance-region-scheduler\"}[5m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Balance Region scheduler", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The replica checker's status", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 144 - }, - "id": 70, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_checker_event_count{instance=\"$instance\", type=\"replica_checker\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Replica checker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The merge checker's status", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 144 - }, - "id": 71, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_checker_event_count{instance=\"$instance\", type=\"merge_checker\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Region merge checker", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 152 - }, - "id": 110, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_filter{store=~\"$store\", action=\"filter-target\"}[1m])) by (store, type, scope)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{scope}}-store-{{store}}-{{type}}", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Filter target", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 152 - }, - "id": 109, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_schedule_filter{store=~\"$store\", action=\"filter-source\"}[1m])) by (store, type, scope)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{scope}}-store-{{store}}-{{type}}", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Filter source", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 160 - }, - "id": 108, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_balance_direction{instance=\"$instance\"}[1m])) by (type, source, target)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{source}}-{{target}}-{{type}}", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Balance Direction", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 160 - }, - "id": 111, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_schedule_store_limit{store=~\"$store\", type=\"available\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{store}}-avaliable", - "metric": "pd_scheduler_event_count", - "refId": "A", - "step": 4 - }, - { - "expr": "pd_schedule_store_limit{store=~\"$store\", type=\"take\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{store}}-take", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Store Limit", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "title": "Scheduler", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 123, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": null, - "description": "The rate of completing each kind of gRPC commands", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 6 - }, - "id": 1, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(grpc_server_handling_seconds_count{instance=\"$instance\"}[1m])) by (grpc_method)", - "intervalFactor": 2, - "legendFormat": "{{grpc_method}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Completed commands rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed of completing each kind of gRPC commands in .99", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 6 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{instance=\"$instance\"}[5m])) by (grpc_method, le))", - "intervalFactor": 2, - "legendFormat": "{{grpc_method}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Completed commands duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "gRPC", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 6 - }, - "id": 124, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The rate of handling etcd transactions", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 162 - }, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_txn_handle_txns_duration_seconds_count[5m])) by (instance, result)", - "intervalFactor": 2, - "legendFormat": "{{instance}} : {{result}}", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Handle transactions rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The time consumed of handling etcd transactions in .99", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 170 - }, - "id": 6, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(pd_txn_handle_txns_duration_seconds_bucket[5m])) by (instance, result, le))", - "intervalFactor": 2, - "legendFormat": "{{instance}} {{result}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "99% Handle transactions duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The time consumed of writing WAL into the persistent storage in .99", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 170 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[5m])) by (instance, le))", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "99% WAL fsync duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The latency of the network in .99", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 178 - }, - "id": 34, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_network_peer_round_trip_time_seconds_bucket[5m])) by (instance, To, le))", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{To}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "99% Peer round trip time seconds", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "alignLevel": null, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0.1 - ], - "type": "lt" - }, - "operator": { - "type": "and" - }, - "query": { - "datasourceId": 1, - "model": { - "expr": "delta(etcd_disk_wal_fsync_duration_seconds_count[1m])", - "intervalFactor": 2, - "legendFormat": "{{instance}} etch disk wal fsync rate", - "refId": "A", - "step": 4 - }, - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "message": "PD etcd disk fsync maybe is down.", - "name": "etcd disk fsync", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The rate of writing WAL into the persistent storage", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 178 - }, - "id": 44, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "delta(etcd_disk_wal_fsync_duration_seconds_count[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} etch disk wal fsync rate", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "lt", - "value": 0.1 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "etcd disk wal fsync rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The current term of Raft", - "fill": 1, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 186 - }, - "id": 92, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_server_etcd_state{type=\"term\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{job}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft term", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The last committed index of Raft", - "fill": 1, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 186 - }, - "id": 93, - "legend": { - "alignAsTable": true, - "alignLevel": null, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_server_etcd_state{type=\"committedIndex\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{job}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft committed index", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": " \tThe last applied index of Raft", - "fill": 1, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 186 - }, - "id": 94, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_server_etcd_state{type=\"appliedIndex\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{job}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft applied index", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "title": "etcd", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 125, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of TiDB requests", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 28, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_client_request_handle_requests_duration_seconds_count[1m])) by (type)", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handle requests count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed of handling TiDB requests", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 16 - }, - "id": 29, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "current", - "sortDesc": false, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.98, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket[30s])) by (type, le))", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{type}} 98th percentile", - "refId": "A", - "step": 2 - }, - { - "expr": "avg(rate(pd_client_request_handle_requests_duration_seconds_sum[30s])) by (type) / avg(rate(pd_client_request_handle_requests_duration_seconds_count[30s])) by (type)", - "intervalFactor": 2, - "legendFormat": "{{type}} average", - "refId": "B", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handle requests duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "TiDB", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 126, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The heartbeat latency of each TiKV instance in .99", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 74, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "round(histogram_quantile(0.99, sum(rate(pd_scheduler_region_heartbeat_latency_seconds_bucket{store=~\"$store\"}[5m])) by (address, store, le)), 1000)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Region heartbeat latency", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of the corresponding schedule commands which PD sends to each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 64, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_scheduler_region_heartbeat{store=~\"$store\", type=\"push\",instance=\"$instance\"}[5m])*60) by (address, store, status)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-{{status}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region schedule push", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of the heartbeats which each TiKV instance reports to PD", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 54, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_region_heartbeat{store=~\"$store\", instance=\"$instance\", type=\"report\", status=\"ok\"}[1m])) by (address, store)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region heartbeat report", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of the heartbeats with the ok status", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 78, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_region_heartbeat{store=~\"$store\", instance=\"$instance\", type=\"report\", status=\"bind\"}[1m])) by (address, store)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region heartbeat report active", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The count of the heartbeats with the error status", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 77, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(pd_scheduler_region_heartbeat{store=~\"$store\", instance=\"$instance\", type=\"report\", status=\"err\"}[1m])) by (address, store)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{address}}-store-{{store}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region heartbeat report error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Heartbeat", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 127, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 213 - }, - "id": 112, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_region_syncer_status{type=\"sync_index\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Syncer index", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 213 - }, - "id": 113, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "pd_region_syncer_status{type=\"last_index\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "History last index", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "title": "Region storage", - "type": "row" - } - ], - "refresh": "30s", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(pd_cluster_status, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": null, - "tags": [], - "tagsQuery": null, - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": {}, - "datasource": "tidb-cluster", - "definition": "label_values(pd_scheduler_store_status, store)", - "hide": 0, - "includeAll": true, - "label": "store", - "multi": true, - "name": "store", - "options": [], - "query": "label_values(pd_scheduler_store_status, store)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "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": "browser", - "title": "Test-Cluster-PD", - "uid": "Q6RuHYIWk", - "version": 5 -} diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pods.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pods.json deleted file mode 100644 index 6e5a5542..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/pods.json +++ /dev/null @@ -1,1095 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 19, - "iteration": 1567735649224, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 20, - "panels": [ - { - "columns": [], - "datasource": "k8s-cluster", - "fontSize": "100%", - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 22, - "links": [], - "pageSize": 10, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "", - "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|__name__|endpoint|instance|job|namespace|pod|service/", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "storage_size", - "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": "Value #A", - "thresholds": [], - "type": "number", - "unit": "bytes" - }, - { - "alias": "", - "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": 2, - "pattern": "Value #B", - "rangeMaps": [ - { - "from": "-1", - "text": "false", - "to": "0" - }, - { - "from": "1", - "text": "true", - "to": "1000000" - } - ], - "thresholds": [], - "type": "hidden", - "unit": "short" - } - ], - "targets": [ - { - "expr": "(sum(kube_persistentvolumeclaim_resource_requests_storage_bytes{namespace=\"$namespace\"}) by (persistentvolumeclaim) * on (persistentvolumeclaim) group_left\n(storageclass) kube_persistentvolumeclaim_info{namespace=\"$namespace\"})", - "format": "table", - "instant": true, - "intervalFactor": 1, - "refId": "A" - }, - { - "expr": "kube_persistentvolumeclaim_status_phase{namespace=\"$namespace\"} == 1", - "format": "table", - "instant": true, - "intervalFactor": 1, - "refId": "B" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "PVC Info", - "transform": "table", - "type": "table" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "k8s-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "kubelet_volume_stats_capacity_bytes{job=\"kubelet\", persistentvolumeclaim=\"$pvc\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Total", - "refId": "A" - }, - { - "expr": "kubelet_volume_stats_used_bytes{job=\"kubelet\", persistentvolumeclaim=\"$pvc\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used", - "refId": "B" - }, - { - "expr": "kubelet_volume_stats_available_bytes{job=\"kubelet\", persistentvolumeclaim=\"$pvc\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Free", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Volume Space Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "PV Info", - "type": "row" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 18, - "panels": [], - "title": "Service Info", - "type": "row" - }, - { - "cacheTimeout": null, - "columns": [], - "datasource": "k8s-cluster", - "fontSize": "100%", - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 12, - "links": [], - "pageSize": 10, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "link": false, - "pattern": "/Time|job|instance|__endpoint__|namespace|__name__|endpoint|pod/", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "available_endpoint", - "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": 0, - "mappingType": 1, - "pattern": "Value", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "(kube_service_spec_type{namespace=\"$namespace\"} * on (service, namespace) group_left(cluster_ip ) kube_service_info{namespace=\"$namespace\"}) * on (namespace, service) group_left(Value)\n sum(label_replace(kube_endpoint_address_available{namespace=\"$namespace\"}, \"service\", \"$0\", \"endpoint\", \".*\")) by (namespace, service)", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "Avaliable Endpoint Number", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Service Info", - "transform": "table", - "type": "table" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 16, - "panels": [], - "title": "Pod Info", - "type": "row" - }, - { - "columns": [], - "datasource": "k8s-cluster", - "fontSize": "100%", - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 10, - "links": [], - "pageSize": 10, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "/Time/", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "status", - "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": 2, - "pattern": "Value #A", - "rangeMaps": [ - { - "from": "-1", - "text": "stoped", - "to": "0" - }, - { - "from": "0", - "text": "running", - "to": "100" - } - ], - "thresholds": [], - "type": "string", - "unit": "short" - }, - { - "unit": "short", - "type": "number", - "alias": "restart count", - "decimals": 2, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "colorMode": null, - "pattern": "Value #B", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "thresholds": [], - "mappingType": 2 - } - ], - "targets": [ - { - "expr": "sum(kube_pod_container_info{pod=\"$pod\",namespace=\"$namespace\"}) by (pod, container, image) * on(pod,container) group_left sum(kube_pod_container_status_running{namespace=\"$namespace\"}) by (pod, container)", - "format": "table", - "instant": true, - "intervalFactor": 1, - "refId": "A" - }, - { - "refId": "B", - "expr": "sum(kube_pod_container_status_restarts_total{namespace=\"$namespace\", pod=\"$pod\"}) by (pod, container)", - "intervalFactor": 1, - "format": "table", - "instant": true - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Container Status", - "transform": "table", - "type": "table" - }, - { - "columns": [], - "datasource": "k8s-cluster", - "fontSize": "100%", - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 5, - "links": [], - "pageSize": 10, - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": true - }, - "styles": [ - { - "alias": "", - "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|instance|uid|__name__|created_by_kind|created_by_name|job|endpoint|host_ip|namespace|service/", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "", - "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, - "link": true, - "linkTargetBlank": false, - "linkUrl": "/d/fa49a4706d07a042595b664c87fb33ea/nodes-info?orgId=1&var-cluster=&var-node=${__cell}&var-port=$port", - "mappingType": 1, - "pattern": "node_ip", - "thresholds": [], - "type": "number", - "unit": "short" - }, - { - "alias": "start_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": "Value", - "thresholds": [], - "type": "number", - "unit": "dateTimeAsIso" - } - ], - "targets": [ - { - "expr": "((label_replace(label_replace(node_uname_info, \"node_ip\", \"$1\", \"instance\", \"(.*):.*\"), \"node\", \"$0\", \"nodename\", \".*\") * on (node) group_right(node_ip) kube_pod_info{namespace=\"$namespace\", pod=\"$pod\"}) * on(namespace, pod) group_left(phase) (kube_pod_status_phase{namespace=\"$namespace\", pod=\"$pod\"} == 1)) * on (namespace, pod) group_left(Value) kube_pod_start_time{namespace=\"$namespace\", pod=\"$pod\"} * 1000", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Mapping", - "transform": "table", - "type": "table" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "k8s-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_rss{ namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{container_name}} (RSS)", - "refId": "E" - }, - { - "expr": "sum(container_memory_cache{namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{container_name}} (Cache)", - "refId": "A" - }, - { - "expr": "sum(container_memory_working_set_bytes{ namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{container_name}} (WorkingSet)", - "refId": "B" - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{ namespace=\"$namespace\", pod=\"$pod\"}) by (namespace, pod, container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{container}} (Limit)", - "refId": "C" - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{ namespace=\"$namespace\", pod=\"$pod\"}) by (namespace, pod, container)", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{container}} (Request)", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "k8s-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (container_name) (rate(container_cpu_usage_seconds_total{job=\"kubelet\", cluster=\"$cluster\", namespace=\"$namespace\", image!=\"\", pod_name=\"$pod\", container_name=~\"$container\", container_name!=\"POD\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Current: {{ container_name }}", - "refId": "A" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Requested: {{ container }}", - "refId": "B" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Limit: {{ container }}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "k8s-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum by (pod_name) (rate(container_network_receive_bytes_total{job=\"kubelet\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RX", - "refId": "A" - }, - { - "expr": "sort_desc(sum by (pod_name) (rate(container_network_transmit_bytes_total{job=\"kubelet\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}[1m])))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "TX", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "k8s-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 14, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_fs_writes_bytes_total{pod_name=\"$pod\",container_name=\"$container\"}[1m])) by (container_name,device)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Write: {{container_name}}-{{device}}", - "refId": "A" - }, - { - "expr": "sum(rate(container_fs_reads_bytes_total{pod_name=\"$pod\",container_name=\"$container\"}[1m])) by (container_name,device)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Read: {{container_name}}-{{device}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pod Disk IO", - "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": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": { - "isNone": true, - "selected": true, - "text": "None", - "value": "" - }, - "datasource": "k8s-cluster", - "definition": "", - "hide": 2, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "datasource": "k8s-cluster", - "definition": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=~\"$namespace\"}, pod)", - "hide": 0, - "includeAll": false, - "label": "Pod", - "multi": false, - "name": "pod", - "options": [], - "query": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=~\"$namespace\"}, pod)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "datasource": "k8s-cluster", - "definition": "label_values(kube_pod_container_info{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}, container)", - "hide": 0, - "includeAll": true, - "label": "Container", - "multi": false, - "name": "container", - "options": [], - "query": "label_values(kube_pod_container_info{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}, container)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "datasource": "k8s-cluster", - "definition": "label_values(kubelet_volume_stats_capacity_bytes{namespace=~\"$namespace\"},persistentvolumeclaim)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "pvc", - "options": [], - "query": "label_values(kubelet_volume_stats_capacity_bytes{namespace=~\"$namespace\"},persistentvolumeclaim)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "selected": true, - "text": "9100", - "value": "9100" - }, - "datasource": "k8s-cluster", - "definition": "label_values(node_boot_time_seconds{cluster=\"$cluster\", job=\"node-exporter\"}, instance)", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "port", - "options": [], - "query": "label_values(node_boot_time_seconds{cluster=\"$cluster\", job=\"node-exporter\"}, instance)", - "refresh": 2, - "regex": "/.*:(\\d+)/", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "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": "Test-Cluster-Pods-Info", - "uid": "qVGH-XKWz", - "version": 8 -} \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tidb.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tidb.json deleted file mode 100644 index 06e24bae..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tidb.json +++ /dev/null @@ -1,11321 +0,0 @@ -{ - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "tidb-cluster", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 138, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB query durations by histogram buckets with different percents", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 80, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": false, - "hideZero": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB query processing numbers per second", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 42, - "legend": { - "alignAsTable": false, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": false, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_server_query_total[1m])) by (result)", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "query {{result}}", - "refId": "A", - "step": 60 - }, - { - "expr": "sum(rate(tidb_server_query_total{result=\"OK\"}[1m] offset 1d))", - "format": "time_series", - "hide": true, - "instant": false, - "intervalFactor": 2, - "legendFormat": "yesterday", - "refId": "B", - "step": 90 - }, - { - "expr": "sum(tidb_server_connections) * sum(rate(tidb_server_handle_query_duration_seconds_count[1m])) / sum(rate(tidb_server_handle_query_duration_seconds_sum[1m]))", - "format": "time_series", - "hide": true, - "instant": false, - "intervalFactor": 2, - "legendFormat": "ideal QPS", - "refId": "C", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": null, - "description": "TiDB statement statistics by statement type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 21, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_executor_statement_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Statement OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "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": "tidb-cluster", - "description": "TiDB query total statistics including both successful and failed ones", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(tidb_server_query_total[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} {{type}} {{result}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS By Instance", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": null, - "description": "TiDB failed query statistics by query type", - "fill": 0, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 13 - }, - "id": 137, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_server_execute_error_total[1m])) by (type, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " {{type}}-{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Failed Query OPM", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "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": "tidb-cluster", - "description": "TiDB slow query statistics with slow query durations and coprocessor waiting/executing durations", - "fill": 1, - "gridPos": { - "h": 6, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 112, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_server_slow_query_process_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "all_proc", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_server_slow_query_cop_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "all_cop_proc", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_server_slow_query_wait_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "all_cop_wait", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Slow query", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB durations for different query types with 99.9 percent buckets", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 136, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le,sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "999 Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB durations for different query types with 99 percent buckets", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 134, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le,sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99 Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB durations for different query types with 95 percent buckets", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 132, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le,sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "95 Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB durations for different query types with 80 percent buckets", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 130, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le,sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "80 Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Query Summary", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 139, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB durations with 80 percent buckets by instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 23, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration 80 By Instance", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "TiDB durations with 95 percent buckets by instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 1, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ instance }}", - "refId": "B", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration 95 By Instance", - "tooltip": { - "msResolution": true, - "shared": false, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - "max" - ] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "TiDB durations with 99 percent buckets by instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 25, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration 99 By Instance", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "TiDB durations with 99.9 percent buckets by instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 45 - }, - "id": 81, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration 999 By Instance", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "TiDB failed query statistics with failing infomation ", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 52 - }, - "id": 94, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "increase(tidb_server_execute_error_total[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}} @ {{instance}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Failed Query OPM Detail", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "The internal SQL is used by TiDB itself.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 52 - }, - "id": 68, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_session_restricted_sql_total[30s]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Internal SQL OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Query Detail", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 140, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "cacheTimeout": null, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB uptime since last restart", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 184, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pluginVersion": "6.1.6", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(time() - process_start_time_seconds{job=\"tidb\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Uptime", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "dtdurations", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB process rss memory usage. TiDB heap memory size in use ", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"tidb\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "process-{{instance}}", - "refId": "A" - }, - { - "expr": "go_memstats_heap_alloc_bytes{job=\"tidb\"}", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "heap-{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB cpu usage calculated with process cpu running seconds", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 168, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{job=\"tidb\"}[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB current connection counts", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "tidb_server_connections", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(tidb_server_connections)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Connection Count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB process opened file descriptors count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 188, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_open_fds{job=\"tidb\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Open FD Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB process current goroutines count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 61, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": " go_goroutines{job=~\"tidb.*\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Goroutine Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB process Go garbage collection time cost", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 183, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(go_gc_duration_seconds_sum{job=\"tidb\"}[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Go GC Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "dtdurations", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "Total threads TiDB process created currently", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 186, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": " go_threads{job=\"tidb\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Go Threads", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The Go garbage collection counts per second", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 185, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": " rate(go_gc_duration_seconds_count{job=\"tidb\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Go GC Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The fraction of this program's available CPU time used by the GC since the program started.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 187, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_memstats_gc_cpu_fraction{job=\"tidb\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Go GC CPU Usage", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB Server critical events total, including start/close/shutdown/hang etc", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 49, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "increase(tidb_server_event_total[10m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-server {{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Events OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB instance monitor average keep alive times", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 82, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_monitor_keep_alive_total[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Keep Alive OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB instance prepare statements count", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 165, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tidb_server_prepared_stmts", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(tidb_server_prepared_stmts)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Prepare Statement Count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB monitor time jump back count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 45 - }, - "id": 166, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_monitor_time_jump_back_total[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Time Jump Back OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB instance critical errors count including panic etc", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 52 - }, - "id": 54, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "increase(tidb_server_panic_total[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "panic-{{instance}}", - "refId": "A" - }, - { - "expr": "increase(tidb_server_critical_error_total[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "critical-{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write Binlog Error", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB instance critical errors count including panic etc", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 52 - }, - "id": 191, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tidb_server_critical_error_total", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Skip Binlog Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "Duration (us) for getting token, it should be small until concurrency limit is reached.", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 59 - }, - "id": 111, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_server_get_token_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Get Token Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB processing handshake error count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 59 - }, - "id": 167, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_server_handshake_error_total[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handshake Error OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Server", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 141, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB transaction processing counts by type and source. Internal means TiDB inner transcation calls", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 4 - }, - "id": 69, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_session_transaction_duration_seconds_count[1m])) by (type, sql_type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{sql_type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "Bucketed histogram of transaction execution durations, including retry", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 4 - }, - "id": 72, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99-{{sql_type}}", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95-{{sql_type}}", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_session_transaction_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80-{{sql_type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB statements numbers within one transaction. Internal means TiDB inner transaction", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 4 - }, - "id": 74, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_session_transaction_statement_num_bucket[30s])) by (le, sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99-{{sql_type}}", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_session_transaction_statement_num_bucket[30s])) by (le, sql_type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80-{{sql_type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Statement Num", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB transaction retry histogram bucket statistics", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 11 - }, - "id": 67, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1.0, sum(rate(tidb_session_retry_num_bucket[30s])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_session_retry_num_bucket[30s])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_session_retry_num_bucket[30s])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Retry Num", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "Error numbers of transaction retry", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 11 - }, - "id": 36, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_session_retry_error_total[30s])) by (type, sql_type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{sql_type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Session Retry Error OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB transaction latch wait time on key value storage", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 11 - }, - "id": 175, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_local_latch_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_local_latch_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_tikvclient_local_latch_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Local Latch Wait Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB total kv transaction counts", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 18 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_count[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Transaction OPS", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "The duration of the transaction commit/rollback on TiKV.", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 18 - }, - "id": 193, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99-{{type}}", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95-{{type}}", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_tikvclient_txn_cmd_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Transaction Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "regions transaction operates on count", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 18 - }, - "id": 44, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_tikvclient_txn_regions_num_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Regions Num 90", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv write times per transaction execution", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 25 - }, - "id": 33, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_tikvclient_txn_write_kv_num_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100 {{instance}}", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Max Write KV Num", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv write size per transaction execution", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 25 - }, - "id": 34, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_tikvclient_txn_write_size_bytes_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Transaction Max Write Size Bytes", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 2, - "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": "tidb-cluster", - "description": "safe point loading times", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 25 - }, - "id": 83, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_load_safepoint_total{type=\"ok\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Safepoint OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "When the pessimistic transaction begins to work, it will send heartbeat requests to update its TTL. \nThis metric is the latency of the send heartbeat operation.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 32 - }, - "id": 194, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_tikvclient_txn_heart_beat_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80-{{type}}", - "refId": "B", - "step": 40 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_txn_heart_beat_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95-{{type}}", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_txn_heart_beat_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Send HeartBeat Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "This metric means the pessimistic lives too long which is abnormal.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 32 - }, - "id": 195, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "", - "format": "time_series", - "intervalFactor": 1, - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TTL Lifetime Reach Counter", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Transaction", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 142, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": null, - "description": "The time cost of parsing SQL to AST", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 82 - }, - "id": 156, - "interval": "", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_session_parse_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Parse Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": null, - "description": "The time cost of building the query plan", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 82 - }, - "id": 154, - "interval": "", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_session_compile_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compile Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": null, - "description": "The time cost of executing the SQL which does not include the time to get the results of the query .", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 90 - }, - "id": 169, - "interval": "", - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_session_execute_duration_seconds_bucket[1m])) by (le, sql_type))", - "format": "time_series", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{sql_type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Execution Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": null, - "description": "TiDB executors using more cpu and memory resources", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 90 - }, - "id": 76, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_executor_expensive_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Expensive Executors OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": null, - "description": "TiDB plan cache hit total", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 98 - }, - "id": 91, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_server_plan_cache_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Queries Using Plan Cache OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Executor", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 143, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "durations of distsql execution by type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 122 - }, - "id": 12, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - { - "type": "dashboard" - } - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_distsql_handle_query_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999-{{type}}", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_distsql_handle_query_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "99-{{type}}", - "metric": "tidb_distsql_handle_query_duration_seconds_bucket", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_distsql_handle_query_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90-{{type}}", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.50, sum(rate(tidb_distsql_handle_query_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "50-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Distsql Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.0005", - "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": "tidb-cluster", - "description": "distsql query handling durations per second", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 122 - }, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_distsql_handle_query_duration_seconds_count[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "metric": "tidb_distsql_query_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Distsql QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "the numebr of distsql partial scan numbers", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 129 - }, - "id": 60, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_distsql_scan_keys_partial_num_count[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "metric": "tidb_distsql_query_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Distsql Partial QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "the numebr of distsql scan numbers", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 129 - }, - "id": 57, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_distsql_scan_keys_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_distsql_scan_keys_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.50, sum(rate(tidb_distsql_scan_keys_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "50", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scan Keys Num", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "the numebr of distsql partial scan key numbers", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 129 - }, - "id": 58, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_distsql_scan_keys_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_distsql_scan_keys_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_distsql_scan_keys_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "50", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scan Keys Partial Num", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "distsql partial numbers per query", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 136 - }, - "id": 59, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_distsql_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_distsql_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.50, sum(rate(tidb_distsql_partial_num_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "50", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Partial Num", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage coprocessor processing durations", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 136 - }, - "id": 41, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_tikvclient_cop_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor Seconds 999", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Distsql", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 6 - }, - "id": 144, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "kv backoff time durations by type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": false, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_tikvclient_backoff_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 40 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_backoff_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_tikvclient_backoff_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Backoff Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "kv region error times", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_region_err_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tidb_server_session_execute_parse_duration_count", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(tidb_tikvclient_region_err_total{type=\"server_is_busy\"}[1m]))", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "sum", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiClient Region Error OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv storage backoff times", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 53, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": true, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_backoff_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Backoff OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "lock resolve times", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 32, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_lock_resolver_actions_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tidb_tikvclient_lock_resolver_actions_total", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Lock Resolve OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "lock cleanup failed times and safe point update times", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 84, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_lock_cleanup_task_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "cleanup_secondary_failure_{{type}}", - "metric": "tidb_tikvclient_lock_resolver_actions_total", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(tidb_tikvclient_load_safepoint_total{type=\"fail\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "load_safepoint_failure", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Other Errors OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "KV Errors", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 145, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "kv request total by instance and command type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 8 - }, - "id": 172, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_request_seconds_count[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Request OPS", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv requests durations by store", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 8 - }, - "id": 48, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_request_seconds_bucket{type!=\"GC\"}[1m])) by (le, store))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "store-{{store}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Request Duration 99 by store", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv request durations by request type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 8 - }, - "id": 30, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_request_seconds_bucket{type!=\"GC\"}[1m])) by (le,type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Request Duration 99 by type", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "KV Request", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 147, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "pd command count by type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 10 - }, - "id": 20, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_client_cmd_handle_cmds_duration_seconds_count{type!=\"tso\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD Client CMD OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "pd client command durations by type within 99.9 percent buckets", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 10 - }, - "id": 35, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type!~\"tso|tso_async_wait\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999-{{type}}", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type!~\"tso|tso_async_wait\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99-{{type}}", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type!~\"tso|tso_async_wait\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD Client CMD Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "pd client command fail count by type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 10 - }, - "id": 43, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_client_cmd_handle_failed_cmds_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD Client CMD Fail OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "The duration of a client calling GetTSAsync until received the TS result.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 17 - }, - "id": 79, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(pd_client_cmd_handle_cmds_duration_seconds_count{type=\"tso\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "cmd", - "refId": "C" - }, - { - "expr": "sum(rate(pd_client_request_handle_requests_duration_seconds_count{type=\"tso\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "request", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD TSO OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The duration of a client starting to wait for the TS until received the TS result.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 17 - }, - "id": 77, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"wait\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"wait\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(pd_client_cmd_handle_cmds_duration_seconds_bucket{type=\"wait\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD TSO Wait Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The duration of a client sending TSO request until received the response.", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 17 - }, - "id": 78, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type=\"tso\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD TSO RPC Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The duration of the waiting time for getting the start timestamp oracle", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 24 - }, - "id": 159, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999, sum(rate(tidb_pdclient_ts_future_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "999", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_pdclient_ts_future_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_pdclient_ts_future_wait_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Start TSO Wait Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "PD Client", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 148, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB loading schema time durations by instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 47 - }, - "id": 27, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_domain_load_schema_duration_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Schema Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB loading schema times including both failed and successful ones", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 47 - }, - "id": 28, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/.*failed/", - "bars": true - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_domain_load_schema_total[1m])) by (instance,type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "metric": "tidb_domain_load_schema_duration_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Schema OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "TiDB schema lease error counts", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 54 - }, - "id": 29, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_session_schema_lease_error_total[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tidb_server_", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Schema Lease Error OPM", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB load privilege counts", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 54 - }, - "id": 157, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/.*failed/", - "bars": true - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_domain_load_privilege_total[1m])) by (instance,type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "metric": "tidb_domain_load_schema_duration_count", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Privilege OPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Schema Load", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 149, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB DDL duration statistics", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 12 - }, - "id": 9, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_ddl_handle_job_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DDL Duration 95", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB batch add index durations by histogram buckets", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 12 - }, - "id": 63, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_ddl_batch_add_idx_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - }, - { - "expr": "sum(rate(tidb_ddl_add_index_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Batch Add Index Duration 100", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB ddl request in queue", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 12 - }, - "id": 62, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tidb_ddl_waiting_jobs", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DDL Waiting Jobs Count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB different ddl worker numbers", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 55, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "increase(tidb_ddl_worker_operation_total[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DDL META OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB worker duration by type, action, results", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 19 - }, - "id": 56, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(increase(tidb_ddl_worker_operation_duration_seconds_bucket[1m])) by (le, type, action, result))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{action}}-{{result}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DDL Worker Duration 99", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB ddl schema syncer statistics, including init, start, watch, clear function call time cost", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 26 - }, - "id": 64, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_ddl_deploy_syncer_duration_seconds_bucket[2m])) by (le, type, result))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{result}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Deploy Syncer Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB ddl owner time operations on etcd duration statistics ", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 26 - }, - "id": 65, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_ddl_owner_handle_syncer_duration_seconds_bucket[2m])) by (le, type, result))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{result}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Owner Handle Syncer Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB schema syncer version update time duration", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 26 - }, - "id": 66, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_ddl_update_self_ver_duration_seconds_bucket[2m])) by (le, result))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{result}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Update Self Version Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "executed DDL jobs per minute", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 190, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_ddl_handle_job_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ type }}", - "refId": "A" - }, - { - "expr": "sum(rate(tidb_ddl_handle_job_duration_seconds_count[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DDL OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "DDL", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 11 - }, - "id": 150, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB auto analyze time durations within 95 percent histogram buckets", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 149 - }, - "id": 46, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_statistics_auto_analyze_duration_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "auto analyze duration", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Auto Analyze Duration 95", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB auto analyze query per second", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 149 - }, - "id": 47, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_auto_analyze_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Auto Analyze QPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB statistics inaccurate rate", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 149 - }, - "id": 70, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_statistics_stats_inaccuracy_rate_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "A", - "step": 30 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(tidb_statistics_stats_inaccuracy_rate_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.50, sum(rate(tidb_statistics_stats_inaccuracy_rate_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "50", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Stats Inaccuracy Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB optimizer using pseudo estimation counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 156 - }, - "id": 71, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_pseudo_estimation_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Pseudo OPS", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pseudo Estimation OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB dumping statistics back to kv storage times", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 156 - }, - "id": 92, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_dump_feedback_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Dump Feedback OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB store quering feedback counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 156 - }, - "id": 170, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_store_query_feedback_total[1m])) by (type) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store Query Feedback QPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "Counter of query feedback whose actual count is much different than calculated by current statistics", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 163 - }, - "id": 113, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_high_error_rate_feedback_total[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "Significant Feedback", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Significant Feedback", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB updating statistics using feed back counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 163 - }, - "id": 93, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_statistics_update_stats_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Update Stats OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB fast analyze statistics ", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 163 - }, - "id": 173, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tidb_statistics_fast_analyze_status_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Fast Analyze Status 100", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "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 - } - } - ], - "repeat": null, - "title": "Statistics", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 12 - }, - "id": 161, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB new session durations for new etcd sessions", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 150 - }, - "id": 162, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_owner_new_session_duration_seconds_bucket[1m])) by (le, instance, result))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{result}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "New ETCD Session Duration 95", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "TiDB owner watcher counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 150 - }, - "id": 163, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_owner_watch_owner_total[1m])) by (type, result, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{result}}-{{instance}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Owner Watcher OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 150 - }, - "id": 174, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_owner_watch_owner_total[1m])) by (type, result, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{result}}-{{instance}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Owner Watcher OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "Owner", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 13 - }, - "id": 151, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "TiDB auto id requests per second including single table/global auto id processing and single table auto id rebase processing", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 151 - }, - "id": 50, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_autoid_operation_duration_seconds_count[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "AutoID QPS", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "AutoID QPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB auto id requests durations", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 151 - }, - "id": 51, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_autoid_operation_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99-{{type}}", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.80, sum(rate(tidb_autoid_operation_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "80-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "AutoID Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": "0.001", - "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": "tidb-cluster", - "description": "TiDB region cache operations count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 158 - }, - "id": 164, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_region_cache_operations_total{result=\"err\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 30 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region Cache Error OPS", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "TiDB meta operation durations including get/set schema and ddl jobs", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 158 - }, - "id": 52, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_meta_operation_duration_seconds_bucket[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Meta Operations Duration 99", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Meta", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 14 - }, - "id": 152, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "kv storage garbage collection counts by type", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 152 - }, - "id": 85, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_tikvclient_gc_worker_actions_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Worker Action OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "kv storage garbage collection time durations", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 152 - }, - "id": 86, - "legend": { - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tidb_tikvclient_gc_seconds_bucket[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Duration 99", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "cacheTimeout": null, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "kv storage garbage collection config including gc_life_time and gc_run_interval", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 152 - }, - "id": 87, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "6.1.6", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tidb_tikvclient_gc_config) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Config", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage garbage collection failing counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 159 - }, - "id": 88, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_tikvclient_gc_failure[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC Failure OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage unsafe destroy range failed counts", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 159 - }, - "id": 158, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_tikvclient_gc_unsafe_destroy_range_failures[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Delete Range Failure OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage region garbage collection clean too many locks count", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 159 - }, - "id": 90, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_tikvclient_gc_region_too_many_locks[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Locks Error OPM", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Too Many Locks Error OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage garbage collection results including failed and successful ones", - "fill": 1, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 166 - }, - "id": 89, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tidb_tikvclient_gc_action_result[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Action Result OPM", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "kv storage delete range task execution status by type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 166 - }, - "id": 181, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tidb_tikvclient_range_task_stats) by (type, result)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}-{{result}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Delete Range Task Status", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv storage range worker processing one task duration", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 166 - }, - "id": 182, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_range_task_push_duration_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Push Task Duration 95", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "GC", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 15 - }, - "id": 178, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "kv storage batch requests in queue", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 153 - }, - "id": 176, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "fill": 0, - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tidb_tikvclient_pending_batch_requests) by (store)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{store}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pending Request Count by TiKV", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv storage batch processing durations", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 153 - }, - "id": 179, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_batch_wait_duration_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Wait Duration 95", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ns", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "kv storage batch processing unvailable durations", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 153 - }, - "id": 180, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tidb_tikvclient_batch_client_unavailable_seconds_bucket[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Batch Client Unavailable Duration 95", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "Batch Client", - "type": "row" - } - ], - "refresh": "30s", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "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": "browser", - "title": "Test-Cluster-TiDB", - "uid": "000000011", - "version": 5 -} \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_details.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_details.json deleted file mode 100644 index 42830fc3..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_details.json +++ /dev/null @@ -1,22625 +0,0 @@ -{ - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "panel", - "id": "heatmap", - "name": "Heatmap", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "tidb-cluster", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "iteration": 1572593638237, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2742, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The storage size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 1 - }, - "id": 56, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The available capacity size of each TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 1 - }, - "id": 1706, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_store_size_bytes{instance=~\"$instance\", type=\"available\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Available size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The capacity size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 1 - }, - "id": 1707, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_store_size_bytes{instance=~\"$instance\", type=\"capacity\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Capacity size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The CPU usage of each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1708, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The memory usage per TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 1709, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(process_resident_memory_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total bytes of read and write in each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 1711, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"kv\", type=\"wal_file_bytes\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-write", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"kv\", type=~\"bytes_read|iter_bytes_read\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-read", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MBps", - "tooltip": { - "msResolution": false, - "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": "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": "tidb-cluster", - "decimals": 1, - "description": "The QPS per command in each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 1713, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (instance,type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of the gRPC message failures", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 1712, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-grpc-msg-fail", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(delta(tikv_pd_heartbeat_message_total{instance=~\"$instance\", type=\"noop\"}[1m])) by (instance) < 1", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-pd-heartbeat", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_critical_error_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Errps", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe number of leaders on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 1715, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - }, - { - "expr": "delta(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}[30s]) < -10", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of Regions on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 1714, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"region\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - } - ], - "repeat": null, - "title": "Cluster", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 2743, - "panels": [ - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "name": "Critical error alert", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 2741, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_critical_error_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Critical error", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "Indicates occurrences of events that make the TiKV instance unavailable temporarily, such as Write Stall, Channel Full, Scheduler Busy, and Coprocessor Full", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1584, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_too_busy_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "scheduler-{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "channelfull-{{instance}}-{{type}}", - "metric": "", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\", type='full'}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "coprocessor-{{instance}}", - "metric": "", - "refId": "C", - "step": 4 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\", db=~\"$db\"}) by (instance, db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "stall-{{instance}}-{{db}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Server is busy", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "10s", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "10s", - "handler": 1, - "message": "TiKV server report failures", - "name": "server report failures alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of reporting failure messages", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 18, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_report_failure_msg_total{instance=~\"$instance\"}[1m])) by (type,instance,store_id)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}} - to - {{store_id}}", - "metric": "tikv_server_raft_store_msg_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Server report failures", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different raftstore errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 1718, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_engine_async_request_total{instance=~\"$instance\", status!~\"success|all\"}[1m])) by (instance, status)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{status}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raftstore error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of scheduler errors per type on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 1719, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_stage_total{instance=~\"$instance\", stage=~\"snapshot_err|prepare_write_err\"}[1m])) by (instance, stage)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{stage}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different coprocessor errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 1720, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\"}[1m])) by (instance, reason)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{reason}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of gRPC message errors per type on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 1721, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of dropped leaders per TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 1722, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader drop", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of missing leaders per TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 1723, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_leader_missing{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader missing", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Errors", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 2744, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The size of each column family", - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 33, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CF size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The storage size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 1705, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "datasourceId": 1, - "model": { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - }, - "params": [ - "A", - "10s", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "10s", - "handler": 1, - "message": "TiKV channel full", - "name": "TiKV channel full alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of channel full errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 22, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Channel full", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of leaders being written on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 75, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_region_written_keys_count{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_region_written_keys_bucket", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Active written leaders", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1073741824 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "B", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "name": "approximate region size alert", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The approximate Region size", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 1481, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_raftstore_region_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_region_size_count{instance=~\"$instance\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Approximate Region size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 19 - }, - "id": 3638, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": false, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Approximate Region size Histogram", - "tooltip": { - "msResolution": false, - "shared": false, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "histogram", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The average rate of writing bytes to Regions per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 58, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_region_written_bytes_sum[1m])) by (instance) / sum(rate(tikv_region_written_bytes_count[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_regi", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region average written bytes", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "cards": { - "cardPadding": null, - "cardRound": null - }, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateOranges", - "exponent": 0.5, - "mode": "spectrum" - }, - "dataFormat": "timeseries", - "datasource": "tidb-cluster", - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 27 - }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, - "id": 3636, - "legend": { - "show": false - }, - "links": [], - "reverseYBuckets": false, - "targets": [ - { - "expr": "sum(rate(tikv_region_written_bytes_bucket[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_regi", - "refId": "A", - "step": 10 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Region written bytes", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": null, - "format": "decbytes", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null - }, - "yBucketBound": "auto", - "yBucketNumber": null, - "yBucketSize": null - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The average rate of written keys to Regions per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 35 - }, - "id": 57, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_region_written_keys_sum{instance=~\"$instance\"}[1m])) by (instance) / sum(rate(tikv_region_written_keys_count{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_region_written_keys_bucket", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region average written keys", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "cards": { - "cardPadding": null, - "cardRound": null - }, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateOranges", - "exponent": 0.5, - "mode": "spectrum" - }, - "dataFormat": "timeseries", - "datasource": "tidb-cluster", - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 35 - }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, - "id": 3637, - "legend": { - "show": false - }, - "links": [], - "reverseYBuckets": false, - "targets": [ - { - "expr": "sum(rate(tikv_region_written_keys_bucket{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_region_written_keys_bucket", - "refId": "A", - "step": 10 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Region written keys", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": null, - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null - }, - "yBucketBound": "auto", - "yBucketNumber": null, - "yBucketSize": null - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The ratio of request batch output to input per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 43 - }, - "id": 3718, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_request_batch_ratio_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_server_request_batch_ratio_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{type}} avg", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_request_batch_ratio_bucket{instance=~\"$instance\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{type}} 99", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Request batch ratio", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The size of requests into request batch per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 43 - }, - "id": 3720, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_request_batch_size_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_server_request_batch_size_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{type}} avg", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_request_batch_size_bucket{instance=~\"$instance\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{type}} 99", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Request batch input", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 10, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Server", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 2745, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of different kinds of gRPC message", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 4 - }, - "id": 95, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_grpc_msg_duration_seconds_bucket", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of different kinds of gRPC message which is failed", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 4 - }, - "id": 107, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_grpc_msg_fail_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message failed", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The execution time of gRPC message", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 98, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_grpc_msg_duration_seconds_bucket{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (le, type))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 2532, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_grpc_msg_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 20 - }, - "id": 2533, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_grpc_req_batch_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "99% request", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_grpc_resp_batch_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99% response", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_server_grpc_req_batch_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_server_grpc_req_batch_size_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg request", - "refId": "C" - }, - { - "expr": "sum(rate(tikv_server_grpc_resp_batch_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_server_grpc_resp_batch_size_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg response", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC batch size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 20 - }, - "id": 2534, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_raft_message_batch_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_server_raft_message_batch_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_server_raft_message_batch_size_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "raft message batch size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "gRPC", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 2746, - "panels": [ - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.7 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "datasourceId": 1, - "model": { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"raftstore_.*\"}[1m])) by (instance)", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 20 - }, - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "60s", - "handler": 1, - "message": "TiKV raftstore thread CPU usage is high", - "name": "TiKV raft store CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of raftstore thread", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 5 - }, - "id": 61, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"raftstore_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.85 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft store CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.8 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV async apply thread CPU usage is high", - "name": "TiKV async apply CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of async apply", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 5 - }, - "id": 79, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"apply_[0-9]+\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Async apply CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV scheduler worker thread CPU usage is high", - "name": "TiKV scheduler worker CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of scheduler worker", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 64, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"sched_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler worker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV gRPC poll thread CPU usage is high", - "name": "TiKV gRPC poll CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of gRPC", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 105, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"grpc.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC poll CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 7.2 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Coprocessor thread CPU alert", - "name": "TiKV Coprocessor CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of coprocessor", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 78, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_normal.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_high.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_low.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Storage ReadPool thread CPU usage is high", - "name": "TiKV Storage ReadPool CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of readpool", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 19 - }, - "id": 1908, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_norm.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_high.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_low.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage ReadPool CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe CPU utilization of split check", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 26 - }, - "id": 68, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"split_check\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Split check CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of RocksDB", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 26 - }, - "id": 69, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"rocksdb.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 1 - }, - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 4 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 2531, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"gc_worker.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC worker CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of snapshot worker", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 67, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"snapshot_worker\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Snapshot worker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Thread CPU", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 47 - }, - "id": 2747, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of requests that TiKV sends to PD", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 6 - }, - "id": 1069, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD requests", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed by requests that TiKV sends to PD", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 6 - }, - "id": 1070, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_request_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_pd_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD request duration (average)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe total number of PD heartbeat messages", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 1215, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_heartbeat_message_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD heartbeats", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of peers validated by the PD worker", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 1396, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_validate_peer_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD validate peers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "PD", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 48 - }, - "id": 2748, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The time consumed when Raft applies log", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 31, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_apply_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_apply_log_duration_seconds_count{instance=~\"$instance\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed for Raft to apply logs per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 32, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " {{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply log duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when Raft appends log", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 39, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_append_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_append_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when Raft appends log on each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 40, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} ", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when Raft commits log", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 3690, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_raftstore_commit_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_commit_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when Raft commits log on each TiKV instance", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 3688, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration per server", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Raft IO", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 49 - }, - "id": 2749, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of different ready type of Raft", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_raft_ready_handled_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_raftstore_raft_ready_handled_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_raft_process_duration_secs_count{instance=~\"$instance\", type=\"ready\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "count", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Ready handled", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed for peer processes to be ready in Raft", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 118, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{instance=~\"$instance\", type='ready'}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 1 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Process ready duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed by raftstore events (P99).99", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 123, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_event_duration_bucket{instance=~\"$instance\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 1 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "0.99 Duration of raft store events", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Raft process", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 50 - }, - "id": 2750, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The number of Raft messages sent by each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1615, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_raft_sent_message_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Sent messages per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of Raft messages flushed by each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 1616, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_raft_message_flush_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_server_raft_message_flush_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Flush messages per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of Raft messages received by each TiKV instance", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 106, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_raft_message_recv_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Receive messages per server", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different types of Raft messages that are sent", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_raft_sent_message_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Messages", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of vote messages that are sent in Raft", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 25, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_raft_sent_message_total{instance=~\"$instance\", type=\"vote\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Vote", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of dropped Raft messages per type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 1309, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_raft_dropped_message_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft dropped messages", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Raft message", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 51 - }, - "id": 2751, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The proposal count of all Regions in a mio tick", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 108, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_proposal_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft proposals per ready", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of proposals per type", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_proposal_total{instance=~\"$instance\", type=~\"local_read|normal|read_index\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_raftstore_proposal_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft read/write proposals", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of read proposals which are made by each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 119, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_proposal_total{instance=~\"$instance\", type=~\"local_read|read_index\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft read proposals per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of write proposals which are made by each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 120, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_proposal_total{instance=~\"$instance\", type=\"normal\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_raftstore_proposal_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft write proposals per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The wait time of each proposal", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 41, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "tikv_raftstore_request_wait_time_duration_secs_bucket", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_request_wait_time_duration_secs_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_request_wait_time_duration_secs_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Propose wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The wait time of each proposal in each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 42, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Propose wait duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 2535, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "tikv_raftstore_request_wait_time_duration_secs_bucket", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_apply_wait_time_duration_secs_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_apply_wait_time_duration_secs_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 2536, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply wait duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The rate at which peers propose logs", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 1975, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(rate(tikv_raftstore_propose_log_size_sum{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft log speed", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "label": "bytes/s", - "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 - } - } - ], - "repeat": null, - "title": "Raft propose", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 52 - }, - "id": 2752, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The number of admin proposals", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 76, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_proposal_total{instance=~\"$instance\", type=~\"conf_change|transfer_leader\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_raftstore_proposal_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Admin proposals", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of the processed apply command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 77, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_admin_cmd_total{instance=~\"$instance\", status=\"success\", type!=\"compact\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_raftstore_admin_cmd_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Admin apply", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of raftstore split checksss", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 18 - }, - "id": 70, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_check_split_total{instance=~\"$instance\", type!=\"ignore\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_raftstore_check_split_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Check split", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when running split check in .9999", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 18 - }, - "id": 71, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, sum(rate(tikv_raftstore_check_split_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_raftstore_check_split_duration_seconds_bucket", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99.99% Check split duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Raft admin", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 53 - }, - "id": 2753, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The number of rejections from the local read thread and The number of total requests", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 2292, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/.*-total/i", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_raftstore_local_read_reject_total{instance=~\"$instance\"}[1m])) by (instance, reason)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-reject-by-{{reason}}", - "refId": "A" - }, - { - "expr": "sum(rate(tikv_raftstore_local_read_executed_requests{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Local reader requests", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Local reader", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 54 - }, - "id": 2754, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total count of different kinds of commands received", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 13 - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_command_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage command total", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of engine asynchronous request errors", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 13 - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_engine_async_request_total{instance=~\"$instance\", status!~\"all|success\"}[1m])) by (status)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{status}}", - "metric": "tikv_raftstore_raft_process_duration_secs_bucket", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage async request error", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed by processing asynchronous snapshot requests", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 15, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"snapshot\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"snapshot\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_storage_engine_async_request_duration_seconds_sum{instance=~\"$instance\", type=\"snapshot\"}[1m])) / sum(rate(tikv_storage_engine_async_request_duration_seconds_count{instance=~\"$instance\", type=\"snapshot\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage async snapshot duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed by processing asynchronous write requests", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 109, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"write\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"write\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_storage_engine_async_request_duration_seconds_sum{instance=~\"$instance\", type=\"write\"}[1m])) / sum(rate(tikv_storage_engine_async_request_duration_seconds_count{instance=~\"$instance\", type=\"write\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage async write duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Storage", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 55 - }, - "id": 2755, - "panels": [ - { - "type": "graph", - "title": "Scheduler writing bytes", - "gridPos": { - "x": 12, - "y": 14, - "w": 12, - "h": 10 - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total writing bytes of commands on each stage", - "fill": 1, - "height": "400", - "id": 3834, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_scheduler_writing_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of commands on each stage", - "fill": 1, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 14 - }, - "height": "400", - "id": 167, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_too_busy_total{instance=~\"$instance\"}[1m])) by (stage)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "busy", - "refId": "A", - "step": 20 - }, - { - "expr": "sum(rate(tikv_scheduler_stage_total{instance=~\"$instance\"}[1m])) by (stage)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{stage}}", - "refId": "B", - "step": 20 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler stage total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of different priority commands", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 24 - }, - "height": "", - "id": 1, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_commands_pri_total{instance=~\"$instance\"}[1m])) by (priority)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{priority}}", - "metric": "", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler priority commands", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 300 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "120s", - "handler": 1, - "message": "TiKV scheduler context total", - "name": "scheduler pending commands alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of pending commands per TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 24 - }, - "height": "", - "id": 193, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_scheduler_contex_total{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 40 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 300 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler pending commands", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Scheduler", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 56 - }, - "id": 2756, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of commands on each stage in commit command", - "fill": 1, - "gridPos": { - "h": 10, - "w": 24, - "x": 0, - "y": 15 - }, - "height": "400", - "id": 168, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 1, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_too_busy_total{instance=~\"$instance\", type=\"$command\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "busy", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_scheduler_stage_total{instance=~\"$instance\", type=\"$command\"}[1m])) by (stage)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{stage}}", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler stage total", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_command_duration_seconds_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_command_duration_seconds_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_scheduler_command_duration_seconds_sum{instance=~\"$instance\", type=\"$command\"}[1m])) / sum(rate(tikv_scheduler_command_duration_seconds_count{instance=~\"$instance\", type=\"$command\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler command duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time which is caused by latch wait in commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 194, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_scheduler_latch_wait_duration_seconds_sum{instance=~\"$instance\", type=\"$command\"}[1m])) / sum(rate(tikv_scheduler_latch_wait_duration_seconds_count{instance=~\"$instance\", type=\"$command\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler latch wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of keys read by a commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 195, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_kv_command_key_read_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "kv_command_key", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_kv_command_key_read_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_scheduler_kv_command_key_read_sum{instance=~\"$instance\", type=\"$command\"}[1m])) / sum(rate(tikv_scheduler_kv_command_key_read_count{instance=~\"$instance\", type=\"$command\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler keys read", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of keys written by a commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 373, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_kv_command_key_write_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "kv_command_key", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_kv_command_key_write_bucket{instance=~\"$instance\", type=\"$command\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_scheduler_kv_command_key_write_sum{instance=~\"$instance\", type=\"$command\"}[1m])) / sum(rate(tikv_scheduler_kv_command_key_write_count{instance=~\"$instance\", type=\"$command\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler keys written", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The keys scan details of each CF when executing commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 41 - }, - "id": 560, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_kv_scan_details{instance=~\"$instance\", req=\"$command\"}[1m])) by (tag)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler scan details", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The keys scan details of lock CF when executing commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 41 - }, - "id": 675, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_kv_scan_details{instance=~\"$instance\", req=\"$command\", cf=\"lock\"}[1m])) by (tag)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler scan details [lock]", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The keys scan details of write CF when executing commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 49 - }, - "id": 829, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_kv_scan_details{instance=~\"$instance\", req=\"$command\", cf=\"write\"}[1m])) by (tag)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler scan details [write]", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The keys scan details of default CF when executing commit command", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 49 - }, - "id": 830, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "command": { - "selected": false, - "text": "commit", - "value": "commit" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_kv_scan_details{instance=~\"$instance\", req=\"$command\", cf=\"default\"}[1m])) by (tag)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler scan details [default]", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": "command", - "title": "Scheduler - $command", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 57 - }, - "id": 2758, - "panels": [ - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The number of versions for each key", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 26, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": false, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_mvcc_versions_bucket{instance=~\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " max", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MVCC versions", - "tooltip": { - "msResolution": false, - "shared": false, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "histogram", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "cards": { - "cardPadding": null, - "cardRound": null - }, - "color": { - "cardColor": "#b4ff00", - "colorScale": "sqrt", - "colorScheme": "interpolateOranges", - "exponent": 0.5, - "mode": "spectrum" - }, - "dataFormat": "timeseries", - "datasource": "tidb-cluster", - "description": "The number of versions deleted by GC for each key", - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 19 - }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, - "id": 559, - "legend": { - "show": false - }, - "links": [], - "reverseYBuckets": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_mvcc_gc_delete_versions_bucket{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " max", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "MVCC delete versions", - "tooltip": { - "show": true, - "showHistogram": false - }, - "type": "heatmap", - "xAxis": { - "show": true - }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": null, - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null - }, - "yBucketBound": "auto", - "yBucketNumber": null, - "yBucketSize": null - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of GC tasks processed by gc_worker", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 26 - }, - "id": 121, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_gcworker_gc_tasks_vec{instance=~\"$instance\"}[1m])) by (task)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total-{{task}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_storage_gc_skipped_counter{instance=~\"$instance\"}[1m])) by (task)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "skipped-{{task}}", - "metric": "tikv_storage_gc_skipped_counter", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_gcworker_gc_task_fail_vec{instance=~\"$instance\"}[1m])) by (task)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "failed-{{task}}", - "refId": "C" - }, - { - "expr": "sum(rate(tikv_gc_worker_too_busy{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "gcworker-too-busy", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC tasks", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing GC tasks", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 26 - }, - "id": 2224, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tikv_gcworker_gc_task_duration_vec_bucket{instance=~\"$instance\"}[1m])) by (le, task))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max-{{task}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_gcworker_gc_task_duration_vec_bucket{instance=~\"$instance\"}[1m])) by (le, task))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%-{{task}}", - "metric": "tikv_storage_gc_skipped_counter", - "refId": "B", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_gcworker_gc_task_duration_vec_bucket{instance=~\"$instance\"}[1m])) by (le, task))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%-{{task}}", - "refId": "C" - }, - { - "expr": "sum(rate(tikv_gcworker_gc_task_duration_vec_sum{instance=~\"$instance\"}[1m])) by (task) / sum(rate(tikv_gcworker_gc_task_duration_vec_count{instance=~\"$instance\"}[1m])) by (task)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "average-{{task}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC tasks duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of keys in write CF affected during GC", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 2225, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_gcworker_gc_keys{instance=~\"$instance\", cf=\"write\"}[1m])) by (tag)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC keys (write CF)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "The count of TiDB GC worker actions", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 966, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tidb_tikvclient_gc_worker_actions_total[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiDB GC worker actions", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "The GC duration", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 40 - }, - "id": 969, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1.0, sum(rate(tidb_tikvclient_gc_seconds_bucket[1m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiDB GC seconds", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "keys / second", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 40 - }, - "id": 2589, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_mvcc_gc_delete_versions_sum[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "keys/s", - "refId": "E" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC speed", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 0, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 47 - }, - "id": 2819, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(max_over_time(tikv_gcworker_autogc_status{instance=~\"$instance\", state=\"working\"}[1m])) by (instance)", - "format": "time_series", - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiKV AutoGC Working", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "none", - "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": "tidb-cluster", - "decimals": 0, - "description": "Progress of ResolveLocks, the first phase of GC", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 47 - }, - "id": 2823, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "max(tidb_tikvclient_range_task_stats{type=~\"resolve-locks.*\"}) by (result)", - "format": "time_series", - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{result}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "ResolveLocks Progress", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "none", - "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": "tidb-cluster", - "decimals": 0, - "description": "Progress of TiKV's GC", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 54 - }, - "id": 2821, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_gcworker_autogc_processed_regions{instance=~\"$instance\", type=\"scan\"}) by (instance) / sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"region\"}) by (instance)", - "format": "time_series", - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiKV Auto GC Progress", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1.1", - "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": "tidb-cluster", - "decimals": 0, - "description": "SafePoint used for TiKV's Auto GC", - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 54 - }, - "id": 2822, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_gcworker_autogc_safe_point) by (instance) / (2^18)", - "format": "time_series", - "instant": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_storage_command_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "TiKV Auto GC SafePoint", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "dateTimeAsIso", - "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 - } - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": 0, - "description": " \tThe lifetime of TiDB GC", - "editable": true, - "error": false, - "format": "s", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 0, - "y": 61 - }, - "id": 27, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "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": [ - { - "expr": "max(tidb_tikvclient_gc_config{type=\"tikv_gc_life_time\"})", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "refId": "A", - "step": 60 - } - ], - "thresholds": "", - "title": "GC lifetime", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "tidb-cluster", - "decimals": 0, - "description": "The interval of TiDB GC", - "editable": true, - "error": false, - "format": "s", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 7, - "w": 6, - "x": 6, - "y": 61 - }, - "id": 28, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "null", - "nullText": null, - "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": [ - { - "expr": "max(tidb_tikvclient_gc_config{type=\"tikv_gc_run_interval\"})", - "format": "time_series", - "intervalFactor": 2, - "refId": "A", - "step": 60 - } - ], - "thresholds": "", - "title": "GC interval", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "title": "GC", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 58 - }, - "id": 2759, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The rate of Raft snapshot messages sent", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 20 - }, - "id": 35, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(tikv_raftstore_raft_sent_message_total{instance=~\"$instance\", type=\"snapshot\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " ", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Rate snapshot message", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when handling snapshots", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 20 - }, - "id": 36, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_server_send_snapshot_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "send", - "refId": "A", - "step": 60 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_snapshot_duration_seconds_bucket{instance=~\"$instance\", type=\"apply\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "apply", - "refId": "B", - "step": 60 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_snapshot_duration_seconds_bucket{instance=~\"$instance\", type=\"generate\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "generate", - "refId": "C", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% Handle snapshot duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of snapshots in different states", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 20 - }, - "id": 38, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": true, - "targets": [ - { - "expr": "sum(tikv_raftstore_snapshot_traffic_total{instance=~\"$instance\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Snapshot state count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The snapshot size (P99.99).9999", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 44, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, sum(rate(tikv_snapshot_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "size", - "metric": "tikv_snapshot_size_bucket", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99.99% Snapshot size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The number of KV within a snapshot in .9999", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 27 - }, - "id": 43, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, sum(rate(tikv_snapshot_kv_count_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "count", - "metric": "tikv_snapshot_kv_count_bucket", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99.99% Snapshot KV count", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Snapshot", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 59 - }, - "id": 2760, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The number of tasks handled by worker", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 59, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_worker_handled_task_total{instance=~\"$instance\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Worker handled tasks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tCurrent pending and running tasks of worker", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 1395, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_worker_pending_task_total{instance=~\"$instance\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Worker pending tasks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of tasks handled by future_pool", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 29 - }, - "id": 1876, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_futurepool_handled_task_total{instance=~\"$instance\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "FuturePool handled tasks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "Current pending and running tasks of future_pool", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 29 - }, - "id": 1877, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_futurepool_pending_task_total{instance=~\"$instance\"}[1m])) by (name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "FuturePool pending tasks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Task", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 60 - }, - "id": 2757, - "panels": [ - { - "cards": { - "cardPadding": 0, - "cardRound": 0 - }, - "color": { - "cardColor": "#5195ce", - "colorScale": "linear", - "colorScheme": "interpolateBlues", - "exponent": 0.5, - "min": 0, - "mode": "spectrum" - }, - "dataFormat": "tsbuckets", - "datasource": "tidb-cluster", - "description": "The time consumed to handle coprocessor read requests", - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 22 - }, - "heatmap": {}, - "hideZeroBuckets": false, - "highlightCards": true, - "id": 3062, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "links": [], - "reverseYBuckets": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le)", - "format": "heatmap", - "instant": false, - "intervalFactor": 2, - "legendFormat": "{{le}}", - "refId": "A" - } - ], - "title": "Request duration", - "tooltip": { - "show": true, - "showHistogram": true - }, - "tooltipDecimals": 1, - "type": "heatmap", - "xAxis": { - "show": true - }, - "xBucketNumber": null, - "xBucketSize": null, - "yAxis": { - "decimals": 1, - "format": "s", - "logBase": 1, - "max": null, - "min": null, - "show": true, - "splitFactor": null - }, - "yBucketBound": "upper", - "yBucketNumber": null, - "yBucketSize": null - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 22 - }, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-100%", - "refId": "E" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Request duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 1, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 74, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (req)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{req}}", - "metric": "tikv_coprocessor_request_error", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Requests", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "ops", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 3128, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\"}[1m])) by (reason)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{reason}}", - "metric": "tikv_coprocessor_request_error", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Request Errors", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 37 - }, - "id": 52, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_scan_keys_sum{instance=~\"$instance\"}[1m])) by (req)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total KV Cursor Operations", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 37 - }, - "id": 3129, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "100%-{{req}}", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%-{{req}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV Cursor Operations", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 44 - }, - "id": 2118, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "key_skipped", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_rocksdb_perf{instance=~\"$instance\" ,metric=\"internal_delete_skipped_count\"}[1m])) by (req)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "delete_skipped-{{req}}", - "metric": "scan_details", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total RocksDB Perf Statistics", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "decimals": null, - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 44 - }, - "id": 551, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_response_bytes{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "size", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Response Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Coprocessor Overview", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 61 - }, - "id": 3197, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when handling coprocessor requests", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 113, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tikv_coprocessor_request_handle_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-100%", - "refId": "E" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_handle_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handle duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 1, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "s", - "label": "", - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "decimals": 1, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed to handle coprocessor requests per TiKV instance (P95)", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 117, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_handle_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{req}}", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "95% Handle duration by store", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when coprocessor requests are wait for being handled", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 111, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(1, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-100%", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when coprocessor requests are wait for being handled in each TiKV instance", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 116, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{req}}", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "95% Wait duration by store", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "decimals": 1, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 37 - }, - "id": 3195, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_dag_request_count{instance=~\"$instance\"}[1m])) by (vec_type)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{vec_type}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total DAG Requests", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of DAG executors", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 37 - }, - "id": 3264, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_executor_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total DAG Executors", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 44 - }, - "id": 552, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_scan_details{instance=~\"$instance\", req=\"select\"}[1m])) by (tag)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "scan_details", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Ops Details (Table Scan)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 44 - }, - "id": 3263, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_scan_details{instance=~\"$instance\", req=\"index\"}[1m])) by (tag)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{tag}}", - "metric": "scan_details", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Ops Details (Index Scan)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 53 - }, - "id": 122, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_scan_details{instance=~\"$instance\", req=\"select\"}[1m])) by (tag,cf)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{cf}}-{{tag}}", - "metric": "scan_details", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Ops Details by CF (Table Scan)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 53 - }, - "id": 554, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": "cf", - "repeatDirection": "h", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_scan_details{instance=~\"$instance\", req=\"index\"}[1m])) by (tag,cf)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{cf}}-{{tag}}", - "metric": "scan_details", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total Ops Details by CF (Index Scan)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "Coprocessor Detail", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 62 - }, - "id": 2761, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 2108, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_threads_state{instance=~\"$instance\"}) by (instance, state)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}-{{state}}", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(tikv_threads_state{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Threads state", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 24 - }, - "id": 2258, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_threads_io_bytes_total{instance=~\"$instance\"}[30s])) by (name, io) > 1024", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{name}}-{{io}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Threads IO", - "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": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 31 - }, - "id": 2660, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_voluntary_context_switches{instance=~\"$instance\"}[30s])) by (instance, name) > 200", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{instance}} - {{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Thread Voluntary Context Switches", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 31 - }, - "id": 2661, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": true, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_nonvoluntary_context_switches{instance=~\"$instance\"}[30s])) by (instance, name) > 50", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{instance}} - {{name}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Thread Nonvoluntary Context Switches", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Threads", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 63 - }, - "id": 2762, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of get operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 138, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_memtable_efficiency{instance=~\"$instance\", db=\"$db\", type=\"memtable_hit\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memtable", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=~\"block_cache_data_hit|block_cache_filter_hit\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "block_cache", - "metric": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_get_served{instance=~\"$instance\", db=\"$db\", type=\"get_hit_l0\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "l0", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_get_served{instance=~\"$instance\", db=\"$db\", type=\"get_hit_l1\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "l1", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_get_served{instance=~\"$instance\", db=\"$db\", type=\"get_hit_l2_and_up\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "l2_and_up", - "refId": "F", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Get operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing get operations", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 82, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"get_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"get_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"get_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"get_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Get duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of seek operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 129, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_seek\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "seek", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_seek_found\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "seek_found", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_next\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "next", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_next_found\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "next_found", - "metric": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_prev\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "prev", - "metric": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_locate{instance=~\"$instance\", db=\"$db\", type=\"number_db_prev_found\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "prev_found", - "metric": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Seek operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing seek operation", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 125, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"seek_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"seek_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"seek_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"seek_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Seek duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of write operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 41 - }, - "id": 139, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_write_served{instance=~\"$instance\", db=\"$db\", type=~\"write_done_by_self|write_done_by_other\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "done", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_write_served{instance=~\"$instance\", db=\"$db\", type=\"write_timeout\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "timeout", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_write_served{instance=~\"$instance\", db=\"$db\", type=\"write_with_wal\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "with_wal", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing write operation", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 41 - }, - "id": 126, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"write_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"write_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"write_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"write_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe count of WAL sync operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 49 - }, - "id": 137, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_wal_file_synced{instance=~\"$instance\", db=\"$db\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "sync", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "WAL sync operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing WAL sync operation", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 49 - }, - "id": 135, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"wal_file_sync_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"wal_file_sync_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"wal_file_sync_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"$db\",type=\"wal_file_sync_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "WAL sync duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of compaction and flush operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 57 - }, - "id": 128, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_event_total{instance=~\"$instance\", db=\"$db\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_engine_event_total", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compaction operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when executing the compaction and flush operations", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 57 - }, - "id": 136, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_compaction_time{instance=~\"$instance\", db=\"$db\",type=\"compaction_time_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_compaction_time{instance=~\"$instance\", db=\"$db\",type=\"compaction_time_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_compaction_time{instance=~\"$instance\", db=\"$db\",type=\"compaction_time_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_compaction_time{instance=~\"$instance\", db=\"$db\",type=\"compaction_time_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compaction duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed when reading SST files", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 65 - }, - "id": 140, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_sst_read_micros{instance=~\"$instance\", db=\"$db\", type=\"sst_read_micros_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_sst_read_micros{instance=~\"$instance\", db=\"$db\", type=\"sst_read_micros_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_sst_read_micros{instance=~\"$instance\", db=\"$db\", type=\"sst_read_micros_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_sst_read_micros{instance=~\"$instance\", db=\"$db\", type=\"sst_read_micros_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "SST read duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time which is caused by write stall", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 153 - }, - "id": 87, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_write_stall{instance=~\"$instance\", db=\"$db\", type=\"write_stall_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"$db\", type=\"write_stall_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"$db\", type=\"write_stall_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"$db\", type=\"write_stall_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write stall duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The memtable size of each column family", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 153 - }, - "id": 103, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_memory_bytes{instance=~\"$instance\", db=\"$db\", type=\"mem-tables\"}) by (cf)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{cf}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memtable size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The hit rate of memtable", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 73 - }, - "id": 88, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_memtable_efficiency{instance=~\"$instance\", db=\"$db\", type=\"memtable_hit\"}[1m])) / (sum(rate(tikv_engine_memtable_efficiency{db=\"$db\", type=\"memtable_hit\"}[1m])) + sum(rate(tikv_engine_memtable_efficiency{db=\"$db\", type=\"memtable_miss\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "hit", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memtable hit", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The block cache size. Broken down by column family if shared block cache is disabled.", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 81 - }, - "id": 102, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "topk(20, avg(tikv_engine_block_cache_size_bytes{instance=~\"$instance\", db=\"$db\"}) by(cf, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{cf}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Block cache size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The hit rate of block cache", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 81 - }, - "id": 80, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 2, - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_hit\"}[1m])) / (sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_hit\"}[1m])) + sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_miss\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "all", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_data_hit\"}[1m])) / (sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_data_hit\"}[1m])) + sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_data_miss\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "data", - "metric": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_filter_hit\"}[1m])) / (sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_filter_hit\"}[1m])) + sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_filter_miss\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "filter", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_index_hit\"}[1m])) / (sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_index_hit\"}[1m])) + sum(rate(tikv_engine_cache_efficiency{db=\"$db\", type=\"block_cache_index_miss\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "index", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_bloom_efficiency{instance=~\"$instance\", db=\"$db\", type=\"bloom_prefix_useful\"}[1m])) / sum(rate(tikv_engine_bloom_efficiency{db=\"$db\", type=\"bloom_prefix_checked\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "bloom prefix", - "metric": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Block cache hit", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The flow of different kinds of block cache operations", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 89 - }, - "height": "", - "id": 467, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"block_cache_byte_read\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "total_read", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"block_cache_byte_write\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "total_written", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_data_bytes_insert\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "data_insert", - "metric": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_filter_bytes_insert\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "filter_insert", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_filter_bytes_evict\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "filter_evict", - "metric": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_index_bytes_insert\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "index_insert", - "metric": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_index_bytes_evict\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "index_evict", - "metric": "", - "refId": "G", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Block cache flow", - "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": 10, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of different kinds of block cache operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 89 - }, - "id": 468, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_add\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "total_add", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_data_add\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "data_add", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_filter_add\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "filter_add", - "metric": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_index_add\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "index_add", - "metric": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_cache_efficiency{instance=~\"$instance\", db=\"$db\", type=\"block_cache_add_failures\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "add_failures", - "metric": "", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Block cache operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The flow of different kinds of operations on keys", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 97 - }, - "height": "", - "id": 132, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"keys_read\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "read", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"keys_written\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "written", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_compaction_num_corrupt_keys{instance=~\"$instance\", db=\"$db\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "corrupt", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Keys flow", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of keys in each column family", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 97 - }, - "id": 131, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_estimate_num_keys{instance=~\"$instance\", db=\"$db\"}) by (cf)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{cf}}", - "metric": "tikv_engine_estimate_num_keys", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total keys", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The flow rate of read operations per type", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 105 - }, - "height": "", - "id": 85, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"bytes_read\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "get", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"iter_bytes_read\"}[1m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "scan", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Read flow", - "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": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The bytes per read", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 105 - }, - "id": 133, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_bytes_per_read{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_read_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_read{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_read_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_read{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_read_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_read{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_read_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bytes / Read", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The flow of different kinds of write operations", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 113 - }, - "height": "", - "id": 86, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"wal_file_bytes\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "wal", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"bytes_written\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "write", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write flow", - "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": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The bytes per write", - "fill": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 113 - }, - "id": 134, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(tikv_engine_bytes_per_write{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_write_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_write{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_write_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_write{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_write_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_bytes_per_write{instance=~\"$instance\", db=\"$db\",type=\"bytes_per_write_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Bytes / Write", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The flow rate of compaction operations per type", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 121 - }, - "id": 90, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_compaction_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"bytes_read\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "read", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_compaction_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"bytes_written\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "written", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"flush_write_bytes\"}[1m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "flushed", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compaction flow", - "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": "0", - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The pending bytes to be compacted", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 121 - }, - "id": 127, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_pending_compaction_bytes{instance=~\"$instance\", db=\"$db\"}[1m])) by (cf)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{cf}}", - "metric": "tikv_engine_pending_compaction_bytes", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compaction pending bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The read amplification per TiKV instance \t", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 129 - }, - "id": 518, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_read_amp_flow_bytes{instance=~\"$instance\", db=\"$db\", type=\"read_amp_total_read_bytes\"}[1m])) by (instance) / sum(rate(tikv_engine_read_amp_flow_bytes{db=\"$db\", type=\"read_amp_estimate_useful_bytes\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Read amplication", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The compression ratio of each level", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 129 - }, - "id": 863, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_compression_ratio{instance=~\"$instance\", db=\"$db\"}) by (level)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "level - {{level}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compression ratio", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The number of snapshot of each TiKV instance", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 137 - }, - "id": 516, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tikv_engine_num_snapshots{instance=~\"$instance\", db=\"$db\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Number of snapshots", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The time that the oldest unreleased snapshot survivals", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 137 - }, - "id": 517, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tikv_engine_oldest_snapshot_duration{instance=~\"$instance\", db=\"$db\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_engine_oldest_snapshot_duration", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Oldest snapshots duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "The number of SST files for different column families in each level", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 145 - }, - "id": 2002, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_num_files_at_level{instance=~\"$instance\", db=\"$db\"}) by (cf, level)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "cf-{{cf}}, level-{{level}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Number files at each level", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "The time consumed when ingesting SST files", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 145 - }, - "id": 2003, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_snapshot_ingest_sst_duration_seconds_bucket{instance=~\"$instance\", db=\"$db\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A" - }, - { - "expr": "sum(rate(tikv_snapshot_ingest_sst_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_snapshot_ingest_sst_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "average", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Ingest SST duration seconds", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "Stall conditions changed of each column family", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 153 - }, - "id": 2381, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tikv_engine_stall_conditions_changed{instance=~\"$instance\", db=\"$db\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{cf}}-{{type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Stall conditions changed of each CF", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 161 - }, - "id": 2452, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "text": "kv", - "value": "kv", - "selected": false - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(tikv_engine_write_stall_reason{instance=~\"$instance\", db=\"$db\"}[1m])) by (type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Write Stall Reason", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 65 - }, - "id": 2451, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_compaction_reason{instance=~\"$instance\", db=\"$db\"}[1m])) by (cf, reason)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{cf}} - {{reason}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Compaction reason", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": "db", - "title": "RocksDB - $db", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 64 - }, - "id": 3301, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 3414, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_key_size{instance=~\"$instance\", db=\"$db\", type=\"blob_key_size_average\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_key_size{instance=~\"$instance\", db=\"$db\", type=\"blob_key_size_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_key_size{instance=~\"$instance\", db=\"$db\", type=\"blob_key_size_percentile99\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "D" - }, - { - "expr": "max(tikv_engine_blob_key_size{instance=~\"$instance\", db=\"$db\", type=\"blob_key_size_max\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "max", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob key size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 27 - }, - "id": 3446, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_value_size{instance=~\"$instance\", db=\"$db\", type=\"blob_value_size_average\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_value_size{instance=~\"$instance\", db=\"$db\", type=\"blob_value_size_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_value_size{instance=~\"$instance\", db=\"$db\", type=\"blob_value_size_percentile99\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_value_size{instance=~\"$instance\", db=\"$db\", type=\"blob_value_size_max\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob value size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 27 - }, - "id": 3412, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_seek_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_average\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_seek_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_percentile95\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_seek_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_percentile99\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_seek_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_max\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob seek duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 3338, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_locate{instance=~\"$instance\", db=\"$db\", type=\"number_blob_seek\"}[2m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "seek", - "refId": "A" - }, - { - "expr": "sum(rate(tikv_engine_blob_locate{instance=~\"$instance\", db=\"$db\", type=\"number_blob_prev\"}[2m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "prev", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_engine_blob_locate{instance=~\"$instance\", db=\"$db\", type=\"number_blob_next\"}[2m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "next", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob seek operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 39 - }, - "id": 3655, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_get_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_average\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_get_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_percentile95\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_get_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_percentile99\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_get_micros_seconds{instance=~\"$instance\", db=\"$db\", type=~\".*_max\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob get duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 39 - }, - "id": 3746, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_locate{instance=~\"$instance\", db=\"$db\", type=\"number_blob_get\"}[2m]))", - "format": "time_series", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "seek", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob get operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 3643, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_flow_bytes{instance=~\"$instance\", db=\"$db\", type=~\"bytes.*\"}[2m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob bytes flow", - "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": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 45 - }, - "id": 3645, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_flow_bytes{instance=~\"$instance\", db=\"$db\", type=~\"keys.*\"}[30s])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob keys flow", - "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": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 51 - }, - "id": 3657, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_file_read_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_read_micros_average\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_file_read_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_read_micros_percentile99\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_file_read_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_read_micros_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_file_read_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_read_micros_max\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file read duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 51 - }, - "id": 3408, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_file_write_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_write_micros_average\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_file_write_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_write_micros_percentile99\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_file_write_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_write_micros_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_file_write_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_write_micros_max\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file write duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 57 - }, - "id": 3651, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_file_synced{instance=~\"$instance\", db=\"$db\"}[2m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "sync", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file sync operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 57 - }, - "id": 3653, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_file_sync_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_sync_micros_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_file_sync_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_sync_micros_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_file_sync_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_sync_micros_percentile99\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_file_sync_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_file_sync_micros_max\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file sync duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 63 - }, - "id": 3555, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_titandb_num_live_blob_file{instance=~\"$instance\", db=\"$db\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "live blob file num", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_titandb_num_obsolete_blob_file{instance=~\"$instance\", db=\"$db\"})", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "obsolete blob file num", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 63 - }, - "id": 3557, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_titandb_live_blob_file_size{instance=~\"$instance\", db=\"$db\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "live blob file size", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_titandb_obsolete_blob_file_size{instance=~\"$instance\", db=\"$db\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "obsolete blob file size", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob file size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 69 - }, - "id": 3344, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_gc_file_count{instance=~\"$instance\", db=\"$db\"}[2m])) by (type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob GC file", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 69 - }, - "id": 3410, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_blob_gc_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_gc_micros_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "A" - }, - { - "expr": "avg(tikv_engine_blob_gc_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_gc_micros_percentile95\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "avg(tikv_engine_blob_gc_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_gc_micros_percentile99\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "99%", - "refId": "C" - }, - { - "expr": "avg(tikv_engine_blob_gc_micros_seconds{instance=~\"$instance\", db=\"$db\", type=\"blob_gc_micros_max\"})", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "max", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob GC duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 75 - }, - "id": 3340, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_gc_flow_bytes{instance=~\"$instance\", db=\"$db\", type=~\"bytes.*\"}[30s])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob GC bytes flow", - "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": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 12, - "y": 75 - }, - "id": 3649, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_blob_gc_flow_bytes{instance=~\"$instance\", db=\"$db\", type=~\"keys.*\"}[30s])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Blob GC keys flow", - "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": "decbytes", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 6, - "w": 12, - "x": 0, - "y": 81 - }, - "id": 3523, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_titandb_live_blob_size{instance=~\"$instance\", db=\"$db\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "live blob size", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Live blob size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": "db", - "title": "Titan - $db", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 65 - }, - "id": 2820, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 2877, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_lock_manager_task_counter{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Handled tasks", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 2934, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_lock_manager_error_counter{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Detect error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 2993, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_lock_manager_waiter_lifetime_duration_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_lock_manager_waiter_lifetime_duration_count[1m]))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "waiter lifetime", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average waiter lifetime duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 35 - }, - "id": 2995, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_lock_manager_detector_histogram_sum{instance=~\"$instance\"}[1m])) by (instance,type) / sum(rate(tikv_lock_manager_detector_histogram_count[1m])) by (instance,type)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average detector event duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 2991, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"waiter_manager.*\"}[1m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{name}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"deadlock_detect.*\"}[1m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}-{{name}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Thread CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "Lock manager", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 66 - }, - "id": 2763, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 505 - }, - "id": 2696, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tikv_allocator_stats{instance=~\"$instance\"}", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Allocator Stats", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "title": "Memory", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 67 - }, - "id": 3922, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 3924, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"backup_worker.*\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "backup-worker", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"backup_endpoint\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "backup-endpoint", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Backup CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 3926, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_backup_range_size_bytes_bucket{instance=~\"$instance\"}[1m])) by (le, cf))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{cf}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Range Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 3927, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_backup_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_backup_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_backup_request_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_backup_request_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Backup Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 3928, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_backup_range_size_bytes_sum{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "backup-flow", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_backup_range_size_bytes_sum[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Backup Flow", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "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": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 2, - "description": "", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 3929, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(node_disk_read_bytes_total{device=~\"sda\"}[5m])) + sum(irate(node_disk_written_bytes_total{device=~\"sda\"}[5m]))", - "format": "time_series", - "hide": true, - "intervalFactor": 1, - "legendFormat": "Total ", - "refId": "A" - }, - { - "expr": "sum(irate(node_disk_read_bytes_total{device=~\"sda\"}[5m]))", - "format": "time_series", - "hide": true, - "intervalFactor": 1, - "legendFormat": "Read", - "refId": "B" - }, - { - "expr": "sum(irate(node_disk_written_bytes_total{device=~\"sda\"}[5m]))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "Write - total", - "refId": "C" - }, - { - "expr": "sum(irate(node_disk_written_bytes_total{device=~\"sda\"}[5m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "Write - {{instance}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 3930, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_backup_range_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}} - 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_backup_range_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}} - 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_backup_range_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_backup_range_duration_seconds_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}} - avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Backup Range Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 22 - }, - "id": 3931, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(tikv_backup_error_counter[1m])", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{error}} {{instance}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Backup Errors", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "title": "Backup", - "type": "row" - } - ], - "refresh": "1m", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "db", - "multi": true, - "name": "db", - "options": [], - "query": "label_values(tikv_engine_block_cache_size_bytes, db)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "command", - "multi": true, - "name": "command", - "options": [], - "query": "label_values(tikv_storage_command_total, type)", - "refresh": 1, - "regex": "prewrite|commit|rollback", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(tikv_engine_size_bytes, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "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": "browser", - "title": "Test-Cluster-TiKV-Details", - "uid": "RDVQiEzZz2", - "version": 8 -} diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_summary.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_summary.json deleted file mode 100644 index 41d28ec1..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_summary.json +++ /dev/null @@ -1,4777 +0,0 @@ -{ - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "tidb-cluster", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "iteration": 1566459338986, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2742, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The storage size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 0, - "y": 1 - }, - "id": 56, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The available capacity size of each TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 8, - "y": 1 - }, - "id": 1706, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_store_size_bytes{instance=~\"$instance\", type=\"available\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Available size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The capacity size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 8, - "x": 16, - "y": 1 - }, - "id": 1707, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_store_size_bytes{instance=~\"$instance\", type=\"capacity\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Capacity size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe CPU usage of each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1708, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe memory usage of each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 1709, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(process_resident_memory_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total bytes of read and write in each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 17 - }, - "id": 1711, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"kv\", type=\"wal_file_bytes\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-write", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(rate(tikv_engine_flow_bytes{instance=~\"$instance\", db=\"kv\", type=~\"bytes_read|iter_bytes_read\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-read", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "MBps", - "tooltip": { - "msResolution": false, - "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": "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": "tidb-cluster", - "decimals": 1, - "description": "The QPS of different kinds of commands in each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 25 - }, - "id": 1713, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (instance,type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of the gRPC message failures", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 25 - }, - "id": 1712, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}-grpc-msg-fail", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(delta(tikv_pd_heartbeat_message_total{instance=~\"$instance\", type=\"noop\"}[1m])) by (instance) < 1", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-pd-heartbeat", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_critical_error_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Errps", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of leaders per TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 1715, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - }, - { - "expr": "delta(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}[30s]) < -10", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe number of Regions on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 1714, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"region\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Region", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - } - ], - "repeat": null, - "title": "Cluster", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 2743, - "panels": [ - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "5m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "name": "Critical error alert", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 2741, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_critical_error_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A" - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Critical error", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "It contains some kinds of events such as write stall, channel full, scheduler busy, and coprocessor full, which will make the TiKV instance unavailable temporarily.", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1584, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_too_busy_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "scheduler-{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "channelfull-{{instance}}-{{type}}", - "metric": "", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\", type='full'}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "coprocessor-{{instance}}", - "metric": "", - "refId": "C", - "step": 4 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "stall-{{instance}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Server is busy", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "10s", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "10s", - "handler": 1, - "message": "TiKV server report failures", - "name": "server report failures alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of reporting failure messages", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 18, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_server_report_failure_msg_total{instance=~\"$instance\"}[1m])) by (type,instance,store_id)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}} - to - {{store_id}}", - "metric": "tikv_server_raft_store_msg_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Server report failures", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of Raftstore errors per type on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 16 - }, - "id": 1718, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_storage_engine_async_request_total{instance=~\"$instance\", status!~\"success|all\"}[1m])) by (instance, status)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{status}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raftstore error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different scheduler errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 16 - }, - "id": 1719, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_stage_total{instance=~\"$instance\", stage=~\"snapshot_err|prepare_write_err\"}[1m])) by (instance, stage)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{stage}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different coprocessor errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 1720, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\"}[1m])) by (instance, reason)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{reason}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The number of different gRPC message errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 1721, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message error", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of dropped leader in each TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 1722, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(delta(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}[1m])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader drop", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of missing leaders per TiKV instance", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 1723, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_leader_missing{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader missing", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Errors", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 2744, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": " \tThe total size of each column family", - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 33, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CF size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The storage size per TiKV instance", - "editable": true, - "error": false, - "fill": 5, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 1705, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 0, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_engine_size_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Store size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 0 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "datasourceId": 1, - "model": { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - }, - "params": [ - "A", - "10s", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "10s", - "handler": 1, - "message": "TiKV channel full", - "name": "TiKV channel full alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of channel full errors on each TiKV instance", - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 22, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Channel full", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1073741824 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "B", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "avg" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "frequency": "60s", - "handler": 1, - "name": "approximate region size alert", - "noDataState": "no_data", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The approximate Region size", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 1481, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_raftstore_region_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_region_size_count{instance=~\"$instance\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Approximate Region size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Server", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 2745, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The count of different kinds of gRPC message", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 4 - }, - "id": 95, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_grpc_msg_duration_seconds_bucket", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message count", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The count of different kinds of gRPC message which is failed", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 4 - }, - "id": 107, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_fail_total{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "metric": "tikv_grpc_msg_fail_total", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC message failed", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The gRPC message duration per message type (P99)", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 98, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_grpc_msg_duration_seconds_bucket{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (le, type))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 2532, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_grpc_msg_duration_seconds_count[1m])) by (type)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "gRPC", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 2746, - "panels": [ - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.7 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "datasourceId": 1, - "model": { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"raftstore_.*\"}[1m])) by (instance)", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 20 - }, - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "60s", - "handler": 1, - "message": "TiKV raftstore thread CPU usage is high", - "name": "TiKV raft store CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of raftstore thread", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 5 - }, - "id": 61, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"raftstore_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.85 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft store CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.8 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV async apply thread CPU usage is high", - "name": "TiKV async apply CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of async apply", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 5 - }, - "id": 79, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"apply_[0-9]+\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Async apply CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV scheduler worker thread CPU usage is high", - "name": "TiKV scheduler worker CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of scheduler worker", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 64, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"sched_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler worker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV gRPC poll thread CPU usage is high", - "name": "TiKV gRPC poll CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of gRPC", - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 105, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"grpc.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC poll CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 7.2 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Coprocessor thread CPU alert", - "name": "TiKV Coprocessor CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of coprocessor", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 19 - }, - "id": 78, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_normal.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_high.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_low.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Storage ReadPool thread CPU usage is high", - "name": "TiKV Storage ReadPool CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of readpool", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 19 - }, - "id": 1908, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_norm.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_high.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_low.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage ReadPool CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": " \tThe CPU utilization of split check", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 26 - }, - "id": 68, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"split_check\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Split check CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of RocksDB", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 26 - }, - "id": 69, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"rocksdb.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "warning", - "fill": true, - "line": true, - "op": "gt", - "value": 1 - }, - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 4 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 33 - }, - "id": 2531, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"gc_worker.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GC worker CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The CPU utilization of snapshot worker", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 33 - }, - "id": 67, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"snapshot_worker\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Snapshot worker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Thread CPU", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 2747, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": " \tThe count of requests that TiKV sends to PD", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 6 - }, - "id": 1069, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 350, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD requests", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The time consumed by requests that TiKV sends to PD", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 6 - }, - "id": 1070, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 350, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_request_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (type) / sum(rate(tikv_pd_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD request duration (average)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "The total number of PD heartbeat messages", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 1215, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 350, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_heartbeat_message_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD heartbeats", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "opm", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "The total number of peers validated by the PD worker", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 1396, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 350, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_pd_validate_peer_total{instance=~\"$instance\"}[1m])) by (type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{ type }}", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "PD validate peers", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "PD", - "type": "row" - } - ], - "refresh": "1m", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "db", - "multi": true, - "name": "db", - "options": [], - "query": "label_values(tikv_engine_block_cache_size_bytes, db)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "command", - "multi": true, - "name": "command", - "options": [], - "query": "label_values(tikv_storage_command_total, type)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(tikv_engine_size_bytes, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-5m", - "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": "browser", - "title": "Test-Cluster-TiKV-Summary", - "uid": "X7VQmEzZk", - "version": 5 -} \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_trouble_shooting.json b/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_trouble_shooting.json deleted file mode 100644 index 6a617b06..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/dashboards/tikv_trouble_shooting.json +++ /dev/null @@ -1,7836 +0,0 @@ -{ - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "tidb-cluster", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 1, - "id": null, - "iteration": 1568258597359, - "links": [], - "panels": [ - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2796, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "总 CPU 使用率", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 1708, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "客户端发来的常见请求的 QPS。如果同一类请求在多个机器上分布显著不平均,那么需要考虑热点的问题", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 1713, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type=~\"coprocessor|kv_get|kv_batch_get|kv_prewrite|kv_commit\"}[1m])) by (instance, type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Storage ReadPool thread CPU usage is high", - "name": "TiKV Storage ReadPool CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "点查会走 Storage ReadPool", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 9 - }, - "id": 1908, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_norm.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_high.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_low.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage ReadPool CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 7.2 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Coprocessor thread CPU usage is high", - "name": "TiKV Coprocessor CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "非点查的 SQL 走 Coprocessor Pool", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 9 - }, - "id": 78, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_normal.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_high.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_low.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV gRPC poll thread CPU usage is high", - "name": "TiKV gRPC poll CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "gRPC CPU 使用率,如果打满,需要调 TiKV 的 grpc-concurrency 参数", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 17 - }, - "id": 105, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"grpc.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC poll CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Hot Read", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 1 - }, - "id": 2797, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 2 - }, - "id": 2763, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 2 - }, - "id": 2764, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (instance,type)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "QPS", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 2765, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_disk_io_time_seconds_total[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{device}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "IO utilization", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV gRPC poll thread CPU usage is high", - "name": "TiKV gRPC poll CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 2783, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"grpc.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC poll CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.7 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0", - "frequency": "1m", - "handler": 1, - "message": "TiKV raft store thread CPU is high", - "name": "TiKV raft store CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "Raftstore 线程 CPU 使用率,这个线程池用来写 Raft log。", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 18 - }, - "id": 61, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"raftstore_.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.85 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft store CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 1.8 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV async apply thread CPU is high", - "name": "TiKV async apply CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "Apply 线程 CPU,这个线程池用来将写入应用到 kv engine 中。", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 18 - }, - "id": 79, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"apply_[0-9]+\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Async apply CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Scheduler Worker thread CPU is high", - "name": "TiKV Scheduler Worker CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "description": "Scheduler worker 线程池的 CPU 使用率。事务会在 Scheduler 中排队,这个线程池接近打满意味着 MVCC 的旧版本太多,事务处理过慢。", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 26 - }, - "id": 63, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"sched_worker.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler Worker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Hot Write", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 2 - }, - "id": 2798, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 3 - }, - "id": 34, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "lines": false - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - }, - { - "expr": "delta(tikv_raftstore_region_count{instance=~\"$instance\", type=\"leader\"}[30s]) < -10", - "format": "time_series", - "hide": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Leader", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "description": "Append log 时间。过长意味着 Raftstore 线程太忙,有可能心跳处理不过来导致上面的 Leader 被切走。", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 2786, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999999, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " 99.9999%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_raftstore_append_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_append_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "Propose 如果在 Raftstore 中等得太久,则说明 Raftstore 线程很忙,或者被卡住了。", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 2787, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999999, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} ", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Propose 99.9999% wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 2789, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft RocksDB write duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": null, - "description": "Raftstore 线程需要处理一些周期性任务。如果处理时间过长,则相当于 Raftstore 线程被卡住了。", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 24, - "x": 0, - "y": 17 - }, - "id": 2829, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999999, sum(rate(tikv_raftstore_event_duration_bucket{instance=~\"$instance\"}[1m])) by (le, instance, type))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{type}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 100, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft event 99.9999% handle duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "s", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Leader Drop", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 3 - }, - "id": 2799, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "description": "TiKV 的 Raftstore 会在处理不过来消息时发生 channel full,此时后续的消息会被丢弃掉,可能会导致 TiDB 重试或者掉 Leader。", - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 4 - }, - "id": 22, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Channel full", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "description": "RocksDB write stall 说明写入请求被 compaction 或者其他流量控制措施卡住了。", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 4 - }, - "id": 87, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"raft\", type=\"write_stall_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"raft\", type=\"write_stall_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"raft\", type=\"write_stall_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", db=\"raft\", type=\"write_stall_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft RocksDB write stall duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 39, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": " 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_raftstore_append_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_append_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 40, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} ", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 67 - }, - "id": 2819, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_raftstore_commit_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_commit_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 67 - }, - "id": 2821, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration per server", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Channel Full", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 4 - }, - "id": 2800, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 5 - }, - "id": 2777, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_scheduler_too_busy_total{instance=~\"$instance\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "scheduler-{{instance}}", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "channelfull-{{instance}}-{{type}}", - "metric": "", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_coprocessor_request_error{instance=~\"$instance\", type='full'}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "coprocessor-{{instance}}", - "metric": "", - "refId": "C", - "step": 4 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "stall-{{instance}}", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Server is busy", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 5 - }, - "height": "", - "id": 193, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(tikv_scheduler_contex_total{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Scheduler pending commands", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 3, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 13 - }, - "id": 2779, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_channel_full_total{instance=~\"$instance\"}[1m])) by (instance, type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{type}}", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Channel full", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 13 - }, - "id": 2785, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_max\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} 99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile95\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} 95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_average\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB write stall duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Server Is Busy", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 2801, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 2768, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_grpc_msg_duration_seconds_bucket{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (le, type))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "0m", - "frequency": "1m", - "handler": 1, - "message": "TiKV gRPC poll thread CPU is high", - "name": "TiKV gRPC poll CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 2782, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"grpc.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "gRPC poll CPU", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 7.2 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Coprocessor thread CPU is high", - "name": "TiKV Coprocessor CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 45 - }, - "id": 2762, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_normal.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_high.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"cop_low.*\"}[1m])) by (instance)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "alert": { - "conditions": [ - { - "evaluator": { - "params": [ - 3.6 - ], - "type": "gt" - }, - "operator": { - "type": "and" - }, - "query": { - "params": [ - "A", - "1m", - "now" - ] - }, - "reducer": { - "params": [], - "type": "max" - }, - "type": "query" - } - ], - "executionErrorState": "alerting", - "for": "", - "frequency": "1m", - "handler": 1, - "message": "TiKV Storage ReadPool thread CPU is high", - "name": "TiKV Storage ReadPool CPU alert", - "noDataState": "ok", - "notifications": [] - }, - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 45 - }, - "id": 2761, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_norm.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - normal", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_high.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - high", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"store_read_low.*\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - low", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "C", - "step": 4 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.9 - } - ], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage ReadPool CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 5, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 52 - }, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99.99%", - "refId": "E" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-95%", - "refId": "B", - "step": 4 - }, - { - "expr": " sum(rate(tikv_coprocessor_request_duration_seconds_sum{instance=~\"$instance\"}[1m])) by (req) / sum(rate(tikv_coprocessor_request_duration_seconds_count{instance=~\"$instance\"}[1m])) by (req)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor request duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 5, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 52 - }, - "id": 111, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99.99%", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-95%", - "refId": "B", - "step": 4 - }, - { - "expr": " sum(rate(tikv_coprocessor_request_wait_seconds_sum{instance=~\"$instance\"}[1m])) by (req) / sum(rate(tikv_coprocessor_request_wait_seconds_count{instance=~\"$instance\"}[1m])) by (req)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 59 - }, - "id": 52, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.9999, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-99.99%", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{req}}-99%", - "metric": "tikv_coprocessor_scan_keys_bucket", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-95%", - "metric": "tikv_coprocessor_scan_keys_bucket", - "refId": "B", - "step": 10 - }, - { - "expr": "histogram_quantile(0.90, avg(rate(tikv_coprocessor_scan_keys_bucket{instance=~\"$instance\"}[1m])) by (le, req)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{req}}-90%", - "metric": "tikv_coprocessor_scan_keys_bucket", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Coprocessor scan keys", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 5, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 59 - }, - "id": 116, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance,req))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}-{{req}}", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "95% Coprocessor wait duration by store", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 5, - "description": "读请求执行前,都需要拿一个 snapshot", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 66 - }, - "id": 2828, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.999999, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"snapshot\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99.9999%", - "refId": "B", - "step": 4 - }, - { - "expr": "sum(rate(tikv_storage_engine_async_request_duration_seconds_sum{instance=~\"$instance\", type=\"snapshot\"}[1m])) / sum(rate(tikv_storage_engine_async_request_duration_seconds_count{instance=~\"$instance\", type=\"snapshot\"}[1m]))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "average", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Get snapshot duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 66 - }, - "id": 82, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"get_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"get_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"get_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_get_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"get_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB get duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 73 - }, - "id": 125, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"seek_max\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"seek_percentile99\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"seek_percentile95\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_seek_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"seek_average\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB seek duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "Disk seconds Read Latency.\n- Critical:\n - Recommended performance value is < 10ms as avg value of the Avg Disk sec/Read,Write.\n - Critical value of the Avg Disk sec/Read,Write is > 50ms, should not exceed this value.", - "fill": 1, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 80 - }, - "id": 2821, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(rate(node_disk_read_time_seconds_total[5m])/ rate(node_disk_reads_completed_total[5m])) > 0", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}: [{{ device }}]", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Read Latency (ms)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 2, - "description": "", - "fill": 1, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 84 - }, - "id": 2822, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "irate(node_disk_read_bytes_total[5m]) + irate(node_disk_written_bytes_total[5m]) > 0", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}: [{{ device }}]", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Read Too Slow", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 6 - }, - "id": 2802, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 7 - }, - "id": 2781, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": false, - "hideZero": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_grpc_msg_duration_seconds_bucket{instance=~\"$instance\", type!=\"kv_gc\"}[1m])) by (le, type, instance))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{instance}} {{type}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "99% gRPC messge duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 7 - }, - "id": 109, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"write\"}[1m])) by (le, instance))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{instance=~\"$instance\", type=\"write\"}[1m])) by (le, instance))", - "format": "time_series", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "rate(tikv_storage_engine_async_request_duration_seconds_sum{instance=~\"$instance\", type=\"write\"}[1m]) / rate(tikv_storage_engine_async_request_duration_seconds_count{instance=~\"$instance\", type=\"write\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Storage async write duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 14 - }, - "id": 2753, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"prewrite\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"prewrite\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "rate(tikv_scheduler_latch_wait_duration_seconds_sum{instance=~\"$instance\", type=\"prewrite\"}[1m]) / rate(tikv_scheduler_latch_wait_duration_seconds_count{instance=~\"$instance\", type=\"prewrite\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Prewrite latch wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "id": 2774, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": false, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"commit\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket{instance=~\"$instance\", type=\"commit\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "rate(tikv_scheduler_latch_wait_duration_seconds_sum{instance=~\"$instance\", type=\"commit\"}[1m]) / rate(tikv_scheduler_latch_wait_duration_seconds_count{instance=~\"$instance\", type=\"commit\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "metric": "", - "refId": "C", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit latch wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 2788, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "rate(tikv_raftstore_append_log_duration_seconds_sum{instance=~\"$instance\"}[1m]) / rate(tikv_raftstore_append_log_duration_seconds_count{instance=~\"$instance\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 2790, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Append log duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 28 - }, - "id": 2830, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "refId": "B" - }, - { - "expr": "sum(rate(tikv_raftstore_commit_log_duration_seconds_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_commit_log_duration_seconds_count{instance=~\"$instance\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 28 - }, - "id": 2831, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_commit_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Commit log duration per server", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 35 - }, - "id": 31, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "rate(tikv_raftstore_apply_log_duration_seconds_sum{instance=~\"$instance\"}[1m]) / rate(tikv_raftstore_apply_log_duration_seconds_count{instance=~\"$instance\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply log duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 35 - }, - "id": 32, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply log duration per server", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 42 - }, - "id": 2794, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "rate(tikv_raftstore_request_wait_time_duration_secs_sum{instance=~\"$instance\"}[1m]) / rate(tikv_raftstore_request_wait_time_duration_secs_count{instance=~\"$instance\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Propose wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 42 - }, - "id": 2795, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~\"$instance\"}[1m])) by (le, instance))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "B", - "step": 4 - }, - { - "expr": "rate(tikv_raftstore_apply_wait_time_duration_secs_sum{instance=~\"$instance\"}[1m]) / rate(tikv_raftstore_apply_wait_time_duration_secs_count{instance=~\"$instance\"}[1m]) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "C", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Apply wait duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 49 - }, - "id": 126, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"write_max\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"write_percentile99\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"write_percentile95\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"kv\",type=\"write_average\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "KV RocksDB write duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 49 - }, - "id": 2776, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_max\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} max", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_percentile99\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_percentile95\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"write_average\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft RocksDB write duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 2, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 56 - }, - "id": 137, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(tikv_engine_wal_file_synced{instance=~\"$instance\", db=\"raft\"}[1m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} sync", - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft RocksDB WAL sync operations", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 0, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 56 - }, - "id": 135, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "maxPerRow": 2, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"wal_file_sync_max\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} max", - "refId": "A", - "step": 10 - }, - { - "expr": "tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"wal_file_sync_percentile99\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "refId": "B", - "step": 10 - }, - { - "expr": "tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"wal_file_sync_percentile95\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "refId": "C", - "step": 10 - }, - { - "expr": "tikv_engine_wal_file_sync_micro_seconds{instance=~\"$instance\", db=\"raft\",type=\"wal_file_sync_average\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft RocksDB WAL sync duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "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": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 63 - }, - "id": 2793, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_max\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} 99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile95\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} 95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_average\"}) by (db)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{db}} avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB write stall duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 70 - }, - "id": 2791, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "max", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_disk_io_time_seconds_total[1m]) > 0", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} - {{device}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "IO utilization", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "fill": 1, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 74 - }, - "id": 2818, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_disk_reads_completed_total[5m]) + rate(node_disk_writes_completed_total[5m])", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}} IOPs", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "IOPs", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "description": "DISK seconds Read/ Write Latency.\n- Critical:\n - Recommended performance value is < 10ms as avg value of the Avg Disk sec/Read,Write.\n - Critical value of the Avg Disk sec/Read,Write is > 50ms, should not exceed this value.", - "fill": 1, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 78 - }, - "id": 2820, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(rate(node_disk_write_time_seconds_total[5m])/ rate(node_disk_writes_completed_total[5m])) > 0", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}: [{{ device }}]", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Write Latency (ms)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "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": "tidb-cluster", - "decimals": 2, - "description": "", - "fill": 1, - "gridPos": { - "h": 4, - "w": 24, - "x": 0, - "y": 82 - }, - "id": 2819, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "irate(node_disk_read_bytes_total[5m]) + irate(node_disk_written_bytes_total[5m]) > 0", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}}: [{{ device }}]", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Throughput", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Write Too Slow", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 7 - }, - "id": 2806, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 8 - }, - "id": 2810, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_num_files_at_level{instance=~\"$instance\", db=\"kv\", level=\"0\"}) by (instance, cf)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}} {{cf}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Level0 SST file number", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 8 - }, - "id": 2811, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_num_immutable_mem_table{instance=~\"$instance\", db=\"$db\"}) by (instance, cf)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{instance}} {{cf}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Immutable mem-table number", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 15 - }, - "id": 2808, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_pending_compaction_bytes{instance=~\"$instance\", db=\"$db\"}) by (instance, cf)", - "format": "time_series", - "instant": false, - "intervalFactor": 1, - "legendFormat": "{{instance}} {{cf}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pending compaction bytes", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 15 - }, - "id": 2812, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "scopedVars": { - "db": { - "selected": false, - "text": "kv", - "value": "kv" - } - }, - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_max\", db=\"$db\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} max", - "metric": "", - "refId": "A", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile99\", db=\"$db\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_percentile95\", db=\"$db\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} 95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "avg(tikv_engine_write_stall{instance=~\"$instance\", type=\"write_stall_average\", db=\"$db\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}} avg", - "metric": "", - "refId": "D", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RocksDB write stall duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "µs", - "label": null, - "logBase": 10, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": "db", - "title": "Write Stall - $db", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 8 - }, - "id": 2803, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "fill": 1, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 10 - }, - "id": 102, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(tikv_engine_block_cache_size_bytes{instance=~\"$instance\", db=\"kv\"}) by(cf)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{cf}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Block cache size", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "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": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 10 - }, - "id": 2770, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(process_resident_memory_bytes{instance=~\"$instance\"}) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "OOM", - "type": "row" - }, - { - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 9 - }, - "id": 2804, - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "tidb-cluster", - "decimals": 1, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 1481, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 250, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "metric": "", - "refId": "B", - "step": 10 - }, - { - "expr": "histogram_quantile(0.95, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "95%", - "metric": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(rate(tikv_raftstore_region_size_sum{instance=~\"$instance\"}[1m])) / sum(rate(tikv_raftstore_region_size_count{instance=~\"$instance\"}[1m])) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "avg", - "metric": "", - "refId": "D", - "step": 10 - }, - { - "expr": "histogram_quantile(0.999999, sum(rate(tikv_raftstore_region_size_bucket{instance=~\"$instance\"}[1m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99.9999%", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Approximate Region size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": "0", - "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": "tidb-cluster", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 2792, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": true, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(tikv_thread_cpu_seconds_total{instance=~\"$instance\", name=~\"split_check\"}[1m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{instance}}", - "metric": "tikv_thread_cpu_seconds_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Split checker CPU", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "repeat": null, - "title": "Huge Region", - "type": "row" - } - ], - "refresh": "1m", - "schemaVersion": 18, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "db", - "multi": true, - "name": "db", - "options": [], - "query": "label_values(tikv_engine_block_cache_size_bytes, db)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "command", - "multi": true, - "name": "command", - "options": [], - "query": "label_values(tikv_storage_command_total, type)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": {}, - "datasource": "tidb-cluster", - "definition": "", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": true, - "name": "instance", - "options": [], - "query": "label_values(tikv_engine_size_bytes, instance)", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-3h", - "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": "browser", - "title": "Test-Cluster-TiKV-Trouble-Shooting", - "uid": "Lg4wiEkZz", - "version": 4 -} \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/datasources/k8s-datasource.yaml b/monitor-snapshot/v4.0.0-beta.1/operator/datasources/k8s-datasource.yaml deleted file mode 100644 index 9b8f9694..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/datasources/k8s-datasource.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: 1 -datasources: - - access: proxy - editable: true - name: k8s-cluster - orgId: 1 - type: prometheus - url: http://prometheus-k8s.monitoring.svc:9090 - version: 1 - diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/datasources/tidb-cluster-datasource.yaml b/monitor-snapshot/v4.0.0-beta.1/operator/datasources/tidb-cluster-datasource.yaml deleted file mode 100644 index fbfcd694..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/datasources/tidb-cluster-datasource.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: 1 -datasources: - - access: proxy - editable: false - name: tidb-cluster - orgId: 1 - type: prometheus - url: http://127.0.0.1:9090 - version: 1 \ No newline at end of file diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/init.sh b/monitor-snapshot/v4.0.0-beta.1/operator/init.sh deleted file mode 100644 index 4632acef..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/init.sh +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/sh -if [ ! -d $GF_PROVISIONING_PATH/dashboards ];then - mkdir -p $GF_PROVISIONING_PATH/dashboards -else - rm -rf $GF_PROVISIONING_PATH/dashboards/* -fi - -# TiDB dashboard -cp /tmp/tidb.json $GF_PROVISIONING_PATH/dashboards -sed -i 's/Test-Cluster-TiDB/'$TIDB_CLUSTER_NAME'-TiDB/g' $GF_PROVISIONING_PATH/dashboards/tidb.json - -# Overview dashboard -cp /tmp/overview.json $GF_PROVISIONING_PATH/dashboards -sed -i 's/Test-Cluster-Overview/'$TIDB_CLUSTER_NAME'-Overview/g' $GF_PROVISIONING_PATH/dashboards/overview.json - -# PD dashboard -cp /tmp/pd.json $GF_PROVISIONING_PATH/dashboards -sed -i 's/Test-Cluster-PD/'$TIDB_CLUSTER_NAME'-PD/g' $GF_PROVISIONING_PATH/dashboards/pd.json - -# TiKV dashboard -cp /tmp/tikv*.json $GF_PROVISIONING_PATH/dashboards -if [ ! -f /tmp/tikv_pull.json ];then - sed -i 's/Test-Cluster-TiKV-Details/'$TIDB_CLUSTER_NAME'-TiKV-Details/g' $GF_PROVISIONING_PATH/dashboards/tikv_details.json - sed -i 's/Test-Cluster-TiKV-Summary/'$TIDB_CLUSTER_NAME'-TiKV-Summary/g' $GF_PROVISIONING_PATH/dashboards/tikv_summary.json - sed -i 's/Test-Cluster-TiKV-Trouble-Shooting/'$TIDB_CLUSTER_NAME'-TiKV-Trouble-Shooting/g' $GF_PROVISIONING_PATH/dashboards/tikv_trouble_shooting.json -else - sed -i 's/Test-Cluster-TiKV/'$TIDB_CLUSTER_NAME'-TiKV/g' $GF_PROVISIONING_PATH/dashboards/tikv_pull.json -fi - -# Binlog dashboard -cp /tmp/binlog.json $GF_PROVISIONING_PATH/dashboards -sed -i 's/Test-Cluster-Binlog/'$TIDB_CLUSTER_NAME'-Binlog/g' $GF_PROVISIONING_PATH/dashboards/binlog.json - -# Lighting -cp /tmp/lightning.json $GF_PROVISIONING_PATH/dashboards -sed -i 's/Test-Cluster-Lightning/'$TIDB_CLUSTER_NAME'-Lightning/g' $GF_PROVISIONING_PATH/dashboards/lightning.json - - -# Rules -if [ ! -d $PROM_CONFIG_PATH/rules ];then - mkdir -p $PROM_CONFIG_PATH/rules -else - rm -rf $PROM_CONFIG_PATH/rules/* -fi -echo $META_TYPE -echo $META_INSTANCE -echo $META_VALUE -cp /tmp/*.rules.yml $PROM_CONFIG_PATH/rules -for file in $PROM_CONFIG_PATH/rules/* -do - sed -i 's/ENV_LABELS_ENV/'$TIDB_CLUSTER_NAME'/g' $file -done - -# Copy Persistent rules to override raw files -if [ ! -z $PROM_PERSISTENT_DIR ]; -then - if [ -d $PROM_PERSISTENT_DIR/latest-rules/${TIDB_VERSION##*/} ];then - cp -f $PROM_PERSISTENT_DIR/latest-rules/${TIDB_VERSION##*/}/*.rules.yml $PROM_CONFIG_PATH/rules - fi -fi - - -# Datasources -if [ ! -z $GF_DATASOURCE_PATH ]; -then - if [ ! -z $GF_K8S_PROMETHEUS_URL ]; - then - sed -i 's,http://prometheus-k8s.monitoring.svc:9090,'$GF_K8S_PROMETHEUS_URL',g' /tmp/k8s-datasource.yaml - fi - - if [ ! -z $GF_TIDB_PROMETHEUS_URL ]; - then - sed -i 's,http://127.0.0.1:9090,'$GF_TIDB_PROMETHEUS_URL',g' /tmp/tidb-cluster-datasource.yaml - fi - - cp /tmp/k8s-datasource.yaml $GF_DATASOURCE_PATH/ - cp /tmp/tidb-cluster-datasource.yaml $GF_DATASOURCE_PATH/ - - # pods - if [ ! -z $TIDB_CLUSTER_NAMESPACE ]; - then - sed -i 's/$namespace/'$TIDB_CLUSTER_NAMESPACE'/g' /tmp/pods.json - else - sed -i 's/$namespace/default/g' /tmp/pods.json - fi - sed -i 's/Test-Cluster-Pods-Info/'$TIDB_CLUSTER_NAME'-Pods-Info/g' /tmp/pods.json - cp /tmp/pods.json $GF_PROVISIONING_PATH/dashboards - - # nodes - cp /tmp/nodes.json $GF_PROVISIONING_PATH/dashboards -fi - diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/binlog.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/binlog.rules.yml deleted file mode 100644 index e50ef483..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/binlog.rules.yml +++ /dev/null @@ -1,91 +0,0 @@ -groups: -- name: alert.rules - rules: - - alert: binlog_pump_storage_error_count - expr: changes(binlog_pump_storage_error_count[1m]) > 0 - labels: - env: ENV_LABELS_ENV - expr: changes(binlog_pump_storage_error_count[1m]) > 0 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog pump storage write some binlogs failed - value: '{{ $value }}' - - alert: binlog_drainer_checkpoint_high_delay - expr: (time() - binlog_drainer_checkpoint_tso / 1000) > 3600 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (time() - binlog_drainer_checkpoint_tso / 1000) > 3600 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog drainer checkpoint delay more than 1 hour - value: '{{ $value }}' - - alert: binlog_pump_write_binlog_rpc_duration_seconds_bucket - expr: histogram_quantile(0.9, rate(binlog_pump_rpc_duration_seconds_bucket{method="WriteBinlog"}[5m])) - > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.9, rate(binlog_pump_rpc_duration_seconds_bucket{method="WriteBinlog"}[5m])) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog pump write binlog RPC latency is too high - value: '{{ $value }}' - - alert: binlog_pump_storage_write_binlog_duration_time_bucket - expr: histogram_quantile(0.9, rate(binlog_pump_storage_write_binlog_duration_time_bucket{type="batch"}[5m])) - > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.9, rate(binlog_pump_storage_write_binlog_duration_time_bucket{type="batch"}[5m])) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog pump write binlog to disk is too slow - value: '{{ $value }}' - - alert: binlog_pump_storage_available_size_less_than_20G - expr: binlog_pump_storage_storage_size_bytes{type="available"} < 20 * 1024 * 1024 - * 1024 - for: 10s - labels: - env: ENV_LABELS_ENV - expr: binlog_pump_storage_storage_size_bytes{type="available"} < 20 * 1024 * - 1024 * 1024 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog pump storage available size less than 20G - value: '{{ $value }}' - - alert: binlog_drainer_execute_duration_time_more_than_10s - expr: histogram_quantile(0.9, rate(binlog_drainer_execute_duration_time_bucket[1m])) - > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.9, rate(binlog_drainer_txn_duration_time_bucket[1m])) - > 10 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog binlog drainer execute_duration_time_more_than_10s - value: '{{ $value }}' - - alert: binlog_drainer_checkpoint_tso_no_change_for_1m - expr: changes(binlog_drainer_checkpoint_tso[1m]) < 1 - labels: - env: ENV_LABELS_ENV - expr: changes(binlog_drainer_checkpoint_tso[1m]) < 1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: binlog drainer checkpoint tso no change for 1m - value: '{{ $value }}' diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/lightning.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/lightning.rules.yml deleted file mode 100644 index ffba2e13..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/lightning.rules.yml +++ /dev/null @@ -1,15 +0,0 @@ -groups: -- name: alert.rules - rules: - - alert: Lightning_import_failure_tables_count - expr: sum ( lightning_tables{result="failure"} ) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum ( lightning_tables{result="failure"} ) > 0 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: Lightning failed to import a table - value: '{{ $value }}' diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/pd.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/pd.rules.yml deleted file mode 100644 index a06891d9..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/pd.rules.yml +++ /dev/null @@ -1,195 +0,0 @@ -groups: -- name: alert.rules - rules: - - alert: PD_cluster_offline_tikv_nums - expr: (sum ( pd_cluster_status{type="store_down_count"} ) by (instance) > 0) and - (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum ( pd_cluster_status{type="store_down_count"} ) by (instance) > 0) - and (sum(etcd_server_is_leader) by (instance) > 0) - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_cluster_offline_tikv_nums - value: '{{ $value }}' - - alert: PD_etcd_write_disk_latency - expr: histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[1m])) - by (instance,job,le) ) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[1m])) - by (instance,job,le) ) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_etcd_write_disk_latency - value: '{{ $value }}' - - alert: PD_miss_peer_region_count - expr: (sum(pd_regions_status{type="miss_peer_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum(pd_regions_status{type="miss_peer_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_miss_peer_region_count - value: '{{ $value }}' - - alert: PD_cluster_lost_connect_tikv_nums - expr: (sum ( pd_cluster_status{type="store_disconnected_count"} ) by (instance) - > 0) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum ( pd_cluster_status{type="store_disconnected_count"} ) by (instance) - > 0) and (sum(etcd_server_is_leader) by (instance) > 0) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_cluster_lost_connect_tikv_nums - value: '{{ $value }}' - - alert: PD_cluster_low_space - expr: (sum ( pd_cluster_status{type="store_low_space_count"} ) by (instance) > - 0) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum ( pd_cluster_status{type="store_low_space_count"} ) by (instance) - > 0) and (sum(etcd_server_is_leader) by (instance) > 0) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_cluster_low_space - value: '{{ $value }}' - - alert: PD_etcd_network_peer_latency - expr: histogram_quantile(0.99, sum(rate(etcd_network_peer_round_trip_time_seconds_bucket[1m])) - by (To,instance,job,le) ) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(etcd_network_peer_round_trip_time_seconds_bucket[1m])) - by (To,instance,job,le) ) > 1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_etcd_network_peer_latency - value: '{{ $value }}' - - alert: PD_tidb_handle_requests_duration - expr: histogram_quantile(0.99, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type="tso"}[1m])) - by (instance,job,le) ) > 0.1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type="tso"}[1m])) - by (instance,job,le) ) > 0.1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_tidb_handle_requests_duration - value: '{{ $value }}' - - alert: PD_down_peer_region_nums - expr: (sum(pd_regions_status{type="down_peer_region_count"}) by (instance) > - 0) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum(pd_regions_status{type="down_peer_region_count"}) by (instance) > - 0) and (sum(etcd_server_is_leader) by (instance) > 0) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_down_peer_region_nums - value: '{{ $value }}' - - alert: PD_incorrect_namespace_region_count - expr: (sum(pd_regions_status{type="incorrect_namespace_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum(pd_regions_status{type="incorrect_namespace_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_incorrect_namespace_region_count - value: '{{ $value }}' - - alert: PD_pending_peer_region_count - expr: (sum(pd_regions_status{type="pending_peer_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - for: 1m - labels: - env: ENV_LABELS_ENV - expr: (sum(pd_regions_status{type="pending_peer_region_count"}) by (instance) > - 100) and (sum(etcd_server_is_leader) by (instance) > 0) - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_pending_peer_region_count - value: '{{ $value }}' - - alert: PD_leader_change - expr: count( changes(pd_server_tso{type="save"}[10m]) > 0 ) >= 2 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: count( changes(pd_server_tso{type="save"}[10m]) > 0 ) >= 2 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: PD_leader_change - value: '{{ $value }}' - - alert: TiKV_space_used_more_than_80% - expr: sum(pd_cluster_status{type="storage_size"}) / sum(pd_cluster_status{type="storage_capacity"}) - * 100 > 80 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(pd_cluster_status{type="storage_size"}) / sum(pd_cluster_status{type="storage_capacity"}) - * 100 > 80 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV_space_used_more_than_80% - value: '{{ $value }}' - - alert: PD_system_time_slow - expr: changes(pd_server_tso{type="system_time_slow"}[10m]) >= 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: changes(pd_server_tso{type="system_time_slow"}[10m]) >= 1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: PD_system_time_slow - value: '{{ $value }}' - - alert: PD_no_store_for_making_replica - expr: increase(pd_checker_event_count{type="replica_checker", name="no_target_store"}[1m]) - > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(pd_checker_event_count{type="replica_checker", name="no_target_store"}[1m]) - > 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: PD_no_store_for_making_replica - value: '{{ $value }}' diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tidb.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/tidb.rules.yml deleted file mode 100644 index ee51369c..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tidb.rules.yml +++ /dev/null @@ -1,153 +0,0 @@ -groups: -- name: alert.rules - rules: - - alert: TiDB_schema_error - expr: increase(tidb_session_schema_lease_error_total{type="outdated"}[15m]) > - 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tidb_session_schema_lease_error_total{type="outdated"}[15m]) - > 0 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB schema error - value: '{{ $value }}' - - alert: TiDB_tikvclient_region_err_total - expr: increase( tidb_tikvclient_region_err_total[10m] ) > 6000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase( tidb_tikvclient_region_err_total[10m] ) > 6000 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB tikvclient_backoff_count error - value: '{{ $value }}' - - alert: TiDB_binlog_error_total - expr: increase( tidb_server_critical_error_total[5m] ) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase( tidb_server_critical_error_total[5m] ) > 0 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB tidb binlog error total - value: '{{ $value }}' - - alert: TiDB_domain_load_schema_total - expr: increase( tidb_domain_load_schema_total{type="failed"}[10m] ) > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase( tidb_domain_load_schema_total{type="failed"}[10m] ) > 10 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB domain_load_schema_total error - value: '{{ $value }}' - - alert: TiDB_monitor_keep_alive - expr: increase(tidb_monitor_keep_alive_total{job="tidb"}[10m]) < 100 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tidb_monitor_keep_alive_total{job="tidb"}[10m]) < 100 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB monitor_keep_alive error - value: '{{ $value }}' - - alert: TiDB_server_panic_total - expr: increase(tidb_server_panic_total[10m]) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tidb_server_panic_total[10m]) > 0 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB server panic total - value: '{{ $value }}' - - alert: TiDB_memory_abnormal - expr: go_memstats_heap_inuse_bytes{job="tidb"} > 1e+10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: go_memstats_heap_inuse_bytes{job="tidb"} > 1e+10 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB heap memory usage is over 10 GB - value: '{{ $value }}' - - alert: TiDB_query_duration - expr: histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) - BY (le, instance)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) - BY (le, instance)) > 1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB query duration 99th percentile is above 1s - value: '{{ $value }}' - - alert: TiDB_server_event_error - expr: increase(tidb_server_event_total{type=~"server_start|server_hang"}[15m]) > - 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tidb_server_event_total{type=~"server_start|server_hang"}[15m]) > - 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB server event error - value: '{{ $value }}' - - alert: tidb_tikvclient_backoff_seconds_count - expr: increase( tidb_tikvclient_backoff_seconds_count[10m] ) > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase( tidb_tikvclient_backoff_seconds_count[10m] ) > 10 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB tikvclient_backoff_count error - value: '{{ $value }}' - - alert: TiDB_monitor_time_jump_back_error - expr: increase(tidb_monitor_time_jump_back_total[10m]) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tidb_monitor_time_jump_back_total[10m]) > 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB monitor time_jump_back error - value: '{{ $value }}' - - alert: TiDB_ddl_waiting_jobs - expr: sum(tidb_ddl_waiting_jobs) > 5 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(tidb_ddl_waiting_jobs) > 5 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiDB ddl waiting_jobs too much - value: '{{ $value }}' diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.accelerate.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.accelerate.rules.yml deleted file mode 100644 index 01f3c9bf..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.accelerate.rules.yml +++ /dev/null @@ -1,75 +0,0 @@ -groups: -- name: tikv_accelerate - rules: - - record: tikv_grpc_msg_duration_seconds:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_grpc_msg_duration_seconds_bucket{instance=~".*", - type!="kv_gc"}[1m])) by (le, type)) - - record: tikv_raftstore_event_duration_bucket:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_event_duration_bucket{instance=~".*"}[1m])) - by (le, type)) - - record: tikv_thread_cpu_seconds:1m - expr: sum(rate(tikv_thread_cpu_seconds_total{instance=~".*"}[1m])) by (instance) - - record: tikv_raftstore_append_log_duration_seconds:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~".*"}[1m])) - by (le, instance)) - - record: tikv_raftstore_raft_process_duration_secs:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{instance=~".*", - type='ready'}[1m])) by (le, instance)) - - record: tikv_raftstore_request_wait_time_duration_secs:byins:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le, instance)) - - record: tikv_raftstore_append_log_duration_seconds:p95:1m - expr: histogram_quantile(0.95, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket{instance=~".*"}[1m])) - by (le)) - - record: tikv_raftstore_apply_wait_time_duration_secs:byins:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le, instance)) - - record: tikv_raftstore_apply_log_duration_seconds:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket{instance=~".*"}[1m])) - by (le, instance)) - - record: tikv_raftstore_request_wait_time_duration_secs:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le)) - - record: tikv_raftstore_request_wait_time_duration_secs:p95:1m - expr: histogram_quantile(0.95, sum(rate(tikv_raftstore_request_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le)) - - record: tikv_worker_handled_task:1m - expr: sum(rate(tikv_worker_handled_task_total{instance=~".*"}[1m])) by (name) - - record: tikv_engine_num_files_at_level:kv:avg - expr: avg(tikv_engine_num_files_at_level{instance=~".*", db="kv"}) by (cf, level) - - record: tikv_engine_num_files_at_level:raft:avg - expr: avg(tikv_engine_num_files_at_level{instance=~".*", db="raft"}) by (cf, level) - - record: tikv_pd_request_duration_seconds:avg:1m - expr: sum(rate(tikv_pd_request_duration_seconds_sum{instance=~".*"}[1m])) by (type) - / sum(rate(tikv_pd_request_duration_seconds_count{instance=~".*"}[1m])) by (type) - - record: tikv_coprocessor_request_wait_seconds:p95:1m - expr: histogram_quantile(0.95, sum(rate(tikv_coprocessor_request_wait_seconds_bucket{instance=~".*"}[1m])) - by (le, instance,req)) - - record: tikv_grpc_msg_duration_seconds:avg:1m - expr: sum(rate(tikv_grpc_msg_duration_seconds_sum{instance=~".*"}[1m])) by (type) - / sum(rate(tikv_grpc_msg_duration_seconds_count[1m])) by (type) - - record: tikv_raftstore_apply_wait_time_duration_secs:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le)) - - record: tikv_raftstore_apply_wait_time_duration_secs:p95:1m - expr: histogram_quantile(0.95, sum(rate(tikv_raftstore_apply_wait_time_duration_secs_bucket{instance=~".*"}[1m])) - by (le)) - - record: tikv_grpc_msg_duration_seconds:1m - expr: sum(rate(tikv_grpc_msg_duration_seconds_count{instance=~".*", type!="kv_gc"}[1m])) - by (instance,type) - - record: tikv_raftstore_snapshot_duration_seconds:p99:1m - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_snapshot_duration_seconds_bucket{instance=~".*", - type="apply"}[1m])) by (le)) - - record: tikv_worker_pending_task:1m - expr: sum(rate(tikv_worker_pending_task_total{instance=~".*"}[1m])) by (name) - - record: tikv_coprocessor_request_duration_seconds:1m - expr: sum(rate(tikv_coprocessor_request_duration_seconds_bucket{instance=~".*"}[1m])) - by (le) - - record: tikv_futurepool_pending_task:1m - expr: sum(rate(tikv_futurepool_pending_task_total{instance=~".*"}[1m])) by (name) - - record: tikv_storage_engine_async_request:1m - expr: sum(rate(tikv_storage_engine_async_request_total{instance=~".*", status!~"all|success"}[1m])) - by (status) - - record: tikv_thread_cpu_seconds_nogrpc:1m - expr: sum(rate(tikv_thread_cpu_seconds_total{instance=~".*", name=~"grpc.*"}[1m])) - by (instance) diff --git a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.rules.yml b/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.rules.yml deleted file mode 100644 index 2db43032..00000000 --- a/monitor-snapshot/v4.0.0-beta.1/operator/rules/tikv.rules.yml +++ /dev/null @@ -1,377 +0,0 @@ -groups: -- name: alert.rules - rules: - - alert: TiKV_memory_used_too_fast - expr: process_resident_memory_bytes{job=~"tikv",instance=~".*"} - (process_resident_memory_bytes{job=~"tikv",instance=~".*"} - offset 5m) > 5*1024*1024*1024 - for: 5m - labels: - env: ENV_LABELS_ENV - expr: process_resident_memory_bytes{job=~"tikv",instance=~".*"} - (process_resident_memory_bytes{job=~"tikv",instance=~".*"} - offset 5m) > 5*1024*1024*1024 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: TiKV memory used too fast - value: '{{ $value }}' - - alert: TiKV_GC_can_not_work - expr: sum(increase(tikv_gcworker_gc_tasks_vec{task="gc"}[1d])) < 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(increase(tikv_gcworker_gc_tasks_vec{task="gc"}[1d])) < 1 - level: emergency - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV GC can not work - value: '{{ $value }}' - - alert: TiKV_server_report_failure_msg_total - expr: sum(rate(tikv_server_report_failure_msg_total{type="unreachable"}[10m])) - BY (store_id) > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(rate(tikv_server_report_failure_msg_total{type="unreachable"}[10m])) - BY (store_id) > 10 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV server_report_failure_msg_total error - value: '{{ $value }}' - - alert: TiKV_channel_full_total - expr: sum(rate(tikv_channel_full_total[10m])) BY (type, instance) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(rate(tikv_channel_full_total[10m])) BY (type, instance) > 0 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV channel full - value: '{{ $value }}' - - alert: TiKV_write_stall - expr: delta( tikv_engine_write_stall[10m]) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: delta( tikv_engine_write_stall[10m]) > 0 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV write stall - value: '{{ $value }}' - - alert: TiKV_raft_log_lag - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_log_lag_bucket[1m])) by - (le, instance)) > 5000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_log_lag_bucket[1m])) - by (le, instance)) > 5000 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance {{ $labels.instance }}, values: - {{ $value }}' - summary: TiKV raftstore log lag more than 5000 - value: '{{ $value }}' - - alert: TiKV_async_request_snapshot_duration_seconds - expr: histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="snapshot"}[1m])) - by (le, instance, type)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="snapshot"}[1m])) - by (le, instance, type)) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV async request snapshot duration seconds more than 1s - value: '{{ $value }}' - - alert: TiKV_async_request_write_duration_seconds - expr: histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="write"}[1m])) - by (le, instance, type)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="write"}[1m])) - by (le, instance, type)) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV async request write duration seconds more than 1s - value: '{{ $value }}' - - alert: TiKV_coprocessor_request_wait_seconds - expr: histogram_quantile(0.9999, sum(rate(tikv_coprocessor_request_wait_seconds_bucket[1m])) - by (le, instance, req)) > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.9999, sum(rate(tikv_coprocessor_request_wait_seconds_bucket[1m])) - by (le, instance, req)) > 10 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV coprocessor request wait seconds more than 10s - value: '{{ $value }}' - - alert: TiKV_raftstore_thread_cpu_seconds_total - expr: sum(rate(tikv_thread_cpu_seconds_total{name=~"raftstore_.*"}[1m])) by (instance) > - 1.6 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(rate(tikv_thread_cpu_seconds_total{name=~"raftstore_.*"}[1m])) by - (instance) > 1.6 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV raftstore thread CPU seconds is high - value: '{{ $value }}' - - alert: TiKV_raft_append_log_duration_secs - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket[1m])) - by (le, instance)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket[1m])) - by (le, instance)) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV_raft_append_log_duration_secs - value: '{{ $value }}' - - alert: TiKV_raft_apply_log_duration_secs - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket[1m])) - by (le, instance)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket[1m])) - by (le, instance)) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV_raft_apply_log_duration_secs - value: '{{ $value }}' - - alert: TiKV_scheduler_latch_wait_duration_seconds - expr: histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket[1m])) - by (le, instance, type)) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket[1m])) - by (le, instance, type)) > 1 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV scheduler latch wait duration seconds more than 1s - value: '{{ $value }}' - - alert: TiKV_thread_apply_worker_cpu_seconds - expr: sum(rate(tikv_thread_cpu_seconds_total{name="apply_worker"}[1m])) by (instance) - > 1.8 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(rate(tikv_thread_cpu_seconds_total{name="apply_worker"}[1m])) by (instance) - > 1.8 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV thread apply worker cpu seconds is high - value: '{{ $value }}' - - alert: TiDB_tikvclient_gc_action_fail - expr: sum(increase(tidb_tikvclient_gc_action_result{type="fail"}[1m])) > 10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(increase(tidb_tikvclient_gc_action_result{type="fail"}[1m])) > 10 - level: critical - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiDB_tikvclient_gc_action_fail - value: '{{ $value }}' - - alert: TiKV_leader_drops - expr: delta(tikv_pd_heartbeat_tick_total{type="leader"}[30s]) < -10 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: delta(tikv_pd_heartbeat_tick_total{type="leader"}[30s]) < -10 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV leader drops - value: '{{ $value }}' - - alert: TiKV_raft_process_ready_duration_secs - expr: histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='ready'}[1m])) - by (le, instance, type)) > 2 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='ready'}[1m])) - by (le, instance, type)) > 2 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: TiKV_raft_process_ready_duration_secs - value: '{{ $value }}' - - alert: TiKV_raft_process_tick_duration_secs - expr: histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='tick'}[1m])) - by (le, instance, type)) > 2 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='tick'}[1m])) - by (le, instance, type)) > 2 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: TiKV_raft_process_tick_duration_secs - value: '{{ $value }}' - - alert: TiKV_scheduler_context_total - expr: abs(delta( tikv_scheduler_contex_total[5m])) > 1000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: abs(delta( tikv_scheduler_contex_total[5m])) > 1000 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV scheduler context total - value: '{{ $value }}' - - alert: TiKV_scheduler_command_duration_seconds - expr: histogram_quantile(0.99, sum(rate(tikv_scheduler_command_duration_seconds_bucket[1m])) - by (le, instance, type) / 1000) > 1 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_scheduler_command_duration_seconds_bucket[1m])) - by (le, instance, type) / 1000) > 1 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values:{{ - $value }}' - summary: TiKV scheduler command duration seconds more than 1s - value: '{{ $value }}' - - alert: tikv_coprocessor_request_wait_seconds - expr: delta( tikv_coprocessor_request_wait_seconds_count[10m] ) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: delta( tikv_coprocessor_request_wait_seconds_count[10m] ) > 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, instance: {{ $labels.instance }}, values: - {{ $value }}' - summary: TiKV coprocessor request wait seconds - value: '{{ $value }}' - - alert: TiKV_coprocessor_request_error - expr: increase(tikv_coprocessor_request_error{reason!="lock"}[10m]) > 100 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tikv_coprocessor_request_error{reason!="lock"}[10m]) > 100 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, reason: {{ $labels.reason }}, instance: - {{ $labels.instance }}, values: {{ $value }}' - summary: TiKV coprocessor request error - value: '{{ $value }}' - - alert: TiKV_coprocessor_request_lock_error - expr: increase(tikv_coprocessor_request_error{reason="lock"}[10m]) > 10000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: increase(tikv_coprocessor_request_error{reason="lock"}[10m]) > 10000 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, reason: {{ $labels.reason }}, instance: - {{ $labels.instance }}, values: {{ $value }}' - summary: TiKV coprocessor request lock error - value: '{{ $value }}' - - alert: TiKV_coprocessor_pending_request - expr: delta( tikv_coprocessor_pending_request[10m]) > 5000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: delta( tikv_coprocessor_pending_request[10m]) > 5000 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV pending {{ $labels.type }} request is high - value: '{{ $value }}' - - alert: TiKV_batch_request_snapshot_nums - expr: sum(rate(tikv_thread_cpu_seconds_total{name=~"cop_.*"}[1m])) by (instance) - / ( count(tikv_thread_cpu_seconds_total{name=~"cop_.*"}) * 0.9 ) / count(count(tikv_thread_cpu_seconds_total) - by (instance)) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(rate(tikv_thread_cpu_seconds_total{name=~"cop_.*"}[1m])) by (instance) - / ( count(tikv_thread_cpu_seconds_total{name=~"cop_.*"}) * 0.9 ) / count(count(tikv_thread_cpu_seconds_total) - by (instance)) > 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV batch request snapshot nums is high - value: '{{ $value }}' - - alert: TiKV_pending_task - expr: sum(tikv_worker_pending_task_total) BY (instance,name) > 1000 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: sum(tikv_worker_pending_task_total) BY (instance,name) > 1000 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV pending task too much - value: '{{ $value }}' - - alert: TiKV_low_space_and_add_region - expr: count( (sum(tikv_store_size_bytes{type="available"}) by (instance) / sum(tikv_store_size_bytes{type="capacity"}) - by (instance) < 0.2) and (sum(tikv_raftstore_snapshot_traffic_total{type="applying"}) - by (instance) > 0 ) ) > 0 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: count( (sum(tikv_store_size_bytes{type="available"}) by (instance) / sum(tikv_store_size_bytes{type="capacity"}) - by (instance) < 0.2) and (sum(tikv_raftstore_snapshot_traffic_total{type="applying"}) - by (instance) > 0 ) ) > 0 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV low_space and add_region - value: '{{ $value }}' - - alert: TiKV_approximate_region_size - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket[1m])) - by (le)) > 1073741824 - for: 1m - labels: - env: ENV_LABELS_ENV - expr: histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket[1m])) - by (le)) > 1073741824 - level: warning - annotations: - description: 'cluster: ENV_LABELS_ENV, type: {{ $labels.type }}, instance: {{ - $labels.instance }}, values: {{ $value }}' - summary: TiKV approximate region size is more than 1GB - value: '{{ $value }}'