From 9ffd70a921c5f5a3dbb59fecb28f2b4bfc939c87 Mon Sep 17 00:00:00 2001 From: Denys Holius <5650611+denisgolius@users.noreply.github.com> Date: Tue, 27 Jul 2021 18:01:12 +0300 Subject: [PATCH] Added new guide for monitoring k8s via VictoriaMetrics cluster (#1476) * renamed and moved screenshots * fixed cluster guide, updated helm chart versions, added values.yaml for vm single * renamed guide files * fixed typo * add some fixes * fixed typos,added guide k8s-monitoring-via-vm-cluster * added fixes for yamls --- .gitignore | 3 + docs/Gemfile | 3 + docs/assets/k8s/k8s-vm-single-scheme.png | Bin 43613 -> 0 bytes docs/guides/README.md | 3 +- .../guide-vmcluster-dashes-agent.png} | Bin .../guide-vmcluster-grafana-dash.png} | Bin .../guide-vmcluster-k8s-dashboard.png} | Bin docs/guides/guide-vmcluster-k8s-scheme.png | Bin 0 -> 129673 bytes .../guide-vmcluster-vmagent-grafana-dash.png} | Bin .../guide-vmcluster-vmagent-values.yaml | 222 +++++++ .../guide-vmsingle-grafana-dashboards.png} | Bin .../guide-vmsingle-grafana-k8s-dashboard.png} | Bin .../guide-vmsingle-grafana.png} | Bin docs/guides/guide-vmsingle-k8s-scheme.png | Bin 0 -> 44313 bytes docs/guides/guide-vmsingle-values.yaml | 81 +++ docs/guides/k8s-monitoring-via-vm-cluster.md | 551 ++++++++++++++++++ docs/guides/k8s-monitoring-via-vm-single.md | 351 +++++++++++ docs/guides/k8s-monitoring-with-vm-single.md | 269 --------- 18 files changed, 1213 insertions(+), 270 deletions(-) create mode 100644 docs/Gemfile delete mode 100644 docs/assets/k8s/k8s-vm-single-scheme.png rename docs/{assets/k8s/grafana-dashboards-clsuter-vs-agent.png => guides/guide-vmcluster-dashes-agent.png} (100%) rename docs/{assets/k8s/vmcluster-grafana.png => guides/guide-vmcluster-grafana-dash.png} (100%) rename docs/{assets/k8s/vmcluster-grafana-k8s-dashboard.png => guides/guide-vmcluster-k8s-dashboard.png} (100%) create mode 100644 docs/guides/guide-vmcluster-k8s-scheme.png rename docs/{assets/k8s/vmagent-grafana.png => guides/guide-vmcluster-vmagent-grafana-dash.png} (100%) create mode 100644 docs/guides/guide-vmcluster-vmagent-values.yaml rename docs/{assets/k8s/grafana-dashboards.png => guides/guide-vmsingle-grafana-dashboards.png} (100%) rename docs/{assets/k8s/vmsingle-grafana-k8s-dashboard.png => guides/guide-vmsingle-grafana-k8s-dashboard.png} (100%) rename docs/{assets/k8s/vmsingle-grafana.png => guides/guide-vmsingle-grafana.png} (100%) create mode 100644 docs/guides/guide-vmsingle-k8s-scheme.png create mode 100644 docs/guides/guide-vmsingle-values.yaml create mode 100644 docs/guides/k8s-monitoring-via-vm-cluster.md create mode 100644 docs/guides/k8s-monitoring-via-vm-single.md delete mode 100644 docs/guides/k8s-monitoring-with-vm-single.md diff --git a/.gitignore b/.gitignore index 3e4d0d2a3..2009d0602 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ /package/*.deb /package/*.rpm .DS_store +Gemfile.lock +/_site +_site \ No newline at end of file diff --git a/docs/Gemfile b/docs/Gemfile new file mode 100644 index 000000000..73d01526e --- /dev/null +++ b/docs/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" +gem "jekyll-rtd-theme", "~> 2.0.6" +gem "github-pages", group: :jekyll_plugins \ No newline at end of file diff --git a/docs/assets/k8s/k8s-vm-single-scheme.png b/docs/assets/k8s/k8s-vm-single-scheme.png deleted file mode 100644 index 6cc73a37018246f41ddaae6bfd17d2e7518afea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43613 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

Vn6a$PHXA0 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 diff --git a/docs/guides/README.md b/docs/guides/README.md index 10bbe3423..54bb184f2 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -4,4 +4,5 @@ sort: 21 # Guides -1. [Kubernetes monitoring with VictoriaMetrics Single](k8s-monitoring-with-vm-single.html) +1. [K8s monitoring via VM Single](k8s-monitoring-via-vm-single.html) +1. [K8s monitoring via VM Cluster](k8s-monitoring-via-vm-cluster.html) diff --git a/docs/assets/k8s/grafana-dashboards-clsuter-vs-agent.png b/docs/guides/guide-vmcluster-dashes-agent.png similarity index 100% rename from docs/assets/k8s/grafana-dashboards-clsuter-vs-agent.png rename to docs/guides/guide-vmcluster-dashes-agent.png diff --git a/docs/assets/k8s/vmcluster-grafana.png b/docs/guides/guide-vmcluster-grafana-dash.png similarity index 100% rename from docs/assets/k8s/vmcluster-grafana.png rename to docs/guides/guide-vmcluster-grafana-dash.png diff --git a/docs/assets/k8s/vmcluster-grafana-k8s-dashboard.png b/docs/guides/guide-vmcluster-k8s-dashboard.png similarity index 100% rename from docs/assets/k8s/vmcluster-grafana-k8s-dashboard.png rename to docs/guides/guide-vmcluster-k8s-dashboard.png diff --git a/docs/guides/guide-vmcluster-k8s-scheme.png b/docs/guides/guide-vmcluster-k8s-scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..65b3c743f9c3247b32ce70d74d344885cbea0755 GIT binary patch literal 129673 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 !30(sXBtcFLKWE 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

U{ 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 UR1x(%0{FAU$lNf=V4d&(0w;12bpQYW literal 0 HcmV?d00001 diff --git a/docs/assets/k8s/vmagent-grafana.png b/docs/guides/guide-vmcluster-vmagent-grafana-dash.png similarity index 100% rename from docs/assets/k8s/vmagent-grafana.png rename to docs/guides/guide-vmcluster-vmagent-grafana-dash.png diff --git a/docs/guides/guide-vmcluster-vmagent-values.yaml b/docs/guides/guide-vmcluster-vmagent-values.yaml new file mode 100644 index 000000000..008b136a9 --- /dev/null +++ b/docs/guides/guide-vmcluster-vmagent-values.yaml @@ -0,0 +1,222 @@ +remoteWriteUrls: + - http://vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local:8480/insert/0/prometheus/ + +config: + global: + scrape_interval: 10s + + scrape_configs: + - job_name: vmagent + static_configs: + - targets: ["localhost:8429"] + - job_name: "kubernetes-apiservers" + kubernetes_sd_configs: + - role: endpoints + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: + [ + __meta_kubernetes_namespace, + __meta_kubernetes_service_name, + __meta_kubernetes_endpoint_port_name, + ] + action: keep + regex: default;kubernetes;https + - job_name: "kubernetes-nodes" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics + - job_name: "kubernetes-nodes-cadvisor" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + metric_relabel_configs: + - action: replace + source_labels: [pod] + regex: '(.+)' + target_label: pod_name + replacement: '${1}' + - action: replace + source_labels: [container] + regex: '(.+)' + target_label: container_name + replacement: '${1}' + - action: replace + target_label: name + replacement: k8s_stub + - action: replace + source_labels: [id] + regex: '^/system\.slice/(.+)\.service$' + target_label: systemd_service_name + replacement: '${1}' + - job_name: "kubernetes-service-endpoints" + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [ + __address__, + __meta_kubernetes_service_annotation_prometheus_io_port, + ] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name + - source_labels: [__meta_kubernetes_pod_node_name] + action: replace + target_label: kubernetes_node + - job_name: "kubernetes-service-endpoints-slow" + scrape_interval: 5m + scrape_timeout: 30s + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scrape_slow] + action: keep + regex: true + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [ + __address__, + __meta_kubernetes_service_annotation_prometheus_io_port, + ] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name + - source_labels: [__meta_kubernetes_pod_node_name] + action: replace + target_label: kubernetes_node + - job_name: "kubernetes-services" + metrics_path: /probe + params: + module: [http_2xx] + kubernetes_sd_configs: + - role: service + relabel_configs: + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_probe] + action: keep + regex: true + - source_labels: [__address__] + target_label: __param_target + - target_label: __address__ + replacement: blackbox + - source_labels: [__param_target] + target_label: instance + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + target_label: kubernetes_name + - job_name: "kubernetes-pods" + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] + action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: kubernetes_pod_name \ No newline at end of file diff --git a/docs/assets/k8s/grafana-dashboards.png b/docs/guides/guide-vmsingle-grafana-dashboards.png similarity index 100% rename from docs/assets/k8s/grafana-dashboards.png rename to docs/guides/guide-vmsingle-grafana-dashboards.png diff --git a/docs/assets/k8s/vmsingle-grafana-k8s-dashboard.png b/docs/guides/guide-vmsingle-grafana-k8s-dashboard.png similarity index 100% rename from docs/assets/k8s/vmsingle-grafana-k8s-dashboard.png rename to docs/guides/guide-vmsingle-grafana-k8s-dashboard.png diff --git a/docs/assets/k8s/vmsingle-grafana.png b/docs/guides/guide-vmsingle-grafana.png similarity index 100% rename from docs/assets/k8s/vmsingle-grafana.png rename to docs/guides/guide-vmsingle-grafana.png diff --git a/docs/guides/guide-vmsingle-k8s-scheme.png b/docs/guides/guide-vmsingle-k8s-scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..81f31eac051775a522f33c28dc679b633a60d623 GIT binary patch literal 44313 zcmcHgWmuGL+XW00qm;lfgfz@BfJ(PW!vHfhs7MJ4NJxVc(#_B_grqbm5+aBoNT+~w zcL>s{G`uHX*L^?U->+}m-tGN4=bUlmzOQ|)b)dC0lu3!{iE(gnNKr_H4h{|;1_uZC z4dHd*N_T=mAPx>I4hkXnz}7(;eh zd%#z&Hb@S#%wM~#ohFQ@ET^nBT+ehgGkff^cjd@;dz-&|?frYY&kz$k#SpWk2&1V>TC1E#XnR2>UroI%IJ)=WjLJmt-tiz7%SVd zlsO$2Zg=#VnEUE`c@gcS{9`%Q!BruY?AMCSd=O>+IzjypPxHJ4UFS)=&yQ^xdL{QG zWn>nkRK~8KheanWHYS((9fvU3(@tJr`QU?S|F)tjb6$}u>G3hubE~?bhGQgizEy8w zV(xDAyCJ3J{XSK3QE>lUQ(=KBI@w0%4;X%(x;@ z7Q8r-X-7yq+y1FhyoiNODKe>qwCza?#!1#F$JA~|+_#;=R5~z?ox=3QwTtJo`+}lx zj{IySIK%hixGX4XmjSnE(2n1zuOEbMuy@mH@y*75_cJM-6ZomswK7zv3I z5-u^H<(Rtf9Jin;3)p&|GN8`qQWRzygMARCBzF8XA5@x}C;TeP$I;)*9CPqIG*eiN z49$;r=BdRbPz=-)!AUMYq7vF!EP({%8lT3qNSC!m6xy7RwxVh};IByV_NI{`1_^ z)IOC|nG>YR;sk%K-lN5dxs%D4S*4rS&7!eqmD+ZFm3H!RZP+{(6vO!Q)TbrN%BCq5 zS!Ac$cHEzgUcdStqZA!1;9TD~3x7s5n)pk&N9yM1x}X*0m(r+qM_V0+%ILgRtAp*IwPT_T2RMdACDJ(UH%Y~OH#e12${sWadOT0!uw!i&T@d{^A9Bx{ zyZbiV@UUnz%I?ABje^Ds0~tN?u_`EPzrujQTJ-m@=nv}>I}vt8;Mw~+x!U{>QqAa?|}>5O?}VF!ZVaQsq0 zNqiMVeB>KM-B785lT++=8%K2$*RfHtn3Jlg$6qJ?v|6g0b5}#{LJI9d*8P?9NMDMm zZGL&Uru?Zaw=u^+W^G();AQ!7qbC-x=|uY->GXbas2`@Iiq!Ch@Iw)d8pKs3A<1f8 zE|;0)?|6lv@H;G{3wNRGR)bwD{Wm85=Z62^p!Jr{zi@dYr8o2Xf5Ye1t;C@~V4UZD zcO4G;?{)t+Hde^Ed*sXOe??0wGXFw2_7>BgUn{#CFC#sD>|Y;LiS$!^*8YP(x=AMi zVc@J*_&k^BkXK-f{>xuC8PMZ)jnY3_xF>{OB7j>4V{}y_CkMjb?O%oR|1=vr zuf@VIpCS;%_y77na0eKsHJrv%_1|{>^NcVi1^<8EAi~C~Zr%ef{O>D)f8)tN*%?_juAr z0qdI&e^0q+irJ3we?Hsms<{NhyCPG5TLPZ{vqb&2ufHd3>@&Q7JNaJhXWT!N5B<;R z+`5jZYjpjZsR&9D_FhD%>u@E_C0gQar`em5ukI+@@M$nLB-Qiy$Ls0q47PJKp4(EN zTOg`;Rra_)4e5MJtK0kx!wf&I{h1wcCP%>R{^VDn;ZayErUQ7m$tk0#?qqFCto~S? zgzbIFKMPG31Gb`r9G|S0dg2}bo^+^by=gK<*^&3!_>29hJp7|z{H)i0RI1B&@yDO- zr-@77^)R3rWqfKUt#YDr>53<(OG5sctxRUZ3J^L?*cxl-d;V)W)uC=2j7Jm;!z2_8 zF2=}gjTpJ~=p>!)E5UlDPi@^=D3rqxBWA7l8UC4BEisU@CahmF+aEz$J!Tr=K?)~7 zeieZ?zUV^wa;1U4$doJWzITWP3I{Tiln<&EWKgm=0_v?$`4iU81;k28Szt@k1 zM^o7mylX^DAG>%NBEAo5%53WDKcl{!w);Gt_*0^CA)M>WN`~*uiY&c=DZT1fi0?DNv%ew_5 z)+au_pR_IS@yeylKYH62gNuK?YTPnodj9hF=lb)WjFsS<#*Q_cm8mtrH*4uwWVArV zbA|6q)_A`j=*V2(xf=LstSay7tHZ6$i=%d#FV)K_T$M3@Kt;yI0cTAA`_j6#-uAJb z&yz1lA2S67cW}os*jF`fRxL)C*~#7M(HtPN>ODH%^u0Va5qt4d%dJ=H@QAcI{`UPT zpkd38X&ScX0?B`;hW+jUz{dQf&zwKO)aiEp_C2?)4WHvKlP|Luzdzg8pa0$;y%i5v zUvizaTd}YHLGyXy`Frt+$T)B*nvzrFwdHyngTsp)r6^}jsbBG@JI&25pAbnX84bzq@$9sYQ2a^j*O%lZVI zs^uQGpBW+xEB}7)JtsI49}>O;uD>{0KgXAd7cgscmls-$6#8PB;XR_<=zF^P`6AXI zpWqebxL=v2`WlU1gYWOd`paobxf12qypJW1ml(ki5O%-R_q?kIfPRB%1PcmJt|N&3 z<9AQRX55>B-nm_r^L(BfkPC`*^g9J!vx#QP4RtE67*M&;BkX+|%Cvl0^6U)!awiQy zUk)U*svP`g0ctRpUa8MD>m@Z)1~$bB*2Hf-mXqr)ja1E}#g}*NCN3kdEf8abtf|mb z&t5;C`ZQ|1t|>IACRBaAk}-Q}XO6A+J*=6nwkfG@qdW#)HEP3}JZTI0$tL}-14y@9 zuYRrlxU{eb)`jR6Mwxl{vR9~A(mpGgW)IP~%!6y?HtT)(!oUkDO!2c~xYR`E^Qf`s zr+LTWhmX(*ixj(ie`0Ij1YxG^q6fGDgl5pc10hOQu&SMbD8m5wZl=ka;khOLxdRq) zw66<`J$Ppfhcul4JK{K0Tz^trX6Xh`&$jQSr{;^h*Edbxjzj5AQJm>ZXx8me=2vey ztqAEA2U;Z$`V=n20PNZ=Ozu)~KmXxEtrdODy|r7VjX`Qz?1*wumLlOtKO+;L;~(}B zJe4~^pe7NkK32D1!;enQN@}+5X{xESMoYaq*vUBhLM)P(u*_zlFp1OeTf#XSt&VF> zrhaGX#*O}q6yX4b{L$&b>Y}F8+Pi{RJ$Hg=<|mBZ=Y#8fV-1n;pb`V$qc_#nyKM}o zo}fKs%AJb-ZiNX`BcLKE^;|FhTzfq|3d8`73naVOVRCA6c{1u_FDnX71bgi0CKSFZ zb$_mTmBC_7KpXnOc%4-yc{BMi4Cfp7>`~p|<=IzqV0Mg^misM@B>qO8+MTA0dE{2x za~(cNr$^Wt(GzHH_0H(!dh+gk+H`!!+mJu zlkTK@(9*0-;}AG&`n{KX<_*FDu8jHC6$wrV@Ib(C2!!NaaHi5V7(PXCZkERlA_O}` zzw4;yp6n9cG;=rm?$aS$;>!4~P${SMyViX6wAqv$QEcpTF_McM;FU_TZ;NDZiuNvBXKI zCIA6y)RwDDZ&_t%#bjF_IUz}3kxd*E2(wv8#rWV$2XEVU#`O6 zs+2X(${WnwlsKNwmz@i;Qb@5J3M>{b=L2q7;=-VAjh*v_;MbFN%LK0kA4S&TtO3!gt z0S{=7a*q<*@tU=z+2a~Uv0`FfkoQvYyFuDA-701!2w1k;O3)Mk7N(}qSS|=UpD2pc#|=yu6ebNWcE3FI?E%B1yg(7=ojW7B6m=wVdBswN5Sc}gtHQm@MW#ROvRYV7lZ24 zKonXT?t7bqd2Rga9S_=5L~>Nmj8t<0`Z%&P7wFK-vm)K$nhOssxHsMY{+FyL^*98@6N#C zn5yUSYvvEvbLwv5T}_$)-c@gi&Oqs4B%XjATi7bi9yO^s+PLr)2I;jthBUA#Eg196!a*sFhWaFV;z`BZ4kqLoATweSXy7`7H z8Udj~9PkF{OGMpHV7-~0I2hYu(B3P)vx4wMY7t3iWyx03@`1Vo5(?)}LuJkymBrYq zSb`ei!#eBv3od!>RYt=g?YdEh&+tQ z9y-dQb6XMbc0yQ_Wt!Clj}$q*JZ!*;iyvqrJu+IEjff6jYOPCw?ha3i{%1MhDzH+c zgEDtv0#0AqZ)@hJhlX-bh%kRaBw_heYQwalijj(=9LLmq4Es=380P5hJf*c9U;ln4 z&k2xrrJ|~7S)|YU`}Q#VeD8%*5On~0wv%H+SW(u-KfHqh#?|B<-%%UHHjs}K@&)(7 z$>X1toxcimTca!E5EI;C*UDWU7(Ta)rSGh0vEH}cH55f2bz%1f)>O1QIk7#|K2->- zxLKk105hbh*8T?}qHcP!(F^}^u-DIxG1 z%;8dT7MRJ)aZhSGn*wA!)B98v)h(%JlbNipa5b=i{UHpyy}%y_48)aju=% z22PA939Bht@I~rVlOntu8Hy%&u(OmP1ybfLND#!~I>I`OWJ5o~ClZk61KXXXC@SuNvZ$XslOK z9EW;}h5M(-jBvpt-t60mbw*B5o9v9hq;3Q+xv%C9}`(r1^m2CEa@!THddZ! zg)EgP0!bd@FS|e^{}7tp#8V1y4?`rb%x7Z$lw^faKNu+3@bNw(J2^-D{e^ZhrGA}e z4mwwg*)Qo7nGhf=`IeY6JTDx2)bx#Hub}{s44sEcBqNenrDn&(--P4d6~}*P6|hV# zR7gR7Hbg5kA<4W34<_p(HXuW?Ra+$#HQlHe_}Fp?=OKTLe=h)m1v3UHn6TC!_Hyq+fHXa65atbQey9rOaRS{~*7%%g{26BS`(o zSJM7_aDrc-pnN3yL@BQOOg1%g9nTum#F`C<(B-c_<(0K^dirFsiIf1Us7jQGe2cCi zbPeOAHr?5-z~K}whLc*lG)^hJkDBx+!u+msnk$XihRgBOJisqozPE7r?H7zc)OBM* z&ZtvLWj49gX!OHL9MU{-Sf%~Xh=oVt7{%Phb0IGhop_Ma@jPm1&)WdfDbC6hdox>g zSHC6FGH>aK875muMaU`tl18N~i)aD&+b+1Z%&h$+rD5p0=zJqdCxRh(m8O{8Lecq= z>2KjphD|xhEy|n36U<232_8_nNDwvUM$LBJr0!_SS#&{~^EctVQ(*K4I4kU|H2WE0 zu|`NC1Ch2c*^gn29FDiBI=UuoN~eEQxYH*uHygBRBBYa&WYty~5NMlFN9hu#QJx5J zKdFGoyF6D{ z|NZXb4U@~spxI2ikVu%3W(n8m=(5y=8l;-Rr~BEmr+d9)5imUCxn{wCXlPbMW*!pG zq+EmVuaFbcMnT$_VpB3M%HhnA{VVVwRx+7D#GiO5yG@OR2pZK5)X>{~50amRFbi2k zib=>rJRUnXUXu<;3>DanEeA&#<{`$cM*6g}su8E5mFTIsSd$KGWXr}BlOjx5w5=OL8#^}g6 zN>R)+imtZ2Xn<q=xM|txxNqM^!>3vTBpg-1s3c?;mzcp77mGUAJ_EiGF z>eS+05fNU7$F<93_bvZTH2=KyEhir630AkH1P)P$Z^XON79##4h2%5!2xH3vZK2j( zMg;>18WLEP(*OLe3qrtb6t(LAdZ#QApg3^PD~`tgvnKxVSz25`XFkE+&i=*OWd;EP zL*h=hO~+r2e@pE@1b6<~msJ9=_TMP=xfV{o{>4Q(hc(PK22N+n1?pHX0K`uMr(ozK zgU66RPzv{|OR`K9Nl!!QrieJx<}@UCTOJgLBk}`K1Vn%S{j*9l#|UL%q2w&amy#HB zzFGU4P4n-(zt8%A{+CSi$HM%6B%3cXYHF}cNomq_W=6htH~FA-%9!{|e_^2Mv8DgLk1eqbwU zyv^I(aVdz4D|O_ik)wYv_3i(;;}#j-m4YF$6ss@=P&R23x#=kg8Ul`}|DEvvZ)Oy0 z#RRJuTqZ00WcEMv86?}zD*NL16}Z__3CKc-PWlO60giy==N2(@MxLC1?r@Z{dp_-hi2 zgK?I2qr_%9mMW7{5S27kYsG)9vmjYEU=`cKzdZkY;;$*n!aru-)NTHIy|Gc;qDHrj z$N(yc*x{6m<;P>OJ-oMef3>;-hL;D!08CU?&E>`E`O9#Ur=0F@H8Z3yPAN6+LPa50 z9LS+Zd`GhQ(mX1xgq%fs`tTB9z9vq_>wSHF zjUL=3(D=YrT%ofeeiZGq_h#t2cov7|n~l^NKwit2AgK3VPPRN-N#neyD=lU^^T}p( z%*Q!0opXz^*nRMAZvw>}^OLP8CJ9}we|Co~3ADjQW=lUqIA{nC5dOpu(Q{eWNbM|g{OdP%=F&unT@fg)2| zcCjg_T#97wsGHZuvZL`Au50_rwqU|ym)a-*6r|7{wZxGgD&9&WPp!Q5v%t={5aZcp zN&nU202hXKjJ~_qCeEEe-6B#F^_&4zCnjjK5`pz(AZc%l8tw2-A;n9v{T?jAGaFjenL-g|d3^1{LR%&s)qBBgV8;Zh_0-f_Lh z?&q%-Z#*p8BQ7NXzVdQe>LdkV(9ay$iz8$`-Ho5C!^!V3_Z1hSb7##>V+M6TZLvS< z4VJYdl;w{T1y{-;VV9LeSp>0reIV>GTxasu!FsgP91tsB#7O;4;)KM8?mS!-Vxx=A zDy_emP*1-%T;Kk+?sz%1viErM;&VOM*FSvV(T>!K*ySXNGwt~#AzQ}28?vaWKI%pA zc7J_TT5vAUi5qf5KHJha6x4S?hR&u?N+p4o-9T9~>PJCle~u{>-Dn5}<0>#+fNJ}b|aZSj?~LEkn{<*rZ`pPz4Dt=;}S zZjt(lVn2FIK{>6r=)HdUw_FYklYpPn8wHL^rR?{WKwi2)&_2^92iaAfJ__pTii zezMP6=0@GOFc2IJqr+WvAGB9QC0X}GcDGvhW={xTkbio9b`DU`HPnxc$~IjFKL#6! zopNuOB-V?!3wCh}MdkCiz`|7r+)x?y)*gAT|M3FsG?8q*u0MNL_V`HPd20sHsl-_~k~5V;G@}w7HhF93G1BOGQaHQchTho4hhY8&stRN8$e+#l zJdVp-$rE7XB5F?7-gh~_FQB)yM#4EnD=`TiE@iGb7JviH_`bwodA-DfgN#V?=unmK>r#8{fp>An z{%L95$+tzwFjdGU=XuYI_pXd7lHVz$M0*_U?mfEKe$&Kjei^`a)@pO$@>t~O!^_Vz zueug9ejG9~JWsIOqP4z8V!T~097b6-rq9JT988)$s|eRCB7 zbMdqu61a-XvKQdH``tp*0NJ|9{OTw4a}zPwQfc5CAn@SeS#iHMv==`-T8t6P{54{y z1ONE4H2oDX$T`AK@!YagEOD~&t=S-}Bfx0htH8ua?u8k;jz0^I2H(1dN5WGPEB3Pf zXdxnx)?q>}p97N%f*J_%rXwffR__9z{^pM(t&0+u>hhO$Qbr|`I44W*wouMwsKY?t z{A2;ysFttvha&Gn5}FChpsb@(UnNk$f!XY2d4Px&;Q(Gx$cBSfQ{go^AH4_bC1eCB zvMoTr*`uz(4k-MnzFbQMTan`(UHa@a5=6g{QKSxcjlFr7x7}$V>3$p%3yV7~ei#>( zquAO)^LncKEv5V-1g}TlFW$gbvV6lTb@)-b7z3U%i+4rM!GP*?d9U<(qMj+*R%WDM zK2woG&n!x$_IB#et?Y2>bt~i>q^jgpA^A1gMo^CVqGI|5{c9kFGWj>mhq7#42|z~# zYe3^BC<=zegJcIOGQGC($tC9o<)|NOL39hB+!WgyO6kxgQ15IrJSQ%^1QzfTuD=4g z)X-z6R_d*UN5)Pd24s*d9eC{3dhztv!7&POe&l_VtE}GV z10s_?dg2BMS|_rqSV7f4j{(}j)U?~|CcaJBKw^9(VlCibDQ}Z-qyF;3e(0@sH1_4I zq><dbI>^N#eyz)UFl2_tF=K z@c;7-fWw_G{yekBHNstgw)c$IxlrK0h%@#Y?)&?iGXkhG@ED*mObae{Q>kj%sgG0n8Q+GBr`@*SApwt$3d@y*uMTSk+B z-0{7@YkeS3b@%#P3L<}6P&7dHi&=EjmIiN+ms>&wQY_zic=^mKkcq>89RY7s6f0#HQG74Hb#R$zXzv8rZX8;--uGU`8h<0!K0x?zJO4FW^X`7Z7a$4!$ktp70$T~= z0gcFK5VcKO{0hLFDCx)dCrmtkBrutat7<0>!9U(+D_lh7p^Dj(o~r;a8i0KODB_y> zi(jSEtAZ&cXz(q3yqm`ES)=kgzg=EGcD>ykdq1j7_^L+v#cKG;)~xXTyTCsofmF%Q z%L7CU$iC#H(s3y_@s8#E?x+KbWgXl2g|X*mLPoSmH7BrG)Z6q6{!}Scc(`hhKhOHq z04l>au>dovJYlY!pI-_feNJQ6I92CRDV2uDw3rUvx>sv8SC}v}kYdat)ox1aaB8s* zP{PQh%QZMbDWN#Lj0oQCFY6^+NoLX3#>&pF7MPB-$KaRBgjBe=1NE^B1#a6jinP&f zVAc=Ax`x$Gi*3gZ^g!=O@T_JD$QXZqaogTnssGQkvnfZvfKSE$DHZQP{kEL|JI_=Q z5hWvqFLr@d_Ej7p{B(E&;k1=5UI_*&WOW3vgSd*%M*$!umXn}Ifzn8-{q(rk_suJ> zcc|R#)caK`%QX>q4 z3t0l#2VgjBuCzq&lhpzycinUqLgAbKSAsKThq~DG5GjjvZFRbJ-}t<870daCrHra~ z$PircWrVnt7F@94rqVP3#WVB3dO*gQ1}1g={4u+HCO2X2m1_Wq{x2EqDlj#`k1oND z!bNUUpb)58GwQ?rvwjN+ivW>x3(!7YfrOzwZ1xh^;ly~`wfoWQ{W+oJw6*gg4B>)B zDec#@@Bx?yyjUWth3R-s_#eXA zN?~ra{^FA-kZl!VBAhD04OhvNM(+tOkTTbg%}=ozV8B(UcD2x;gy2=>V*R`$Yr$Q>a)~p;YoJ2cil(LZI@pT)rq#S{ z9sI+9Q2d)CyIYu;i5r-jr(jlfP&MpI zpK%2rAH3=JjM(si zi3|`L=hN8E=!ctE$8H#g=TP1nark8G1ufqiL?H+#tfDFKdNl zpE&@NV#G%%j(^$}7UWR*Cl5TB@V8c_eD{v;Dnwh!;DOZSVDE4^DDa-iXWERGMB^|x zE2*d`!Cp50!$@ShUa=PKT09jTcwKz;wTIU(fbe1Hfz4y%Zxyz`DFOtq$ZfpAyd9!<+9&aVvVtq|^LT4k!_M z`3o^L2tUN><;7wB^dl4R;ef9WYOjF|d}b0t#(bOHToZEr>tYM43+m!CL*SQtrduGw)^af;6W#I_XQH^OjevD5XpwVs4>1-|TQ~0)<7X zmR6ZDIW2#t6QCA}N^2Awc;h8Ti5pk<5Q}V!&;qTwM~jPue=5I%Tx8NN(i+OpvJQ~lc=P3P%~IySI!;gohWC?@{Nefx4rW2RpyU~B2hWp2Q+>*gGD^#EsMpA#h- z{`Cd0pUWh68t}hLC>NK3uGD!6U<%e%U*zUO(=DGvmZ1g7d2Qjd!q%+D;nwstU{P4*Plvg53$zRC<@8rHMDx|34W#>=tZo6; zi}x~`E8o+n!?{X+c5-g7ZFiEb@A8@r7 zgj2n@v%M&1V4)9qW2S(V^5X(9{%WkK5_%xaY5;Um1za0$rc#Cx4O}6+uj8JhkKJAZ zA^bIGUTh6lY3;!2+i9QE%`E_gAG#~7StLKB`Mg;<`DMHQa^~0CaF-NNzL1fQ=cn4Q zNgvJOhdN9G=xXJ=W(eui%N3c+)!q2`w;Nf!t~OBFcvcBVuhKiHiA8$x zllvOtt$c;Pz%F9!_k=*T%t3F{&oeI1+Ow{4m8Su=uPq>oxZQmG0yEkd>O*E)3DeRzB@IdHi!@2Y0k%J+o5cI&ODG?3<6AMj>YuM)=9@K(RB?5NgZwf3!(#|{vY6pC`9uJV50~0=Y z7Q)SGb+?P-D1N~LM_k!M2d@351NOLwjG2T!$I!mI_0*#XFfk6ModW{xR}&;_1OV1z z+$zbg)zh6>BC|aK$UQXVLUYHpcB6Li&!h~M-I1X|M-mVccrgnPAVi&izx0~4DJly& z9H&IT@Ud&L1iOe@*qH;~r2UC|cshL#I4~VtB~?wEfX!)Z%BA;Z5~>`F6y1728vdR! z=n_Vc?6|!i2lxq~{kace7{-WMt`se=JEMjUQrquQ{G=8qS1v*6hsJa$_{21@Yq}k> zKQ5na97%{w(lKbj)O$MB2g6g4%;sQr;dfYTilZ)*iv=QBP0@!hgwo=7y(oi^E>5>S z)!8|cwDdswHxy=BXf!9}T+rfPTh%MSm*NrCNtSA^Gai=pIg7M=4itG|%WLW_c=0Tdt!8|~TK68+pCpX3esB*F^w=|J5%B;h0S_0le9yKZ z>ln9V#M<{e_;^F)92t!C{OEn3C{V=*pB;^cZw@~D441V;>?lgQVZFAe^abdaAoT_{ zc6B(qMZf%GERv1VsqRe?x@hnjJLae{pbJ2N(&-ONhPSU(F;zE|+n=aXrcWCuPOnk2 zsbAXp%SrX}4h9iiq4nTKfd|j$ zguM8p(kQe$N@$~~TPXJ}Go-yG(GggM3T6g}+Oim}ptRo`>8N9F4OMS~fI# z3jb~cx!ehrIr{l*4g3 zHUp&Ek9y1EZ}KpKz#MC{b7eN`rZ&1fymfbdU^56HX|`>t;OxXj^G%Dj-BHkFX50>{ z2nqu^F7H-Yizx!mu|!ec0}%F19QL4kI@ft_NAN9>e22i&K$DuieDWt*mcTAY|}{~35DH!K{Owm4LsGzFr&wWiBf2IO#WkN0!T=VVghtz4#gRxb`2}NdFZsQG~ zo`UP2q$iYg^kb(IgG0>vkRRO@DF*-}-ItkdNVW<;8QL(ElwrB#>u-bYFlH4b*=|?k zP0Did7NOO<(!G!}TE(D?oX#ch%5jVR8ppL#R4{d!P8lf&Nn zDN9Yz>&VdovqMWwP6&x5unWv5^eRIceK^7 z=6s?_I9fbh`U8#vt2!$tzgl!w^UR;MIg1weCR$Bm@`Vu>Tf>>}Mp^q5fXODmHNUl) z1(Lqc_DR49KfRV2r%It-^MvPKC#UB9vJjEhJ0m-urjW6zoHDo`!Dm(^GYxn|(fOvc zG4j^!qz;qLS9aK7#2!N!x3{TX=$yRqamFW>fzxkXrS9vb=7nl_$!#WYY8$|A=quy= zB@1qLwmx^qdGIoZNiYH|7M0L@52yyuns6~KQ+S<0!lqkFI|K#*-B<8#0E}l_V_hix z!A2C)89>!@K`!3H7+8tF$qJ|B;plW;?8s+l2PQmh7D56$9@MKK8j_0$-^pz0?Eug~ zl$DymqT+twJZ(&GF>v*fCgY%g3RkNmhPsv zv_Pl_5qmfbhr>uXuEf-bjgn-~sj8$YE=&hEMT8YuA1gmEVJ;Cp&37VgQHZs7)F48> zs8JT~Ji%2WiD@-tqowe7(xXJcB0RiB3e7=CL7xt2=+O$Z3I<5fAW8C`y(CxLcRk~Y z-I3jR1Q(S2!A8I-qUn;KxJq>Z9U zt%|UH6fD`nHmqZp;~kU#uThg(DS!Z)k!QUs`EW>>k|o{epFf0KJ6um4f)5OQt+<2E zy*x_js7RFD>_5vwwU9$TNlEZ9*JaJAsgphe#_7i~05!dx9Vz#j;NkT0mH|YJal$~( z*M#$+m-M>stK>pk5*rxdDzI_{xBPP_80VJ(7&FQY_x2KFQgzP*2Wd?>B!t^wiJf9I zR=q+Hh8g@`Y>`@ynr}H{$6~)UT7BE~Oc)BmQ335$gd;{ma(t#=5oSJNwf9?Llv7rO zAmQP;MF}eaVb`#b)qpn;p1d~M^)W&iFc@9S4)wTcg6M$d-lh_Ex=W?N*cqsVFujF% zHh7(0`oTqRN~ZA5+lk2V2yxmtcU?&5?h$+;HH?MLBKR%@HJn;O5wX08K28tze?k9X zx^XnPI=VBu!v)FiuW*Fgqq|6poOV_*9SIeVK;$PsjgqWQ#3rthTO#yOeknZ3diU$QH(FW?t(rI_xazwQFhe?iOvj5yPl>kZ0BUqJcEF8>cp{({TM$+Dq$%?rdH;H3uz(x~Gz)A@ymo!+8ijGJ4aEkaS_FenQ)bhENmAYdA;{XPUu=N z*y;w}(yI9drPvdF6unFSi1jDo<&BYQ_}V*wSWE!3a^8|NL9F!x8rIAg**%jf4tSI@ zPKH@H(Ht3sXLIzZ{PQxMV@=~|H{LG;7pgUp)$N_AP((-`M^|Jd(mc7eu8kK&ALjQ= z{==%eN85!q?q$Udi{h2O?e}c5AEp74W8;0YRu((C>BTTe17lpIth?kkRyv-`d3=~0{zi+nO*qxX8r^t?EZ?XJOUgxTho;CeH&02v|al?UIl zOzBp71Hsj5imWA^a<3I3ZAwo_50z;;5io(r;HdY);`*#3W%8M6ghO28cZrsFWnk%4 z=n_7_u-#4aSiDr$Oi8^GZ{P){5$XVk;5qNM-sHS~Upp=(-sm88;Qb~$#@x~Gi5$oN zog_m*OX{iI(jHActG7~g1H>ZhFFkF3k(7i#s8PEk#fD-mw+KDpv0!ZHQ!_^J9$;@f<#nci+h@J0{Bh666Q&@Uwddq*ayDK!Jtcu*x&XiLKx&X zCT!$KYOWDI5gJ7*8tVxgZbgMTfU?-Lj&tve%_k5Vqq9t#xB2opT=tcR9P38#YFsGm zrE-1wC#N6b-s=}PJOn)E=;fA}oWsz>l)^0prcd}TIHPXn4vZ*$)O!F6 zy#f%N82IuE{SUcF1fbZytHaVL;xxT5J)jU&es z7#AfL$PvE1kzVg1_qMN1n}oSM-uunL_fKVW6cT(0JXqM6<-zFp)|E)kFZw@drG@NR z78m`gRL0&g*?5!0c6bD8jp>XR?_T7B8_~I~Z3Xu~pT4x*!Ku01}2W)64jnI(8|lQF`aQfS45e zJ7HG9g1J&+vm!3T^UR|0+RYd1Mdi^~l8(b`Sw6L@q+n>8)mAoKkUPA=$%=qzB6Dd2 zAg{JdndHotJ_Lt3O9`wmJVI;k00fDpFJmsZo#TCA;AaIU_@cA~)Ti%o%+TOea9SCpn}f*LK~ritHoS<{{j?IdPp3 zYt6^{y0*`}&^VGB1-980?=a`!|K8wkbX%aZ=aqG@g**@yi=9-9}Zw&bzdMPee zA9}RV`>b77&|_?}dSM1yk>6TQ@bX~V=k;&7H_wa_oq6nJE9nAz_GV#~5!;M#Ec`Uf z*D!H^^i+?H&1!9D(ahCp=HY+50C53Iq6gzGlsYwO#%@n$d zI4U~7AefO`MNO7IE$Q^t;h)lXrZalhy3sLMBvv8oo1Iig*n|J$HdFt|51f&HY zqx2Jhlx$WvOhS?819C~O%AtDuok3u}ezqirdIe_~#m^=QAgaM+{(H~&!VnihFOq>% z6I9Dka>hICREn&TNu(YhGN+q*BSWQw`oauEu%Q-Vp;)HZuWx12FZfv*?rbWl!dJo}f$T2UPhsMe;1Z2cLaRey0d9s1ueh4F=8btUiQ? zY;tzs7os2gdlcv)D2b%iadW5irga)IUQvN~-k$p}M9&fX5gZUNI1Gb!Y49=`qgLvH zF^M}NV2Usa=en0m)jQOS{u;?@9W3-<&)tSQscqG4Wu-rik}S)JGqpuG?Rhqb7e8ll zK%(e!N%1@Y)$??@--1FrDg->}9go;!YJUJBq{>srsK6n1Fyb(+Y`AkUweHTuUEz%c zVJ|Bc=m)EnG334&W~iS^!kS-A6;{kc2w$RB#VrM-q^X)9Sx|q_083m29IH-{B8hi( z@TP_?-v-1Z?)`(V+oQ_(NHKf9C-8|t<20@q0UBw(z}R5xU(UDe;ANZw6t1mo7?1EV z+of8i!2lDpPqLC~0Y`C9OWI8+oMGa=(NjlNd7$lAlx$Mc_z-O}`VGOpFvrYuI96D+{|uuIL5nj{ij+Q= zmnEemW7XOIdiX{rO&Z%oAfK%J5!+!^vlM|i4XM8kPm$#p8ZUris)`(aDV@}Dl!22U zcs5&gr}m|EZ4N`CAnW$Yw~MqAXE;%x;cVy@J`m@u3fd?F=gw_DB>P9;M4fuML~Ce7 zuVbZ!6HpYFpEXCP)71$hFiLLANybJkYQe9snH z&bQrTP7ohyv3SAhcStB|gzZILU(82G1;6omIx+9i4d#}OkFas5({z1$L^>Z4QqK{= zKypJ`F)4^&CP)x)^Ud;kd5-z-&G}RDmsp|iWxJ3|9cb0>x7y0`iqWW^VH>0l&_$1i zOvfHMXKCLfkAryU5fhWMwvFc~$5^*L&Ha*h za*Z0Z7$fzo7QJBAzq@hIUT-uuF=lUSrHDNGm>)R@Rbaly%-Bu6#m-f%+(&xx)arHB zDE91E_=k%n?;9XvNADfOz|0?V*>LPH{84h}W4Q`eaj?J$Cs3bM*Y8MKs6X`@&c$*F zlA;lmC}(@ocxxBC>@0=2Z?6C;g+ivEsH-0t&^F$$6c-PPCxgwhI>aK8B`n`!c-)$KAe zKbAwPL+vCo_I0C?-EoR1Jx_|8GWb-(lQ%3?E+cNCmtIe~xt5j@nN!-iu&cnFil2DP zcZE2!Qjx5|3?{B7L>hBs7?RR^bqKwn-;7cp)zwjsUY9jlb)g52)Qo@FO?%Q4$jXi} z6uq?dTjf+?Z%+BddpnpJ1g4Z^Fngn^OPxm#9N-ucJRyxqe;UEIa2)Ni|y_iwP0s+NLf8h)sRgr+4>bzTx zv%zo0J8+ioxg4$NA!!Y`*+Q(atma?^>2ii(#guE;7pSnvF!qZ(;1I2S^l@w}5niMT z*@Q4`CY!=Rtm|BsX-;haPEJdQoGrDPr)A|nY&_8uX!_d51DBBSg?8CjuZL`Ft- zh|EZ`lNJ45Z=cWS`}_T_>w8`2y6TV4={;WKe%<%|d_1)|0;T6n=~A81RoQxR-fVQ% zlD?)#_lcuTE!oc8zTboFCdWnnTu=}H%_F&{+`>6xFQ=luYn3S5LE}MjA%=imf)5gU zbtFgS;D{IzYW60($|cT$-UgDbHb;DIyx~v)+T}bGkJdf=)_N+r2MwJZ3ur?B^{?+s z_Y4GCKOKJXBX#Ja2uUzlTW95*z(K@Pbv9(t`VjD&h2+6r* z1L@a1zXPxZILS!TtXu1DG{a+CPi(jnpPhTDEyaDsw#FY;8Vw zQZc+Iau0FFqfoS8Dw%LKRdX5-TP~p@Blf2W8aFnznq=Z9M$kAD57A!{M_(PlC2RwF+BZhMoCNG+nQC&0 z?BBKQylE8Pk}UOPnZwC$pCwk%zst?{#6zb57U~vqbL1&sUplk<1<&l&9D4mb6=Lu2 zCYSyZp#fWgUDjYC9;-zdmE?l6Yh_Lm<&C34GcrDs<}s9rDO(Q)+280jb?U6H-?|?z zsU+u;*U~9$Qkbn8`=JkureLz|*9@EZ!17uwDP<;pXG?~HzG6T!W!H}Zhpu$1x$rcB znFj43U^Gkc#@p|0GOD(b4)q>ouS9frn`!rzI!9TyH5qFDjs!t6 zYB3l$hD1SgN%z;ui*Ero$HMD0y*6X&!(lSaaUidh1N&&%r|wCY<`K_@XJJ2-RS8JH zI^|@)q%16B9qYwh)n-Dh2Z{``^y_kll~I&jo)@bwTX!W(Q(m&BdEaqpJ~&lcQhMD; z`~5G)(Q+jav@y$F)eXw^X?dPSDLh`u*dY~Xmvfe30$hDmAkigSa%X$@x3Ltjs#odO zt}aU;doHUyQ?7NFKJ+iAVGfKbLtB|^3!br!{4h+K@~SOd%cvzR;q4F#!HuU|i?)ST zyYQvI8*JQC48JhPYZnwdXl1N>{{hH7wqCOrS|Aa>OnoflDHI2n_t=LkkL~A73z-O^ z5MO9=&C%j7#1^Lv#VK3_DOlP?wGt5XA=JoBqePp^d(M>~8m0L~Eb-G~%%P&Mip=!l zEOG|Cl`)$K*2Jpgx{6C>ECy-V8(etPh5ANIp^x@7;{mU}XYyyU)~DW%BVe=6q(=^T z^J=gyX;zP2fN`JL?&CbDP2}ZknntDZeLp;3K6zYAh9qxts5LJWm)^YzGf)XxCf>>J z!xduC;yoYKp7z|30+p`i9V9otczw$acOB`JiIu#Ytnww{g9B=7=l#Y9Y~cY}6wYlp zkrI_~KKm}uhTMh86t5X98ZF4gc=`UUqK=8!%>o;%&*zBIm-z&WaP7RvVXn8vuW-Yd z`S36mZ_^K%CIxgUn+2CrJ}i|oXue#zKJ;z)egxU6m;F9=oI zX>m)jv^0Z{WZ*QtbOA{lXn7yfKkWyY%$!_2*8A_iRqiw8I~OlXnv6b~=DfTAF%MMZ za)o46xO1>C1k68n1dt*+$r;%hPC(qJ%%Wi)_nUe?ae}#8*PsnYO(k+JJ@`fHHD{d> z%i78m+i2CcAIr92LlVHoxCuCAptYb^iv6g&=b5|VO8dbjYu_5c)?H3j=H||gq zO9#WTrk6zBH6s)=;EJ;EC8XC6?(ncUmpqaRp`1kXQuq2 zr6rmmZ?Y~N!;&czb5BZv7u1^%=47mnKg?y>o7Xrb-);YMtveWZrh(ig8AwJ(X-mlwJ6WgEMFH7*%#$vza*ks%MNpS=z5<;ZqQeLJhBUS4^28)(khyCB@~{w z#ua$s^99Q==_I+-^y;<|g(U^`+;ix10s}6BNSr61jZ-w)ForLby^vTb=3|sl{#L}e zvg3Vtr!h;l6i-0h8!j0hG_55?URa1Cf#XH`8_w<`TraXV##5%9I>GkYQ7!weJHL%VCP!BA2ez|@J-C@(u~iY@Lo*TI zpr6)QrD{g80P>iOPRP}G7xRx%p&fV3NM9Ksubba`7#l_!E7T=cLQ;*jMH)w0FW8DN z&Bd=wq6Kk_57Udc{0p>uHprCTQ};{yutXcD$VI>}!Wga32g`J!gQDR4*l_Ypxte%; z339c{SSfT^q+~|&xyXp+WT}27GmRRfeP`rP3m#i8eBovO zMd(KkOm1|gb~T3X8(n08@hw`Kn0|ug?KK?6a}l0UL`f05Ev)+Xu?cHdgnCX zlw$fz4Sa-J(gUh}E96tggrC|p-5F6B6GtY(N=Ji2J05#TRbopOanT7z6#LR>IKCl_ zhj4pP=BY8=6pAIzpNikJUR@=@7tv891`BnBB^Nx_mSz5p(uhVgt4lUB`nsnBG24d-akOnfxA(U9)HTo$Wk z%2;aH!CA7Ap61JuOa6hnnoz@p!`z9T;SMq-Od`6(Z#ybvnRGFe6mGru3e%Q0q&)r6 zdTWbYHMI9_nEa=VuB)I1G5Ja#Of%GI$c+j==lw*=JEm1v6w^dKP$Q*@yakKR$F;L) zz29s!kh9;FePmN!b7(aBcLmX+A37t!ykj3*(Kx57i&~YR;JitG*LsIrAMp4I=>w41P zc6snM>a$!QSp#OfLlD|zpJ7v9zVM)tPQ8GXH2Ib1{O;Q!dlZG&s3g=%7onH}Z}||- zAtNrgso3`tYUlkLhAE<~;$OTKTgC5I!824&VayFfafhVlero&(b(2*`B*$u_v(3xg>&#@stsH~`dTS=k-P6@a%Y;nB@cIxvY9G+`?+8^F8!Bmp&(bC zTdfvT-<#~@Q|i_yK@Bye#zne(aojBa-!AA}P=kEJKJt)V%rasx@FiWuXCYFUU(3i1 zdE@Q1DCLuTTBG~FP5dO!lP5>@#$E@z1pybhZ7Pz&Fxeh&7e8nD&j&6*H2{sH96JQ(YI&2hD0Z%Eqv7=;d??E#$Ue z8b`i`Yu_3xZJ@n&sXo~;@ky5|a@!=uzApzn=SQirt2NxqEB?*72XC6wLyQ2wm^^fka4Lyrn{Zd!) z`BlmuUBXrQKw7m|_FiF$FuKrUN+!uJ;n(AqUz2FXyC1@Jww+O+O)HjBHz3TCD)|bG zQ*X;KsFpCpv3`!WX0|RF8^hba3p&_$TJs_F))|V3KMe*~xF)kd$xJ`EdCxjDfrK=@ zY15ykKNx5fj~YL~uf<}LiNnR_c$o=Zr3)c3^QcPDJNg#%3<)LO?AfD6X;aODS-*&L z-i;>7G~fvwtCCmE=pWJXO@Fu}4Jc@Nx!?-q()~xZ>|E z?|6DtD{Up2C~ExeCk^j)Yw{~{Cdp9>EP1|JZX#8Zl)@rb&RpNxF7UZkRK!o=?%c`=WhV8s00W zMSl#vZgo9Soz12zA7SjVrCjb~$bfU+xJ-BVf!@qLfvj(O1C0bv2GdwHtA1q^x!T!S zLvD+*8(~-d-h0#HtSj@bz~knX$XG|pEiAJqfIh|J@t^v4$L|d~&Lol1ECKLd7X^ud zLYT9jY8;`+mo{ehc}~y|4QoER=9rUrKqMF_JBcpApthn_!W}Hz&xfgd3G0t-9z$R> zGryH*4mXHf=bHdfN32%mJI8bTV`U|Ym?F4@1k(pcw75tyEUfR41feVuYZ>W;qfnHz zp|QEIb9GJ9ZOJz9!(zhKGpXYP52A*i>#(~;NrOIPcQ|E|AuYQG!Eaex*GIH&poLE3 zzLj}Fve)pv7vG)nUCuX~3b59%&9s9h-&%WD81JNv`h9h5uBg2yG_<(D#cur4b?Svh zArwJj&n{iBu?D3=TM;tFa;4rnBU$CVKZ58BWgM%_!39$7pM)Qwk+|PfH{JN`r^HqZ zo?@=!9GEFNvMeQ|@;3cr?rL?L8lixytWPD22(1^H_ zdlLwBi`N=LtHjr+>Zuy!R9_}z>27)t`*PuHe^UsbE27b|v7p>Dy+P;oLK3D(J0Py7 z@I|ZEms!p_=9j$TZTX+^>4z zdv^2r4YTkp>;A8x$L-zUMNs%nNmnM{zO6ywyyQGaSt^%@(LhJgd-Mnjm|96D+oQ?Z zP`gw`!C_(fp_0YH=mpz4^KP?sU`9`l>c}-c4zl)x2o7AAw#*0luQIaxJr4 zGrk0%`s7+sN?X3(JtLoZ^6_0N{gK1IeCgJrfpek>XJimjEY}~ftNz4a&grVLYH@?f zDYw!N0ou?;b(m~Md+VPBYFcUvmN{eW7eRwtmsbi?{+lW*p1sT zMh}{Z{)S|myc5s*>~B2<-O*!N+20kYsc>+6X_92--q-1ux4!fh7fa3w?xY9o59@S9vJ*q_!pjBr*^VV0C zgJ}zDaJJ>X&mn+(59^j{61>G$h+Lu~v#mBTQ)SIdqdppIqu<7)e}0$q^6iNmTB!UT-C8jrf(JScSb7%7Ckh zlw#WI6oad3#<^2@JMNFaN>=&7Vepzk5j}_*x^%~RUJ`HIL8SL=BTx3IvXgCxLMlf> znud<2CK-MiYiDSIS8eNQY2-#hNw)%+4bAV%RxGWw-kKYnzv>==;y~ zkp^SSg$GmYFWu4Dyx!(^14s{7UfkLcq$3}r{Nn{0V&DBxuz!y*I>#YtA1AcOl_j+< zR&!GNERO+)Nr`%vPlwcaTY9Nfsg%ZWlWe2*-irtK{6(wbDYpi4^Yka&u zX^VQ_*_9MjhcQU|NNcY>&{5OP{Xqmn9hsOjDTGef6uYDzxtLp6EvoLoWo~~supb%L zz$nafFaZB@P1$vzJOgeKqn0pj_z0tRQz;^Xd|1{*z2>65z@V9Oh)U&jy=?w%P^a#I ztB>{S;G)T!z;Wc|Ez!VA-FeggL^;|nvHGw)2ln~H52%DJBHI&t{oCcjnI8u}$B`` z&}z(jIh)0>cB3+|K=xLxc&FJ)_+y<(+|o~HG-0tW{e_Cf<4_*F0Rko?LyDBpc%Wzb zJZ?z>G)16JjHX2Gs&5uKhN>>j*)fh9rhkHy(ginbf@WKW`7S1_HeTF!?2eA**0)=I zw2vaH6Do(ia$P)ilUC^?n1;Qc=;-Ocb>_G)Y#!=zk@GI;!FQichv5l<+roDhIE|e1 z2h8(~x(Z%3=@G;<)y5wo49*b0jbBL_Lp1 zgVK;eY3TPs8B-Hc&nyLBTVEJWUPw&|6>zy$T&*!ew4hJo0>?FxtFUE4esT@7JZIPmx%xXK>NNS&4hb%)k4UqoAo=_8O z&B-m_-q9W(bo%-|u+o)3El?i%f%&rJvT_HgsMi ziET0zxCrZf#`s}O6%Ds8D2Xj-jTqYY1PE#`&^;dcEQwFg6bqD$#YByZKHO3&+-OuG zq2xb!{38y^p6Z>J5BSqCm+@%J8Q-oUVZz{#}0*GyQX0l6wO1O>S8o$ z+@i7fUoQavrNEbC)ZP{L7Y5ZLZ5sDkm(DiHbStA|ChfW0JmL>A^Ov>EN&CM$1faz1 zKyqs)x`pwM5Ke?=RE5v5wpBpx0V%F#XJI(}9@iwf;L$Bg|D&&3*6I28Gm|ubT`}0k z#i!jU5RSS0)?IRmXNd;aLH3#GpY4^aH^bVv%c;t}Ev81oz`OMUOOcY3WE9+})T}hG zGB50l3u0+g^CWv${^8i~SJHE+)XyzBr3)oMVhn_` zV}%40GGV3_3z(~TXnis=DvP?02sGZBgc%{bEn}rED%&a$Al)1g!(kwl3^UORQ|gk@ zz_7iQj8l$!Rhb)A!Xz|N_RX_26_ZJGjmHaBh(KXEYcE$=Q6&lc)Tse0hNQ*Go z%b=BWCt$N~o#)`eOO0vQB;&^)BK&9&qW#`1vCwWg3{&8DDh7hw z&6M`rtoj{NRm+-eTS^UK%p=I_LUU)T&>v|g#64TKG4s(%g-^JLJBV3;*oD{?gQmct z^8^zI;R2I3GFVZHw@O`9i+q}>K{JzgPD4|hx)!b0oe4{W?c1D$I)nno`#$`dhicT) zB3K`9-BJ`(PKA;93gulonB*`olvaLu{>DFfuT}e#C#gJ<-*D}Pt>KSm5iqIGp&zIz zpK-H*^(U}B=fV)xR#CIL&iakR=nWoXVxBZ!WPAzTX($jfOM!}NNW#u>gT`2;5bG^I zrg73&t&d|cuSZxyHY?+}1rnRZobHIUi`p5{A<2n;o`~w?)wX3YD)5pNi*{OCe)vhj zUmc?gqiiR0VSlS0X3Y`#OE^=LY?yv<3NEbGy(kw^I)B?#+ z2QkU2WDZL+c}s`wGtP&BCuO5VM8VQjYxLBF|C>qXs){+y9}y?b*IH;~pSIxheT_4P zi9nfHj7H|%(Au;2*(o$`y`Uo^AD}JPSw{d5b7=JA*zExCN;&g}n5DeFF#=Gn0=^Lc zau@#aE2A_U<0#mCzo zg?tWDtxvS+A`I^enow>e{=6jLM@z?HPP#{XsvIvIFL)v9&BXeMP_^!EC>QDf&l?oE;nx~ zU8_gglI@@X!^@ll3=zAVV^vD?W1{OC-TBoMvgWouKQ6z({R^g6;Di+F2LVO(p~(-7 z0pcQzh=0E8edq+eGCw~fZshDg*s#z^`0N}`HfzKjeK+m&_4)}qcBagWlsg(5--mS? z3wU}nUV7C5bjcxb04$^B;80FwseI9>uVX!G_!W`s$Z%Go>#CMF$!Qxu&+n(z|`rC1EFP=pY9jZa|o{>(uQYQ$;=M{scmlm?qt zEc*fN7*(SQoJ3WvMbk|G8CGA2w3z5ab%@7HgBZf;;bYtI#K|xVNhRD3HvyJ zrPG+qddDLH>MbDw_%c4Z@#5vH-ap3;e>NSS-mU!=l9Ar803bgFRK(u^hJ5PRN%0w= z1&6mJgtOomvD_7w&?Qi9mOcvxO`P7@5wGiBbhVGYxP9XoNT)e2!QfAU>iwm%S$WLi zpdL)IhR)2#f<5CJ5ZxtSaVh_lg2OENq4}=>f)?`uz?K(YHu)E^uSgpTWGy`|?{>%J z=c+KUN94qWp9N)Y&%y&rkg9f0R50Sxtl>G*n8q0(@S6f8mz25NR}5e^@+6Sb>5FBY z@DxPt06iz!W9+)DYPtg2)~uWQG^g@=eJ)YIU-ldH3SK`(^cQklA5(`yqV!M4K(RcX zhkuNvDUpS;lAs~mCgSl>s1(r@kBr9sZ=qyt-;1;|h8DBG1NpTT!U)Jiryy*&YvYz0 zBCwi{L9)Kw?7&2-@T6k1+CfBqqW!;V#cTap?5Ds>fb_W|c%8gjP5 zZX~CcNV8|>__Z)}xl7v**TpV;q@YO{ffAVk0xJ~0Ox_qY^Z$!v zkz^(gbKE4m*)(l?kNjyf7s3aqZ>9lpV&U8chS_jONL8CC7wG!wmH-l0pzy*ZW8C8^ z`zQq3@kk`19)zG3kgJ63M#&pq(jU=8zMKHNZ~7VN!#Bp%=a4x4KlcB3D0zd`Y41J7 zrFy`CkZ-GaPz<+sA%)ab6`}Xs-tA67NSZEv4#fXBdH~xa-O7dIy_ttJJX&3wg24UA zggF#a*}ele`_&E}Y+eKP?Vp+(F@+F0v~19fiq*bP*484pm@vWv;el<(d#{{?Wi zTfEfg1QUj1zbi$MQL_o%%QkHE`B4p$@C}OQKvL_OUc(; zcwQ70zZy+ODhuEWsVZLgMaA8}D0L3pOD3+RSK`ypfsgTQ*WP4I4>Uw7Mx$O$dGs_u zz2#3qn>K`G@&ak%JJHz+6}*BF^-d?TnmzcBSjA_R<5MQyA|3G$8<0C8d=-dP1B{Z7 zVJ$$8y7o0-M_UGznE`SCxZkZ19os+luZvXZBUmHQ?z^UFOS^-Y_Ua1+>jw;ik>4ms zsXsZ*3-SvFPp>}AUN=hQJ(P0hIt(5X!^C}({^ER6_v9vulqs?Wz$Ly>UHQ&Y2V4%M zf6xk#x|T@dg}rP>jKN(+DE7k{WL%#>#vs#BgEF15HDV78m%4XB`*YE;f4@}1DvdLWj(C&ST(H<^a%b_E zDe!Qh=?)s&5PTZF@lk-3A?N;k@_rJ%kFntichFToB@`FvNhlS~!SpHzScA2XSI0uu zi@TAWaPI2VF8-NYT*aJviC5XyenO3{Pro4~JXdMXuH`AGSI>HvB|Z&SNv< zTflB5<5Pjd-{-y+546T+!qrW*Eu>7p)M)?B8ISyYPXBEG@AH4_niFD}^b(qOjvwC( zTH(OEuN59#YqsJtcTtx)`#X5Qf5!dqm*wA7^7duEgPnQ>Y7KzdQMBtiPJ4}KhiY(Q z|Ee8+1g-Cjs&08<6{*+&c#A^6cZ0$DXhmiuY+sqSF?^Et<|`19hka(@#*UzN|Ms**R{mbXln(@ zlFozAnRk@;T?;RvgVjjZSd|%?21d4_E410JaPa|Z?PP4g?Jk$G=HS1U6`M>?;r8Mr zKOKRZ=wU{6Rsib*zte%lM9OpnwL)6NkJNkpyvZ_CN%D~48_rqsz2hl?3e2F;7RWXM z(y$K?OaZKX-}kWoiT5zwNv769fRxCp21tp|RzSYyXESmM`b`kdoDDq%X9WJ9XhMGj zLLJlVHxJ9;*aSsDc-4Z49Q~$ayi%E0bpK^nD$>A#7C30GdqJqWcRu_UINWf-0fF)- zOwo(#pWg%wE?f%)L?~Xaw;A^mJd9v2V@F6?;+QB zgD*Oja}QuZbkPRb9_p^p$^+Je%1@#Dtz_(y%~n5@<`7tI)D|xbXhvt252$Cm5Sc^A zlnakh50Nx3JquV59zTg8*S2sB;R7+UWXL>I1FDVvS-tny11ML#?l@OQF1Ts3K!~Fz zxo@CiGB%#_a`!!lxkd+$xf@lYVU5_vsD(0u0wHe)Y%#sjThG`g_0}I1eDo54ClwuK z2lxQzvfnvLtXHL_zxdZmm$Db$m~Um?3wbT=!{@0rWF$}<>J3A-i2af(r+k6rOjn*i zv~Wp2N7S4Do|NUv1AFEo_Z5n`|=PE*Cmxo5i^LV9_WFiK^!fqLo7 zWJ3^O(@BS&GKo@poFfhHz6PZrzvL-j_dnDtqg-M?&|aZlwx=$d^TNG6`q*fm=uWkn zucKG_^IQO%I@}>#la&YT$|F&pS7>)b;l-CoO09r{PbQ?gxF-X6JJ%n6xOjU%RvDCf!k5{jda}k^ zVt!4O+-#g=6=laK-*h4OZ{PP5Kdn4ZRg5*ed1yzPY&DN945UKf+Rl_x4qvW%Z}(gF z7&mM?VONtg5@pdRmFN^cqfC^7rTLsTqn#}`kup*5M8*c!jw${&abB#F@;$WFFPoSu zw1oR+jGSw(_9cG3*4kDs99WQ0-{9&QwlS}H&)EA+)AGf~m(r|!G|pt~jp`l?o+q(q zdu-y!ufqYUm7#s20__7Fai&2ac=wToBMYTk%h=!2XO1_WP|Q<*sT`W#X}wjs^89}c z5W7N%mR2FE)!o3|QCBcdXljRywch6oO18WY=A&-)$fMf$P<>Zr>3R7-upCkh&L;ewnD!&B0?n!v0Hp2(N zL(Gw-lNU*#2pAlxI7orPiugm|GxP>(`OT`Rta54G>S+4K*@OpeF!$&q&L}@^(B~nSDrndVsa{-8$SA3GkoKu8lsI{ z+a0-CnZcDg?DnpVFnDTdedSNVrRkhp~~BRz;3xQ+ykI=t!04bu?`5e4}tMYFwmR^9hCtf zUmQg7n*zMvtOb0DQ&|jfk`pwO+BN>?$pDnpx-}%k8yo{c*q-D9@BT#z879p?94f8s z9^k2aL;Qyo(cuv0IPguYty`=Aj1UgeA7L$kWA_cvf7c-sGaUvMh!Qjng_JzNFw^hX zcd@>Qz}M0X3h=Y8csbrZ%u|a90YveV1`cS8fxu#C;UVag!_Up$po%~9;N3Am&X@us z5bH{C8n6ahX#!}WjA?L6TisCu{cV7_jVq-mII92mTEpQW$iHg(_vCo`v|`!g2E|7! z0q;YYS8qU+Ixth$fOBW+xn149Gz36+6JEKUe_J5%_@6T(bP=r4El}w(3eXWWP_0t# z;s6VExbfC&ReJh!C!2q1(vOY`kFwgaAN7f=TEd|%00Q-0Es;f5dwo!nRYw~o+nUU& zG6lc_=|y*0x&FN|Mc4>=Xe6CU7w?5&a4ey@6M=yUeN8NuPkI5U2=Ir}Ji%9d?)s^^ zwgTayP3G$>UOyH;HA5640AFr(?^o*qV7%GWa|hs7-dGl#{OnivNVWuux?bkvl{?n}$xMKI6RPXo7(B-M8Ke*Q^29tLgP` zpv78T0s}6yG7KXR_|Q!w`Q4xI1+U>m4uncJv}-OOI~Gc&V3f@u8eHr*k`j?$fGVRy zuQ!9$s(MY?**4$nPp6>`XjC9d`k#S)$Z;R)P|0QJ8Ug^N$K!kl9G$>*ZAZ0(ya9b1 z(AIL|S=f6_<AkKR^S4-{|ZbVVjbnn9)XB>x5x`wzHkSe;wlc2ct~r_+mhTuEx+GV1_)Kq zI_tvY-tRS}!RvcZX-Hr$E>@a8K~$L|h1}NP!wYh0lh@4ty&`jr&gFOPkFrkLNbyKD zy`(Q{v8D>1weZ7ni|B*KY$(|6jGj^V3?B<1UL63lk5$p&G($lQ)+KPhfRKBA6MBE! zHUsVj?xymZ`~`%?#u+Pud3i*aMOb-lm^L?3*88WCPO<1hIUovV3myNs-RuD#LwUuE zGfLrnO0Pus#MQ9$*3=&AvgVJ}+AomulnmhO1y_phQWq`jLh_KK|l- zr_ZIvO=TTMpkxUd$R;mv=VtR5o3t!oT0n6#lDFPA%g?}sFNf1BI zuRrmgi_PV0oyKsBsU_f57qS)X+XE9~V<~1`CBr%b$#caJA2`&sA7St@n(^m5Koc$} zdj8xz@^K7P!qu3!x!c#=0%c{ihp*lA+z`4p-Mj-J?(Zb7joxzG)B1ZjBKuq}4zf9< zPg$07^aGQ6$ZLIS;_(B^1I@-xAVjq)yHRaeD~Om7a6U|i#e_hgkt8Cvj>1x>)zC7d za61<;3U912%$J!AzvMvyT;pIG@C;O#;awL^eFp^VN3kO9n0W`4ea;KFO&p%lB{7@T zL$}NNU_iY|vY)DsYf*L@2-q!L_pI__^A@+ZXfe#Gl4U=&HAPi`tH zG!i#1syNTyeHqPdV^@6-V+D9Yjr49{DcruxNtMF?kRX#E)#(Z_s9S8x5u*8sBVe93oITZ97?L6r#VzitZvl-eJP#@$T3Dn>yE|wnRBw$j_K-K@mh!xJ|5F9GwuV z;jKjwTdEKZF#>-2>7pW*3-DQiJM6wVgNw0_WQj;+yxHtSm0>8O!?FQRdA45#yJlh_r$vVt0T)886(54hzj*tWKAZp3socrN>0Vjb?JdyKu)uDd89&c>0|@|!06i|HhY12Fjv(KU`waP7 z>8{Nn!*neg%&4Qa3=_K-%_e4x`xz7uCE1RO+rw0?ot$8|h8SId3kApNM^~2EFn?vN zEbA?Jp#i1l*M#_aJo=x=n)M<(FM};L%{BSYdxJyp=4*{U!!@+NZO7Zofenie;SIZj zL4OP1#31PzcQL3gxbY}0-a54n&u?cbyATzEK6;~%z$sc^h?l^;n%lB|!NyZ+XzSkdPCe$UmEV&UzYAMx8Ts~F=x#o1v)eZ@gp1l*=$C&)%bYvp zzv}=#m5C*)0vKhc^*R>40ofjh=nDrB!2!c6VJRs_=cOdMxAx^B;zrDUOI2KRY2>IW z#zdI!22;krvoJ={8zu*u;pC%|P&0aiH+$HMaM+>%M2*%ocwECecHv#nO= znYZ5m5*waIznh)r%F5WsTAoATVb6`LZ4a9HJHyqfHn=86w4QRA7?(WHL?K;$j$^c~ zW3!v`!r}ht4@N}+(NwIBvsQQH(jKkw^P+^yk#6V<&$Y9bXdHZ=?(4RrvQ6KUZS{LN z<5JLwm}L`&#+8QveJJQCKTcz;_j1zcbV@<9%9Rv*F3%R_9t2DFGb%wUv~MG_x*wHk zf6?bf5^LPUNuYa}^y)!Wc(jh9pXt0^@Xu`IBO)eV3i6uH2 zu#xZ(jP*4>C-(nFxe5t5HO3{$ptpcSV`bD^gJD@NMIpNqug@t_%tEN{TuX$<(2mW& z|D1zlf>V)BOoI(=_ll}oi&TJ9QA?O{-n#R)XnPGhj6ihlLI z)z~)3L(WdtxovbLvfgRCRsv{u?4jleS*wl~qF_%zYIGfPN!VHb z1o_f`()~1&YRjRRw*@7=fU~{f$h0}aVID7e|Nog)9%Lj}{_6#RT>x#nfgpZe2Z3Tq zz1DSawY+S}SfWW#t$6JT@_{8?#(ap0Vy>d&*wei+Mllt}0$f~OaolP5FTMLkfR?cr zBQG-f&lA(&b>y}pR>4(nz6w`GUp2o1oj9mmO_~4wF4$VLPZ8~q(eGXtR}zG^_#6~H zsZtKh-GJRGm9!Q!!Ysw6o#XmS7Re2j zx$4YYNkI4I)#kACNrlY|6%eq>HOu9-!^G zuk)JV!A}qwtf!ecmJp7rf(qA~r%oofeIx8T6IrJLWcYRZfE1oJFfn#G`EyEyU*oig zOO;7CAfrv84i_x16tX)UVVz!@=Hwqex#IQW-e+Hcsr=QMxx8P%RIzi*yxEpz@B0im zJ3dubO=m|GHF6RNpN=m^n$5|MEd@g;B}A;>!$=R?0~dMGsmDmmVYU%uJ>B=bFFp zVefA}G0S+hwUk{Xb$k|!ybJ{9aJ)&d1Gh~$VRYuxfMC0#s7v|t& zuvL1meW`P^U=3_09Ditd&Kk}4`SK-yHvsPS0Bc01Ro^zK1t{#y^q6?*qN)t7N6Vp^ zO`A+a?~h^0&KJ4+rXDbGCjFC!vVAX|h$f}@KF&8Qk_3MiZK6N?m9C(x;Pw6cQQL}( zrPtFoSUpF!_jmL0(_btC>xA|jF?`p*@CXnsSW1ZyK0dAD$=AHbE2in+H?Dq=c0L?? zHAtg#Jn`X>=P#+N_dc@beAlMHX#p967nJoYXw=u!MpYH7n=Q~mV~h!24`?^jz0zpiAn_TnmaAFi9p;yt@Xt!@p)v~` zq`e@l{uf{mG&NpnwCGjZXCmY5G*qJX!sasT`9^CSozA4{glB|;hs zGB52Fv(d>vM_=9+>4@)dtB!pvH4>(ZKFgQUUv4e?WZ;JV)qgH00B-&*jw?xSsPe*$ zD*fF@NlFg1C^(lQzaWcKgqt%cVK>aGjH6!CRK3zFJ{#9HaIW_0=@PE!POgAaJG00 z%%q1QT6P0V!8vXcbTSkppOTut0N&(z3Jj|1RkYa|dg#Ufpz#3(^eJG!up&}FOR~4X z{sHs6FhP$1-}Xbvc&<#*~_CFeIh0|CTtn!{>?PK2?&2`W{tm4=7G`M$6bw@e=8K`08;8~EBUw{{|H&BN4sr;4Edj?poAf_D=*_Jm>qZ7Cyr;wCtN|@SHv`SgKpvs;(x8FdkQ_2$c~GRf{`SJV6BQ zL=NW+7#cDAr-h~gm_(2#gD2erSxsF3696idPztN(8-vO@ZUm#U#+MkyD42l&3Nnm4 zk}_il<~8a=Dqv#?B#$mgl7C}k06f(Tj=o(AUg4vCH>4@p&=h#|CQjr{@wd(`r+Y`4 z%vT;1XGuB`-hxWnG|<#6)TQ7QGh-G_E#BzxkoclE0Rel0Hy3`U5g5QMyT>S5ou|XM zMNxV}?hw`vJ>W?*spsk=8bCn0&wk}cBl2zAa`1LaPCZ1G(&>D4?k9-QmTxE=KR7M; zf;^6I=t1z`y5uYfNPcT|GSq*MY8an|u`?lySEe zs5SRtf=9>^#nPb=E*#p46B%Y3dq3)iJ_q?~sG{0hABI_kGFl+*dR0C0w4bTbPhQ0lzyGqRWai}8&xHT=%c=f`QAX0lho1BR0YD{0bDtWK? zEUt@D!nU66njaPur9bM8(p4czjm4&AFOVg9#g}~93uph+5~ubPB(5KT-RL2-`vQ`! z)hHr@%S`jU+Rh%7;04Vhu}q0t+I3NrS7HTVL`oMnsofs8hweF;=e;y+nqsMg|me`F*;WRai7F8s*>uPM0TCx7~GH zoon-8BN0RrBqK9iSCbjT>JiU(Kx*v`U=KB_@KNqc|PXDYrEJ-{Cc>qr7I4A?@qY~==VKh!n+`_*$?ZQ5>3|7^tecm1DpPg z3z%6_{IJ9rw4Cz9#IAx{@x3m}`BLNRsYc(O#^_9D9b+$YxK;lKpUf9kXLa~~Vjq(bCq znbpy=E8Ov*X3w^jO1^K_nv_)v3X3iHMzsKzZo33YSC;zL#iKZ=T_q4u>AjQW5AC_$ zruGCb3@U(>>=bBSA@poTQfZ>ZA3b_a6M6xm$RO_W4y3;K9c+s@;O7d|61MY`DcFXG zeV)QkvE+Nw;$D4{GVTQD9tq;_uD9swa5{IX(*dXEL^UDNVb?JKuLBQLstHo^RAkvKU_;b1Z4&TG!CsH>}Bh~}6{5(3(&(PkI4 zvb+9d2LmUBs-r%)poN&N9~0Hjt!f$Xyn!oqTczGIEP)ZB26qCGz! z&5S@>-ig|~E*^yOVnIb^9Ef^bg2_3q#KZ*xpm9JkX&7N#Q~a0Agf&f$dE|3HP|OwT zxiGj3Lgsywfb z`ZL(LbAI1^18SOCmo6uzFAf4fk#@uaxz&eE+fu>a$VaOzR?oZSKQ||%)(tS`hv_7% zu#fxW4m6***-jwJP6aCRGSo5^c+If!*tVB#mX)XNspuI?mXbY9PJ6oJ7D1+6aW>Fq zvJP1Hf%BCdgX<;FvmJetw(t6ALXHeM0jl z#XSGXToFFDDG<+~f1hpjg3@8S=ll7MB%G@HudMFZ>)WdDzh(Rh!mnK!iuSIh50_6E zI(bLJFom%R(eoqTP;|!8LWuLJidnVx8_jN*Eo*ld{?L z%q2-Qw&`dExi&|4>=my^j5q~?+4G=95W2G02(QgKa9#+rY7tPiKK9(=-FY0x zJMlFpy58&iKx!>vfm9ki;{GY9G?`=r#<`Un`FJGg=Y! zEs~*=uHXuZvLMrA9G06jav@ACGJ)e6>qoh*z)Ix}7KtzP-8ZI4$7zKu@xL9u{9ql@ zc^wxms@olUr835h>V=N}0^y0F( zTCcQ|zKn`8U7Q$4yUM)HOZStJf`m+Z=A3K(ujTN&mkA(8Li>b>grNLAhC6%BEhv1G ziW^t7@8lCz51(AMo|qq0iWw3K-g&h*5uMsPhwAk=HCmuvO~T!wssH0fEmAnxtbJcC zl6MVdj-dGcYV^{6PV*YV#)95o`M|w3uE81R3zCMjAcgImk3D| zvX(5x*cDR9_L4RG$XV4nd>-+1wuFo}p_~Tj5^Zd>^&pG#f|9*EMG*17D#8{z) zrrfif1SGZ+mKYmU{pQH?yTQHnpeZ76D<#9(mJYKS0K=Kcg1;a-SC;#)q1G4w{P16y8|O=UJ&_YqGMRKq8I0) z&s?diEkAntec$fZXgm8iWc5Njs`rh`DZ7Az@sV&<+#J`yA?Rr^v(pp-&o^%HKZF>~ zd&b8r8=^7I{ZUNbHXoQfrfly+^lf{u0*M$~m}4%A+052VKU;LJ67;^tZYkHwY<32jlXrb(VHTO4B(U>|d`C(SCZ71RS8K%S zo3D6lC8BvrDq|GA@wR>PF;5$dCk(cvgoS+5C)BcNA(Iudpr)9|4A7YLvQ!z?gvIGb z{s^x1>*JuHk`2SGFvd^V?NkVYt;?(|C@XENS!cQ+CFURADxR7(74UKI0Vv6n&?6Y!H>hrH(a^%06-E zB8WT&hYXfq8@ukPFyU-8w3qW}Sg>T1w9HrObLecwhX_C0{GjWsAxTRzs;A9;I;Rq{ z?|G%_VA9)&oyT}gS+59FiSa5IA3&w=KY*QKFpS3`Ma@%~@`sF~>oU11u&y4(FP=II zgTg|w5k{9kWvfHPAqhC_4!NoDT+mszaeCcyTluYemgeN9cMNaO+i>jxvJ>%0kUEObYPA@B9;pn;>y#0A zmh3tQuN>oo#)@nKADxY65e%QItE-UPAOhYc4KEksq~jftm$&)6Nq;kP4y-|sx-~F* zbeCi6hUsB=8whPLd$0n3Y^T#f)cLD^hN1CPq}ADe_GCEd^-7EFa7pPJop=1GX? zKD`mnNRJC&z}2g`Y0t=12h_Pe)I#_Yb?C3W;LJs-;>$)NL=9d5n?VBIdWk@<^$&<4 z5h2TCT%w7G_86Xe;&?R39;w!RJk=$9!4dtq`NYN(pmZ zQ7ou?T;vE(W5R(Qae-8Sf(#pi!*hTU8=xP*=|K(cnqjzmd!vbMG#mlHtyg&T$?sfw z=W$&JDPHnMO53}8xkaolPUq;QV!ylK)C|~o<}`cLDP~{}w>tv3AbIF+-%q9kF2z0i zTrKsBI9Ed^s?{5tB2QrIIek%4z+MMlPbS^2FU+S=$T0(O>v!9*v|!)OM^3zlrB=7x zH~Zt36Vn~~+A|8Ny)I!q3$yzG3ScwA^Id6)#{1%Bwag3a)|wI9`~52G+m%5@_UtK{ zad9OdF{rGq`B!}&WHo1JKaMSV^gJt8yQhT7!*=LK8#&kMA$)bNJNy+L#Z|aDmer@2 zV>}4?djF!_zWDTZ*^+QTT%e_z%IA->)h{n7@I-O3hfy#+ym6WW+d`C|jSmJzwfAKu zFkQYd{1XZL(N6hxVw)Wim~}4oxbxG3?Wco=UG!th=X5@4wr!A1b7<@*%A{ij5l>8H zZ$XQX7H5?O6tNb30i5YS1QX+aEn2UNw^bR_1z5|;pd(M(<03ixr3}iGHO;$9SspM% z`h~C98CI2S6BEXBna;5#bp#p{{7Y(d5nFaMDzQGqn_yWZvc^^nudrN>m1mTgM0ts) zU>$i^i>ot1kxJ2qC)bLjti6lFW(nT-;aU%BQ@BHZu8`8HK$&MUAIQoPUylXCE)U(f z^3d%Ri4m~n*z;+pOLqzo?&PT9+Xc@_cWfwjTr6t=x1_X|dm;d7ji2Z`82OOraA!zT z9M+I7a4!8o{x7Y0;f#iWGuCR9Qk0un1Fw7|;jOzyLp{r;p$HoLcMy@0mN3fTeby}X zGRGtcZk)w@ja zqvtuFj42dmZLN4ve^y83;VRg_XE%?)dh0g|Ip_2kG>&ep&j~ISXJft`-v>gq-HckJ zzKlvNkG`srcP0kgaY;`XPQkL-C6D|7$%C7ig>r<&qgrQMB49(VLPq|L?#R%yufa01 z_I|NIZ4x(CWABI5vNQo$?4f(@ipT8RWvKv<&CU(GmZz88P9U53uxVJYH_i2d1!&`K z>h9vwA$yn&Pp7txOZ@5#VK>jc@|#4{mn)ZI`3^c{1Xdz#7`EP~Cx8A{ut?g~OdI}bSdigDsg!}xBHV-1{Lu3y; zb#Zs_Iu&N_RacwueH-_@up5PpuE{pG{A>7er=m>TI6u_E2z7jh(VHb#1qg62dJ=1z9 zdO3HLhBn`!*AjxaI0^0YPE*b=ScSQjZ&58seCOxR89mA2G+Zy^Y!yxaqgtWo#n`Uf zt|6>y3^ANbQym^E^b!7`y<)!p{6aXP8WNq1rWMV!ew!o1&c@`vq3v6#zvYEL6(J&n zK+NcBvTV)rDIK&_U;3~YrfY^z(9Z)@^hYbm08;zJw9K27UKV}#Se(9zi7GP)ugl|#zbj$`74-t-=;tJ$pbAQqi99=Hju4s@p!Gk`g>iN>&b&64 zE=UWlEkeL;MrriDeryy#U-im4==4^46S~Ef;VeEws7CoWzN8J$O^2>&?*tKimcxM& zik{$2tyG1L7rWEX-1vMvVCEPh-BYX3vC``FcVUz4smu7tIFJ^qtA4;0 z=VFiFU_Y(J7x~CwRBn*95v?45p1ToPXM$ z`I{ba9wweblqFh+Kw*`<*el{_egtArqiNP?p+8fhCkDq~zsEbvTH{6o zH%I{Ln4r}?FF{yCzC@kV z!C7zQh*Qp#lL4DGlfp2MkN_p1@1)mrr!yW|xS1M6IIbh5L z@-;ggUq1!QXiK9|BVX0zNRFa%NlTwcoO_|C138|buq}1hg2_@koM-4gSd?M^e_d%dV+z=R6~6D%)@ zRdJCfr`12t8p`zuV0PT(Y(CeDc*N~CME?ojuPqQI#ek!n`}@XBmau51vw)iAiB~qW zDqm!!fy21(h`TM2j!M>`DEsn8p6|jjH0d?Mm8)JdCHS&9d%v0px>0i$*gG?R0$78ZuUunhEQ-s?APA7m4PixL ze=F3Yf!xBgzI50FG7`KyF##ajzd8peK`La`z!ULr6tCHrqtIzuxt-$QjQf6{!V(Hj zA!qOni>U_ydOazfMQXL7=H{p$85w<{K0?b9kVEY0kqC4?V-vL$i8QL=*97XG zj@i|Wx=?)fc#)7L=bXq55*|p#qFfU>(Q8+8JELbl^^-!&A3}BCI;Gj66#6|$^Ifjm z1ORwf2uXZb_evF*a0gDm8)Er@texj2z> z&Nn>yH3ETt``*3dR}@VtB!f`p%H=sZ?`AJ=o8Md=8-5Kq^)^WB(kZ8D#@Fu!a&aE%n%hr(1Kdv%3Q=7nlDsmomh*v@T|)AAt@GZPi%N!<8t z0FqK)oISyWD`n1jMMV4xYFH-J8o0p+3(U*)pMB(XX!aKNUX&tx%J6i}{de#CvjkvI zLO7S@0eVc*TXM@e8BGSbs*>8vPjNxG;tj3D9vyTNC<(qKw2+Yhk5_^`cLB~g@9EN{ z2d9v&wn8UkdU=FSqJAs#oT$JOTUm)T@MdB~K6>!ESyORog^GC~zL4xji%s(;F=x`$YCYN$ZMhm7hk0m%fp-dlMjUNIlNoHY3glNROyp?-s;O#PX4oZbINowHu+l+P@Yx)e*>x+JkA@>6X)cbo0$?~a-&ZBjn4k041o${`$8cMyc z{%N!gu!6fqQqnC2?}`Z6l1qTLzkIgc=CkwaO?RcGdc>~I;0YzD0GlH#ANN8hAh^^V zRIZ*4S+T8hR%xDYi}<D5x#ST^C(kY0 zX6r2o&G`EEY3r{s=m)8w(|D)4K_%b|2CdvK04ooigZM31Tit!$4T51fUow{lKMUb4 z;uZGr%&MPG_+c8$E_>7Xs4dFpuEu6<&$sqTB;+kj--yW72vPSLNZSsv6ot`_BJaMc zzmXWHr;@c&Q}|N@IL1mH&4g<_$tl@Ld{OKTe-3eQR}#E+FCB&DJrqi_9So}et6gyI zSke#g$<2CX_Rm?y$Xd0%?3ECpCc3HkdjydJuSQPgxa|~?l~i~4k4C5igr9XXUxob9 zT!A6Cg`5VymOJOafv#a820-nB>4FM zc$jDy$X}S+q$#K4g~MLmT3rUp{UzYy;XUx@TIA490djv{7+%*&TM~sRH9^xDc>W_X z0;9Fhu*ItMNhzlA%6lNWSf(@U{`->vrVrBNgua~q5Jzv9FWt$Up<%>@`$vLBn!hj8 zpb)iDx$6H4Jozb(2?24~d&=k6NjUuP-~atEs@P7FcBJ zJsJNLRp}X6t78;FAtz@&1^Kt64}8W%&yc687LEh}bz=no{ci~Bnu7nFr%6St3j$>p zbNLs-|96L22JtLoK-R!W6W{M&6b!t9lDFlpe>#-rP4J?uVjf+B{t0ohh^DWx3+$%N zFNxbHQWkU2jz`_v%dd)Rr%wKQ`F{uEnh%8)x2h%a0V_^i@!8OSdi0j*LyNwPR*0Ec zQlj6Zzsz=>e#p2-{@WB-vJ}M!41#E!E-io}oxlI)(ZIjs2>fG7k}fKUmY)36M@2b+ zd@P*j#>tC+-f5{8cycb5;pl%t3bZ;{aAqq*ee{1~Kg@4tg}^`Y10Zk%*ce+ngt+Pa zxd?*)5fv#7_oZll3rX#3N z8mwNmfp&4lkwlW(Ob(a0*U{rIZ?CU8^=B_#HQBmkQSS>}Q-1`roN1SwC8&#fnOyc@ zR+`K@>r)V-+&A2<2((Uqq^vS;k**PH!=UChHXxJnkpW z_#k#knhowO>wap8GWb$_$;Ql`tZLuf6VE}0m4pv1+p3mVjNNX^cFYN>G1MR*+Zd7? za95XSZt^kmM&EvyePKY5cbL!B^P$Le*bnJG7SD)Vt}(kq)hyqYVr=p1`D$5qCPV)D z&TbVLde4f1&*W27{K>OU>%?;+7K0~TkB9E!5yIMOpIqY?3M1OS3OA;h2w%}DOJ#bo zou@)B+4YJWhUuBWrAs@Px!zXTIp)Z1a#RlhLIu_Or~2o__GP70jJ2|N z+NV1RYcB`a+>9WPCpbshS>jv^GHW+`w`Se1wuyc#De>~`L@2YX9ZHCl>O=-Ao7O~m z-8dS&cem#R5#p_+5oe1XY*Wi_NWRasi)AzYX(!JptyQ-+^vfyT)6X|kbbo7Ik27|QSU>gsVV?dZC$q#hWu-;;5JIDu zj`{n^(zc=dJ1T5j+?HpyCE8lAH9vOceV#mpKD0xI3h|^Z)`Ss7y2RcFD4$`|NP}bg zV)65vGeqIZsz4#D=LXPZ%!mB}d8+PMH)?zKm}(U*B7%3jjIUDWkhKcA%aH5+ zNwrZSa66X$>os&CnbLKNgKsnn*qO!*n3x&~x2kbpWRRAXCk0@((~|a;7}*0QUp=b!?5fms`R;-=mp@D!coenGcw+ zY%@3Md#2NvFmqwsy|k~Vz{!-I7a2W;`c^iSd5anm!oGuViX^kUz0fI5bppAFb&xo@rkT{~y_52Z8_q literal 0 HcmV?d00001 diff --git a/docs/guides/guide-vmsingle-values.yaml b/docs/guides/guide-vmsingle-values.yaml new file mode 100644 index 000000000..8ec2365da --- /dev/null +++ b/docs/guides/guide-vmsingle-values.yaml @@ -0,0 +1,81 @@ +server: + scrape: + enabled: true + configMap: "" + config: + global: + scrape_interval: 15s + scrape_configs: + - job_name: victoriametrics + static_configs: + - targets: [ "localhost:8428" ] + - job_name: "kubernetes-apiservers" + kubernetes_sd_configs: + - role: endpoints + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: + [ + __meta_kubernetes_namespace, + __meta_kubernetes_service_name, + __meta_kubernetes_endpoint_port_name, + ] + action: keep + regex: default;kubernetes;https + - job_name: "kubernetes-nodes" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [ __meta_kubernetes_node_name ] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics + - job_name: "kubernetes-nodes-cadvisor" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [ __meta_kubernetes_node_name ] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + metric_relabel_configs: + - action: replace + source_labels: [pod] + regex: '(.+)' + target_label: pod_name + replacement: '${1}' + - action: replace + source_labels: [container] + regex: '(.+)' + target_label: container_name + replacement: '${1}' + - action: replace + target_label: name + replacement: k8s_stub + - action: replace + source_labels: [id] + regex: '^/system\.slice/(.+)\.service$' + target_label: systemd_service_name + replacement: '${1}' \ No newline at end of file diff --git a/docs/guides/k8s-monitoring-via-vm-cluster.md b/docs/guides/k8s-monitoring-via-vm-cluster.md new file mode 100644 index 000000000..a05a50801 --- /dev/null +++ b/docs/guides/k8s-monitoring-via-vm-cluster.md @@ -0,0 +1,551 @@ +# Kubernetes monitoring with VictoriaMetrics Cluster + + +**This guide covers:** + +* The setup of a [VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html) in [Kubernetes](https://kubernetes.io/) via Helm charts +* How to scrape metrics from k8s components using service discovery +* How to visualize stored data +* How to store metrics in [VictoriaMetrics](https://victoriametrics.com) tsdb + +**Precondition** + +We will use: +* [Kubernetes cluster 1.19.9-gke.1900](https://cloud.google.com/kubernetes-engine) +> We use GKE cluster from [GCP](https://cloud.google.com/) but this guide also applies on any Kubernetes cluster. For example [Amazon EKS](https://aws.amazon.com/ru/eks/). +* [Helm 3 ](https://helm.sh/docs/intro/install) +* [kubectl 1.21](https://kubernetes.io/docs/tasks/tools/install-kubectl) + +

+ VictoriaMetrics Cluster on Kubernetes cluster +

+ +### 1. VictoriaMetrics Helm repository + +> For this guide we will use Helm 3 but if you already use Helm 2 please see this [https://github.com/VictoriaMetrics/helm-charts#for-helm-v2](https://github.com/VictoriaMetrics/helm-charts#for-helm-v2) + +You need to add the VictoriaMetrics Helm repository to install VictoriaMetrics components. We’re going to use [VictoriaMetrics Cluster](https://monitoring.monster/Cluster-VictoriaMetrics.html). You can do this by running the following command: + +
+ +```bash +helm repo add vm https://victoriametrics.github.io/helm-charts/ +``` + +
+ +Update Helm repositories: + +
+ +```bash +helm repo update +``` + +
+ +To verify that everything is set up correctly you may run this command: + +
+ +```bash +helm search repo vm/ +``` + +
+ +The expected output is: + +```bash +NAME CHART VERSION APP VERSION DESCRIPTION +vm/victoria-metrics-agent 0.7.20 v1.62.0 Victoria Metrics Agent - collects metrics from ... +vm/victoria-metrics-alert 0.3.34 v1.62.0 Victoria Metrics Alert - executes a list of giv... +vm/victoria-metrics-auth 0.2.23 1.62.0 Victoria Metrics Auth - is a simple auth proxy ... +vm/victoria-metrics-cluster 0.8.32 1.62.0 Victoria Metrics Cluster version - high-perform... +vm/victoria-metrics-k8s-stack 0.2.9 1.16.0 Kubernetes monitoring on VictoriaMetrics stack.... +vm/victoria-metrics-operator 0.1.17 0.16.0 Victoria Metrics Operator +vm/victoria-metrics-single 0.7.5 1.62.0 Victoria Metrics Single version - high-performa... +``` + +### 2. Install VictoriaMetrics Cluster from the Helm chart + +Run this command in your terminal: + +
+ +```yaml +cat < + +* By running `Helm install vmcluster vm/victoria-metrics-cluster` we install [VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html) to default [namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) inside your cluster. +* By adding `podAnnotations: prometheus.io/scrape: "true"` we enable the scraping of metrics from the vmselect, vminsert and vmstorage pods. +* By adding `podAnnotations:prometheus.io/port: "some_port" ` we enable the scraping of metrics from the vmselect, vminsert and vmstorage pods from their ports as well. + + +As a result of this command you will see the following output: + +```bash +NAME: vmcluster +LAST DEPLOYED: Thu Jul 1 09:41:57 2021 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +Write API: + +The Victoria Metrics write api can be accessed via port 8480 with the following DNS name from within your cluster: +vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local + +Get the Victoria Metrics insert service URL by running these commands in the same shell: + export POD_NAME=$(kubectl get pods --namespace default -l "app=vminsert" -o jsonpath="{.items[0].metadata.name}") + kubectl --namespace default port-forward $POD_NAME 8480 + +You need to update your Prometheus configuration file and add the following lines to it: + +prometheus.yml + + remote_write: + - url: "http:///insert/0/prometheus/" + + + +for example - inside the Kubernetes cluster: + + remote_write: + - url: "http://vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local:8480/insert/0/prometheus/" +Read API: + +The VictoriaMetrics read api can be accessed via port 8481 with the following DNS name from within your cluster: +vmcluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local + +Get the VictoriaMetrics select service URL by running these commands in the same shell: + export POD_NAME=$(kubectl get pods --namespace default -l "app=vmselect" -o jsonpath="{.items[0].metadata.name}") + kubectl --namespace default port-forward $POD_NAME 8481 + +You will need to specify select service URL in your Grafana: + NOTE: you need to use Prometheus Data Source + +Input this URL field in Grafana + + http:///select/0/prometheus/ + + +for example - inside the Kubernetes cluster: + + http://vmcluster-victoria-metrics-cluster-vmselect.default.svc.cluster.local:8481/select/0/prometheus/" + +``` + +For us it’s important to remember the url for the datasource (copy lines from the output). + +Verify that [VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html) pods are up and running by executing the following command: + +
+ +```bash +kubectl get pods +``` +
+ +The expected output is: + +```bash +NAME READY STATUS RESTARTS AGE +vmcluster-victoria-metrics-cluster-vminsert-689cbc8f55-95szg 1/1 Running 0 16m +vmcluster-victoria-metrics-cluster-vminsert-689cbc8f55-f852l 1/1 Running 0 16m +vmcluster-victoria-metrics-cluster-vmselect-977d74cdf-bbgp5 1/1 Running 0 16m +vmcluster-victoria-metrics-cluster-vmselect-977d74cdf-vzp6z 1/1 Running 0 16m +vmcluster-victoria-metrics-cluster-vmstorage-0 1/1 Running 0 16m +vmcluster-victoria-metrics-cluster-vmstorage-1 1/1 Running 0 16m +``` + +### 3. Install vmagent from the Helm chart + +To scrape metrics from Kubernetes with a [VictoriaMetrics cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html) we need to install [vmagent](https://docs.victoriametrics.com/vmagent.html) with additional configuration. To do so, please run these commands in your terminal: + +
+ +```yaml +helm install vmagent vm/victoria-metrics-agent -f https://docs.victoriametrics.com/guides/guide-vmcluster-vmagent-values.yaml +``` +
+ +Here is full file content `guide-vmcluster-vmagent-values.yaml` + +```yaml +remoteWriteUrls: + - http://vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local:8480/insert/0/prometheus/ + +config: + global: + scrape_interval: 10s + + scrape_configs: + - job_name: vmagent + static_configs: + - targets: ["localhost:8429"] + - job_name: "kubernetes-apiservers" + kubernetes_sd_configs: + - role: endpoints + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: + [ + __meta_kubernetes_namespace, + __meta_kubernetes_service_name, + __meta_kubernetes_endpoint_port_name, + ] + action: keep + regex: default;kubernetes;https + - job_name: "kubernetes-nodes" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics + - job_name: "kubernetes-nodes-cadvisor" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [__meta_kubernetes_node_name] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + metric_relabel_configs: + - action: replace + source_labels: [pod] + regex: '(.+)' + target_label: pod_name + replacement: '${1}' + - action: replace + source_labels: [container] + regex: '(.+)' + target_label: container_name + replacement: '${1}' + - action: replace + target_label: name + replacement: k8s_stub + - action: replace + source_labels: [id] + regex: '^/system\.slice/(.+)\.service$' + target_label: systemd_service_name + replacement: '${1}' + - job_name: "kubernetes-service-endpoints" + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [ + __address__, + __meta_kubernetes_service_annotation_prometheus_io_port, + ] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name + - source_labels: [__meta_kubernetes_pod_node_name] + action: replace + target_label: kubernetes_node + - job_name: "kubernetes-service-endpoints-slow" + scrape_interval: 5m + scrape_timeout: 30s + kubernetes_sd_configs: + - role: endpoints + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scrape_slow] + action: keep + regex: true + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_scheme] + action: replace + target_label: __scheme__ + regex: (https?) + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [ + __address__, + __meta_kubernetes_service_annotation_prometheus_io_port, + ] + action: replace + target_label: __address__ + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + action: replace + target_label: kubernetes_name + - source_labels: [__meta_kubernetes_pod_node_name] + action: replace + target_label: kubernetes_node + - job_name: "kubernetes-services" + metrics_path: /probe + params: + module: [http_2xx] + kubernetes_sd_configs: + - role: service + relabel_configs: + - source_labels: + [__meta_kubernetes_service_annotation_prometheus_io_probe] + action: keep + regex: true + - source_labels: [__address__] + target_label: __param_target + - target_label: __address__ + replacement: blackbox + - source_labels: [__param_target] + target_label: instance + - action: labelmap + regex: __meta_kubernetes_service_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_service_name] + target_label: kubernetes_name + - job_name: "kubernetes-pods" + kubernetes_sd_configs: + - role: pod + relabel_configs: + - action: drop + source_labels: [__meta_kubernetes_pod_container_init] + regex: true + - action: keep_if_equal + source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_container_port_number] + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] + action: keep + regex: true + - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path] + action: replace + target_label: __metrics_path__ + regex: (.+) + - source_labels: + [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] + action: replace + regex: ([^:]+)(?::\d+)?;(\d+) + replacement: $1:$2 + target_label: __address__ + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: kubernetes_namespace + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: kubernetes_pod_name +``` + +* By adding `remoteWriteUrls: - http://vmcluster-victoria-metrics-cluster-vminsert.default.svc.cluster.local:8480/insert/0/prometheus/` we configuring [vmagent](https://docs.victoriametrics.com/vmagent.html) to write scraped metrics into the `vmselect service`. +* The second part of this yaml file is needed to add the `metric_ralabel_configs` section that helps us to show Kubernetes metrics on the Grafana dashboard. + + +Verify that `vmagent`'s pod is up and running by executing the following command: + +
+ +```bash +kubectl get pods | grep vmagent +``` +
+ +The expected output is: + +```bash +vmagent-victoria-metrics-agent-69974b95b4-mhjph 1/1 Running 0 11m +``` + + +### 4. Install and connect Grafana to VictoriaMetrics with Helm + +Add the Grafana Helm repository. + +
+ +```bash +helm repo add grafana https://grafana.github.io/helm-charts +helm repo update +``` +
+ +See more information on Grafana ArtifactHUB [https://artifacthub.io/packages/helm/grafana/grafana](https://artifacthub.io/packages/helm/grafana/grafana) + +To install the chart with the release name `my-grafana`, add the VictoriaMetrics datasource with official dashboard and the Kubernetes dashboard: + +
+ +```yaml +cat < + +By running this command we: +* Install Grafana from the Helm repository. +* Provision a VictoriaMetrics data source with the url from the output above which we remembered. +* Add this [https://grafana.com/grafana/dashboards/11176](https://grafana.com/grafana/dashboards/11176) dashboard for [VictoriaMetrics Cluster](https://docs.victoriametrics.com/Cluster-VictoriaMetrics.html). +* Add this [https://grafana.com/grafana/dashboards/12683](https://grafana.com/grafana/dashboards/12683) dashboard for [VictoriaMetrics Agent](https://docs.victoriametrics.com/vmagent.html). +* Add this [https://grafana.com/grafana/dashboards/14205](https://grafana.com/grafana/dashboards/14205) dashboard to see Kubernetes cluster metrics. + + +Please see the output log in your terminal. Copy, paste and run these commands. +The first one will show `admin` password for the Grafana admin. +The second and the third will forward Grafana to `127.0.0.1:3000`: + +
+ +```bash +kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo + +export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}") + +kubectl --namespace default port-forward $POD_NAME 3000 +``` +
+ +### 5. Check the result you obtained in your browser + +To check that [VictoriaMetrics](https://victoriametrics.com) collects metrics from k8s cluster open in browser [http://127.0.0.1:3000/dashboards](http://127.0.0.1:3000/dashboards) and choose the `Kubernetes Cluster Monitoring (via Prometheus)` dashboard. Use `admin` for login and `password` that you previously got from kubectl. + +

+ grafana dashboards +

+ +You will see something like this: +

+ Kubernetes metrics provided by vmcluster +

+ +The VictoriaMetrics dashboard is also available to use: +

+ VictoriaMetrics cluster dashboard +

+ +vmagent has it’s own dashboard: +

+ vmagent dashboard +

+ +### 6. Final thoughts + +* We set up TimeSeries Database for your Kubernetes cluster. +* We collected metrics from all running pods,nodes, … and stored them in a VictoriaMetrics database. +* We visualized resources used in the Kubernetes cluster by using Grafana dashboards. \ No newline at end of file diff --git a/docs/guides/k8s-monitoring-via-vm-single.md b/docs/guides/k8s-monitoring-via-vm-single.md new file mode 100644 index 000000000..b9d680d33 --- /dev/null +++ b/docs/guides/k8s-monitoring-via-vm-single.md @@ -0,0 +1,351 @@ +# Kubernetes monitoring via VictoriaMetrics Single + + +**This guide covers:** + +* The setup of a [VictoriaMetrics Single](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) in [Kubernetes](https://kubernetes.io/) via Helm charts +* How to scrape metrics from k8s components using service discovery +* How to visualize stored data +* How to store metrics in [VictoriaMetrics](https://victoriametrics.com) tsdb + +**Precondition** + +We will use: +* [Kubernetes cluster 1.19.9-gke.1900](https://cloud.google.com/kubernetes-engine) +> We use GKE cluster from [GCP](https://cloud.google.com/) but this guide is also applied on any Kubernetes cluster. For example [Amazon EKS](https://aws.amazon.com/ru/eks/). +* [Helm 3 ](https://helm.sh/docs/intro/install) +* [kubectl 1.21](https://kubernetes.io/docs/tasks/tools/install-kubectl) + +

+ VictoriaMetrics Single on Kubernetes cluster +

+ +### 1. VictoriaMetrics Helm repository + +> For this guide we will use Helm 3 but if you already use Helm 2 please see this [https://github.com/VictoriaMetrics/helm-charts#for-helm-v2](https://github.com/VictoriaMetrics/helm-charts#for-helm-v2) + +You need to add the VictoriaMetrics Helm repository to install VictoriaMetrics components. We’re going to use [VictoriaMetrics Single](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html). You can do this by running the following command: + +
+ +```bash +helm repo add vm https://victoriametrics.github.io/helm-charts/ +``` + +
+ +Update Helm repositories: + +
+ +```bash +helm repo update +``` + +
+ +To verify that everything is set up correctly you may run this command: + +
+ +```bash +helm search repo vm/ +``` + +
+ +The expected output is: + +```bash +NAME CHART VERSION APP VERSION DESCRIPTION +vm/victoria-metrics-agent 0.7.20 v1.62.0 Victoria Metrics Agent - collects metrics from ... +vm/victoria-metrics-alert 0.3.34 v1.62.0 Victoria Metrics Alert - executes a list of giv... +vm/victoria-metrics-auth 0.2.23 1.62.0 Victoria Metrics Auth - is a simple auth proxy ... +vm/victoria-metrics-cluster 0.8.32 1.62.0 Victoria Metrics Cluster version - high-perform... +vm/victoria-metrics-k8s-stack 0.2.9 1.16.0 Kubernetes monitoring on VictoriaMetrics stack.... +vm/victoria-metrics-operator 0.1.17 0.16.0 Victoria Metrics Operator +vm/victoria-metrics-single 0.7.5 1.62.0 Victoria Metrics Single version - high-performa... +``` + + +### 2. Install [VictoriaMetrics Single](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) from Helm Chart + +Run this command in your terminal: + +
.html + +```yaml +helm install vmsingle vm/victoria-metrics-single -f https://docs.victoriametrics.com/guides/guide-vmsingle-values.yaml +``` + +Here is full file content `guide-vmsingle-values.yaml` + +```yaml +server: + scrape: + enabled: true + configMap: "" + config: + global: + scrape_interval: 15s + scrape_configs: + - job_name: victoriametrics + static_configs: + - targets: [ "localhost:8428" ] + - job_name: "kubernetes-apiservers" + kubernetes_sd_configs: + - role: endpoints + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + relabel_configs: + - source_labels: + [ + __meta_kubernetes_namespace, + __meta_kubernetes_service_name, + __meta_kubernetes_endpoint_port_name, + ] + action: keep + regex: default;kubernetes;https + - job_name: "kubernetes-nodes" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [ __meta_kubernetes_node_name ] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics + - job_name: "kubernetes-nodes-cadvisor" + scheme: https + tls_config: + ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + insecure_skip_verify: true + bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token + kubernetes_sd_configs: + - role: node + relabel_configs: + - action: labelmap + regex: __meta_kubernetes_node_label_(.+) + - target_label: __address__ + replacement: kubernetes.default.svc:443 + - source_labels: [ __meta_kubernetes_node_name ] + regex: (.+) + target_label: __metrics_path__ + replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor + metric_relabel_configs: + - action: replace + source_labels: [pod] + regex: '(.+)' + target_label: pod_name + replacement: '${1}' + - action: replace + source_labels: [container] + regex: '(.+)' + target_label: container_name + replacement: '${1}' + - action: replace + target_label: name + replacement: k8s_stub + - action: replace + source_labels: [id] + regex: '^/system\.slice/(.+)\.service$' + target_label: systemd_service_name + replacement: '${1}' + +``` + + +
+ +* By running `helm install vmsingle vm/victoria-metrics-single` we install [VictoriaMetrics Single](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) to default [namespace](https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) inside your cluster +* By adding `scrape: enable: true` we add and enable autodiscovery scraping from kubernetes cluster to [VictoriaMetrics Single](https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html) +* On line 166 from [https://docs.victoriametrics.com/guides/guide-vmsingle-values.yaml](https://docs.victoriametrics.com/guides/guide-vmsingle-values.yaml) we added `metric_ralabel_configs` section that will help us to show Kubernetes metrics on Grafana dashboard. + + +As a result of the command you will see the following output: + +```bash +NAME: victoria-metrics +LAST DEPLOYED: Fri Jun 25 12:06:13 2021 +NAMESPACE: default +STATUS: deployed +REVISION: 1 +TEST SUITE: None +NOTES: +The VictoriaMetrics write api can be accessed via port 8428 on the following DNS name from within your cluster: + vmsingle-victoria-metrics-single-server.default.svc.cluster.local + + +Metrics Ingestion: + Get the Victoria Metrics service URL by running these commands in the same shell: + export POD_NAME=$(kubectl get pods --namespace default -l "app=server" -o jsonpath="{.items[0].metadata.name}") + kubectl --namespace default port-forward $POD_NAME 8428 + + Write url inside the kubernetes cluster: + http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local:8428/api/v1/write + +Metrics Scrape: + Pull-based scrapes are enabled + Scrape config can be displayed by running this command:: + kubectl get cm vmsingle-victoria-metrics-single-server-scrapeconfig -n default + + The target’s information is accessible via api: + Inside cluster: + http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local:8428/targets + Outside cluster: + You need to port-forward service (see instructions above) and call + http:///targets + +Read Data: + The following url can be used as the datasource url in Grafana:: + http://vmsingle-victoria-metrics-single-server.default.svc.cluster.local:8428 + +``` + +For us it’s important to remember the url for the datasource (copy lines from output). + +Verify that VictoriaMetrics pod is up and running by executing the following command: + +
+ +```bash +kubectl get pods +``` + +
+ +The expected output is: + +```bash +NAME READY STATUS RESTARTS AGE +vmsingle-victoria-metrics-single-server-0 1/1 Running 0 68s +``` + + +### 3. Install and connect Grafana to VictoriaMetrics with Helm + +Add the Grafana Helm repository. + +
+ +```bash +helm repo add grafana https://grafana.github.io/helm-charts +helm repo update +``` + +
+ +By installing the Chart with the release name `my-grafana`, you add the VictoriaMetrics datasource with official dashboard and kubernetes dashboard: + +
+ +```yaml +cat < + +By running this command we: +* Install Grafana from Helm repository. +* Provision VictoriaMetrics datasource with the url from the output above which we copied before. +* Add this [https://grafana.com/grafana/dashboards/10229](https://grafana.com/grafana/dashboards/10229) dashboard for VictoriaMetrics. +* Add this [https://grafana.com/grafana/dashboards/14205](https://grafana.com/grafana/dashboards/14205) dashboard to see Kubernetes cluster metrics. + + +Check the output log in your terminal. +To see the password for Grafana `admin` user use the following command: + +
+ +```bash +kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo +``` + +
+ +Expose Grafana service on `127.0.0.1:3000`: + +
+ +```bash +export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}") + +kubectl --namespace default port-forward $POD_NAME 3000 +``` + +
+ +Now Grafana should be accessible on the [http://127.0.0.1:3000](http://127.0.0.1:3000) address. + + +### 4. Check the obtained result in your browser + +To check that VictoriaMetrics has collects metrics from the k8s cluster open in browser [http://127.0.0.1:3000/dashboards](http://127.0.0.1:3000/dashboards) and choose `Kubernetes Cluster Monitoring (via Prometheus)` dashboard. Use `admin` for login and `password` that you previously obtained from kubectl. + +

+ +

+ +You will see something like this: +

+ +

+ +VictoriaMetrics dashboard also available to use: +

+ +

+ +### 5. Final thoughts + +* We have set up TimeSeries Database for your k8s cluster. +* Collected metrics from all running pods,nodes, … and store them in VictoriaMetrics database. +* Visualize resources used in Kubernetes cluster by Grafana dashboards. diff --git a/docs/guides/k8s-monitoring-with-vm-single.md b/docs/guides/k8s-monitoring-with-vm-single.md deleted file mode 100644 index 2ee6b6999..000000000 --- a/docs/guides/k8s-monitoring-with-vm-single.md +++ /dev/null @@ -1,269 +0,0 @@ -# Kubernetes monitoring with VictoriaMetrics Single - - -**This guide covers:** - -* The setup of VictoriaMetrics single node in Kubernetes via helm charts -* How to store metrics -* How to scrape metrics from k8s components using service discovery -* How to Visualize stored data - - -**Precondition** - - -We will use: -* [Kubernetes cluster 1.19.10-gke.1600](https://cloud.google.com/kubernetes-engine) -> We use GKE cluster from GCP but feel free to use any kubernetes setup eg [Amazon EKS](https://aws.amazon.com/ru/eks/) -* [helm 3 ](https://helm.sh/docs/intro/install) -* [kubectl 1.21](https://kubernetes.io/docs/tasks/tools/install-kubectl) - -

- -

- -**1. VictoriaMetrics helm repository** - -> For this guide we will use helm 3 but if you already use helm 2 please see this [https://github.com/VictoriaMetrics/helm-charts#for-helm-v2](https://github.com/VictoriaMetrics/helm-charts#for-helm-v2) - -You need to add the VictoriaMetrics helm repository to install VictoriaMetrics components. We’re going to use VictoriaMetrics single-node. You can do this by running the following command: - -
- -```bash -helm repo add vm https://victoriametrics.github.io/helm-charts/ -``` - -
- -Update helm repositories: - -
- -```bash -helm repo update -``` - -
- -To verify that everything is set up correctly you may run this command: - -
- -```bash -helm search repo vm/ -``` - -
- -The expected output is: - -```bash -NAME CHART VERSION APP VERSION DESCRIPTION -vm/victoria-metrics-agent 0.7.20 v1.62.0 Victoria Metrics Agent - collects metrics from ... -vm/victoria-metrics-alert 0.3.34 v1.62.0 Victoria Metrics Alert - executes a list of giv... -vm/victoria-metrics-auth 0.2.23 1.62.0 Victoria Metrics Auth - is a simple auth proxy ... -vm/victoria-metrics-cluster 0.8.30 1.62.0 Victoria Metrics Cluster version - high-perform... -vm/victoria-metrics-k8s-stack 0.2.8 1.16.0 Kubernetes monitoring on VictoriaMetrics stack.... -vm/victoria-metrics-operator 0.1.15 0.15.1 Victoria Metrics Operator -vm/victoria-metrics-single 0.7.4 1.62.0 Victoria Metrics Single version - high-performa... -``` - - -**2. Install VictoriaMetrics Single from helm Chart** - -Run this command in your terminal: - -
- -```yaml -cat < - -* By running `helm install victoria-metrics vm/victoria-metrics-single` we will install `VictoriaMetrics Single` to default namespace inside your cluster -* By adding `scrape: enable: true` we add and enable autodiscovery scraping from kubernetes cluster to `VictoriaMetrics Single` - - -As a result of the command you will see the following output: - -```bash -NAME: victoria-metrics -LAST DEPLOYED: Fri Jun 25 12:06:13 2021 -NAMESPACE: default -STATUS: deployed -REVISION: 1 -TEST SUITE: None -NOTES: -The VictoriaMetrics write api can be accessed via port 8428 on the following DNS name from within your cluster: - victoria-metrics-victoria-metrics-single-server.default.svc.cluster.local - - -Metrics Ingestion: - Get the Victoria Metrics service URL by running these commands in the same shell: - export POD_NAME=$(kubectl get pods --namespace default -l "app=server" -o jsonpath="{.items[0].metadata.name}") - kubectl --namespace default port-forward $POD_NAME 8428 - - Write url inside the kubernetes cluster: - http://victoria-metrics-victoria-metrics-single-server.default.svc.cluster.local:8428/api/v1/write - -Metrics Scrape: - Pull-based scrapes are enabled - Scrape config can be displayed by running this command: - kubectl get cm victoria-metrics-victoria-metrics-single-server-scrapeconfig -n default - - The target’s information is accessible via api: - Inside cluster: - http://victoria-metrics-victoria-metrics-single-server.default.svc.cluster.local:8428/atargets - Outside cluster: - You need to port-forward service (see instructions above) and call - http:///targets - -Read Data: - The following url can be used as the datasource url in Grafana: - http://victoria-metrics-victoria-metrics-single-server.default.svc.cluster.local:8428 - -``` - -For us it’s important to remember the url for the datasource (copy lines from output). - -Verify that VictoriaMetrics pod is up and running by executing the following command: - -
- -```bash -kubectl get pods -``` - -
- -The expected output is: - -```bash -NAME READY STATUS RESTARTS AGE -victoria-metrics-victoria-metrics-single-server-0 1/1 Running 0 22s -``` - - -**3. Install and connect Grafana to VictoriaMetrics with helm** - -Add the Grafana helm repository. - -
- -```bash -helm repo add grafana https://grafana.github.io/helm-charts -helm repo update -``` - -
- -See more info on Grafana ArtifactHUB [https://artifacthub.io/packages/helm/grafana/grafana](https://artifacthub.io/packages/helm/grafana/grafana) -By installing the Chart with the release name `my-grafana`, you add the VictoriaMetrics datasource with official dashboard and kubernetes dashboard: - -
- -```yaml -cat < - -By running this command we: -* Install Grafana from helm repository. -* Provision VictoriaMetrics datasource with the url from the output above which we copied before. -* Add this [https://grafana.com/grafana/dashboards/10229](https://grafana.com/grafana/dashboards/10229) dashboard for VictoriaMetrics. -* Add this [https://grafana.com/grafana/dashboards/14205](https://grafana.com/grafana/dashboards/14205) dashboard to see Kubernetes cluster metrics. - - -Check the output log in your terminal. -To see the password for Grafana `admin` user use the following command: - -
- -```bash -kubectl get secret --namespace default my-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo -``` - -
- -Expose Grafana service on `127.0.0.1:3000`: - -
- -```bash -export POD_NAME=$(kubectl get pods --namespace default -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=my-grafana" -o jsonpath="{.items[0].metadata.name}") - -kubectl --namespace default port-forward $POD_NAME 3000 -``` - -
- -Now Grafana should be accessible on the [http://127.0.0.1:3000](http://127.0.0.1:3000) address. - - -**4. Check the obtained result in your browser** - -To check that VictoriaMetrics has collected metrics from the k8s cluster open in browser [http://127.0.0.1:3000/dashboards](http://127.0.0.1:3000/dashboards) and choose `Kubernetes Cluster Monitoring (via Prometheus)` dashboard. Use `admin` for login and `password` that you previously obtained from kubectl. - -

- -

- -You will see something like this: -

- -

- -VictoriaMetrics dashboard also available to use: -

- -

- -**5. Final thoughts** - -* We have set up TimeSeries Database for your k8s cluster. -* We collected metrics from all running pods, nodes, … and stored them in VictoriaMetrics database. -* We can visualize the resources used in your Kubernetes cluster by using Grafana dashboards.