From 4d658254a80cd69f1fb106f533d364fd4eca3bb1 Mon Sep 17 00:00:00 2001 From: Hozaifa Safla Date: Fri, 3 May 2013 15:07:48 +0000 Subject: [PATCH] First Documentation git-svn-id: http://svn.merethis.net/centreon-esxd/trunk@54 a5eaa968-4c79-4d68-970d-af6011b5b055 --- connectors/vmware/doc/Makefile | 177 ++ .../doc/_build/doctrees/environment.pickle | Bin 0 -> 43441 bytes .../doctrees/exploitation/index.doctree | Bin 0 -> 341484 bytes .../vmware/doc/_build/doctrees/index.doctree | Bin 0 -> 5558 bytes .../doctrees/installation/index.doctree | Bin 0 -> 31121 bytes connectors/vmware/doc/_build/html/.buildinfo | 4 + .../vmware/doc/_build/html/_images/archi.png | Bin 0 -> 29775 bytes .../html/_sources/exploitation/index.txt | 1384 ++++++++++ .../vmware/doc/_build/html/_sources/index.txt | 24 + .../html/_sources/installation/index.txt | 191 ++ .../doc/_build/html/_static/ajax-loader.gif | Bin 0 -> 673 bytes .../vmware/doc/_build/html/_static/basic.css | 540 ++++ .../_build/html/_static/comment-bright.png | Bin 0 -> 3500 bytes .../doc/_build/html/_static/comment-close.png | Bin 0 -> 3578 bytes .../doc/_build/html/_static/comment.png | Bin 0 -> 3445 bytes .../doc/_build/html/_static/default.css | 256 ++ .../doc/_build/html/_static/doctools.js | 235 ++ .../doc/_build/html/_static/down-pressed.png | Bin 0 -> 368 bytes .../vmware/doc/_build/html/_static/down.png | Bin 0 -> 363 bytes .../vmware/doc/_build/html/_static/file.png | Bin 0 -> 392 bytes .../vmware/doc/_build/html/_static/jquery.js | 4 + .../vmware/doc/_build/html/_static/minus.png | Bin 0 -> 199 bytes .../vmware/doc/_build/html/_static/plus.png | Bin 0 -> 199 bytes .../doc/_build/html/_static/pygments.css | 62 + .../doc/_build/html/_static/searchtools.js | 622 +++++ .../vmware/doc/_build/html/_static/sidebar.js | 159 ++ .../doc/_build/html/_static/underscore.js | 31 + .../doc/_build/html/_static/up-pressed.png | Bin 0 -> 372 bytes .../vmware/doc/_build/html/_static/up.png | Bin 0 -> 363 bytes .../doc/_build/html/_static/websupport.js | 808 ++++++ .../doc/_build/html/exploitation/index.html | 2376 +++++++++++++++++ .../vmware/doc/_build/html/genindex.html | 92 + connectors/vmware/doc/_build/html/index.html | 133 + .../doc/_build/html/installation/index.html | 314 +++ connectors/vmware/doc/_build/html/objects.inv | Bin 0 -> 209 bytes connectors/vmware/doc/_build/html/search.html | 99 + .../vmware/doc/_build/html/searchindex.js | 1 + connectors/vmware/doc/conf.py | 248 ++ connectors/vmware/doc/exploitation/index.rst | 1384 ++++++++++ connectors/vmware/doc/images/archi.png | Bin 0 -> 29775 bytes connectors/vmware/doc/index.rst | 24 + connectors/vmware/doc/installation/index.rst | 191 ++ 42 files changed, 9359 insertions(+) create mode 100644 connectors/vmware/doc/Makefile create mode 100644 connectors/vmware/doc/_build/doctrees/environment.pickle create mode 100644 connectors/vmware/doc/_build/doctrees/exploitation/index.doctree create mode 100644 connectors/vmware/doc/_build/doctrees/index.doctree create mode 100644 connectors/vmware/doc/_build/doctrees/installation/index.doctree create mode 100644 connectors/vmware/doc/_build/html/.buildinfo create mode 100644 connectors/vmware/doc/_build/html/_images/archi.png create mode 100644 connectors/vmware/doc/_build/html/_sources/exploitation/index.txt create mode 100644 connectors/vmware/doc/_build/html/_sources/index.txt create mode 100644 connectors/vmware/doc/_build/html/_sources/installation/index.txt create mode 100644 connectors/vmware/doc/_build/html/_static/ajax-loader.gif create mode 100644 connectors/vmware/doc/_build/html/_static/basic.css create mode 100644 connectors/vmware/doc/_build/html/_static/comment-bright.png create mode 100644 connectors/vmware/doc/_build/html/_static/comment-close.png create mode 100644 connectors/vmware/doc/_build/html/_static/comment.png create mode 100644 connectors/vmware/doc/_build/html/_static/default.css create mode 100644 connectors/vmware/doc/_build/html/_static/doctools.js create mode 100644 connectors/vmware/doc/_build/html/_static/down-pressed.png create mode 100644 connectors/vmware/doc/_build/html/_static/down.png create mode 100644 connectors/vmware/doc/_build/html/_static/file.png create mode 100644 connectors/vmware/doc/_build/html/_static/jquery.js create mode 100644 connectors/vmware/doc/_build/html/_static/minus.png create mode 100644 connectors/vmware/doc/_build/html/_static/plus.png create mode 100644 connectors/vmware/doc/_build/html/_static/pygments.css create mode 100644 connectors/vmware/doc/_build/html/_static/searchtools.js create mode 100644 connectors/vmware/doc/_build/html/_static/sidebar.js create mode 100644 connectors/vmware/doc/_build/html/_static/underscore.js create mode 100644 connectors/vmware/doc/_build/html/_static/up-pressed.png create mode 100644 connectors/vmware/doc/_build/html/_static/up.png create mode 100644 connectors/vmware/doc/_build/html/_static/websupport.js create mode 100644 connectors/vmware/doc/_build/html/exploitation/index.html create mode 100644 connectors/vmware/doc/_build/html/genindex.html create mode 100644 connectors/vmware/doc/_build/html/index.html create mode 100644 connectors/vmware/doc/_build/html/installation/index.html create mode 100644 connectors/vmware/doc/_build/html/objects.inv create mode 100644 connectors/vmware/doc/_build/html/search.html create mode 100644 connectors/vmware/doc/_build/html/searchindex.js create mode 100644 connectors/vmware/doc/conf.py create mode 100644 connectors/vmware/doc/exploitation/index.rst create mode 100644 connectors/vmware/doc/images/archi.png create mode 100644 connectors/vmware/doc/index.rst create mode 100644 connectors/vmware/doc/installation/index.rst diff --git a/connectors/vmware/doc/Makefile b/connectors/vmware/doc/Makefile new file mode 100644 index 000000000..2370a79c0 --- /dev/null +++ b/connectors/vmware/doc/Makefile @@ -0,0 +1,177 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = _build + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/CentreonESXD.qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/CentreonESXD.qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/CentreonESXD" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/CentreonESXD" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +xml: + $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml + @echo + @echo "Build finished. The XML files are in $(BUILDDIR)/xml." + +pseudoxml: + $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml + @echo + @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." diff --git a/connectors/vmware/doc/_build/doctrees/environment.pickle b/connectors/vmware/doc/_build/doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..22474718113e27fd68404a8b0bec9516aeb1207a GIT binary patch literal 43441 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 @FVtA4N)u`}jcjRX9f{I`+cytEA*OL-dG2r6 zY1r%SbX}i_2go-qLdOU7y3u~c_9%aU~ zwlpk-z1uA_x@&jzJOj^q{#f?hR0<=E+V%X@;+}w@r@>Zgrd2y?+WDUd+Dr%Q2!Z*} zLO6vXOfRSEg)jr98~-7XXM}MK@R>lckS{-@BnyKX)zM_wMab_g5}DPC*u%zbYJ_oR z@nb;F4!-Il%^~cZK6WlO>eof0IS%T%Nm&+Y9&DiaxL}b!^jo{&SjPj*%tw9blli5n z>^ohh-33T_$XXB^saZ(ks7cP4Ej$!ZJ8Bw=V`beEV@sjtaM$8czZ4pL1!#=X z`?}jiuGH94JOy;^xZv2@bOgb!Bg5rj85kx8z};~|=lxO8PwY^e z8wC|gH~xJwt`B<{8T~<0vw>X8J!d%nT-9-{D#;D4WYZzF`l4O^vHwAbxF-XhRU_L7 zPO-lR$hk1XcyvTQ`fFoS_SYuZNXGXY)hDBuWcpsVV;X#8%#O& z+Sb^>PY@&?C4%E=5xHKkZ7X)Dtx{b{z1B?W#=kq#?O+xCG6Vzb_%?ljmceB$GGtb?a1&Ya<-?1K^5NXFPaJZY`d;d!cHr{ysCbGjN~JaOVOcLw;%+?m3jWwCh~v9rmJ6DszzbdJPA ztu9OFQo5)kb{?9D>3opXTp(nWWQu9E?ttp#LH31Gc#&0zab_Q6pTdO(drr{m`NiV* z8Eh`WMhA7o#)9pwpkIn6SJ0O?mx*Cl(EH>o=$B)!T|vJBTdBEH?T+e(T?GlGl3r*2 z=>hfC0+v%*n7W3DjtYle3jrkfIuQJ1K>DI2Ge_@~VE3Nh4U)RiN+D~$NBK(nO=6dv z%2(2F2H&lu-y(&#<_a=^QuD0D?Mpm) z;jrf@gX-5L-euYIk_}Z?s_W>O`U0hc%3&{JA4c>`AgGQlc$8$?X+Jn*xUgQ4{Hs>p zo_StVBeab|;MmWwUMFQ(Z(sxK?Gm@|{H@b68b49riSL=4wlr?DM0(5UVS4S-&!3u z(C^d;-6`hA_vE|D@q_R``uLyf;Ax7Z;AisPDEbAB)ch()HaUJ%qimn1i2t3Gqv#K8 zU;$m?*^gz~OqYegMPX$Md4p#X>@HVCsZ`g~w3w8j?AJ1FW-_#p-pN5w|5(5%$@J1@ zkX{$cl#-vy%G*>!}nkw$0*4z|{6Ds$k zoJXReW*6nWl(tjF>6s6^5Y+r2saZhiD9M!5dJt4GRonnyP{@TW(uUWdM(9MGxBK8$w!Of4l;=wzi@(SYwNZdRnk)(?xY z3z>>RQnR%9S&@>Wei$7psu^^XX!lIi6)AB=z-*C{WyB5Lh!bjJtUX9wkrD?rJ+T+Q z^a8;mE&jVJbDBh#;V>4~4_i*My{&9s!N59Pvx33$0<2&GwqsXRqwK8fn3cd+$E+;u zDi+&GnXgp|iW8di`)4(QLtCzYR;P4l1;o~X5VEu;NNV~>UzB9#=wUFn-H2RE@@rdp z8~8eEgwDi?3%oD*3VdB**R$Ai0kM9RixXP#W35O&RPSP4pVBodi1o*Qgtq}mYN}EZ zC7A{K5rkKsx*H0)kww}-2dEKxQcT^A$#;p`MEHR|zOfFTrZ}7jk#g#8ijCB4Chjc$b^L2A^^I{`gpqZL2wbP#YRBVJsi|M(Qga&6qto6lW zBXWSNfm@4FP6d@Plx;{Go2CFxD6=hgpg)>HQnMZYyGcnywI}5e$qu!$`J}XN)|`|r z0&H&qw##-XFJi)~sIes4Hx1V1MT`7TAw@JKscavnO*u}d$rR~`wQ?m#5Af!D(P+3D@RMwza zoX~a{yzSII(V95atwAIRa@WhQ0zjY4g7c#XHxnv7x+61T9D_nLGbpg3`R-j z4`U3bh8xi5O8z`6Z&P=^8lksw;!<}3_)6V{!d_&tuE5{L+0ZX zievwJQqJ-luz{CdCEi(uKict=bdyk_la=a5n&vl)n@w|D;_nvhLZ)s7!IGT#*)%Uo z{L!Ien%^$bJ2Fvs_3Y~O*{kO}#SPtv6KZ0tcagfQX9qQRV=sKU2P8H3;=h~dG+BG1 zkCW_uRyLpL*5R5H{eA%+umIb!52{gi)^*H7;HzUE7WNT~{mXUs9;I45-5~K!Xpc#K z=#A^a$0_~SYy3R{HOTanAgOsu7NaC{h*1Xf!;R{vCI5_-x5;}}jnLgVamjlQd?oLB zVPCLVSL5$Ra`DP6iI;l~?`o9I(-iT4kn;TWCpPdw zxCR}co2JD5N>(>)66`|%Q@1~xCzWKVxKiCz=cLI9vZtg>&E(jF;Wq^cDoO~9iV~pE zP20hYb|FnA`KhhEJvdFHMrax3r0F3-nwCl#(saU3Z?Wa_V>3_=MVCpu!_@1a*|90(F!rj33>D1mP72tnwoGY|=5i)nP-PLygdsvIK8PmqY&;DxtC5Q`$|PPgSC>?%v{Kzt<7o{_XX9yrSraWJr4I;RG{t|6k0jGe zn?X`sC~Hf89V>5B(N~SoYMi)G)&*aotS4+gi=9X%$SO33>dGWuX4aR{&_|b<{*<0r zHOMxAawNJ6f@;n31J#;oF;19~AkoF>t8*cT%YXf5bR#JoU=^Y#YQF)pvG{!kn@zAW zK{dz*0_eRP(ugMC4Ozhq62rb5vTc41w<-48cSAPA7T(5Gd%{YKZ4NB5#7MKw)LSE4 zNM*S*3n#WDV!~>RZ3QU0YcL4bWMwHzGDjGZx=X`(8;NXdMgFa|#hT$>`xNS0d^>qv zPT_WWKMo=AUt3&kD7-^2wSc5%dj%6E&7g>t{ZjPO4rrxj82;k`*MtkCF6)dNyM61( zR)gO^jcypxJj9H`&!gH}cR}&Y7W^>Ev_iH<$`Yw4r>rGU*^UH`Uv;tJ5QYCEK=4wj zG)GBhm>$c2cPlbVQaf2G%yfT7L!kFb}N!f-QK>s zebfk(6epPqvoHAWq`x1wQ?tJiS#SraQHIkJlXD>X?o4?Q8d%g8B*P!9Mj5{!_7i^y zDNp)`Vk0$&;XeoMv|YM%sdAh)Y}h=a#T-s4tSysxr??{|9V)L>hw0>hB&AE`#g4*W z48x;AQ1e*|q9oH#AA)m}3+-6RA7|z5MZocDgw|0X82cI838W0|L~NwyB>ZP+({*v7 zZQ4A%t;L*7u{fatKekgO9%^^7ol5C)eX-N98^N6pg0JC8LzH9&=tU4*apEoCken$U zXIULK;Iq{TT`GpsIpn*sbS@gHIZu#mES#@K8BbG8*ahUfgkOjT$|(qv;V)LBj6WCq ziNA!D2_K6M6okfqCVZ+ccnnurd&54}zUDHDU|oa68%UQ+G}K(F?x=xu1*Ppf9Zt`c z*o8!21%he{LPtraoYsRxyP&R-{IyozCiOZsLep3?$9@EbBSyVn$XySK)Z8F^mZ2Nf zC@XUrzKMM2%+12z;^S|vgQqEG_%>2z_;zfdf`Y``S8%(NB5^|HeunRoXy{p`Izkz~ zo6_w|xZQ(Y$nd=&sTqg==*lEhPV03te4pg+xAHc_52z8EjuRKugWxNuhlG9DVqFQh zN63v6>hSl(>DI;C>}!UZG5!P`jU+S0x*| zR;i9sSHDK-porV+*oOqY0fJXD1&@+UJM9Mva$&tC`M0gSP0KrKgtp_vh4n7@3hO;= z;B8Ecb!*rkkQ*n|>j(6qq(Y@GppPh>uVH_T7DD+11dE*lMoFfZHiJ-#zV77K=QAn% z+$uz@wQqgC5Wml0^CdQHRS5j5U8R%pH52}vUR5F*TurvGAm-iZe2pe=bXGLqh+%JZ zM(0<1-(s)5(fJNrsrg>*@u}AK10<1IMv-M!w>3XXK{>O9$)AWApK@(KLlBAo1q3g1 zN^g{8X6daGude@1BEMUazrS4DA28fL6}mn7Q~s1w(Uxbw%fd>4U3zzE(22 zb;M4?Teoj*!Ik}zZDU%8w~o#_8$FFb{QT97yMB1f(haS{8}Nliltak6e%x5%hp^@W zu+8nqMZ0^0NnjR=`uq=v|w4GIL>572f8? z#;`e5;cc%x7xM_p3UBjbD>d_}9W_mk!@$7J`V27h6NR;D5__Sq6V3vX^Gs&--3rYM z646*FS_o~#+yIiAg$0k2OgnAc5yt9ni%4WqE0Uk0JrDHzw8g~lgIBDvQK!1w5@30! zX&rCOg%9$z5bSI)-b+=`} zM4Eblq^75IMM-9gUfDx;R^6?aq?WZ(92cH9`RdMcVwW7sS9f}Y?^bt~m%=Ng<9hEs=IAS;W(ig|MGhyfkGRV>i)W)7yz#OiSEYO zPR%Bgj}ocFNElcXA18E)J~oops_r%j428oZp^HFcDVyKWU7Ks^;WNfcS=v$n)p|=D1Zs-jYzSYMkb?`LB zZrzcTLvJ`XQZqv0wd=c$q-dPbh@ZVtf`lGcst0P|?F6nHcspY|HAeDLB6WyxbWMDm z&>?y_hP3>9!8YthvUdSV&93ZW7vn3_1*TxMr!txc+_+!hHPi`-A0TXJ7QET9%%fPI&OHizGcXmHfYfYJI9UX zD~N3JQ(>4L4Lb}UwOunRTx2?S8!n--FP@aTvmNM5L>A^NbRU;^NE=X^B-8j&}H^BS5@8ZU>UFH>LHYF zoXDOX3L_ZChk@X&bNLe`nY+x8jv1=rc7#NZv?BK4aFiOM|5=d#sN= zPL2Adr)Z8t_jpoPo;m>=sX0-wsA)U&S6&fqq75%|60KuUoh-BENEsNtJcX2pu~V^; zn$sj6C4$EZUH1=Jr;8nGt5grtA?plEH~w7_o(XFh0B3=u=4?5Z`^{k7Nn=7Q#GNC> z=UT;f*qo0v~mTuQEEc+Q6hC1F;~^Z#|eF+lUI}0tPpn%IOvgUK~i%a{<|{^ z4Rv~Exn8gvau{5>QH?N^IC1&934Be{n}xl_$KI+&{b@>b4CgkJWqzsH+-c8DpaSt}|%Dcqzz=FHugr56DV4T>YHa7(B zqjcln6yW_ZhB5H~NNOIGU%A_i#h;}*T0SJnhplAOLA82ed}_mucUQQ_4V@K+djuY_ zryiAOVQ%q6ihT6cW2Ee<$FYH8)e^_^819Y}M(6j`lVXS3D%C?YS)ZbG*L#xts@S2nO7&3n*K3q+{9D6(9VXEuZ-C(0mb}ZIXGDIF;2BV7 z_2Ax;p0}+Yd(wMHjWFcmr1viQ?xgpg@bCNh59;7)iWBBTQg*;c*htOC67Q@Y+$RLZ z3C;Q4^Qpk0ua)ZI>YmTQb?3g%v5j~BB_AbHhr#k?O?;ftHTwD$X-Dt0;~S9F ze2f3?6i9oWo&vuU?E4%BkA6@ij0g`Av7a9ONXqQ}gpJhvEb*vmUd%Mj85D!-!8&ki zum~Jm<`<&kg!cUO{VH^5%%$%)N;h_<`gcen1Al;^a)}g1NoJ2ex&c}DUcSpBL{5VL zHg`zEq-unI6+>_`^4$=eT=*$`{FHU@G{q!NMam>jjg8byBk_*wy-iCkZ20enAFXvd z{AL$yjvNMm=2Rn$Cr(`E<^o@tn_Jjc{5G>Pup;T~=QTTlf)y+8vdAiy(ny((TMaJ#>f# zEGM%twKNeOm3-?40c5y4NNSdmz9`Ae(K}_>y*$}NQa!B{(&l@VFR%9!yW~{9yuK{> zZh3t}@9+rHgdFU#= zJh_V0t?H{=tz&g6`BqQe>Qc9cuWrqb)v4rLNnQ3XW*@0r%U8Fy8ez`!0L?n!yT$sx zg0Jht*Q*1kCFZ&x`R*uNK_fNm3zFr!zZzxpG)4Rdq&&)2v4I!&C2rsO$xFU%L>YY1 zlEl008X(zFb)|ZO4yzkeIw<+J3HD(`4+O!7Ed@vYVhW-5j zBEXbI5o3@#!8J>MJ1cL48=^*Nz6fq8_zJE?*zGO0UCFl{C=w@B?gutZqM>FNSSzL5 zmwZdG3qkD&lA7T{M@gof)`OsmSDVT&myVE*kyeKdbd(yQJH_1CiF`LXb{5|F_|bLn zG{wO^hI}`Q+R#905<#-bv8x(o`!q%TZls(XyJG`u>Jra>oz!ObBo}2zNW8(bm!v|a zmFmfw7Ad8(UnjMhz0pE?_W{B8CI!UzCMkkCz#u_-T`2oWet#=(Q+a?Ip;Z)I!G4Bv zASpvR2pf1`TjEj2CEpGv2JbeLcmWY^mGM*r%B zeWc`%vhp_Uqtys~DZ)Mme1(0iu*X?!)706OxSpdOPZ?D2CGo;ML9(H07v_nSwud)f z#Y@pi*oUxA20>w8!J{P8PWwSv#bj|q{8S-Nvq&4@>1u>tpcppxvtQ33-;Iki(MZi% zf@DMdY&FVwnj-!jQjUvrv4MBDCEi)lH`?)2b-qxckxKPc4fzYi&B|8TqHh;s7czAb zNNO$?KPy{N6n&#ZMcIl=Bsw+|oe}-Vs#30Un=M;$skosVc&!@y8S7=Fu55*an#-{l zzFYxl{b!wEIbscj( z`0AJ&guT&XJ1P2h6G3r8bAJEaEO2Pc_0KJo?yTtBtq?+%ZUafp?a~(|nK^nGjBPg} z?~weRR^A4Fml~lns6UPU?4`R&IU?`D23A!iZflvL&w6$rgLfLcZ*R;v%EbvS__5w6 z`B1%!^?pj%DEjsQ_9MIpK~nROR76Q;fqn$xm8b5*LOx=VHqb}a2t6sL?qlS;L_IG2 z6F&aQI(V95qMjmUqMpVEzM?1bPU=e0jGwJ%1qywvR8QB;eNNnVb)}xiE+py&5G><~ zpUvE&t`z+#X6{Q8eK`}IA)C3oHk*;HBX_V9_Z2ZiFHl$n`x)u0q+wmD*RT_wybh9@ zH}K!hTNRMP8`jGnKgr4{v_mT95 zZn%#7n9}w`PZMPH6X22CPeD@inM_4V<_Y5prh^;ApG*D=D{s^Fr5d51__!hVvunR1 z}Ragk-F2egPQ5F7rx8@f)zRZchj3DYftZ) zBs;T}&8N3@xaRbpMSxi?z;^6xYLuOI9Wy)l>XyE2R-D*6Oe!H>(l)R1Bi+$akY?i10&wd`lfXO)+KLlkZZ#0~)9~AxJigTGc4q zrzzqSQl@-IY+yxE;(7h35#+`R_4fmTmhpb z(@UE{dR-`^B|pZ>+f=rx5n7EC7s@W+E0kS@-OXbEYW=9)sTDu3C-ElH9?~8<<5I9E zrT=pMsJ);CsY^ld4Ko>xlFT2*7^JQknQlDoBjmmoX_L608lm4PUV{A`5BrnvI^h5` z@HsL;vhj3~8f8395&s`jj;DjMk(xs!p4X2$l-xL>UO$!{y9>f^`FN^YF?0dsesgrl)@r1iFYaWlB7fB zmFkT;`@c--QUR$~uouJdRS;CEmI73%rf8hdhv4MoLVI2EZ&-PI74W7Sq4hX%p}hsZ zLVH`-cPzG4Kex`K$@+5NRoYo?3SktKyI)LiOSynU=al69pUU)aNQ6^5P-OtVJk_}y}RBuyf&q3*+ zz|ox8hXl<9lA5^%kCIF~?FR{RVa+4?d9A!n%Y15tw&TQwH9z2bu=WM{;^OxiY?i>r zcvLl75@O!v_flx;^1GMmDvrJUzAL{5iLlpRe#h9tm*>HGlSg-7Ou3s2zAZDMzrizWEdD?cTmkqIR(6mFF$25-~Gs?7#HXC6FD;Kp5t5hG# z6Ei?MSg~khY~g8!+V)0eoj#3y1~zWAN#B8HAa*11bjm-YG)lUh_(K06BJ9nIr*2d1 zMKU%6!9xuxiIU6){jfui)r&Tl$QD+_rNQ?@nb=Z%WMV69)Tv%H7%cDfyEU3R{Vr>^ z5yxic(L6KTVy`{@He(ClbyT}v`Jy4ui34+HJ`0vg+w1WYS{$678Y-qEwD!K`8^DJX~>uAA_ z$zky1ST({(;>2a^IPjIN$3qhG&uQ5_`7r z=lJ+@>)>gMU3?xXhvE6yz~cdl*DhsrAw}baM*JLJBuMCCrTUZx;l<#(L3jzaQQ1QB zSi}cqgqNxv;^Tx4(ZkC~%fExU9J`V1D?so*HU7IHNGqKV!K(zjI)}lJYt$(F;WBkC z_$p;|ov_#Y*c<9#X@)V}NXk-1H(?_+H%mNfx(UO#vr4T{Qh?(jv97q=9d~8 z^67!sLZ|JWLaP?ND8(;X#kN~tRwE3jIDNcA zzB_%qD*S6c{`ER|nqqR_AZ2pj#71h~l6c*!MQ>9&PH4x^`8z^|PFAYVD(CNl>&_tW zVH>5@B_AbHhY|2WO?;ftCp!5dY0audAAy4&`4}WMpWweciO^7|Cy`GD`z(jSmCw}( zLx~fYuP?yYH2PB5uYBy+YSf=bG{#|w_@*rB#c^*PPIsR**m zF8@%}Q^N!F*EAq_&0o&uu`s|=e@!RJ>8)f_Q>}TCXS`nJp`yb&EHyL(jIc*$l(8^} zMUTuxIrhlR*htMR5=Vt=?nZ@c67RlbRa1Dn=59oYQ^+aQO*pQ;*RJovgR_S2sYNtwBgu#uVp z61VRx^hVL5jmeG^D)zIqiNr#!E=vO`ZQog-jz%;Q(;$%4Y${}wWQu9E?ttp#k@jX% z*kl!AoY_a(>lbHpt)p))exJc+3v6^yvuI1Oy|whM(9~M`a%QkNb}jw&d@X%z?6qs@ z+h7Z|N7U}9W>GUFkW0Fq{keM=ucSVUQl|ooW`9)Mc;# z?Iv}*`|9>kBg}d3k=YY`w=}w!;HeMayAGU|nCpGWcgNU$(LfDxL9$%$uSVHCO%Z

9{h2h~F;9n>s36#Fou4+B9-Yr#>{ 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 E2V%GDcK`qY literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/doctrees/index.doctree b/connectors/vmware/doc/_build/doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..62710a3d7f8535f68e49ca783f066598b558d2e8 GIT binary patch literal 5558 zcmds5d6*nU6;C$VYm(hfHY5;|kPZ+s37Op-T&|)bhvLe5K*6Gnou2O6sWv^`^QyYD zvuX=b!7M7GqT-1MDvEfEiU*2#-+15mecw0wtLpCEncc+?|MmNJ=j*P1_3HQD@4Z*` z>WVJci`*pk12qyx9#Ml?2T()f4G!NXU z!L2y5T*ylvg%(#WZ-=r99Zu{=;Wp}-m>k9gKlFT;E6WKzD|TuDwDnFTY^_RaD)wW5 zh(g=rQ;Pah>Su#ZM=EYNxKd6XvZX4mVuNlXC04Ullt`D;>IqizxEo2c6b($UVJC^B zsVIuWDCV|`9U0T$_;S{(ZSXxsLn*B(iyl_a4XDIXr7)nP4XCI}hXJ%!^s?a`eFf+% zIr`y*^|`_iJRqWVRXVD?(3x;h=F9c)<%X1whA*Wvor6DS@-DdL?815HUO0J9r|YbS zqhc%5Emv|U=AKoXDXFIL!&Ze7-#utdwBY;;@PAfQTKo1{d-sm*J$-Ed8P>i% zd-so&E{zh)bwbPWoMvpr!dFJ61$fPX$2^$PEY85CR^T7>!}@Nkmc*7HTS`Pp;8{*= z1sqsPZWP9jA3_JWB%Ev=h$9!=^8=RWOYX-0AwI%-Kpm{2jiQV7 zqOL@nCd+Wes6arC3gt`%&S(cGqhMqd6!6xFR55M7@-S^l>9`u}jh(t?mbS9q+}mWa zk`u?$hYg6EZ7CfOx3?O>m})wRnG;xFQ*y=SAxCph{fV5M~VnSrtX7f#!|X3mN5nElKFzwk#ma+*8O0^ zz8qAy(MD%#NcZo61T-B$9v~|J<2nz7-_Aqe{=$Ff19qpbhXU4kN)OYpwBB=;gr$o|l!RW1 zE&!^DlpYRwLx17AzCwf^p5^j6i6V${37XVvURq{-VbZ8^$vt}X_%b%&hi;H~T=<@cs{NQ*v2n6H z+njidE@LG_w~E4GhN`n{Wj%;$^w?QMpaz%) zIS{t0O^P0`S${&A^<;ze#L49VuxkN-+K1~4)6+!-M6YN2F>jRUNm%sql&;WD8G@!U zY!PDz>O3@?(E&OP?5#ZX`se1+lQoQ|Ea9BF(0;1W$$Vu>S7{e$HJ9g(H97mVCFTM$ zHkTuda-zw>R9LrLz*eGJsJ%L+rx$9k%+alG7o%rrfX^(mUd+)ayU7(W4$o#_+L0k$ za|CA+ETh+TszqdP*}X8-(SevYRE=$ zwRYBv5P|K$>BWea5ep1xvbdYK7CY+v{jn*AG6dO4)q*l$E|H;y6) z=oRzq3q$!Um!NHq@>dzkZ%pac+A2NwhIYzdv&7u-4cdy=3Qg)wDZQ?kcw;`%(D?er zG>U7Eh>WrV>{687{9h>(IaLP28-!-$mXzL@K>#CfDj0clSzIq}?%?7rom||ct$1tB zMS+Ok1}@&7(mSBhaB+*_LM&q7)|B1}naRPq{8QYKt~gLy=>B&t;lerhzuUO~wv^tZ zl?^OZM(>5TTiXeF-xAu!kJhHV-w<+pN*~bP&=YTKC**_oL`aVgSA%^iI_|hvbQl01 zGIZRT(uXqupyMM29Us+n+|fbD$2#e_UEA<+&@qpPJ^?a5nbN1A&yaEFVluGV=szvM zR>jf@)l?)K*u6hJ!3O49E~KKO&!qHO)`!RJy!^S8KF`*unMN%N>_Sq}T~+!5TiemF znb}{g(wEp#3&d^n>C0963hPH{F*~WEuU6@6x{$NgMQ3P^zBR%6d@pYjzl|nwpdE{%?^Nl#Y@k>y1Mt0+zR%Vm|4qANXXR1R532M-)~9$J zqY^9nQQMv}CCw?#D_!ga2|8^0aYR2!>8E8jT)4v4%?E%VRP-~zScgt3k{+62U9)-U z>XXLLC)jE^G`1Ws5_(27IeQp66=?6ntU>=X`gP$1*wT%_U(h`b#q~y%n7!cOBqQUNOi5P+u5r?^BsVSG*39Sl_jdn{1IQ<)x40%bTY0rg}lFM+e zfV;4z`QcQQNy_CIgz%u=Ks9V=1wNu9<;}|WJ*Rkb zrG8z@TR!eM5afxTcG94t&b5%O0cB5a`DCAz%4%BxSD|UGD~wbI|74o&y^v zXEeKLUu7RY9${NxWMeJ|=L5nv&9Ur<&@5ZQ!$Y!Ulx2oD6;C`^*$Ct+GrR^{e1t&s z(SXR%36xxI#)q}*aHC_6(YaR!jLucrMF0+S;XyfQga>sz&xfQOGNVHah>~kC%(|0! zs&a;0tDj4`D)>$z%0f`QF}S$W2;&2q&x< zR|Gl}aYYf!%^1b;3&$;vn=KH#1p~-e6NK|FKhBJ5=A4ETYg93y&Wfg|Hfx+q4vlG;VlWw(#pBz<(@{*TXA=D6Gp9^yB7E zS9hkSJP{(|ZZ@b3sXg!5?RsXH@5z(&!yvMzJwSF~aF%V#3IPwezB5xGAQpCh_ae&> zLAvG4nKV*zCkCr*gUKmB#Ep)*Lgb<5*ps{P^$3om&NOm98#)<7y389t7R6fb*1D4# zTfcC}F;{D{q9-jg7e#Ue^6Z&?hZ6qZzQd>S{q{0iXJTLWFo0EQ+m?K#Y`IdHtCe!KZCl7Pioor(^<`%yP#IbtWsy-Srww;Q z!D;WyPVy0@fwykC&ZNFpA=BQ>!_0je(Nk zy18M9XL`T0e`m9j-HmR|Ct+T>minjk&+weXCEb6Y={Z{PK3X5|mv=;S8Dvzc zUbgb6m+j7x*+md+msu$pU8b8GD(1RkD(*tX?TXe(ycCQL8FFjRQCD5z9PK&B4C)hV zxnZu%&awIgSFzyC(%W;j8d-z&8sydKIkP+UiG_NV;aq1;9c3a*pxcQX3qXvt1jP9LXo&+T{Snd5VHeQePx8_xXRF+lCNFlT`|TA!FV ztzrQZa~AeHixP^0f{S2&F@$)6=PZHHr0uPUw!IS})tTlI=F#S{`Z&qpbemw~q)u~A zzj<80d3?W_?lC)CY6*K~d~d z&pAC%q)&o5i_2aXE8AJFw^zvsTHYBs5aXO_PRcPw;{%G$>NJ_pvpr`8^U3XX6&il} zeAQmhLD5SUo2KyB8!N--FT}Re>`9I}jhS)Cx zr%#6RMc};Ob6(7xGy1i{d24Vh0gSNbPt(X1+MSmGrRO;>4N+c}l$IjKxx5(#Ro1sVR{+74p7XL0!OL4A z@K`=qCFH{v(Z+V?6~J+|=Ufxw*whNgm5k$Blly_|Jm-1L z?YuIHW`6H9Msp+DO+53fQ0-prIj;d)lM!7f)h@>)m{9551O+gmul1apLqcDdETO{` zLT?d5Z}ptpn9yk;^a6ui7${oFDqE#`$$33Wd2N*3+mpzAa^C=QTcNlEM8DBQ>cBvQ2VIo zJjT?Hfu0v-<~ol9<-<`5KafP=Q}{tp7-ahpsQR$yY-Oq##iLQGpidL36v1!voR5UW zeKd)?!xX`PObPzup7V(i`jf4ox3R1~C9Hhfb3VhYj0Gzq?azXck4Jg=ToS|l-sz0t z^WY`S_XRNXMbG&XGs8GO9c4yD{AJJiN=VmNlUO@Uq3dfx*VjGg8%&py)e`5MK>6h; zS>H+`@X7jiDB>l~cRJ->UN(uf}5MKLTx_>hsj?3D5bjqQ7B%i(UM`7%4Pr zpHZU{rZMK}hCfZGeE`7LF^$H9*(L^Z%C`$>4C2H_rm=YPXq>#KWb)r^DMu&&G@g-l zm{0gZ;&}m0kj%-cPgvSS&eZed$lCyS)fLo^z@tfmHD#+3ZKhKM#fqcJ0y0H`WbcRi zU@wP+YGv5^JRgVaLxW*lHOd98P=^Iu8sr%ME9Ed-b@_ROT^mDIUimsQ+NvC^=xtku zU>YB<6=P;N?BbyznB;Xs%hmJsG7vQ9UWqtZ)M|AmT$fPctn{ z#DE3wO*u$JIzt8ir-u|`$wR0oU*N8rJuBLzH_9ehT}r=z&^4x2?6>0jw+p&~&vRI;$2j$z=QXNtmOQ5q`h zECe2P3SBANC!0m4`t$4o)>X8BZSd z$a_ls&ruhmXrJd@fxjGH?lZRQ#fH8 zA-77EVb_1JU}ojIMfKL+0-hK>S6YJzWUV>9j5bzl>D8-O8o7<_L9To?R}Se| z#_NCG-RBxLvr;%01W`+{m1|eEjPEmQ-Q7NZpQspmKUMU`3wCRlg3S*umumWWoL zw-k^oVf}}6icC01cUPBdaF3B;+?fgucX7SxLJwnB$nCNUUFUS2(}%yayL5fU^7P!y z+=ZE1jxxiS1cl*EyJW-2khVR5e4&vPWMY|WER-RuXk=Ec4B|y`#~!N`==Zp>>Z?yF zf|Ian&@d_i5631~3cYPZso3pSbLg`zMCcQ->?X!4*$fw79N=lwoS?q1c8NN0}(a z26vtnv$dkkunalC8LQc*49Fx!B|GL5gNo{MzMefwN)0F>i#h_2MudQr?bF8sXozFI zfNW48*~cJ`H4&QzgHR3z3YD#G_p%>BEv6igIU=DMRx4#Jx7OIU84a1FK)yj=XJv?=dSls8-DwX0otJZbO#RIc5v=NN7(7`3bUs4Ar1v4WRF&( zlIY_>Nu4Zu89=g&QR=Q$8hSbMCk7G4J-ZOD;^dyD!s!)=g|4nf;L$bs4SE_D2AURp z>TRK5A!YjnFbfT%LYMqYOvT~fdHPj zCX469f{6k@5Ej799ITK_0+$mzi3Bw!+re^285`H&*>SgShJ_b6s|I)jvDQuR1yym0 ziIw-T5Sx_PS%JD9;e0)N88hz#QBcYI5qR{du#mES4p|8el{_XOk1LRD87dJE8+_80 zjlMeodl%W0g)MkS3I00v^kIWBV%f!ayk=pdj_rG~MbMxH2!_Df#u@dpwE>f5$*ygE z6l1{$P;?8qe^4k&%6&y3_YZNto^0uvrkFmAf+5?j2t3**WTu{ZG9WTmU2LrSh>-MA zpCk>EY2}WHsvsu#aKQK&W7y$<(Hm&t;{b&gcBU-)1YjY!Pa^Q>Q(T7HXJ|9sjT-rB zN&k#W&n`eHHPT=C<{E{m3w9oegVinPs;*h7!Bq^mE-%W%r-~3;__1t`1+S-AKbHgX z8mnY*hIg;M!H4RnQL^+Mt2;d2DoycFE#;W``Eq zM!}M~k-rq{cVE2cQgeA*D?Yy9ZVl5daU~BID}z|Wmt|XSGi*_C@fmFy08x6(@620s zY1_Tn27r$q>f5%=nWN1{v-&LL7Spbpw0=&+nrv3*1`7SW0Q6+958BmUB6s=%2t)1p zA_9-TBvhvMIw~P?uD;0$7EHQIdAOavj8s^aUlA_8>T_`yWc?hdS3J%5nvmRFe-zg| zvHCjF(I4Cij`s3)Lf-(Xs8HWT;L*2)FWL5NvvSZK@gz&BjlL~0;EQ)|p?T4F5P`hk zMc~o*@XNC!KQXKWut9@a#PKe4lT|7%@0^qeWs}}1U!k+(!OyLfD{_}#4;zt05MD_+==*OT1>i7u)kABKL_#+F; zy)m-7pn$eP)UPFwyd2$Hf6OZ*pSh&cwfQ^3Cg2r2&ufk#gW+LY~=%EUG*%YOyre+nc! z50$0KfjUdA-^vERmaE?x8U=?*oE@1{?1Si5OSu;Y0vyfxdUmnUF~|%S$0EQ^ODQU4 z`;;(K4Hm}>$OHwF?Es4_)Xd5^{Nc|vEx3kZPD}()3r^Z3Z&EQA1)Q{VzMgDq`?zTm zKtS(g1RhNhgsB~602xfUuo3jHQzi2>KQp^Jn!Pl!dX}D-$u_Nx!55PN2|CVvHB3{p z#jtw~*Xc^@3KnVUs@7%H^5K_@+d}|HKzS%rEybb3Y*Gl4x0@ZiJZma1KV=H>oGpmr z;lRai1|x**Dq4f#i?roPX`D7k6E2@DS68f7gagUGtco2DB>h1Z*$<$oBF`&LEs!^A z($lCknhv3((e01GqXSr3{)ovfsnJ6mDCq~O^y~>}#Y?eq6w5`tNhabCh&3IVDzU#n z4XOA{868LpIAT>rjiMcbI@y7kLG3u0^YzG5z^)ZdhX4auJrsdQhe>&<-M|MXSSqpZ zXNKTD+{c}Pm;&?8T*pn_8rIV3qU>pyzhL2_rrxAdjtM4gLo*rQ4%?6&NJ#@Ir1aEF zrX!FO(m4`=M@MmqennuO8WrJaNk2xVXIFv4IV-Wtv{)ault-wX8@4L&tYOnvV-b

}czJKe-C;AgJex^#*pux8yL*;f$^bLO-i5%Ux%dsl&V)kj zn0!nOn4ozoF5HPagUvwsAY8u2rumXT!Uios%&u=cT}%s+U$&ht!h<1sRDGG0t$@pkZjpOQjd7q94yJ?MJ8RGbCfd#Z2Pb_BM-*R&x z-ZLaGi}y@Cd32V%KSlrl*~o;(#H2>Wxk7Ly#TgcU4rh3Z{{LR&f$UZyzy?<-A!Yjn zFbj=dq)$N3Qy_bp%X}56ic3sv^%n@SNr~MOsOx;rx3~HKSA!_1WDNq3bYUT7`y8?o z8Y;O!K-MadXT$%`i^?tJexXp5l>2Rg++WD~o(=#1MJO1ueGvkW`i0DA$N$f&6GaBI zpce~C13pPw#0-h@VJ;U?9lMIJpS{OLT=e7_c`R~uL#M_6{W*w_SiJ8a`@bE^gAFGHHQ#*-cg$n$goD4P z^3)~Ih{_Xj@GB)p9Q^AAaDxwc`F6VAz=z*(wM2HI2Z?*m!QY~5-^dj1uxr0F=m{Cq84vx9fP}D^zUai_Re~TXtgysabB3Mq(7y(N5YtTv zu<=mPrfk1dCbpsNn+4=`3S<|Z<+mVroE@?HZxy6TcD4ipyp8kis)zpd$P5;5M}Xal zQdG+JDPg7>EZ!j?Z&V;V_R!x6pcb5Lmb^($?hiP56X)BphyKj~0ljx2@aS$q_+%b> zCS2GEY}2<$=C}HppLg~?gU;Sqtq6_$dsr1a90?u>s>r`9mJJq(%?%Hc5X#rSF!9{_VgKt18O>`kQ|Nw=c-}uQ8DN8b z0uT1tSa*)>pZFx=*an+NpTbjMgSmlJJ}r6K2Kx-2Jo>D>$G*q)H!-M#lX)9pa5TW@ z01H?7AyE_T^OC<=hVy&F0>8kSVjl``7ylOl3aNYvfk$5!#3@@9YBRNsYWEcZ`KkiR zuEoR$D&j8%4^q&iYq|!GAO8*6Cigk+q z=BLC74fIQZg7{w{@aWfqIM!QlFC&Ib=0?H^E27=Om;f$0Vp|KDGcSE<{c(h;3Y5gB|cVT%khYM$}mH9z9hdaI8Jo zj!g(g^3byU9oLKk$0`)d0QI9}#%;C$2vJ zG=aOCM!))JN&kyV-=k*}{1rHxyWhV_ImzyKQ&4&T&YAY?843RYN(kbg2t4|i5RkGJ zaW-?`kj1|RzF$p3!=@GPE>FbZEyKwJAD z@MtuCQEi{i^AWgCVEOJcjL4XojS;fO`eg0dQxL{6)|RIr*t>iB!FZra=!Yn5;&3FKr2xkt`65CV_2gEI}LFzWD3 z1D`3Hidddj&!=g4@((kheev9M;ScR6>9`?%%Tf+@+KY=SogO|XMA#a2et_F6s_BQodjrh@?p$`3){ z(V>Diwqnyd8@OUVV%Fzjf?|e`VlV&Nzah}jIy#&w-=TGMV<6p`0EKk-avn(onb7SK z2yj>~v*(ZAtSZr6xaU)!8o%C&jsggOn|HKi!-YoUWUDc*XOdI2=orM?;(`k9V!~ZQ z(kj%oMZK;*mT&*k$FAr*^E^71OT>o6&~G%0@pF6V#Dhn(@vEpqnRDc&xpsG$2Xa4i z9B1swo{lEByk0Hxnb-JuA6JFpoFII)Dkr6Ad8h|JGju$#K}2Z; z9%ZCl^}QaGCH<3`7fG48?uxnuY;FTAG_eD5&6BjGxaK3?mab(x;u@pGWe0+~KB#L8 zkW&P;5Dy+Lk^-1U2x_ssBm`wMoh+*pIPA%$W3s|wc&%jBxYG<`S%QoZ%ZUg)>c($S zbC`&PSWXhKlOtfK@}M9tO*@cGk0d80a|+_^<$%v^M>01zNhaJ@dMa{?WKP3_M@yvu zUoxl5OHwjSDobV=hdtTem}GXU76l(_Coiaj+?E3^qrQ9?1YxZLE(q%d2s}C;zk#rruBfmKeQLgr&nU~a0d*!ltp-G&-d@0^S|t8v zS|c&jadKg02rFtho6Q)&fgV&N9Vxy0=o7e4z};(f0p2}Yi{DOjyxC<==rbqwnQity z7_ZItK68?JhB?{hGmXqC_Cl`6Q_VHzH2Xxv@Q6>mWyhSEK zaq0n0SqB7QPyq4_(1tEi#N$#yVh#Lq$D&UT1j<*;(Ga5h^ywil!6kn#4NEo?zf3)! zsRlkR0iS3Ud(lt%{Kg;=K|tw)@GsDD@(A06jrETc9g z=VY3-Qn8CRFhm>VmN(>%zm0gm2G=PXRpwM(YUt7>f_o~Tz*HUJFQrkFUAk0ar{Dn3 z2#GI2q-fkC;5bpwL##g9DAP;%p{;-+4|Tg#rOO1zWTlw_8KLQN#PveM z;172_mR0k(LIB&%ToG3i@HazrC4)g}K2_?rLV6j)ncaQ*VbF7h1|XeE0V)_!uO@Ds zDB|(u0MqwnmR)2tQGSsR-MosU#}$mh`Y^qMG3omnr9p%1$wnMdYZ^w4u15SOeMY5T ztJZ7V!+#AU;t%Dme2q5o%M`wOv0N_=Y~aR5*CGz8oK~opssmxYb?G|9qY2_dH>*5U z@qw>bz*BLgR+)JLUL#kc8wB=1Ru&&a$|@hg9SL9smHd@R#QC8{HGRz7g$25iU-vUM zSm=V#r0T9O#aA)var$`mK^DDQP>QBerAI8BVTi*IUn8*x=8Kiwx&hqUVHF2*1>E1r z_e0W6NW4a$0ai<4AJC{g1L`!>*8*shJ_ZNq(9MEOFhr(o)qe`YXGFY2rNxRlC-O2CM25>kTpId^u&R@0BX35)z?ghuU z4p|%MO$^5EEH^kH_pi~L5z{+SpBk^EbQc4T)7P8{lJ4f`3BiEz7Jgf_OE-biTRHDE z9Kct@ZI|4BalmYi?m_G|dfTvp{xio~z84XF`c$cr4f$`8*vT%=0jLc)bqq@`-G{hM z`ed$nVPA7U;`Eu3g9)n}aR#qClNYC0b^#a{#=ecAFk;|J+zkV!HEb5~U!w;&dMpk% zAEvkS<6&{RH#Ob|0b)y|!j+S?%0NTV@8Ha%tpdH1AEu%eMJvp^5V=V|RCO4JI!nfd zLTV;HyOYaK>D>T9^Yb++&B~>R5ZSLEBy9{9IZn{x+h=j0Idop2_aOBeeG;ya4Wr(R zC^YUVBFb zy38}orDBxZlK?74sC?X{Oo1ota~OCz|A-kdLreg<3BbOOWAEl4o&%YOh$SW)80-3U zG_=MoyK2CHR4953zqlf70o(46Gj)7Zq0Fb6ZMeGL77So6eE^{S^g;ZJ--3;p58(wn K9`IWq%={nn1=#-p literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/.buildinfo b/connectors/vmware/doc/_build/html/.buildinfo new file mode 100644 index 000000000..cd98838b0 --- /dev/null +++ b/connectors/vmware/doc/_build/html/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 5c34505a03d196bacf5235352ea2ec0d +tags: a205e9ed8462ae86fdd2f73488852ba9 diff --git a/connectors/vmware/doc/_build/html/_images/archi.png b/connectors/vmware/doc/_build/html/_images/archi.png new file mode 100644 index 0000000000000000000000000000000000000000..82dca91fec4159d8be96155e65412aa0fd645059 GIT binary patch literal 29775 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 literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_sources/exploitation/index.txt b/connectors/vmware/doc/_build/html/_sources/exploitation/index.txt new file mode 100644 index 000000000..c5657eb15 --- /dev/null +++ b/connectors/vmware/doc/_build/html/_sources/exploitation/index.txt @@ -0,0 +1,1384 @@ +============ +Exploitation +============ + +Présentation de Centreon-esxd +----------------------------- + +Principes Généraux +`````````````````` + +Centreon-esxd est un programme Perl chargé de récupérer des indicateurs VMWare. Ce programme utilise le SDK Perl fourni par VMWare afin de se connecter et récupérer les informations d'un (ou plusieurs) VirtualCenter. Pour cela il effectue une connexion TCP avec le(s) VirtualCenter. + +Par défaut, « centreon-esxd » lance au moins deux processus (nommé respectivement « handle-client », « handle-vsphere-xxxx ») : + +*« handle-client »*: + *Processus en attente des demandes des clients « centreon_esx_client.pl ».* + +Voici le fonctionnement : + +- Un client se connecte. +- Le client demande un indicateur de supervision sur un VirtualCenter. +- Le processus « handle-client » fourni cette demande au processus « handle-vsphere-xxxx ». +- Une réponse est fournie par « handle-vsphere-xxxx » à « handle-client ». +- Le processus « handle-client » fourni la réponse au client. + +*« handle-vsphere-xxxx »*: + *Processus ayant le rôle de se connecter et garder ouverte une session avec son VirtualCenter (De plus, dans un souci de performances, un cache de description des données de performances est créé).* + +Enfin, ce processus récupère les indicateurs VMWare en créant un sous-processus par demande. + +Centreon-esxd nécessite impérativement l'utilisation d'un (ou plusieurs) VirtualCenter. Il n'est pas possible de récupérer les informations d'un serveur ESX directement. + +Voici un exemple d'architecture éclaté : + +.. image:: ../images/archi.png + +Mode de fonctionnement +`````````````````````` +Le programme « centreon-esxd » fonctionne uniquement en mode « daemon ». (dans le sens où il ne peut fournir les indicateurs sans l'utilisation d'un client). + +Lors de l'utilisation du plugin *centreon_esx_client.pl*, on passe des chaînes de caractères qui vont être lier aux différentes librairies dans *"/usr/share/centreon/lib/centreon-esxd"* et qui va être ensuite communiquer au Vcenter qui va au final retourner le résultat au Client. Le client ouvre une liaison TCP avec le serveur pour récolter les informations nécessaires. + +Configuration du connecteur +``````````````````````````` +Le daemon « centreon-esxd » possède un fichier de configuration « centreon_esxd.pm » de la forme suivante :: + + our $libpath = '/usr/share/centreon/lib/centreon-esxd'; + our $port = 5700; + our %vsphere_server = ('default' => {'url' => 'https://XXXXXX/sdk', + 'username' => 'XXXXX', + 'password' => 'XXXXX'}, + 'testvc' => {'url' => 'https://XXXXXX/sdk', + 'username' => 'XXXXX', + 'password' => 'XXXXXX'} + our $TIMEOUT_VSPHERE = 60; + our $TIMEOUT = 60; + our $TIMEOUT_KILL = 30; + our $REFRESH_KEEPER_SESSION = 15; + # Log Mode: 0 = stdout, 1 = file, 2 = syslog + our $log_mode = 1; + # Criticity: 0 = nothing, 1 = critical, 3 = info + our $log_crit = 1; + # Specify if $log_mode = 2 and CPAN Module Unix::Syslog is installed + our $log_facility; + #our $log_facility = LOG_DAEMON; + our $LOG = "/tmp/centreon_esxd.log"; + +La variable «%vsphere_server » permet de configurer les accès aux différents VirtualCenter. Il est nécessaire d'avoir au moins l'entrée 'default'. + +La variable « $port » permet de configurer le port d'écoute du connecteur « centreon-esxd ». + +Il est aussi possible de modifier la variable « $log_mode » si vous souhaitez utiliser « syslog » au lieu d'un fichier à plat. + +Il est déconseillé de modifier les variables suivantes : « $REFRESH_KEEPER_SESSION », « $TIMEOUT_KILL », « $ TIMEOUT_VSPHERE » et « $TIMEOUT », car ils sont configurés pour une utilisation optimale. + + +Optimisation de la configuration dans Centreon +---------------------------------------------- + +Afin d'exploiter pleinement « centreon-esxd », il est recommandé d'effectuer une série d'action préalablement. + +Ce connecteur permet la définition de trois modèles d'hôtes : + +- le modèle hôte « VMWare-VM » : modèle d'une machine virtuelle. +- le modèle hôte « VMWare-ESX » : modèle d'un serveur ESX. +- le modèle hôte « VMWare-VC » : modèle d'un virtualCenter (Ce modèle contient notamment des services pour les « datastores ») + +Tous les plugins de contrôle VMWare ont quelques attributs en commun, qui peuvent être défini dans des modèles afin de simplifier la configuration. + ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| Macro Name | Macro Value | Ressource ou la macro doit être défini (recommandé) | +| | | | ++====================+===================================================================+================================================================+ +| HOSTESXDHOST | Ip ou nom d'hôte du serveur exécutant le daemon « centreon-esxd » | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| HOSTESXDPORT | Port du daemon | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| HOSTVCNAME | Nom identifiant le VirtualCenter | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ + +Le login et le mot de passe du VirtualCenter se situe directement dans le fichier de configuration « centreon_esxd.pm » qui se situe normalement dans "*/etc/centreon/centreon_esxd.pm*" . Ce système évite la visualisation d'un mot de passe dans l'interface « centreon ». + + +Création d'un modèle d'hôte VMWare générique +```````````````````````````````````````````` + +Aller dans le menu configuration/host/template/, et créer un modèle d'hôte « VMWare ». Ce modèle d'hôte sera le modèle parent pour les modèles « VMWare-VM », « VMWare-ESX » et « VMWare-VC ». + +Configurer l'ensemble des champs comme indiqué dans la documentation Centreon. + +Définir les macros suivante : + ++---------------------+-------------------------------------------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+===================================================================+ +| ESXDHOST | Exemple: 10.30.10.30 | ++---------------------+-------------------------------------------------------------------+ +| ESXDPORT | 5700 (port par défaut) | ++---------------------+-------------------------------------------------------------------+ +| VCNAME | default | ++---------------------+-------------------------------------------------------------------+ + +Troubleshooting +``````````````` + +Il est possible de retrouver des erreurs de ce type dans les « log » de « centreon-esxd » :: + + ...SOAP request error - possibly a protocol issue: read failed: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac... + +Le SDK Perl VMWare génère cette erreur de temps en temps mais ne bloque pas le fonctionnement du connecteur. + +Il est nécessaire de remonter un problème dans le cas d'un trop grand nombres de déconnexion du daemon au VirtualCenter. + + +Liste des contrôles +------------------- + +Contrôles ESX +````````````` +CPU +''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_cpuhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation CPU d'un serveur ESX. Le nombre de métrique renvoyé dépend du nombre de CPUs. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | cpu_total=17.87%;10;90;0;100 cpu0=10.38%;;0;100 cpu1=8.66%;;0;100 cpu2=9.45%;;0;100 cpu3=8.91%;;0;100 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++===========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | cpuhost | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--light-perfdata``\ | (optionnel) Permet d'afficher uniquement la perfdata du CPU total |   | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u cpuhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MEMOIRE +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_memhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 3 métriques sont renvoyés : | +| | - le taux d'utilisation mémoire (en octets), | +| | - la taille totale de la mémoire (en octets), | +| | - la mémoire suralloué par la totalité des VMs ('overhead' en octets) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | used=56196403200o;6870586573;61835279155;0;68705865728 size=68705865728o overhead=1773761536o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | memhost | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u memhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +RESEAU +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_nethost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'une interface réseau physique d'un serveur ESX. 2 métriques sont renvoyés : | +| | - le taux d'utilisation en entrée et sortie (en b/s). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) « traffic_* » est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | traffic_in=598016b/s traffic_out=172032b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | nethost | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--nic``\ | Nom de l'interface réseau physique | vmnic0 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| NICNAME | | ++---------------------+--------------------------------+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u nethost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ --nic "$_SERVICENICNAME$" + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +SWAP +'''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_swaphost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 2 métriques sont renvoyés : | +| | - le taux de lecture et d'écriture du swap globale de l'ensemble des machines virtuelles (en Mb/s). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) « swap_* » est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | swap_in=0b/s swap_out=0b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | swaphost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 0.8) Seuil warning en MB/s | 0.5 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 1) Seuil critique en MB/s | 1.5 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 0.8 | ++---------------------+--------------------------------+ +| CRITICAL | 1 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u swaphost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +DATASTORES +'''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoreshost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'une interface réseau physique d'un serveur ESX. 2 métriques sont renvoyés par le datastore : | +| | - la latence totale en lecture et écriture (en ms). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | 'trl_LUN1'=0.00ms 'twl_LUN1'=0.00ms 'trl_LUN2'=0.00ms 'twl_LUN2'=1.00ms | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++============================+====================================================================================+================================================================+ +| -u | Indicateur à contrôler | datastoreshost | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--filter-datastores``\ | (optionnel) Permet de filtrer les datastores à traiter (séparé par des virgules) | LUN1,LUN2 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes) Seuil warning en ms | 75 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes) Seuil critique en ms | 90 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 30 | ++---------------------+--------------------------------+ +| CRITICAL | 50 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u datastoreshost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +COUNTVM +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_countvmhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 1 métrique est remontée : | +| | - le nombre de machines virtuelles allumées. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « count » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « count » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « count » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | count=45 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | countvmhost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes valeurs) Seuil warning en ms | 10 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes valeurs) Seuil critique en ms | 15 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 10 | ++---------------------+--------------------------------+ +| CRITICAL | 15 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u countvmhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +HEALTH +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_healthhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état des sondes matériels et processeurs d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | Remonte un état selon l'état des sondes: | +| | - "Yellow" correspond à WARNING. | +| | - "Red" correspond à CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | healthhost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u healthhost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MAINTENANCE +''''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_maintenancehost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le mode de maintenance d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « CRITICAL » si le serveur ESX est en mode de maintenance. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | maintenancehost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u maintenancehost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +STATUT +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_statushost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état global d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « CRITICAL » si le statut du serveur ESX est en « red » . | +| | - Remonte l'état « WARNING » si le statut du serveur ESX est en « yellow » . | +| | - Remonte l'état « UNKNOWN » si le statut du serveur ESX est en « gray » . | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | statushost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u statushost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +Contrôles d'une machine virtuelle +````````````````````````````````` + +CPU +''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_cpuvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation CPU d'une machine virtuelle. Le nombre de métrique renvoyé dépend du nombre de CPUs. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | cpu_total=0.22%;80;90;0;100 cpu_total_MHz=5.00MHz cpu0_MHz=2.00MHz | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | cpuvm | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u cpuvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MEMOIRE +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_memvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'une machine virtuelle. 6 métriques sont renvoyés : | +| | - « used » : la taille mémoire occupée par la machine virtuelle sur le serveur physique (en octets) | +| | - « size » : la taille totale de la mémoire allouée pour la machine virtuelle (en octets) | +| | - « overhead » : la mémoire sur-alloué (en octets) | +| | - « ballooning », « shared » et « active ». | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | usage=362747904o;1717986918;1932735283;0;2147483648 size=2147483648o overhead=22743040o ballooning=0o shared=4561920o active=70148096o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | memvm | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u memvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +DATASTORES +'''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoresvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation des datastores rattachées à une machine virtuelle. 2 métriques sont renvoyés par datastore : | +| | - « riops » : le nombre moyen d'I/O de lectures par seconde | +| | - « wiops » : le nombre moyen d'I/O d'écritures par seconde | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si une métrique est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si une métrique est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si une métrique est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | 'riops_LUN1'=0.00iops 'wiops_LUN1'=0.27iops 'riops_LUN2'=20.00iops 'wiops_LUN2'=100.2iops | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+====================================================================================+================================================================+ +| -u | Indicateur à contrôler | datastoresvm | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes) Seuil warning en ms | 100 | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes) Seuil critique en ms | 150 | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 100 | ++---------------------+--------------------------------+ +| CRITICAL | 150 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u datastoresvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +VMTOOLS +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_toolsvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état des VMTools rattachées à une machine virtuelle. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « WARNING » si les VMTools sont 'toolsold'. | +| | - Remonte l'état « CRITICAL » si les VMTools sont 'toolsnotrunning' ou 'toolsnotinstalled'. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | toolsvm | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u toolsvm + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +SNAPSHOTS +''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_snapshotvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle la présence et/ou la date de création des snapshots rattachées à une machine virtuelle. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | L'état dépend des paramètres du plugin : | +| | - Si « --warn » spécifié seul : remonte un état WARNING si un snapshost est présent. | +| | - Si « --crit » spécifié seul : remonte un état CRITICAL si un snapshost est présent. | +| | - Si « --warn » et « --older XXX » : remonte un état WARNING si un snapshost est présent et la date de création du | +| | snapshot le plus ancien est plus vielle que « temps_courant – XXX » | +| | - Si « --crit » et « --older XXX » : remonte un état CRITICAL si un snapshost est présent et la date de création du | +| | snapshot le plus ancien est plus vielle que « temps_courant – XXX » | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++====================+==========================================================================================+================================================================+ +| -u | Indicateur à contrôler | snapshotvm | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--warn``\ | (optionnel) Permet de spécifier un état WARNING | | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--crit``\ | (optionnel) Permet de spécifier un état CRITICAL | | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--older``\ | (optionnel) le temps en secondes du snaphost le plus vieux par rapport au temps courant | 86400 (snapshot vieux de + 1jour) | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| THRESHOLD | - -warn | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u snapshotvm $_SERVICETHRESHOLD$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +Contrôle d'un datastore +``````````````````````` + +USAGE +''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoreusage | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'un datastore. 2 métriques sont renvoyés : | +| | - « used » : l'espace occupé par le datastore (en octets) | +| | - « size » : la taille totale allouée pour le datastore (en octets) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | used=506574405632o;;;0;643976658944 size=643976658944o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | datastore-usage | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du datastore ciblé | dsname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| DSNAME | | ++---------------------+--------------------------------+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-usage --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +DATASTORE I/O +''''''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastorio | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation (I/O) d'un datastore. 2 métriques sont renvoyés : | +| | - « read_rate » : le taux d'utilisation moyen en lecture par seconde (en b/s) | +| | - « write_rate » : la taille d'utilisation moyen en écriture par seconde (en b/s) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | read_rate=1589248b/s write_rate=14344192b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | datastore-io | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du datastore ciblé | dsname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en kBps | 100 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en kBps | 200 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| DSNAME | | ++---------------------+--------------------------------+ +| WARNING | 100 | ++---------------------+--------------------------------+ +| CRITICAL | 150 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-io --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + diff --git a/connectors/vmware/doc/_build/html/_sources/index.txt b/connectors/vmware/doc/_build/html/_sources/index.txt new file mode 100644 index 000000000..8f840209e --- /dev/null +++ b/connectors/vmware/doc/_build/html/_sources/index.txt @@ -0,0 +1,24 @@ +.. Centreon ESXD documentation master file, created by + sphinx-quickstart on Mon Apr 22 11:17:38 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Centreon ESXD's documentation! +========================================= + +Contents: + +.. toctree:: + :maxdepth: 2 + + installation/index + exploitation/index + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/connectors/vmware/doc/_build/html/_sources/installation/index.txt b/connectors/vmware/doc/_build/html/_sources/installation/index.txt new file mode 100644 index 000000000..3534d2c3c --- /dev/null +++ b/connectors/vmware/doc/_build/html/_sources/installation/index.txt @@ -0,0 +1,191 @@ +============ +Installation +============ + +Pré-Requis +========== + +Préconisations logicielles +`````````````````````````` + +Le connecteur "centreon-esxd" est testé et validé sur des environnements Linux. +L'installation sur d'autres environnements n'est pas exclu mais non présenté dans ce document (Solaris, Windows, ...). + +==================== ===================== +Logiciels Version minimum +==================== ===================== +VMWare SDK Perl 5.0 +Perl 5.8 +centreon-esxd 1.3 +==================== ===================== + +Préconisations matérielles +`````````````````````````` + +Le matériel nécessaire dépend du nombre de demandes de vérifications. Par défaut, le connecteur n'effectue aucunes vérifications. Les ressources minimales sont de : + +* mémoire vive : 512 Mo minimum (Peut sensiblement augmenter en fonction du nombre de contrôle). + +* CPU : même pré-requis que pour le serveur de collecte. + +Installation de centreon-esxd - Environnement centos/rhel 5 +=========================================================== + +Installation du SDK Perl VMWare +``````````````````````````````` + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l'installer. Pour cela nous allons commencer par installer CPAN qui est le nom d'un module Perl qui rend aisés le téléchargement, l'installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN. + + +Installer les pré-requis CPAN:: + + root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel + root # yum install perl-XML-LibXML perl-Crypt-SSLeay + + root # cpan install Class::MethodMaker + root # cpan install LWP + root # cpan install Net::SSLeay + root # cpan install LWP::Protocol::https + root # cpan install SOAP::Lite + + root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz + root # tar zxvf UUID-0.04.tar.gz + root # cd UUID-0.04 + root # perl Makefile.PL + root # make && make install + +Nous avons notre environnement prêt pour l'installation du SDK VMWare. + +Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (`SDK VMWare `_). + +Installer le SDK Perl VMWare:: + + root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz + root # cd vmware-vsphere-cli-distrib + root # perl Makefile.pl + root # make && make install + +Installation de modules complémentaires +``````````````````````````````````````` + +Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd : + +Pour envoyer les logs au daemon « syslog », il est nécessaire d'installer le module « Unix::Syslog »:: + + root # cpan install Unix::Syslog + +Pour vérifier la date des snapshots d'une machine virtuelle, il est nécessaire d'installer le module « DateTime::Format::ISO8601 » ( **ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué** ):: + + root # cpan install DateTime + root # cpan install DateTime::Format::ISO8601 + root # o conf make /usr/bin/make + root # o conf commit + +Ensuite redémarrer votre système. + +Installation de centreon-esxd +````````````````````````````` + +Télécharger l'archive de « centreon-esxd ». + +Installer les fichiers:: + + root # tar zxvf centreon-esxd-1.X.tar.gz + root # cd centreon-esxd-1.X + root # cp centreon_esxd /usr/bin/ + + root # mkdir -p /etc/centreon + root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm + root # cp centreon_esxd-init /etc/init.d/centreon_esxd + + root # mkdir -p /usr/share/centreon/lib/centreon-esxd + root # cp lib/* /usr/share/centreon/lib/centreon-esxd/ + +Activer le daemon « centreon-esxd » au démarrage:: + + root # chkconfig --level 2345 centreon_esxd on + + +*Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».* + +Installation de centreon-esxd - Environnement centos/rhel 6 +=========================================================== + +Installation du sdk Perl VMWare +``````````````````````````````` + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l'installer. Pour cela nous allons commencer par installer CPAN qui est le nom d'un module Perl qui rend aisés le téléchargement, l'installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN. + +Installer les pré-requis CPAN:: + + root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel perl-CPAN libuuid-devel + root # yum install perl-XML-LibXML perl-Crypt-SSLeay perl-Class-MethodMaker perl-SOAP-Lite + + root # cpan install Test::More + root # cpan install LWP + root # cpan install Net::SSLeay + root # cpan install LWP::Protocol::https + + root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz + root # tar zxvf UUID-0.04.tar.gz + root # cd UUID-0.04 + root # perl Makefile.PL + root # make && make install + +Nous avons notre environnement prêt pour l'installation du SDK VMWare. + +Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (`SDK VMWare `_) + +Installer le SDK Perl VMWare:: + + root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz + root # cd vmware-vsphere-cli-distrib + root # perl Makefile.pl + root # make && make install + +Installation de modules complémentaires +``````````````````````````````````````` + +Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd : + +Pour envoyer les logs au daemon « syslog », il est nécessaire d'installer le module « Unix::Syslog »:: + + root # cpan install Unix::Syslog + +Pour vérifier la date des snapshots d'une machine virtuelle, il est nécessaire d'installer le module « DateTime::Format::ISO8601 » ( **ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué** ):: + + root # cpan install DateTime + root # cpan install DateTime::Format::ISO8601 + root # o conf make /usr/bin/make + root # o conf commit + +Ensuite redémarrer votre système. + +Installation de centreon-esxd +````````````````````````````` + +Télécharger l'archive de « centreon-esxd ». + +Installer les fichiers:: + + root # tar zxvf centreon-esxd-1.X.tar.gz + root # cd centreon-esxd-1.X + root # cp centreon_esxd /usr/bin/ + + root # mkdir -p /etc/centreon + root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm + root # cp centreon_esxd-init /etc/init.d/centreon_esxd + + root # mkdir -p /usr/share/centreon/lib/centreon-esxd + root # cp lib/* /usr/share/centreon/lib/centreon-esxd/ + +Activer le daemon « centreon-esxd » au démarrage:: + + root # chkconfig --level 2345 centreon_esxd on + + +*Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».* + + diff --git a/connectors/vmware/doc/_build/html/_static/ajax-loader.gif b/connectors/vmware/doc/_build/html/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/basic.css b/connectors/vmware/doc/_build/html/_static/basic.css new file mode 100644 index 000000000..a04c8e137 --- /dev/null +++ b/connectors/vmware/doc/_build/html/_static/basic.css @@ -0,0 +1,540 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: 170px; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + width: 30px; +} + +img { + border: 0; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li div.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable dl, table.indextable dd { + margin-top: 0; + margin-bottom: 0; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- general body styles --------------------------------------------------- */ + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.field-list ul { + padding-left: 1em; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.field-list td, table.field-list th { + border: 0 !important; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.refcount { + color: #060; +} + +.optional { + font-size: 1.3em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +tt.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +tt.descclassname { + background-color: transparent; +} + +tt.xref, a tt { + background-color: transparent; + font-weight: bold; +} + +h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/_static/comment-bright.png b/connectors/vmware/doc/_build/html/_static/comment-bright.png new file mode 100644 index 0000000000000000000000000000000000000000..551517b8c83b76f734ff791f847829a760ad1903 GIT binary patch literal 3500 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 A2LJ#7 literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/comment.png b/connectors/vmware/doc/_build/html/_static/comment.png new file mode 100644 index 0000000000000000000000000000000000000000..92feb52b8824c6b0f59b658b1196c61de9162a95 GIT binary patch literal 3445 zcmV-*4T|!KP)Oz@Z0f2-7z;ux~O9+4z06=<WDR*FRcSTFz- zW=q650N5=6FiBTtNC2?60Km==3$g$R3;-}uh=nNt1bYBr$Ri_o0EC$U6h`t_Jn<{8 z5a%iY0C<_QJh>z}MS)ugEpZ1|S1ukX&Pf+56gFW3VVXcL!g-k)GJ!M?;PcD?0HBc- z5#WRK{dmp}uFlRjj{U%*%WZ25jX z{P*?XzTzZ-GF^d31o+^>%=Ap99M6&ogks$0k4OBs3;+Bb(;~!4V!2o<6ys46agIcq zjPo+3B8fthDa9qy|77CdEc*jK-!%ZRYCZvbku9iQV*~a}ClFY4z~c7+0P?$U!PF=S z1Au6Q;m>#f??3%Vpd|o+W=WE9003S@Bra6Svp>fO002awfhw>;8}z{#EWidF!3EsG z3;bXU&9EIRU@z1_9W=mEXoiz;4lcq~xDGvV5BgyU zp1~-*fe8db$Osc*A=-!mVv1NJjtCc-h4>-CNCXm#Bp}I%6j35eku^v$Qi@a{RY)E3 zJ#qp$hg?Rwkvqr$GJ^buyhkyVfwECO)C{#lxu`c9ghrwZ&}4KmnvWKso6vH!8a<3Q zq36)6Xb;+tK10Vaz~~qUGsJ8#F2=(`u{bOVlVi)VBCHIn#u~6ztOL7=^<&SmcLWlF zMZgI*1b0FpVIDz9SWH+>*hr`#93(Um+6gxa1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HIG_C zt)aG3uTh7n6Et<2In9F>NlT@zqLtGcXcuVrX|L#Xx)I%#9!{6gSJKPrN9dR61N3(c z4Tcqi$B1Vr8Jidf7-t!G7_XR2rWwr)$3XQ?}=hpK0&Z&W{| zep&sA23f;Q!%st`QJ}G3cbou<7-yIK2z4nfCCCtN2-XOGSWo##{8Q{ATurxr~;I`ytDs%xbip}RzP zziy}Qn4Z2~fSycmr`~zJ=lUFdFa1>gZThG6M+{g7vkW8#+YHVaJjFF}Z#*3@$J_By zLtVo_L#1JrVVB{Ak-5=4qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>={htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMoS*2K2 zT3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+pe~4wtZn|Vi#w(#jeBd zlf9FDx_yoPJqHbk*$%56S{;6Kv~mM9!g3B(KJ}#RZ#@)!hR|78Dq|Iq-afF%KE1Brn_fm;Im z_u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h%dBOEvi`+x zi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2eM~nS7yJ>iOM;atDY;(?aZ^v+mJV$@1Ote z62cPUlD4IWOIIx&SmwQ~YB{nzae3Pc;}r!fhE@iwJh+OsDs9zItL;~pu715HdQEGA zUct(O!LkCy1<%NCg+}G`0PgpNm-?d@-hMgNe6^V+j6x$b<6@S<$+<4_1hi}Ti zncS4LsjI}fWY1>OX6feMEuLErma3QLmkw?X+1j)X-&VBk_4Y;EFPF_I+q;9dL%E~B zJh;4Nr^(LEJ3myURP{Rblsw%57T)g973R8o)DE9*xN#~;4_o$q%o z4K@u`jhx2fBXC4{U8Qn{*%*B$Ge=nny$HAYq{=vy|sI0 z_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq?ybB}ykGP{?LpZ? z-G|jbTmIbG@7#ZCz;~eY(cDM(28Dyq{*m>M4?_iynUBkc4TkHUI6gT!;y-fz>HMcd z&t%Ugo)`Y2{>!cx7B7DI)$7;J(U{Spm-3gBzioV_{p!H$8L!*M!p0uH$#^p{Ui4P` z?ZJ24cOCDe-w#jZd?0@)|7iKK^;6KN`;!@ylm7$*nDhK&GcDTy000JJOGiWi{{a60 z|De66lK=n!32;bRa{vGf6951U69E94oEQKA00(qQO+^RV2nzr)JMUJvzW@LNr%6OX zR5;6Zk;`k`RTRfR-*ac2G}PGmXsUu>6ce?Lsn$m^3Q`48f|TwQ+_-Qh=t8Ra7nE)y zf@08(pjZ@22^EVjG*%30TJRMkBUC$WqZ73uoiv&J=APqX;!v%AH}`Vx`999MVjXwy z{f1-vh8P<=plv&cZ>p5jjX~Vt&W0e)wpw1RFRuRdDkwlKb01tp5 zP=trFN0gH^|L4jJkB{6sCV;Q!ewpg-D&4cza%GQ*b>R*=34#dW;ek`FEiB(vnw+U# zpOX5UMJBhIN&;D1!yQoIAySC!9zqJmmfoJqmQp}p&h*HTfMh~u9rKic2oz3sNM^#F zBIq*MRLbsMt%y{EHj8}LeqUUvoxf0=kqji62>ne+U`d#%J)abyK&Y`=eD%oA!36<)baZyK zXJh5im6umkS|_CSGXips$nI)oBHXojzBzyY_M5K*uvb0_9viuBVyV%5VtJ*Am1ag# zczbv4B?u8j68iOz<+)nDu^oWnL+$_G{PZOCcOGQ?!1VCefves~rfpaEZs-PdVYMiV z98ElaJ2}7f;htSXFY#Zv?__sQeckE^HV{ItO=)2hMQs=(_ Xn!ZpXD%P(H00000NkvXXu0mjf= 0 && !jQuery(node.parentNode).hasClass(className)) { + var span = document.createElement("span"); + span.className = className; + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this); + }); + } + } + return this.each(function() { + highlight(this); + }); +}; + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated == 'undefined') + return string; + return (typeof translated == 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated == 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('

') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) == 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this == '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/connectors/vmware/doc/_build/html/_static/down-pressed.png b/connectors/vmware/doc/_build/html/_static/down-pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6f7ad782782e4f8e39b0c6e15c7344700cdd2527 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}Z23@f-Ava~9&<9T!#}JFtXD=!G zGdl{fK6ro2OGiOl+hKvH6i=D3%%Y^j`yIkRn!8O>@bG)IQR0{Kf+mxNd=_WScA8u_ z3;8(7x2){m9`nt+U(Nab&1G)!{`SPVpDX$w8McLTzAJ39wprG3p4XLq$06M`%}2Yk zRPPsbES*dnYm1wkGL;iioAUB*Or2kz6(-M_r_#Me-`{mj$Z%( literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/down.png b/connectors/vmware/doc/_build/html/_static/down.png new file mode 100644 index 0000000000000000000000000000000000000000..3003a88770de3977d47a2ba69893436a2860f9e7 GIT binary patch literal 363 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|*pj^6U4S$Y z{B+)352QE?JR*yM+OLB!qm#z$3ZNi+iKnkC`z>}xaV3tUZ$qnrLa#kt978NlpS`ru z&)HFc^}^>{UOEce+71h5nn>6&w6A!ieNbu1wh)UGh{8~et^#oZ1# z>T7oM=FZ~xXWnTo{qnXm$ZLOlqGswI_m2{XwVK)IJmBjW{J3-B3x@C=M{ShWt#fYS9M?R;8K$~YwlIqwf>VA7q=YKcwf2DS4Zj5inDKXXB1zl=(YO3ST6~rDq)&z z*o>z)=hxrfG-cDBW0G$!?6{M<$@{_4{m1o%Ub!naEtn|@^frU1tDnm{r-UW|!^@B8 literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/file.png b/connectors/vmware/doc/_build/html/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..d18082e397e7e54f20721af768c4c2983258f1b4 GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP$HyOL$D9)yc9|lc|nKf<9@eUiWd>3GuTC!a5vdfWYEazjncPj5ZQX%+1 zt8B*4=d)!cdDz4wr^#OMYfqGz$1LDFF>|#>*O?AGil(WEs?wLLy{Gj2J_@opDm%`dlax3yA*@*N$G&*ukFv>P8+2CBWO(qz zD0k1@kN>hhb1_6`&wrCswzINE(evt-5C1B^STi2@PmdKI;Vst0PQB6!2kdN literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/jquery.js b/connectors/vmware/doc/_build/html/_static/jquery.js new file mode 100644 index 000000000..198b3ff07 --- /dev/null +++ b/connectors/vmware/doc/_build/html/_static/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
"+""+"
",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
t
",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/_static/minus.png b/connectors/vmware/doc/_build/html/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..da1c5620d10c047525a467a425abe9ff5269cfc2 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^+#t-s1SHkYJtzcHoCO|{#XvD(5N2eUHAey{$X?>< z>&kweokM_|(Po{+Q=kw>iEBiObAE1aYF-J$w=>iB1I2R$WLpMkF=>bh=@O1TaS?83{1OVknK< z>&kweokM`jkU7Va11Q8%;u=xnoS&PUnpeW`?aZ|OK(QcC7sn8Z%gHvy&v=;Q4jejg zV8NnAO`-4Z@2~&zopr02WF_WB>pF literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/_build/html/_static/pygments.css b/connectors/vmware/doc/_build/html/_static/pygments.css new file mode 100644 index 000000000..d79caa151 --- /dev/null +++ b/connectors/vmware/doc/_build/html/_static/pygments.css @@ -0,0 +1,62 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/_static/searchtools.js b/connectors/vmware/doc/_build/html/_static/searchtools.js new file mode 100644 index 000000000..56676b25b --- /dev/null +++ b/connectors/vmware/doc/_build/html/_static/searchtools.js @@ -0,0 +1,622 @@ +/* + * searchtools.js_t + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilties for the full-text search. + * + * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + +/** + * Simple result scoring code. + */ +var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [filename, title, anchor, descr, score] + // and returns the new score. + /* + score: function(result) { + return result[4]; + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: {0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5}, // used to be unimportantResults + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + // query found in terms + term: 5 +}; + + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, + dataType: "script", cache: true, + complete: function(jqxhr, textstatus) { + if (textstatus != "success") { + document.getElementById("searchindexloader").src = url; + } + }}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + var i; + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + } + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

').appendTo(this.out); + this.output = $('
'); + } + // Prettify the comment rating. + comment.pretty_rating = comment.rating + ' point' + + (comment.rating == 1 ? '' : 's'); + // Make a class (for displaying not yet moderated comments differently) + comment.css_class = comment.displayed ? '' : ' moderate'; + // Create a div for this comment. + var context = $.extend({}, opts, comment); + var div = $(renderTemplate(commentTemplate, context)); + + // If the user has voted on this comment, highlight the correct arrow. + if (comment.vote) { + var direction = (comment.vote == 1) ? 'u' : 'd'; + div.find('#' + direction + 'v' + comment.id).hide(); + div.find('#' + direction + 'u' + comment.id).show(); + } + + if (opts.moderator || comment.text != '[deleted]') { + div.find('a.reply').show(); + if (comment.proposal_diff) + div.find('#sp' + comment.id).show(); + if (opts.moderator && !comment.displayed) + div.find('#cm' + comment.id).show(); + if (opts.moderator || (opts.username == comment.username)) + div.find('#dc' + comment.id).show(); + } + return div; + } + + /** + * A simple template renderer. Placeholders such as <%id%> are replaced + * by context['id'] with items being escaped. Placeholders such as <#id#> + * are not escaped. + */ + function renderTemplate(template, context) { + var esc = $(document.createElement('div')); + + function handle(ph, escape) { + var cur = context; + $.each(ph.split('.'), function() { + cur = cur[this]; + }); + return escape ? esc.text(cur || "").html() : cur; + } + + return template.replace(/<([%#])([\w\.]*)\1>/g, function() { + return handle(arguments[2], arguments[1] == '%' ? true : false); + }); + } + + /** Flash an error message briefly. */ + function showError(message) { + $(document.createElement('div')).attr({'class': 'popup-error'}) + .append($(document.createElement('div')) + .attr({'class': 'error-message'}).text(message)) + .appendTo('body') + .fadeIn("slow") + .delay(2000) + .fadeOut("slow"); + } + + /** Add a link the user uses to open the comments popup. */ + $.fn.comment = function() { + return this.each(function() { + var id = $(this).attr('id').substring(1); + var count = COMMENT_METADATA[id]; + var title = count + ' comment' + (count == 1 ? '' : 's'); + var image = count > 0 ? opts.commentBrightImage : opts.commentImage; + var addcls = count == 0 ? ' nocomment' : ''; + $(this) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-open' + addcls, + id: 'ao' + id + }) + .append($(document.createElement('img')).attr({ + src: image, + alt: 'comment', + title: title + })) + .click(function(event) { + event.preventDefault(); + show($(this).attr('id').substring(2)); + }) + ) + .append( + $(document.createElement('a')).attr({ + href: '#', + 'class': 'sphinx-comment-close hidden', + id: 'ah' + id + }) + .append($(document.createElement('img')).attr({ + src: opts.closeCommentImage, + alt: 'close', + title: 'close' + })) + .click(function(event) { + event.preventDefault(); + hide($(this).attr('id').substring(2)); + }) + ); + }); + }; + + var opts = { + processVoteURL: '/_process_vote', + addCommentURL: '/_add_comment', + getCommentsURL: '/_get_comments', + acceptCommentURL: '/_accept_comment', + deleteCommentURL: '/_delete_comment', + commentImage: '/static/_static/comment.png', + closeCommentImage: '/static/_static/comment-close.png', + loadingImage: '/static/_static/ajax-loader.gif', + commentBrightImage: '/static/_static/comment-bright.png', + upArrow: '/static/_static/up.png', + downArrow: '/static/_static/down.png', + upArrowPressed: '/static/_static/up-pressed.png', + downArrowPressed: '/static/_static/down-pressed.png', + voting: false, + moderator: false + }; + + if (typeof COMMENT_OPTIONS != "undefined") { + opts = jQuery.extend(opts, COMMENT_OPTIONS); + } + + var popupTemplate = '\ +
\ +

\ + Sort by:\ + best rated\ + newest\ + oldest\ +

\ +
Comments
\ +
\ + loading comments...
\ +
    \ +
    \ +

    Add a comment\ + (markup):

    \ +
    \ + reStructured text markup: *emph*, **strong**, \ + ``code``, \ + code blocks: :: and an indented block after blank line
    \ +
    \ + \ +

    \ + \ + Propose a change ▹\ + \ + \ + Propose a change ▿\ + \ +

    \ + \ + \ + \ + \ + \ +
    \ +
    '; + + var commentTemplate = '\ +
    \ +
    \ +
    \ + \ + \ + \ + \ + \ + \ +
    \ +
    \ + \ + \ + \ + \ + \ + \ +
    \ +
    \ +
    \ +

    \ + <%username%>\ + <%pretty_rating%>\ + <%time.delta%>\ +

    \ +
    <#text#>
    \ +

    \ + \ + reply ▿\ + proposal ▹\ + proposal ▿\ + \ + \ +

    \ +
    \
    +<#proposal_diff#>\
    +        
    \ +
      \ +
      \ +
      \ +
      \ + '; + + var replyTemplate = '\ +
    • \ +
      \ +
      \ + \ + \ + \ + \ + \ + \ +
      \ +
    • '; + + $(document).ready(function() { + init(); + }); +})(jQuery); + +$(document).ready(function() { + // add comment anchors for all paragraphs that are commentable + $('.sphinx-has-comment').comment(); + + // highlight search words in search results + $("div.context").each(function() { + var params = $.getQueryParameters(); + var terms = (params.q) ? params.q[0].split(/\s+/) : []; + var result = $(this); + $.each(terms, function() { + result.highlightText(this.toLowerCase(), 'highlighted'); + }); + }); + + // directly open comment window if requested + var anchor = document.location.hash; + if (anchor.substring(0, 9) == '#comment-') { + $('#ao' + anchor.substring(9)).click(); + document.location.hash = '#s' + anchor.substring(9); + } +}); diff --git a/connectors/vmware/doc/_build/html/exploitation/index.html b/connectors/vmware/doc/_build/html/exploitation/index.html new file mode 100644 index 000000000..8982a0e59 --- /dev/null +++ b/connectors/vmware/doc/_build/html/exploitation/index.html @@ -0,0 +1,2376 @@ + + + + + + + + Exploitation — Centreon ESXD 1.0.0 documentation + + + + + + + + + + + + + + +
      +
      +
      +
      + +
      +

      Exploitation

      +
      +

      Présentation de Centreon-esxd

      +
      +

      Principes Généraux

      +

      Centreon-esxd est un programme Perl chargé de récupérer des indicateurs VMWare. Ce programme utilise le SDK Perl fourni par VMWare afin de se connecter et récupérer les informations d’un (ou plusieurs) VirtualCenter. Pour cela il effectue une connexion TCP avec le(s) VirtualCenter.

      +

      Par défaut, « centreon-esxd » lance au moins deux processus (nommé respectivement « handle-client », « handle-vsphere-xxxx ») :

      +
      +
      « handle-client »:
      +
      Processus en attente des demandes des clients « centreon_esx_client.pl ».
      +
      +

      Voici le fonctionnement :

      +
        +
      • Un client se connecte.
      • +
      • Le client demande un indicateur de supervision sur un VirtualCenter.
      • +
      • Le processus « handle-client » fourni cette demande au processus « handle-vsphere-xxxx ».
      • +
      • Une réponse est fournie par « handle-vsphere-xxxx » à « handle-client ».
      • +
      • Le processus « handle-client » fourni la réponse au client.
      • +
      +
      +
      « handle-vsphere-xxxx »:
      +
      Processus ayant le rôle de se connecter et garder ouverte une session avec son VirtualCenter (De plus, dans un souci de performances, un cache de description des données de performances est créé).
      +
      +

      Enfin, ce processus récupère les indicateurs VMWare en créant un sous-processus par demande.

      +

      Centreon-esxd nécessite impérativement l’utilisation d’un (ou plusieurs) VirtualCenter. Il n’est pas possible de récupérer les informations d’un serveur ESX directement.

      +

      Voici un exemple d’architecture éclaté :

      +../_images/archi.png +
      +
      +

      Mode de fonctionnement

      +

      Le programme « centreon-esxd » fonctionne uniquement en mode « daemon ». (dans le sens où il ne peut fournir les indicateurs sans l’utilisation d’un client).

      +

      Lors de l’utilisation du plugin centreon_esx_client.pl, on passe des chaînes de caractères qui vont être lier aux différentes librairies dans “/usr/share/centreon/lib/centreon-esxd” et qui va être ensuite communiquer au Vcenter qui va au final retourner le résultat au Client. Le client ouvre une liaison TCP avec le serveur pour récolter les informations nécessaires.

      +
      +
      +

      Configuration du connecteur

      +

      Le daemon « centreon-esxd » possède un fichier de configuration « centreon_esxd.pm » de la forme suivante :

      +
      our $libpath = '/usr/share/centreon/lib/centreon-esxd';
      +our $port = 5700;
      +our %vsphere_server = ('default' => {'url' => 'https://XXXXXX/sdk',
      +                                   'username' => 'XXXXX',
      +                                   'password' => 'XXXXX'},
      +                     'testvc' =>  {'url' => 'https://XXXXXX/sdk',
      +                                   'username' => 'XXXXX',
      +                                   'password' => 'XXXXXX'}
      +our $TIMEOUT_VSPHERE = 60;
      +our $TIMEOUT = 60;
      +our $TIMEOUT_KILL = 30;
      +our $REFRESH_KEEPER_SESSION = 15;
      +# Log Mode: 0 = stdout, 1 = file, 2 = syslog
      +our $log_mode = 1;
      +# Criticity: 0 = nothing, 1 = critical, 3 = info
      +our $log_crit = 1;
      +# Specify if $log_mode = 2 and CPAN Module Unix::Syslog is installed
      +our $log_facility;
      +#our $log_facility = LOG_DAEMON;
      +our $LOG = "/tmp/centreon_esxd.log";
      +
      +

      La variable «%vsphere_server » permet de configurer les accès aux différents VirtualCenter. Il est nécessaire d’avoir au moins l’entrée ‘default’.

      +

      La variable « $port » permet de configurer le port d’écoute du connecteur « centreon-esxd ».

      +

      Il est aussi possible de modifier la variable « $log_mode » si vous souhaitez utiliser « syslog » au lieu d’un fichier à plat.

      +

      Il est déconseillé de modifier les variables suivantes : « $REFRESH_KEEPER_SESSION », « $TIMEOUT_KILL », « $ TIMEOUT_VSPHERE » et « $TIMEOUT », car ils sont configurés pour une utilisation optimale.

      +
      +
      +
      +

      Optimisation de la configuration dans Centreon

      +

      Afin d’exploiter pleinement « centreon-esxd », il est recommandé d’effectuer une série d’action préalablement.

      +

      Ce connecteur permet la définition de trois modèles d’hôtes :

      +
        +
      • le modèle hôte « VMWare-VM » : modèle d’une machine virtuelle.
      • +
      • le modèle hôte « VMWare-ESX » : modèle d’un serveur ESX.
      • +
      • le modèle hôte « VMWare-VC » : modèle d’un virtualCenter (Ce modèle contient notamment des services pour les « datastores »)
      • +
      +

      Tous les plugins de contrôle VMWare ont quelques attributs en commun, qui peuvent être défini dans des modèles afin de simplifier la configuration.

      +
      +++++ + + + + + + + + + + + + + + + + + + + + +
      Macro NameMacro ValueRessource ou la macro doit être défini (recommandé)
      HOSTESXDHOSTIp ou nom d’hôte du serveur exécutant le daemon « centreon-esxd »Modèle d’hôte VMWare-* de plus bas niveau
      HOSTESXDPORTPort du daemonModèle d’hôte VMWare-* de plus bas niveau
      HOSTVCNAMENom identifiant le VirtualCenterModèle d’hôte VMWare-* de plus bas niveau
      +

      Le login et le mot de passe du VirtualCenter se situe directement dans le fichier de configuration « centreon_esxd.pm » qui se situe normalement dans “/etc/centreon/centreon_esxd.pm” . Ce système évite la visualisation d’un mot de passe dans l’interface « centreon ».

      +
      +

      Création d’un modèle d’hôte VMWare générique

      +

      Aller dans le menu configuration/host/template/, et créer un modèle d’hôte « VMWare ». Ce modèle d’hôte sera le modèle parent pour les modèles « VMWare-VM », « VMWare-ESX » et « VMWare-VC ».

      +

      Configurer l’ensemble des champs comme indiqué dans la documentation Centreon.

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + + + + +
      Macro NameMacro Value
      ESXDHOSTExemple: 10.30.10.30
      ESXDPORT5700 (port par défaut)
      VCNAMEdefault
      +
      +
      +

      Troubleshooting

      +

      Il est possible de retrouver des erreurs de ce type dans les « log » de « centreon-esxd » :

      +
      ...SOAP request error - possibly a protocol issue: read failed: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac...
      +
      +
      +

      Le SDK Perl VMWare génère cette erreur de temps en temps mais ne bloque pas le fonctionnement du connecteur.

      +

      Il est nécessaire de remonter un problème dans le cas d’un trop grand nombres de déconnexion du daemon au VirtualCenter.

      +
      + +
      +

      Liste des contrôles

      +
      +

      Contrôles ESX

      +
      +

      CPU

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_cpuhost
      DescriptionContrôle le taux d’utilisation CPU d’un serveur ESX. Le nombre de métrique renvoyé dépend du nombre de CPUs.
      Fonctionnement
        +
      • Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéescpu_total=17.87%;10;90;0;100 cpu0=10.38%;;0;100 cpu1=8.66%;;0;100 cpu2=9.45%;;0;100 cpu3=8.91%;;0;100
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlercpuhost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      --light-perfdata(optionnel) Permet d’afficher uniquement la perfdata du CPU total 
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u cpuhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      MEMOIRE

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_memhost
      Description
      +
      Contrôle le taux d’utilisation mémoire d’un serveur ESX. 3 métriques sont renvoyés :
      +
        +
      • le taux d’utilisation mémoire (en octets),
      • +
      • la taille totale de la mémoire (en octets),
      • +
      • la mémoire suralloué par la totalité des VMs (‘overhead’ en octets)
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la métrique « used » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéesused=56196403200o;6870586573;61835279155;0;68705865728 size=68705865728o overhead=1773761536o
      Interval/Retry(min)20/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlermemhost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u memhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      RESEAU

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_nethost
      Description
      +
      Contrôle le taux d’utilisation d’une interface réseau physique d’un serveur ESX. 2 métriques sont renvoyés :
      +
        +
      • le taux d’utilisation en entrée et sortie (en b/s).
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la(les) métrique(s) « traffic_* » est(sont) au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéestraffic_in=598016b/s traffic_out=172032b/s
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlernethost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      --nicNom de l’interface réseau physiquevmnic0
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + + + + +
      Macro NameMacro Value
      NICNAME 
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u nethost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ --nic "$_SERVICENICNAME$"
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      SWAP

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_swaphost
      Description
      +
      Contrôle le taux d’utilisation mémoire d’un serveur ESX. 2 métriques sont renvoyés :
      +
        +
      • le taux de lecture et d’écriture du swap globale de l’ensemble des machines virtuelles (en Mb/s).
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la(les) métrique(s) « swap_* » est(sont) au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéesswap_in=0b/s swap_out=0b/s
      Interval/Retry(min)20/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerswaphost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      -w ou --warning(optionnel – Défaut : 0.8) Seuil warning en MB/s0.5
      -c ou --critical(optionnel – Défaut : 1) Seuil critique en MB/s1.5
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING0.8
      CRITICAL1
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u swaphost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      DATASTORES

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_datastoreshost
      Description
      +
      Contrôle le taux d’utilisation d’une interface réseau physique d’un serveur ESX. 2 métriques sont renvoyés par le datastore :
      +
        +
      • la latence totale en lecture et écriture (en ms).
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la(les) métrique(s) est(sont) en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la(les) métrique(s) est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la(les) métrique(s) est(sont) au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyées‘trl_LUN1’=0.00ms ‘twl_LUN1’=0.00ms ‘trl_LUN2’=0.00ms ‘twl_LUN2’=1.00ms
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerdatastoreshost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      --filter-datastores(optionnel) Permet de filtrer les datastores à traiter (séparé par des virgules)LUN1,LUN2
      -w ou --warning(optionnel – Défaut : aucunes) Seuil warning en ms75
      -c ou --critical(optionnel – Défaut : aucunes) Seuil critique en ms90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING30
      CRITICAL50
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u datastoreshost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      COUNTVM

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_countvmhost
      Description
      +
      Contrôle le taux d’utilisation mémoire d’un serveur ESX. 1 métrique est remontée :
      +
        +
      • le nombre de machines virtuelles allumées.
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la métrique « count » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « count » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « count » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéescount=45
      Interval/Retry(min)20/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlercountvmhost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      -w ou --warning(optionnel – Défaut : aucunes valeurs) Seuil warning en ms10
      -c ou --critical(optionnel – Défaut : aucunes valeurs) Seuil critique en ms15
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING10
      CRITICAL15
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u countvmhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      HEALTH

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_healthhost
      DescriptionContrôle l’état des sondes matériels et processeurs d’un serveur ESX.
      Fonctionnement
      +
      Remonte un état selon l’état des sondes:
      +
        +
      • “Yellow” correspond à WARNING.
      • +
      • “Red” correspond à CRITICAL.
      • +
      +
      +
      +
      Métriques renvoyées 
      Interval/Retry(min)30/1
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerhealthhost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
        
        
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u healthhost
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      MAINTENANCE

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_maintenancehost
      DescriptionContrôle le mode de maintenance d’un serveur ESX.
      Fonctionnement
        +
      • Remonte l’état « CRITICAL » si le serveur ESX est en mode de maintenance.
      • +
      +
      Métriques renvoyées 
      Interval/Retry(min)30/1
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlermaintenancehost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
        
        
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u maintenancehost
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      STATUT

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_statushost
      DescriptionContrôle l’état global d’un serveur ESX.
      Fonctionnement
        +
      • Remonte l’état « CRITICAL » si le statut du serveur ESX est en « red » .
      • +
      • Remonte l’état « WARNING » si le statut du serveur ESX est en « yellow » .
      • +
      • Remonte l’état « UNKNOWN » si le statut du serveur ESX est en « gray » .
      • +
      +
      Métriques renvoyées 
      Interval/Retry(min)30/1
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerstatushost
      -e ou --esx-hostNom du serveur ESX cibléesx1.test.fr
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
        
        
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u statushost
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +
      +

      Contrôles d’une machine virtuelle

      +
      +

      CPU

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_cpuvm
      DescriptionContrôle le taux d’utilisation CPU d’une machine virtuelle. Le nombre de métrique renvoyé dépend du nombre de CPUs.
      Fonctionnement
        +
      • Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéescpu_total=0.22%;80;90;0;100 cpu_total_MHz=5.00MHz cpu0_MHz=2.00MHz
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlercpuvm
      --vmNom de la machine virtuelle cibléemyvmname
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u cpuvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      MEMOIRE

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_memvm
      Description
      +
      Contrôle le taux d’utilisation mémoire d’une machine virtuelle. 6 métriques sont renvoyés :
      +
        +
      • « used » : la taille mémoire occupée par la machine virtuelle sur le serveur physique (en octets)
      • +
      • « size » : la taille totale de la mémoire allouée pour la machine virtuelle (en octets)
      • +
      • « overhead » : la mémoire sur-alloué (en octets)
      • +
      • « ballooning », « shared » et « active ».
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la métrique « used » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéesusage=362747904o;1717986918;1932735283;0;2147483648 size=2147483648o overhead=22743040o ballooning=0o shared=4561920o active=70148096o
      Interval/Retry(min)20/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlermemvm
      --vmNom de la machine virtuelle cibléemyvmname
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u memvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      DATASTORES

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_datastoresvm
      Description
      +
      Contrôle le taux d’utilisation des datastores rattachées à une machine virtuelle. 2 métriques sont renvoyés par datastore :
      +
        +
      • « riops » : le nombre moyen d’I/O de lectures par seconde
      • +
      • « wiops » : le nombre moyen d’I/O d’écritures par seconde
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si une métrique est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si une métrique est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si une métrique est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyées‘riops_LUN1’=0.00iops ‘wiops_LUN1’=0.27iops ‘riops_LUN2’=20.00iops ‘wiops_LUN2’=100.2iops
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerdatastoresvm
      --vmNom de la machine virtuelle cibléemyvmname
      -w ou --warning(optionnel – Défaut : aucunes) Seuil warning en ms100
      -c ou --critical(optionnel – Défaut : aucunes) Seuil critique en ms150
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      WARNING100
      CRITICAL150
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u datastoresvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      VMTOOLS

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_toolsvm
      DescriptionContrôle l’état des VMTools rattachées à une machine virtuelle.
      Fonctionnement
        +
      • Remonte l’état « WARNING » si les VMTools sont ‘toolsold’.
      • +
      • Remonte l’état « CRITICAL » si les VMTools sont ‘toolsnotrunning’ ou ‘toolsnotinstalled’.
      • +
      +
      Métriques renvoyées 
      Interval/Retry(min)20/1
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlertoolsvm
      --vmNom de la machine virtuelle cibléemyvmname
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
        
        
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u toolsvm
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      SNAPSHOTS

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_snapshotvm
      DescriptionContrôle la présence et/ou la date de création des snapshots rattachées à une machine virtuelle.
      Fonctionnement
      +
      L’état dépend des paramètres du plugin :
      +
        +
      • Si « –warn » spécifié seul : remonte un état WARNING si un snapshost est présent.
      • +
      • Si « –crit » spécifié seul : remonte un état CRITICAL si un snapshost est présent.
      • +
      • Si « –warn » et « –older XXX » : remonte un état WARNING si un snapshost est présent et la date de création du +snapshot le plus ancien est plus vielle que « temps_courant – XXX »
      • +
      • Si « –crit » et « –older XXX » : remonte un état CRITICAL si un snapshost est présent et la date de création du +snapshot le plus ancien est plus vielle que « temps_courant – XXX »
      • +
      +
      +
      +
      Métriques renvoyées 
      Interval/Retry(min)20/1
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlersnapshotvm
      --vmNom de la machine virtuelle cibléemyvmname
      --warn(optionnel) Permet de spécifier un état WARNING 
      --crit(optionnel) Permet de spécifier un état CRITICAL 
      --older(optionnel) le temps en secondes du snaphost le plus vieux par rapport au temps courant86400 (snapshot vieux de + 1jour)
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + +
      Macro NameMacro Value
      THRESHOLD
        +
      • -warn
      • +
      +
        
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u snapshotvm $_SERVICETHRESHOLD$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +
      +

      Contrôle d’un datastore

      +
      +

      USAGE

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_datastoreusage
      Description
      +
      Contrôle le taux d’utilisation d’un datastore. 2 métriques sont renvoyés :
      +
        +
      • « used » : l’espace occupé par le datastore (en octets)
      • +
      • « size » : la taille totale allouée pour le datastore (en octets)
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la métrique « used » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéesused=506574405632o;;;0;643976658944 size=643976658944o
      Interval/Retry(min)20/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerdatastore-usage
      -e ou --esx-hostNom du datastore ciblédsname
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en pourcentage75
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en pourcentage90
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + + + + +
      Macro NameMacro Value
      DSNAME 
      WARNING80
      CRITICAL90
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-usage --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +

      DATASTORE I/O

      +
      +
      Fiche d’identité
      + ++++ + + + + + + + + + + + + + + + + + +
      Nom du plugincheck_merethis_vmware_datastorio
      Description
      +
      Contrôle le taux d’utilisation (I/O) d’un datastore. 2 métriques sont renvoyés :
      +
        +
      • « read_rate » : le taux d’utilisation moyen en lecture par seconde (en b/s)
      • +
      • « write_rate » : la taille d’utilisation moyen en écriture par seconde (en b/s)
      • +
      +
      +
      +
      Fonctionnement
        +
      • Remonte un état OK si la métrique « used » est en dessous du seuil WARNING.
      • +
      • Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING.
      • +
      • Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL.
      • +
      +
      Métriques renvoyéesread_rate=1589248b/s write_rate=14344192b/s
      Interval/Retry(min)5/5
      +
      +
      +
      Attribut du contrôle
      + +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
      AttributDescriptionExemple
      -uIndicateur à contrôlerdatastore-io
      -e ou --esx-hostNom du datastore ciblédsname
      -w ou --warning(optionnel – Défaut : 80) Seuil warning en kBps100
      -c ou --critical(optionnel – Défaut : 90) Seuil critique en kBps200
      +

      Le plugin a également besoin des informations sur le daemon « centreon-esxd ».

      + ++++ + + + + + + + + + + + + + +
      OptionComportement
      -HIP ou adresse du serveur hébergeant « centreon-esxd »
      -P(optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd »
      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      +
      +
      +
      Création d’un service et/ou modèle de service
      +

      Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique).

      +

      Définir les macros suivante :

      + ++++ + + + + + + + + + + + + + + + + +
      Macro NameMacro Value
      DSNAME 
      WARNING100
      CRITICAL150
      +
      +
      +
      Création d’une check command
      +

      Afin de simplifier l’utilisation de ce contrôle, il est recommandé de créer la check command suivante :

      +
      $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-io --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$
      +
      +

      L’ensemble des attributs sont déjà défini dans le modèle d’hôte et/ou hôte, et modèle de service et/ou service.

      +
      +
      +
      +
      + + + + + + +
      +
      +

      Table Of Contents

      + + +

      Previous topic

      +

      Installation

      +

      This Page

      + + + +
      +
      +
      + + + + + \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/genindex.html b/connectors/vmware/doc/_build/html/genindex.html new file mode 100644 index 000000000..461f46511 --- /dev/null +++ b/connectors/vmware/doc/_build/html/genindex.html @@ -0,0 +1,92 @@ + + + + + + + + + Index — Centreon ESXD 1.0.0 documentation + + + + + + + + + + + + + +
      +
      +
      +
      + + +

      Index

      + +
      + +
      + + +
      +
      +
      +
      +
      + + + + + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/index.html b/connectors/vmware/doc/_build/html/index.html new file mode 100644 index 000000000..7bce10796 --- /dev/null +++ b/connectors/vmware/doc/_build/html/index.html @@ -0,0 +1,133 @@ + + + + + + + + Welcome to Centreon ESXD’s documentation! — Centreon ESXD 1.0.0 documentation + + + + + + + + + + + + + + +
      + +
      +
      +

      Table Of Contents

      + + +

      Next topic

      +

      Installation

      +

      This Page

      + + + +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/installation/index.html b/connectors/vmware/doc/_build/html/installation/index.html new file mode 100644 index 000000000..9b05d179c --- /dev/null +++ b/connectors/vmware/doc/_build/html/installation/index.html @@ -0,0 +1,314 @@ + + + + + + + + Installation — Centreon ESXD 1.0.0 documentation + + + + + + + + + + + + + + + +
      +
      +
      +
      + +
      +

      Installation

      +
      +

      Pré-Requis

      +
      +

      Préconisations logicielles

      +

      Le connecteur “centreon-esxd” est testé et validé sur des environnements Linux. +L’installation sur d’autres environnements n’est pas exclu mais non présenté dans ce document (Solaris, Windows, ...).

      + ++++ + + + + + + + + + + + + + + + + +
      LogicielsVersion minimum
      VMWare SDK Perl5.0
      Perl5.8
      centreon-esxd1.3
      +
      +
      +

      Préconisations matérielles

      +

      Le matériel nécessaire dépend du nombre de demandes de vérifications. Par défaut, le connecteur n’effectue aucunes vérifications. Les ressources minimales sont de :

      +
        +
      • mémoire vive : 512 Mo minimum (Peut sensiblement augmenter en fonction du nombre de contrôle).
      • +
      • CPU : même pré-requis que pour le serveur de collecte.
      • +
      +
      +
      +
      +

      Installation de centreon-esxd - Environnement centos/rhel 5

      +
      +

      Installation du SDK Perl VMWare

      +

      Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l’installer. Pour cela nous allons commencer par installer CPAN qui est le nom d’un module Perl qui rend aisés le téléchargement, l’installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN.

      +

      Installer les pré-requis CPAN:

      +
      root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel
      +root # yum install perl-XML-LibXML perl-Crypt-SSLeay
      +
      +root # cpan install Class::MethodMaker
      +root # cpan install LWP
      +root # cpan install Net::SSLeay
      +root # cpan install LWP::Protocol::https
      +root # cpan install SOAP::Lite
      +
      +root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz
      +root # tar zxvf UUID-0.04.tar.gz
      +root # cd UUID-0.04
      +root # perl Makefile.PL
      +root # make && make install
      +
      +
      +

      Nous avons notre environnement prêt pour l’installation du SDK VMWare.

      +

      Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (SDK VMWare).

      +

      Installer le SDK Perl VMWare:

      +
      root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz
      +root # cd vmware-vsphere-cli-distrib
      +root # perl Makefile.pl
      +root # make && make install
      +
      +
      +
      +
      +

      Installation de modules complémentaires

      +

      Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd :

      +

      Pour envoyer les logs au daemon « syslog », il est nécessaire d’installer le module « Unix::Syslog »:

      +
      root # cpan install Unix::Syslog
      +
      +
      +

      Pour vérifier la date des snapshots d’une machine virtuelle, il est nécessaire d’installer le module « DateTime::Format::ISO8601 » ( ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué ):

      +
      root # cpan install DateTime
      +root # cpan install DateTime::Format::ISO8601
      +root # o conf make /usr/bin/make
      +root # o conf commit
      +
      +
      +

      Ensuite redémarrer votre système.

      +
      +
      +

      Installation de centreon-esxd

      +

      Télécharger l’archive de « centreon-esxd ».

      +

      Installer les fichiers:

      +
      root # tar zxvf centreon-esxd-1.X.tar.gz
      +root # cd centreon-esxd-1.X
      +root # cp centreon_esxd /usr/bin/
      +
      +root # mkdir -p /etc/centreon
      +root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm
      +root # cp centreon_esxd-init /etc/init.d/centreon_esxd
      +
      +root # mkdir -p /usr/share/centreon/lib/centreon-esxd
      +root # cp lib/* /usr/share/centreon/lib/centreon-esxd/
      +
      +
      +

      Activer le daemon « centreon-esxd » au démarrage:

      +
      root # chkconfig --level 2345 centreon_esxd on
      +
      +
      +

      Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».

      +
      +
      +
      +

      Installation de centreon-esxd - Environnement centos/rhel 6

      +
      +

      Installation du sdk Perl VMWare

      +

      Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement.

      +

      Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l’installer. Pour cela nous allons commencer par installer CPAN qui est le nom d’un module Perl qui rend aisés le téléchargement, l’installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN.

      +

      Installer les pré-requis CPAN:

      +
      root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel perl-CPAN libuuid-devel
      +root # yum install perl-XML-LibXML perl-Crypt-SSLeay perl-Class-MethodMaker perl-SOAP-Lite
      +
      +root # cpan install Test::More
      +root # cpan install LWP
      +root # cpan install Net::SSLeay
      +root # cpan install LWP::Protocol::https
      +
      +root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz
      +root # tar zxvf UUID-0.04.tar.gz
      +root # cd UUID-0.04
      +root # perl Makefile.PL
      +root # make && make install
      +
      +
      +

      Nous avons notre environnement prêt pour l’installation du SDK VMWare.

      +

      Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (SDK VMWare)

      +

      Installer le SDK Perl VMWare:

      +
      root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz
      +root # cd vmware-vsphere-cli-distrib
      +root # perl Makefile.pl
      +root # make && make install
      +
      +
      +
      +
      +

      Installation de modules complémentaires

      +

      Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd :

      +

      Pour envoyer les logs au daemon « syslog », il est nécessaire d’installer le module « Unix::Syslog »:

      +
      root # cpan install Unix::Syslog
      +
      +
      +

      Pour vérifier la date des snapshots d’une machine virtuelle, il est nécessaire d’installer le module « DateTime::Format::ISO8601 » ( ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué ):

      +
      root # cpan install DateTime
      +root # cpan install DateTime::Format::ISO8601
      +root # o conf make /usr/bin/make
      +root # o conf commit
      +
      +
      +

      Ensuite redémarrer votre système.

      +
      +
      +

      Installation de centreon-esxd

      +

      Télécharger l’archive de « centreon-esxd ».

      +

      Installer les fichiers:

      +
      root # tar zxvf centreon-esxd-1.X.tar.gz
      +root # cd centreon-esxd-1.X
      +root # cp centreon_esxd /usr/bin/
      +
      +root # mkdir -p /etc/centreon
      +root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm
      +root # cp centreon_esxd-init /etc/init.d/centreon_esxd
      +
      +root # mkdir -p /usr/share/centreon/lib/centreon-esxd
      +root # cp lib/* /usr/share/centreon/lib/centreon-esxd/
      +
      +
      +

      Activer le daemon « centreon-esxd » au démarrage:

      +
      root # chkconfig --level 2345 centreon_esxd on
      +
      +
      +

      Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».

      +
      +
      +
      + + +
      +
      +
      + +
      +
      + + + + \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/objects.inv b/connectors/vmware/doc/_build/html/objects.inv new file mode 100644 index 0000000000000000000000000000000000000000..6b9e7d70341d5f6891429e463885b3a060ed17b1 GIT binary patch literal 209 zcmY#Z2rkIT%&Sny%qvUHE6FdaR47X=D$dN$Q!wIERtPA{&q_@$u~KjbN*1L8MO}j< zT!0c`5JgrBhI$4-Zb(L|LQ!gNVrE`SYLP;InnFoNX0bwAW=^UCkWS9eEhtJYE>2BR zC@s#+OIN7M$xPDYs + + + + + + + Search — Centreon ESXD 1.0.0 documentation + + + + + + + + + + + + + + + + + + + +
      +
      +
      +
      + +

      Search

      +
      + +

      + Please activate JavaScript to enable the search + functionality. +

      +
      +

      + From here you can search these documents. Enter your search + words into the box below and click "search". Note that the search + function will automatically search for all of the words. Pages + containing fewer words won't appear in the result list. +

      +
      + + + +
      + +
      + +
      + +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + \ No newline at end of file diff --git a/connectors/vmware/doc/_build/html/searchindex.js b/connectors/vmware/doc/_build/html/searchindex.js new file mode 100644 index 000000000..6a665ac86 --- /dev/null +++ b/connectors/vmware/doc/_build/html/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({envversion:42,terms:{"2iop":2,code:[],check_merethis_vmware_datastorio:2,trl_lun2:2,librairi:2,global:[1,2],troi:2,yellow:2,"\u00e9clat\u00e9":2,fourni:2,row:[],indicateur:2,"27iop":2,init:1,"surallou\u00e9":2,aux:2,valeur:2,"d\u00e9j\u00e0":2,sond:2,"valid\u00e9":1,"22743040o":2,sont:[1,2],garder:2,check_merethis_vmware_nethost:2,level:1,"d\u00e9marrag":1,servic:[],x86_64:1,visualis:2,"362747904o":2,"derni\u00e8r":1,direct:2,syslog:[1,2],second:2,pass:2,port:2,vmware:[],supervis:2,"_hostvcnam":2,section:[],quelqu:2,statushost:2,riops_lun1:2,communiqu:2,version:1,sur:[1,2],peuvent:[1,2],net:1,cela:[1,2],"charg\u00e9":2,"contr\u00f4ler":2,voici:2,snapshost:2,bodi:[],solari:1,"fonctionnalit\u00e9":1,modifi:2,valu:2,"m\u00eame":1,"tr\u00e8":1,search:[0,1],"v\u00e9rific":1,"r\u00e9cup\u00e8r":2,beaucoup:1,host:2,datetim:1,action:2,que:[1,2],environn:[],"risqu\u00e9":1,modul:[],souhaitez:[1,2],unix:[1,2],instal:[],total:2,"1773761536o":2,commun:2,lwp:1,pourcentag:2,perl:[],latenc:2,overhead:2,rhel:[],vcenter:2,type:2,more:1,ensuit:[1,2],riop:2,check_merethis_vmware_cpuhost:2,log_daemon:2,filtrer:2,check_merethis_vmware_datastoresvm:2,iso8601:1,warn:2,twl_lun2:2,twl_lun1:2,moin:2,cach:2,"rattach\u00e9":2,augment:1,car:2,uniqu:2,pour:[1,2],minimum:1,taux:2,nagio:1,root:1,"506574405632o":2,tar:1,requi:[],share:[1,2],check_merethis_vmware_swaphost:2,templat:2,critic:2,unzip:1,check_merethis_vmware_healthhost:2,"r\u00e9pons":2,traffic_out:2,suivant:2,gcc:1,refresh_keeper_sess:2,"totalit\u00e9":2,rapport:2,write:[],toolsnotinstal:2,optimal:2,xxxx:2,swap_in:2,mac:2,attent:2,mai:[1,2],datastoresvm:2,datastor:[],"remont\u00e9":2,souci:2,permet:2,light:2,timeout_kil:2,correspond:[1,2],allon:1,issu:2,inform:2,ensembl:2,make:1,"m\u00e9moir":[1,2],"d\u00e9faut":[1,2],offici:[],peut:[1,2],"00mhz":2,afin:2,"h\u00e9bergeant":2,kbp:2,jnh:1,"r\u00e9colter":2,"_servicethreshold":2,uuid:1,window:1,"\u00e9critur":2,memhost:2,nom:[1,2],non:1,"syst\u00e8m":[1,2],handl:2,dan:1,taill:2,devel:1,"\u00e9galement":2,effectu:[1,2],autr:1,optionnel:2,nou:1,"1jour":2,"bas\u00e9":2,critiqu:2,name:2,aucun:[1,2],temps_cour:2,"install\u00e9":1,check_merethis_vmware_datastoreusag:2,timeout:2,champ:2,cett:[1,2],espac:2,"cr\u00e9er":2,connect:2,"r\u00e9seau":2,distrib:1,our:2,"probl\u00e8m":2,variabl:2,respectiv:2,mettr:1,"nomm\u00e9":2,content:0,"\u00e9cout":2,traffic_in:2,centreon_esxd:[1,2],red:2,serveur:[1,2],"contr\u00f4l":1,check_merethis_vmware_maintenancehost:2,e2fsprog:1,qui:[1,2],org:1,selon:2,contient:2,libuuid:1,openssl:1,filter:2,liaison:2,yum:1,unknown:2,processeur:2,"r\u00e9sultat":2,"pr\u00e9sent\u00e9":1,check_merethis_vmware_countvmhost:2,mise:1,"pr\u00e9":[],votr:1,affich:2,donc:1,"indiqu\u00e9":2,crit:2,virtualcent:2,tou:2,ont:2,size:2,fonctionn:[],"_hostesxdport":2,mkdir:1,trl_lun1:2,nethost:2,"final":2,shell:[],option:2,"poss\u00e8d":2,cpu2:2,cpu3:2,specifi:2,cpu1:2,"d\u00e9pend":[1,2],date:[1,2],centreon_esx_cli:[1,2],ssl3_get_record:2,"00iop":2,older:2,wiops_lun2:2,wiops_lun1:2,timeout_vspher:2,ressourc:[1,2],sera:2,"red\u00e9marr":1,cpu_total_mhz:2,"acc\u00e8":2,aussi:2,myvmnam:2,"56196403200o":2,wiop:2,jour:1,lib:[1,2],min:2,hostvcnam:2,"d\u00e9connexion":2,libpath:2,fonction:1,deux:2,soap:[1,2],simplifi:2,macro:2,"sp\u00e9cifier":2,index:0,usernam:2,"configur\u00e9":2,plat:2,doit:2,dessu:2,maintenancehost:2,cpu0:2,"v\u00e9rifier":1,toolsnotrun:2,"class":1,url:2,request:2,snapshot:1,"_servicedsnam":2,"68705865728o":2,"\u00e9tat":2,vcname:2,"n\u00e9cessair":[1,2],"cr\u00e9\u00e9":2,text:[],session:2,threshold:2,identifi:2,trop:2,retrouv:2,xml:1,fichier:[1,2],menu:2,activ:[1,2],"cr\u00e9ant":2,"70148096o":2,"diff\u00e9rent":2,"s\u00e9par\u00e9":2,yml:[],count:2,cpuvm:2,ssl:2,mainten:1,"pr\u00eat":1,"t\u00e9l\u00e9chargement":1,vsphere_serv:2,"172032b":2,"2147483648o":2,snapshotvm:2,grai:2,bad:2,write_r:2,"\u00e9vite":2,"caract\u00e8r":2,swap_out:2,riops_lun2:2,"643976658944o":2,"_servicecrit":2,"recommand\u00e9":2,fail:2,sen:2,xxxxx:2,sorti:2,nombr:[1,2],vont:2,"_servicewarn":2,attribut:[],parent:2,check_merethis_vmware_memhost:2,officiel:1,comm:2,avon:1,cli:1,plugin:[1,2],"sp\u00e9cifi\u00e9":2,etc:[1,2],erreur:2,rend:1,login:2,"allou\u00e9":2,"d\u00e9conseill\u00e9":2,makefil:1,"d\u00e9finit":2,perfdata:2,"d\u00e9finir":2,linux:1,connexion:2,aller:2,json:[],"pr\u00e9sent":2,difficil:1,datastoreshost:2,cpu_tot:2,xxx:2,demand:[1,2],viperltoolkit:[],toolsvm:2,"entr\u00e9":2,"ais\u00e9":1,"_hostesxdhost":2,error:2,"1408f119":2,stdout:2,envoy:1,expat:1,"4561920o":2,"allum\u00e9":2,"00m":2,vou:[1,2],libxml:1,archiv:1,cento:[],conf:1,chkconfig:1,situ:2,par:[1,2],develop:[],log_crit:2,author:1,perform:2,balloon:2,memvm:2,"pr\u00e9senc":2,"ex\u00e9cut":2,"imp\u00e9rativ":2,traiter:2,grand:2,lite:1,http:[1,2],ouvr:2,nic:2,nicnam:2,vieux:2,moyen:2,"h\u00f4te":[],com:[],notr:1,"r\u00e9cup\u00e9rer":2,traffic_:2,client:2,command:[],titl:[],san:[1,2],programm:2,"g\u00e9n\u00e8re":2,protocol:[1,2],physiqu:2,tcp:2,processu:2,ayant:2,connecteur:1,bit:1,"renvoy\u00e9":2,site:1,virgul:2,toolsold:2,exempl:2,"cibl\u00e9":2,bloc:[],log_facil:2,enfin:2,check_merethis_vmware_snapshotvm:2,adress:2,esxdhost:2,bin:1,xxxxxx:2,format:1,read:2,mot:2,cpan:[],remont:2,check_merethis_vmware_datastoreshost:2,healthhost:2,password:2,daemon:[1,2],header:[],fournir:2,"d\u00e9fini":2,dsname:2,noth:2,collect:1,"pr\u00e9alabl":2,page:0,"r\u00f4le":2,www:[],besoin:2,swap_:2,interv:2,seuil:2,"14344192b":2,log_mod:2,hostesxdhost:2,bloqu:2,"n\u00e9cessit":2,ouvert:2,tmp:2,est:[1,2],swaphost:2,octet:2,esx:[],retri:2,avoir:2,minimal:1,machin:1,plu:2,sensibl:1,ancien:2,usag:[],virtuel:1,"test\u00e9":1,wget:1,"\u00eatre":[1,2],column:[],commit:1,"donn\u00e9":2,zxvf:1,routin:2,read_rat:2,vsphere:[1,2],son:[1,2],lier:2,"archiv\u00e9":1,sou:2,retourn:2,lieu:2,mymeta:[],testvc:2,log:[1,2],plusieur:2,support:[],logiciel:[],lor:2,esx1:2,interfac:2,comport:2,"1589248b":2,methodmak:1,usr:[1,2],lun2:2,lun1:2,pleinement:2,form:2,link:[],cpuhost:2,sdk:[],info:2,vive:1,temp:2,possibl:2,"default":2,avec:2,record:2,"cha\u00een":2,notam:2,vmnic0:2,"s\u00e9rie":2,user1:2,certain:1,utilis:[1,2],decrypt:2,lectur:2,"m\u00e9triqu":2,file:2,dessou:2,"mod\u00e8l":[],hostesxdport:2,commenc:1,"occup\u00e9":2,courant:2,check_merethis_vmware_statushost:2,crypt:1,seul:2,"_servicenicnam":2,normal:2,viell:2,test:[1,2],snaphost:2,architectur:[1,2],countvmhost:2,check_merethis_vmware_toolsvm:2,cpu0_mhz:2,hostaddress:2,"param\u00e8tr":2,check_merethis_vmware_cpuvm:2,lanc:2,niveau:2,exclu:1,ssleai:1,descript:2,check_merethis_vmware_memvm:2,"598016b":2,esxdport:2,"t\u00e9l\u00e9charger":1,cpu:1},objtypes:{},objnames:{},filenames:["index","installation/index","exploitation/index"],titles:["Welcome to Centreon ESXD’s documentation!","Installation","Exploitation"],objects:{},titleterms:{configur:2,modul:1,requi:1,"pr\u00e9":1,"contr\u00f4l":2,indic:0,exploit:2,cento:1,tabl:0,instal:1,"cr\u00e9ation":2,connecteur:2,check:2,vmware:[1,2],centreon:[0,1,2],reseau:2,welcom:0,"mod\u00e8l":2,titl:[],section:[],"mat\u00e9riel":1,logiciel:1,perl:1,health:2,rhel:1,optimisationd:[],document:0,memoir:2,attribut:2,machin:2,swap:2,statut:2,dan:2,usag:2,"identit\u00e9":2,"pr\u00e9conis":1,"h\u00f4te":2,"g\u00e9n\u00e9riqu":2,mainten:2,cpan:[],datastor:2,fonctionn:2,countvm:2,sdk:1,vmtool:2,esxd:[0,1,2],"compl\u00e9mentair":1,optimis:2,command:2,troubleshoot:2,"g\u00e9n\u00e9raux":2,list:2,virtuel:2,"pr\u00e9sentat":2,princip:2,snapshot:2,mode:2,esx:2,fich:2,servic:2,cpu:2,environn:1}}) \ No newline at end of file diff --git a/connectors/vmware/doc/conf.py b/connectors/vmware/doc/conf.py new file mode 100644 index 000000000..e9144e890 --- /dev/null +++ b/connectors/vmware/doc/conf.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +# +# Centreon ESXD documentation build configuration file, created by +# sphinx-quickstart on Mon Apr 22 11:17:38 2013. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = [] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'Centreon ESXD' +copyright = u'2013, Merethis' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '1.0' +# The full version, including alpha/beta/rc tags. +release = '1.0.0' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['_build'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +#keep_warnings = False + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'CentreonESXDdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'CentreonESXD.tex', u'Centreon ESXD Documentation', + u'Merethis', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'centreonesxd', u'Centreon ESXD Documentation', + [u'Merethis'], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------------ + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'CentreonESXD', u'Centreon ESXD Documentation', + u'Merethis', 'CentreonESXD', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +#texinfo_no_detailmenu = False diff --git a/connectors/vmware/doc/exploitation/index.rst b/connectors/vmware/doc/exploitation/index.rst new file mode 100644 index 000000000..c5657eb15 --- /dev/null +++ b/connectors/vmware/doc/exploitation/index.rst @@ -0,0 +1,1384 @@ +============ +Exploitation +============ + +Présentation de Centreon-esxd +----------------------------- + +Principes Généraux +`````````````````` + +Centreon-esxd est un programme Perl chargé de récupérer des indicateurs VMWare. Ce programme utilise le SDK Perl fourni par VMWare afin de se connecter et récupérer les informations d'un (ou plusieurs) VirtualCenter. Pour cela il effectue une connexion TCP avec le(s) VirtualCenter. + +Par défaut, « centreon-esxd » lance au moins deux processus (nommé respectivement « handle-client », « handle-vsphere-xxxx ») : + +*« handle-client »*: + *Processus en attente des demandes des clients « centreon_esx_client.pl ».* + +Voici le fonctionnement : + +- Un client se connecte. +- Le client demande un indicateur de supervision sur un VirtualCenter. +- Le processus « handle-client » fourni cette demande au processus « handle-vsphere-xxxx ». +- Une réponse est fournie par « handle-vsphere-xxxx » à « handle-client ». +- Le processus « handle-client » fourni la réponse au client. + +*« handle-vsphere-xxxx »*: + *Processus ayant le rôle de se connecter et garder ouverte une session avec son VirtualCenter (De plus, dans un souci de performances, un cache de description des données de performances est créé).* + +Enfin, ce processus récupère les indicateurs VMWare en créant un sous-processus par demande. + +Centreon-esxd nécessite impérativement l'utilisation d'un (ou plusieurs) VirtualCenter. Il n'est pas possible de récupérer les informations d'un serveur ESX directement. + +Voici un exemple d'architecture éclaté : + +.. image:: ../images/archi.png + +Mode de fonctionnement +`````````````````````` +Le programme « centreon-esxd » fonctionne uniquement en mode « daemon ». (dans le sens où il ne peut fournir les indicateurs sans l'utilisation d'un client). + +Lors de l'utilisation du plugin *centreon_esx_client.pl*, on passe des chaînes de caractères qui vont être lier aux différentes librairies dans *"/usr/share/centreon/lib/centreon-esxd"* et qui va être ensuite communiquer au Vcenter qui va au final retourner le résultat au Client. Le client ouvre une liaison TCP avec le serveur pour récolter les informations nécessaires. + +Configuration du connecteur +``````````````````````````` +Le daemon « centreon-esxd » possède un fichier de configuration « centreon_esxd.pm » de la forme suivante :: + + our $libpath = '/usr/share/centreon/lib/centreon-esxd'; + our $port = 5700; + our %vsphere_server = ('default' => {'url' => 'https://XXXXXX/sdk', + 'username' => 'XXXXX', + 'password' => 'XXXXX'}, + 'testvc' => {'url' => 'https://XXXXXX/sdk', + 'username' => 'XXXXX', + 'password' => 'XXXXXX'} + our $TIMEOUT_VSPHERE = 60; + our $TIMEOUT = 60; + our $TIMEOUT_KILL = 30; + our $REFRESH_KEEPER_SESSION = 15; + # Log Mode: 0 = stdout, 1 = file, 2 = syslog + our $log_mode = 1; + # Criticity: 0 = nothing, 1 = critical, 3 = info + our $log_crit = 1; + # Specify if $log_mode = 2 and CPAN Module Unix::Syslog is installed + our $log_facility; + #our $log_facility = LOG_DAEMON; + our $LOG = "/tmp/centreon_esxd.log"; + +La variable «%vsphere_server » permet de configurer les accès aux différents VirtualCenter. Il est nécessaire d'avoir au moins l'entrée 'default'. + +La variable « $port » permet de configurer le port d'écoute du connecteur « centreon-esxd ». + +Il est aussi possible de modifier la variable « $log_mode » si vous souhaitez utiliser « syslog » au lieu d'un fichier à plat. + +Il est déconseillé de modifier les variables suivantes : « $REFRESH_KEEPER_SESSION », « $TIMEOUT_KILL », « $ TIMEOUT_VSPHERE » et « $TIMEOUT », car ils sont configurés pour une utilisation optimale. + + +Optimisation de la configuration dans Centreon +---------------------------------------------- + +Afin d'exploiter pleinement « centreon-esxd », il est recommandé d'effectuer une série d'action préalablement. + +Ce connecteur permet la définition de trois modèles d'hôtes : + +- le modèle hôte « VMWare-VM » : modèle d'une machine virtuelle. +- le modèle hôte « VMWare-ESX » : modèle d'un serveur ESX. +- le modèle hôte « VMWare-VC » : modèle d'un virtualCenter (Ce modèle contient notamment des services pour les « datastores ») + +Tous les plugins de contrôle VMWare ont quelques attributs en commun, qui peuvent être défini dans des modèles afin de simplifier la configuration. + ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| Macro Name | Macro Value | Ressource ou la macro doit être défini (recommandé) | +| | | | ++====================+===================================================================+================================================================+ +| HOSTESXDHOST | Ip ou nom d'hôte du serveur exécutant le daemon « centreon-esxd » | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| HOSTESXDPORT | Port du daemon | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ +| HOSTVCNAME | Nom identifiant le VirtualCenter | Modèle d'hôte VMWare-* de plus bas niveau | ++--------------------+-------------------------------------------------------------------+----------------------------------------------------------------+ + +Le login et le mot de passe du VirtualCenter se situe directement dans le fichier de configuration « centreon_esxd.pm » qui se situe normalement dans "*/etc/centreon/centreon_esxd.pm*" . Ce système évite la visualisation d'un mot de passe dans l'interface « centreon ». + + +Création d'un modèle d'hôte VMWare générique +```````````````````````````````````````````` + +Aller dans le menu configuration/host/template/, et créer un modèle d'hôte « VMWare ». Ce modèle d'hôte sera le modèle parent pour les modèles « VMWare-VM », « VMWare-ESX » et « VMWare-VC ». + +Configurer l'ensemble des champs comme indiqué dans la documentation Centreon. + +Définir les macros suivante : + ++---------------------+-------------------------------------------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+===================================================================+ +| ESXDHOST | Exemple: 10.30.10.30 | ++---------------------+-------------------------------------------------------------------+ +| ESXDPORT | 5700 (port par défaut) | ++---------------------+-------------------------------------------------------------------+ +| VCNAME | default | ++---------------------+-------------------------------------------------------------------+ + +Troubleshooting +``````````````` + +Il est possible de retrouver des erreurs de ce type dans les « log » de « centreon-esxd » :: + + ...SOAP request error - possibly a protocol issue: read failed: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac... + +Le SDK Perl VMWare génère cette erreur de temps en temps mais ne bloque pas le fonctionnement du connecteur. + +Il est nécessaire de remonter un problème dans le cas d'un trop grand nombres de déconnexion du daemon au VirtualCenter. + + +Liste des contrôles +------------------- + +Contrôles ESX +````````````` +CPU +''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_cpuhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation CPU d'un serveur ESX. Le nombre de métrique renvoyé dépend du nombre de CPUs. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | cpu_total=17.87%;10;90;0;100 cpu0=10.38%;;0;100 cpu1=8.66%;;0;100 cpu2=9.45%;;0;100 cpu3=8.91%;;0;100 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++===========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | cpuhost | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--light-perfdata``\ | (optionnel) Permet d'afficher uniquement la perfdata du CPU total |   | ++---------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u cpuhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MEMOIRE +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_memhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 3 métriques sont renvoyés : | +| | - le taux d'utilisation mémoire (en octets), | +| | - la taille totale de la mémoire (en octets), | +| | - la mémoire suralloué par la totalité des VMs ('overhead' en octets) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | used=56196403200o;6870586573;61835279155;0;68705865728 size=68705865728o overhead=1773761536o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | memhost | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u memhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +RESEAU +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_nethost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'une interface réseau physique d'un serveur ESX. 2 métriques sont renvoyés : | +| | - le taux d'utilisation en entrée et sortie (en b/s). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) « traffic_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) « traffic_* » est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | traffic_in=598016b/s traffic_out=172032b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | nethost | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--nic``\ | Nom de l'interface réseau physique | vmnic0 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| NICNAME | | ++---------------------+--------------------------------+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u nethost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ --nic "$_SERVICENICNAME$" + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +SWAP +'''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_swaphost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 2 métriques sont renvoyés : | +| | - le taux de lecture et d'écriture du swap globale de l'ensemble des machines virtuelles (en Mb/s). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) « swap_* » est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) « swap_* » est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | swap_in=0b/s swap_out=0b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | swaphost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 0.8) Seuil warning en MB/s | 0.5 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 1) Seuil critique en MB/s | 1.5 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 0.8 | ++---------------------+--------------------------------+ +| CRITICAL | 1 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u swaphost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +DATASTORES +'''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoreshost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'une interface réseau physique d'un serveur ESX. 2 métriques sont renvoyés par le datastore : | +| | - la latence totale en lecture et écriture (en ms). | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la(les) métrique(s) est(sont) en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la(les) métrique(s) est(sont) en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la(les) métrique(s) est(sont) au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | 'trl_LUN1'=0.00ms 'twl_LUN1'=0.00ms 'trl_LUN2'=0.00ms 'twl_LUN2'=1.00ms | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++============================+====================================================================================+================================================================+ +| -u | Indicateur à contrôler | datastoreshost | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--filter-datastores``\ | (optionnel) Permet de filtrer les datastores à traiter (séparé par des virgules) | LUN1,LUN2 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes) Seuil warning en ms | 75 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes) Seuil critique en ms | 90 | ++----------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 30 | ++---------------------+--------------------------------+ +| CRITICAL | 50 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u datastoreshost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +COUNTVM +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_countvmhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'un serveur ESX. 1 métrique est remontée : | +| | - le nombre de machines virtuelles allumées. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « count » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « count » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « count » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | count=45 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | countvmhost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes valeurs) Seuil warning en ms | 10 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes valeurs) Seuil critique en ms | 15 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 10 | ++---------------------+--------------------------------+ +| CRITICAL | 15 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u countvmhost --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +HEALTH +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_healthhost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état des sondes matériels et processeurs d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | Remonte un état selon l'état des sondes: | +| | - "Yellow" correspond à WARNING. | +| | - "Red" correspond à CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | healthhost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u healthhost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MAINTENANCE +''''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_maintenancehost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le mode de maintenance d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « CRITICAL » si le serveur ESX est en mode de maintenance. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | maintenancehost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u maintenancehost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +STATUT +'''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_statushost | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état global d'un serveur ESX. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « CRITICAL » si le statut du serveur ESX est en « red » . | +| | - Remonte l'état « WARNING » si le statut du serveur ESX est en « yellow » . | +| | - Remonte l'état « UNKNOWN » si le statut du serveur ESX est en « gray » . | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 30/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | statushost | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du serveur ESX ciblé | esx1.test.fr | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" -e "$HOSTADDRESS$" -u statushost + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +Contrôles d'une machine virtuelle +````````````````````````````````` + +CPU +''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_cpuvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation CPU d'une machine virtuelle. Le nombre de métrique renvoyé dépend du nombre de CPUs. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « cpu_total » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « cpu_total » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « cpu_total » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | cpu_total=0.22%;80;90;0;100 cpu_total_MHz=5.00MHz cpu0_MHz=2.00MHz | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | cpuvm | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++--------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u cpuvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +MEMOIRE +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_memvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation mémoire d'une machine virtuelle. 6 métriques sont renvoyés : | +| | - « used » : la taille mémoire occupée par la machine virtuelle sur le serveur physique (en octets) | +| | - « size » : la taille totale de la mémoire allouée pour la machine virtuelle (en octets) | +| | - « overhead » : la mémoire sur-alloué (en octets) | +| | - « ballooning », « shared » et « active ». | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | usage=362747904o;1717986918;1932735283;0;2147483648 size=2147483648o overhead=22743040o ballooning=0o shared=4561920o active=70148096o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | memvm | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u memvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +DATASTORES +'''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoresvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation des datastores rattachées à une machine virtuelle. 2 métriques sont renvoyés par datastore : | +| | - « riops » : le nombre moyen d'I/O de lectures par seconde | +| | - « wiops » : le nombre moyen d'I/O d'écritures par seconde | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si une métrique est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si une métrique est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si une métrique est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | 'riops_LUN1'=0.00iops 'wiops_LUN1'=0.27iops 'riops_LUN2'=20.00iops 'wiops_LUN2'=100.2iops | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++==========================+====================================================================================+================================================================+ +| -u | Indicateur à contrôler | datastoresvm | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : aucunes) Seuil warning en ms | 100 | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : aucunes) Seuil critique en ms | 150 | ++--------------------------+------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| WARNING | 100 | ++---------------------+--------------------------------+ +| CRITICAL | 150 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u datastoresvm --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + +VMTOOLS +''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_toolsvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle l'état des VMTools rattachées à une machine virtuelle. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte l'état « WARNING » si les VMTools sont 'toolsold'. | +| | - Remonte l'état « CRITICAL » si les VMTools sont 'toolsnotrunning' ou 'toolsnotinstalled'. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | toolsvm | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| | | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u toolsvm + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +SNAPSHOTS +''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_snapshotvm | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle la présence et/ou la date de création des snapshots rattachées à une machine virtuelle. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | L'état dépend des paramètres du plugin : | +| | - Si « --warn » spécifié seul : remonte un état WARNING si un snapshost est présent. | +| | - Si « --crit » spécifié seul : remonte un état CRITICAL si un snapshost est présent. | +| | - Si « --warn » et « --older XXX » : remonte un état WARNING si un snapshost est présent et la date de création du | +| | snapshot le plus ancien est plus vielle que « temps_courant – XXX » | +| | - Si « --crit » et « --older XXX » : remonte un état CRITICAL si un snapshost est présent et la date de création du | +| | snapshot le plus ancien est plus vielle que « temps_courant – XXX » | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/1 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++====================+==========================================================================================+================================================================+ +| -u | Indicateur à contrôler | snapshotvm | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--vm``\ | Nom de la machine virtuelle ciblée | myvmname | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--warn``\ | (optionnel) Permet de spécifier un état WARNING | | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--crit``\ | (optionnel) Permet de spécifier un état CRITICAL | | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ +| \ ``--older``\ | (optionnel) le temps en secondes du snaphost le plus vieux par rapport au temps courant | 86400 (snapshot vieux de + 1jour) | ++--------------------+------------------------------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| THRESHOLD | - -warn | ++---------------------+--------------------------------+ +| | | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --vm "$HOSTADDRESS$" -u snapshotvm $_SERVICETHRESHOLD$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +Contrôle d'un datastore +``````````````````````` + +USAGE +''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastoreusage | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation d'un datastore. 2 métriques sont renvoyés : | +| | - « used » : l'espace occupé par le datastore (en octets) | +| | - « size » : la taille totale allouée pour le datastore (en octets) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | used=506574405632o;;;0;643976658944 size=643976658944o | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 20/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | datastore-usage | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du datastore ciblé | dsname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en pourcentage | 75 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en pourcentage | 90 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| DSNAME | | ++---------------------+--------------------------------+ +| WARNING | 80 | ++---------------------+--------------------------------+ +| CRITICAL | 90 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-usage --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + +DATASTORE I/O +''''''''''''' + +Fiche d'identité +................ + ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Nom du plugin** | check_merethis_vmware_datastorio | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Description** | Contrôle le taux d'utilisation (I/O) d'un datastore. 2 métriques sont renvoyés : | +| | - « read_rate » : le taux d'utilisation moyen en lecture par seconde (en b/s) | +| | - « write_rate » : la taille d'utilisation moyen en écriture par seconde (en b/s) | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Fonctionnement** | - Remonte un état OK si la métrique « used » est en dessous du seuil WARNING. | +| | - Remonte un état WARNING si la métrique « used » est en dessous du seuil CRITICAL et au dessus du seuil WARNING. | +| | - Remonte un état CRITICAL si la métrique « used » est au dessus du seuil CRITICAL. | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Métriques renvoyées** | read_rate=1589248b/s write_rate=14344192b/s | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Interval/Retry(min)** | 5/5 | ++----------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------+ + +Attribut du contrôle +.................... + ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| Attribut | Description | Exemple | +| | | | ++=========================+=====================================================================+================================================================+ +| -u | Indicateur à contrôler | datastore-io | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -e ou \ ``--esx-host``\ | Nom du datastore ciblé | dsname | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -w ou \ ``--warning``\ | (optionnel – Défaut : 80) Seuil warning en kBps | 100 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ +| -c ou \ ``--critical``\ | (optionnel – Défaut : 90) Seuil critique en kBps | 200 | ++-------------------------+---------------------------------------------------------------------+----------------------------------------------------------------+ + +Le plugin a également besoin des informations sur le daemon « centreon-esxd ». + + ++---------------------+-----------------------------------------------------------------------------+ +| Option | Comportement | +| | | ++=====================+=============================================================================+ +| -H | IP ou adresse du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ +| -P | (optionnel – Défaut : 5700) Port du serveur hébergeant « centreon-esxd » | ++---------------------+-----------------------------------------------------------------------------+ + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + + +Création d'un service et/ou modèle de service +............................................. + +Aller dans le menu configuration/service ou template, et créer un service et ou modèle de service (basé sur le modèle de service générique). + + +Définir les macros suivante : + ++---------------------+--------------------------------+ +| Macro Name | Macro Value | +| | | ++=====================+================================+ +| DSNAME | | ++---------------------+--------------------------------+ +| WARNING | 100 | ++---------------------+--------------------------------+ +| CRITICAL | 150 | ++---------------------+--------------------------------+ + +Création d'une check command +............................ + +Afin de simplifier l'utilisation de ce contrôle, il est recommandé de créer la check command suivante :: + + $USER1$/centreon_esx_client.pl -H "$_HOSTESXDHOST$" -P "$_HOSTESXDPORT$" --vsphere "$_HOSTVCNAME$" --datastore "$_SERVICEDSNAME$" -u datastore-io --warning $_SERVICEWARNING$ --critical $_SERVICECRITICAL$ + +L'ensemble des attributs sont déjà défini dans le modèle d'hôte et/ou hôte, et modèle de service et/ou service. + + diff --git a/connectors/vmware/doc/images/archi.png b/connectors/vmware/doc/images/archi.png new file mode 100644 index 0000000000000000000000000000000000000000..82dca91fec4159d8be96155e65412aa0fd645059 GIT binary patch literal 29775 zcmb@tV{qQ>7cJbzHX5U`%_eD_#x@$=F&aCKZQHhO+je8yI=|=t&inCvJDCY4bL-k% zd+l|F$jgc&!r{Vw`SJzvmxPGomoHyqfWJ>*z<{4;Gnb9PFIZa%4f`)&u+f2Uw6EoT zUmw4GarpX6L{Ql!{VW4g9YYImXzGEX#=)5;I6Ij5_m|Mn4cGIBw#KE4N{b~-Jl-1K zYDi2>rZ0l6?z~;j&bF7au{4{{e6LsInSAyKHszAj*Q$Z%0zF1Jvtx4kT%DcAtM7rjHvxEengwR0{CD#GC{z(?y8=t!jRLS<{rk zUC`(IV{41c;8>#ZjbE@WfgV$UQ@~?kD@A`Nh8HZ2F|`MKDsLtA}^6IFL~B`5UrwO?!*OrC_NvyCAz=*+2RT+ zJD`0D2r$xwP$Oo;gCM@3ZV%Wnbv7A99koLWrNJ4;hB8ImBiZ@McN|9D>sos=X~**e znKaq7pG$K+{1JSA_&@%!SJ9UVA6EP>Dm-m+uxfG2$<9VWO8R&Th#m+`WwI*A|HRMR z|E(8w81Cn%B=80^G3tUvVPya9rFFnJA%TF!ji#9_Ec2^0-dOMQlm8fJZEx?|*;=`| zxwfkUF;CQ>G&u9DU40$FY*bR*>wWJ+bc}c7N|(yO@E4ZgP<7(qs-z0+z5Oz+WC?OK zu$XTzOSQhu5OGN7_4w!TyJ)i)d~Q6?RgFGcDUGTE+joFfPoiHI=)82jK8lv3KJk65 zZYv3D`mflvAVten(-KeJ>$?^2__XyVb*{Zm38!ReX&ISby8ociEs3(q@ILEPi&<&% zWpd%AtBozdW3G^a<$Ml&Cyr69Nlu7Pf8<`Qbyhn}iK~`#Oyl%y16hEM@U-gySK>QX zX)N(R(59Kr=2UD{f2}5=q8jzO$MO{n`27`1_o8(oy;e8SZ*Zobjh04(CdRA7PHAFY znneAtYTO`hW1?A9CM{<~iu0wvD-T$RKVSJcY!p@SN3OmN_}XA+#f}Q6NtmDCtzn7# z1k2qGG0J`hK`;agabQkoq&>QoiTIh4su0@SLcB!~OE$%d&3BEEkpxpLPFAIH>|pis z>gTffxd1wbH{+swvtQaipP&u>JR8`N`0bv+!5U#Ks^xaH#MUl0=3F*Fg{{R;k zm!s5%UQ^}RN9o=lLIFnP55<&|f>RP_;q6`;>XfYSYicy2?dw1G9puSfLY_TD;Z*!e z(sPc(L)HKj2^8j-lF>5$?1qb&B=XGVFJUy^4|fHAA-bOe4pMt;4&1!BiiLql$+3yG-jsuPeX#DE1Uy`-g@lAOIkhitk(inS z8zMFVhnN&BB4T$vLoTFnFvdwnQ*a~pCnalkb~NmTjEYK`i@HPvtgxIpvR;=ZZ z@xj;3V1*Wri|abkkIJhtwGt6c{K0?Q+iWOa^`Mv|hcus#yr|5` z^~Nc)RhMXbl=5JDckW}HM!#3DCU3Jm1;0(3&0Em^7JcG}sDc{!P8hcn$NM$>c_9)e zyFc@tgZ-vBkWuv+_|+dM&qVz8v#gFfsoTB*eskMTu;0*jA~RO5Vhzslx7%C7O|ZAp!y*) zT6lklw-&S{kL?;6vD`TleBx^r6$Joc^1WDUqV{4wgJOyU-3%< z&qaj&FQII4(V9U!z<Vo4DprKSwsm#4ybikGdjl$k31o*)Sc_BBFGNp^f{YHDJFos~5&Ui;f! z5DCVpYE;$R(SPs$CWL^?1_N=r-eNx*(ieybUXsdgkr)?;uD!4qt5nqA-|z45A5Ngv z(UOoU;C*p|R@Mv|^&5$p8QEw5_?YxXADQ@diA)Cce&ON>fwQ&DC{(f4`upNLbRz>EZqLk)Dq3 zVxw)T)_9E5X7lf$5Buq21zs^!G7FPrG~!KhadEx*0$ihj$CK^hWJY;8oxA(14>&YU zkUwb*j526>Jqe#w?GCpF!=cC`xhw`6 znv;#Tro22LzS!m=_qZxO}g^^=;AH!c-HtbTP5mU^moH39nl$;u|vG6exMkWLt^c058n8>JyWWJF9D=tqwir@1E zV;n=-Yi~GaRD677&;~u${n&b1eP|LF8F{#E_1z5 z2Co?52&AozpWX`u%=(6LoO7?ZJQ74>bwy<*5)BlnblxYDfEQ|?&1w~+QIPcUe67iR zfkv6o#WL9M)J82D}}xRAookboeD{P*YEX8jqj zrV#WcM8wzXXL6v`Z~fKn9zPPxGr(}vS^Fm^G-x6GUT;TdXXO$Q=U=RRyTE+1U2hL` zb#>L5x;0b{7@?s6BFTz)dmZ- z(Guz<2wI$n(Xlb`J{SeUSOGa{S=q`xjBGaoUMGLcP>d4gR+A~h|A7{$--_K>GHD!E zFL%cYcgnp??Cb#+UO?)4zu#j+BxLjFiAA*j*@a3bpaUQ70lfQrcdkfIJQ82GuV4+aDm{aUjGy|LYI={m5an=>fPa^aMyNVwBA$n=Cuhbl<8f#%2L%=pe=CKS23^ z#!O*04D|8wvD2eu68SF|VOcpiposD%h?osTeDIe$9gfk4m5hw`mTL^z+1RSB_lcpg z8MK={UmN4%=GvSu8*R3bdW}G!M%x{satJ2VoSdAgOg{IgE0T7dChLu>oxT!f8cTN< zm!I2Ek;tR|Zv;FJe?|EC_=-bvi@puVMMNN4cI(O`O3(bnj{>6HSW`no5HiQ|{%p7W+d3ywL!lusTF5HBtbj1nilriQ-$fMrbN9wBW5#puqI) zQC+G_CNq^+RE#a+IH^@;vi!g3l0DD-jC!4KZ_oCCQ8459Kk5G0bW5Vk%geK~v;Clv z#Y9C(o{!T1{{8!WduSN<{EqRzM^Fb14-Y$@E@p7si&0^)P{&Wgq!8Z)N(25-1bTRv z*E>-BtZZyPcWDFv*Rf%RgoT&NHSC{nj7yYPg|yaaIhz9HgQ)`;(=tM*F~R-p4<~)> zWYW3*oUb;Ro0|*Ny8Z8f81|nZp7Lexj~A#R{f%yJ1gxy|qvKG9;nV)%2;OMa>U!Ql zPA*mH2>>l}t%o+#gFaLMzG3(GR+F*c~62ywM69U{zESR#uLr zqgZlpbJo@5SV?36K$7zkv zZMO$qKk?a`nxL5MO@6WwAs54q&k+-Rr2MZfde18A(#hEYXJb}Ms^HEth|94TNH@@A z`bx3FcPlHaCxXZ0Iq3AR(9qGTN^IE;bUZv>o6Yvy!zrcVz0JZxuaOZ=YU&00{x3Pt z+82oalcM78Zf-y|bsUYSzE{wK?8*gsj*P&$z5nY;n)+QUeLsxen$1uV(^|T>!s~Fr z^KM}DG%*zeuA_K|4N6QDUOSiE7RqBfDUsLx+2G;uv)5PaLM(y0!7gkZ92@{jq^;qN zP!bEc-4z>vT?PjSBjRz8k&!jGwgTxb4|Fop7z7*^qvdLS6x_R`8E_9AZ7B7uKDjJ@ ztJQjHCMJ2Bgp2i-Tc9Xmz!?YQKVe*)1AQ=q-2y9?QJ=}}&h*Mzn!WZvM+?>Wd(JHwnNl*R52mbGlhCXUZ(t}O>UUj8D#xPNyt~+N@BaH0Xq=Y|W!Mihhf`U6KYnxv00_naXk`_e z4WXf-U^qOUFAmbu2>#L4mja(}_77((HHJe%AHV^6`O<$9OK0%h@AL%$@B#|G>30v9 zWsfhAq*qtA(sjgm7`4_LJSanPlyX95w(`+qSbCyEsw4{fAGHak*@Xmx~4cpn%+#l992xJ(%e1 z>|D0n%QikZI3SiwHq)#(MK#5bts;Ya^#%1rQp%?PJ#TMs=W~AmAUO1c=*_)Op&}&06T3KNF@>3Req8H4Uq|efdEb|ju{a~y*aeAu-%V?fncSl$Fs6>gBQe1Gc+^LK#@SuTrsnI;q!b1N^stgMP?9LLo53U4oLjmL)}1u!3{;UL0vwo;L-=i3wNIBMe{WprE|_$2(AszYEP@t=>k zXOz2v!9ich+v{ssczE=%0eRfSuXHLP5U6C}Uh-P0RrPc8uW=wALds8=pT$WM%6>&^ zDDUd#7HcO*^0XbD;rp5o?&hjUX&nM*Bll6Lw!#(4j)Qdi;OhqF)qim&k_`?E1Me|Mf>Nbf z5Te4)Ing!4b!e@NL9K)HtU}liO-xPI%u7{GAga*N&bbnCIVx$&sh;W0{OHR0;STRK z5js1|$yQ%&aB_qO(;qEcoHFHC1j}3(EwJ<2_AfpvEe#LCdZW#GXb~S91_Ho-gKq1< z*aUjK*zo>*=k)9OQnhz{40|xPu+X3k3m|0OW?Ov#w4W|j?NnrBWOR0Z+@CJ>c=u>6 z6ZpoLsa2hvocLmc!;6u|SZ{T{_sQJ}^aBlg`_k6+(~*pbmFmmfUwIOt*~@b&3bgb4 zyKa4z>(t!QtfZP1_V(Pe;ix&f8WFd5rGB4j$`#AR22|tO-+Ra7WxoU=d?RyeLLxds zd6cLT9q&1ptG`n)GY$z!6;0B-6XmItsR9Mk7X>+fY;^Pl07!tNw_~F{G16)+c&;de*BQW{yiX_lDn7FKT0>r73J%OT10EiAJm88wcaI$Wx+ zRrv>Pwiwp`v>`{-zYjV!i#>=C)6s+v={Ls)^OBtEA75UL)CE0Tb`MG>CJ%siQdRH< zBk+LE*##8W{QP_hnN%)r?wI{RqBBhOd`h{@zqinBMn(_ zvnLJQ?%T*wevx@9!5dm=(RB3s@CLrrIz^|uJrsOGcB3Tl?x}ECH%hlgMah-K*G{zv zMgfRciAF(A4!Iw7?cw2}vY0Jh6D+lW)<%R8ySanatlo&+B44nmiH)`Fx{hwTJn+2k zre&SkB#PA6$d;3>G)SaCETgy{F`SMdqh!khjBPf_cz8#7cjPY@pWT-AqTmeGB zR1-xUJR7@GU7e${^7_O?h<|DmtP)-;h)?c`G*QB-TtwJt!x^RQi*XT&b%F|{1Kd0u zTNzD?qk~bXdUqL_&`{6wR1d%!EIux2u0oX5yL#zr2*!qrNTUD)wT`f`K}72SZ8qoK z@|BD^=^Nq|tyftgiF*yag6hd*eArJWwkEbZXEK$Qyje4{CtA8WnsC2cJt%EttWBe7 z(?jWrajx`CGwO-kQ3VEl2eu9kR%PA^^DBPZFqQnu(0a*9*Q!yG(i199bmKzelKk`z z<@uCF*@=0!hEhj5T$ROAMwA_Zc)4Z#!LRo`qQ~M_GdDPy-glgt_)k-;MLi{j-ONSJ zSBw~g!!#?Q4}^yk|M>N*8Q$MR(!%~%kPrlM`RKCes>qMY`fj$^nq&3cYv^)kw%h9lVWD=>2{R%m^mg(~|20|uM*x(fgY1lmZu zP}GwP&+0ZUOdq6Wj?*)p=BAG_rCTfsLg7AN-b%Q`F($~01FF?C{+irDB+JX^pGIe zYTBv9f!V`b8@zA)GYhB5F`In!4N7h=n$SVg1wD$rxum|Wt@Xu$;K%a9OLXPj_^(1Y zMBnxKXDuU&_X9#5WD+BIQY332Shdo=3%LY0_0SGaO#%FlC(tGr78YuN!R-a;>j2Xt z(GO}tgMk1tN>x=gCMHHyRFqz`K6~ysARqt$O^}d~0K{pit`3fjwl2cMra+C#0ZeeEjr)51j7{=Y*eGblg+g1l4Y7#|A*)0~sZz`4?t*tN8 zIBk-pL34#NJK4Yh%FPWRz*L&7Pl(2z1U$Sk!eD?g>M?6=Zk}JmUisUz2R=vVt~!%C z{5a*{Q28wd0xxZyndvAwQ#M9IgxpUMEKUP&0&OH{WvO&_E00hLJJ={Oh~l$1U$H+T zrbF2>28t?4KV_W^RUoQwx@6%=9XElhf30rMa<$$J=&G5SnOXdvsQ^*p3kkoydNEgo zJPb{Rp&kp6Rmk6%h&ebKb=sWhwHhHjzv^Vqm}c_=wG_Yv{#ma;X>9@~K-~EfrJ~oz zOF3ZV-E4O?hWF_M>J(xmOep}pcm)KySWPB@`70csTTxH%6KM6s>cl^xk?^|@Dixse zQQ#m{V)-_66#-g~03Sc|hwE&eiJUy`w2Zti7hC)sP_s8X+<`*+u{#uXadDBvpaV9s z+TqTbo&of_beN;>#V1owwca}M?C`{r1r>F59d>q^$49!%ES;vLZDB_+lB>DqG_tkw z$z&LAUTL0bj4{)vt`rw;_ZlqE*)))I4z&HxzFalI`hIL3s0+;^Ua+Gg#j5tdM?A1L zGXvz+)t3R7)Z@u!HVaW{D_;q~!b+VsEPNSBNjMmE?JI!6>^rC*ot%8Qx@z`%=lMp; z%gZZ|IGvg!93&(wkHe9M2sOH}0K|5g?bp8#f*j@100H)SJwzlAvs{zHY66(P9_V)J zX23k7-ReM%ffRyb=<5ZT{Oq#plc7N4_sX`q9~2@OIa=5NK=hGuLwdAQhsKaM84 zkR*x#)kI2zuFOIWMsSwd9uSZR)|Ez98RDe zqosT;(Qe5vAaqtysuNm1lV^C;n~0S(yKjGy^?acVDgO?xGs1oBBx=AwP)q>^1`z|y?W-&t1iYeyqaz8cQ6F0w(A$?^ zuqP)c0a{n==APevU+MrzEWvHqSKljrB0(}3BzOkaYA<3jlw9AYUQp~`xtyCYEc%n_ z9B_Xhz^*~@0KWJ8{O=P{Qc|9I{E4UDuZ#b>ZyuMipAq-2E3Cw=qd5`NO@co;k(+xT z80hd^=am9lxV03zC&V+jtuoNTo|Pj;w8>wChph`skfITR5)QjXr%sT8RKq+{Ce2dO zjjH7ytyN_OlNqSV*X1v-H$5k>Y_p1)Hxu@aTo znD;SJB~TNkmnul7N_Be^JIPbCrV%h~${2xmmD#>U1EUG;bs}D*?0OI7HCS_cF~k0L zj4hwI+nL+GLyaUKzS|bS2ue&2P$jFi#_+LebiuFP_{J*J$2i&v%4X52xo!CI2mzKG zttu@jRL=mtcZC%fyVhjmH&#|`4aA+I<>CIm;K=q^^+-I)p#M)~k*nSSc=-b$AAVK? zKnNn{yD3(4-AtZ%9|spBR~x`@`#Pryc=Lx1^b%qV;fDqV6?9vxg&xHIph;lBVx{qx zRUyc_kC~c^*NQ`jgoK-zHErgXqKffkS9iyXp>Q`HwhV#m`%qypD-q9yh*1_Hl{eoc zCf}ACW>4NdXfnLo?g8euOkQV(r~hbq-d@RgOLPUF`(n) zW1S8+OoMU7x)+%Y9?a1{4i5crKHawC$;`q*NIETcaP%s}V7E8_Y2q(U8@dq(gvh!k4ex>D>0+T0M0XWKEate`I zk~*ngdM-|cj$Fksv}V@!8O;%mpQycDftrjA!hH}L>i}Szi6Kyid>mKXoEc380e29i zTKATgmS*$A;qCwX2PTMPd3U~seKrfMAb>gsg@ZwlLCicFFbu+>j1zPN>Mxl2Y?rrp zbOJycHP~$Fwy=@m^;GU2A8Rz0zCN65b$W0stLW%-031zrh(u-h_Ug~E?%?Ow*DBo( zTnk8EyFC~WIPtH{kS0yQjD(_EO!n;;P=Ba~*4NuVx;6qKD2U)D%wv+0Mt}d;$~c(L z;xiAjQUn>xv=^4>EZ`TKAs$kEeW`hPd;>Q!$-S-B8$U)z$*Ei|;zNUL4};hPrm!uP z{!GMvb@Q2kDIK@v9;L>@!ulPCVZ&*?9&DAIn(C{mzcz{!-Hr%PrBa)bu`v*aEk$m< z*{)G@PF`fmx09<$TcrFCj5`#=+4&J5Tc|gI*+xfU3TSyr^jOf~amYJOO}gAGnJwH? z4UW~3NKJ@{yoE(ciVS86LldwCvqktw0n*Ezjb=?GjItx_Wj;+khMtnN$*k~7m5PS> z07YU{1{eDKhQ#Gunb4flIUYx z8mDEa_WJmVp59;x<%nb0wwLAUY>=wns3CHUPUGsGGRjy>Q&YSZ zR8CV8|0SlKro?T~a2|%0mI{`TOeDyn6eD1L3+xEnG8TF~D*CAXk?gMg)Uy z-y{ibf2x~EBur|xmN_#O)EEi49P$DuRtdYbH(Xzsv{Ho!`5-uUT? zM#jbqrpE) z+46};r;i{ObpKw|k&&c*aLj}ywi4tMrMh?zEUNhH<$pr~D@!!Wm8BLQ8ZI8LOK^4s z7OJ?kpLQ>K&B`*#Be-@?*?m6=hR`OZ^Mi|?zEioCj@91Ax>5*- z78gNJZQjC?3Z3kO(@?WC54=$OMHoe6q*h{peTlB~Cup{~U-K@3s&B4dZe{h)Cw_IF zV(7raf@q%#hu`0$u_Zi8B<<1Rg;{pnvl)A`P6J+9#}?1q^&TrAOevjD+sb9uknSBY zpfVWV3N^5$rRTmOT&aTak*L&)?(R4>H47lZ(~{1v?@jj>-DSC(XA_DUKKPg@}=FT<6t4ZS5IW8koKuvuV- zS6Q;w^4MK%VLyFb98xfK;2{#?XhGXoG_zrA=w)w6J>0*SkYYZx^{8c$x|C<1Xq^Hv zjt)Ojb+x}bu>nLZiy_80IM_9ZI1^54*(OTnCO2BI ztyOuNSk_YFr`HA#7?Ao}XgSSg3QYVK-;S%vYrPb3D40afFDgpP%8F{32@m_6rT$L8 zybN)s(wvw`ONH&iU>&kDQTDHnMI^T~q;}s-TZfIa%GP{CvJsAji;mZVeYzZAE|M}F zijhhl4+Gz9&NZO?jCUQEvrsrc^!90F=-Ft$D^Waa(qJ;IYKmqSdP$mi!TvA`q7PMY zRQ{Hq`Bjq-eETr@b#FgWC9LUY;AKL~0q$s4+|~LAKK}Op*x|)ws4R@>DAyXin$pXi zsq2oN`Uc@}fB)X|;Z$hTc17XfAX#y-E(?ciMFHf$h9krHgjvZ!f0}R5XCeAglYxiG z?!N^GGJ;a<6U9Y6iqGfiRC4&)!=9?9VmlT@TltJ-E=NZT<}hR83;PlT>WcL}k`t*< zLAiN~w=0eSMfh^;W5ak;F4(v=rNc~ymXnbr#;Z|fv-w(_t>aBZ{o6uIv*~Qc!o^cS zvFG{ztBlLrQBTjiMI!^_^<9e`C%R|GS>!pMPRmCpQX3aQ>tKb5X!~!2KIG-P{t8`B zNi=O&7Y&Met0;KpKcL0L`3qm)5umk4All%|klFw!N zO(gf}#-_|xtYXhis(kg}Fu@hcNX+*B?7x{fY2$<}&pR&R~IyBL*Td2G& z;NajUGx<@l-Vs$t zPa$ikP0vdg`JC)*3%}FP9I;z6Tk98}ni+U++Cr5`@KpL|}JZaI%tqU&Wm^ zYl!`3C38abZqz%vU$E}o?$RU5;$w8SQK$y}S$WSV4}U05iWPRb-hy?rO%@lk(nV{g z%-C$`S)_5RB)wB(XcGi&tC7B>H26}!VYf2c`ZlzvGPJg)r6g>qCn(4wq=afWHSuR` z0(N1s#lX^TVE8Grv*&G!XoBmLqfhOkt`ZYdW-30wM~K7}!)!MH*H|JwAh_UjIGX-9 z5H>eED-`oC|CO0pfM3_GVwPtB&}nxY*dJ)<{MfqQ6=kfp>)k>yt*!UL#sU zxmDJJNj-WfseJkA_)@3Fh_ocD>GaXLIR4S>SDUV$CVNKSqZO)!6~)OBNp#c`L-0#7 z|0NW7j7oWVLmPCmhSvNKB+=SP*8Iv3O`Z1`5yht;mWQbYye>kXhafMVHe}^-;#J#U zl9H|7pI$?e1QFrkUQRk*Y%wvYhf^1*wgzu&5~`ERlqjY1wQ;GFYt7FK$rrW1Wn>@` zuV1TwPd3LLUM$tJV8HFmxIE4OimTjgy+_HphCvi5Ro(5|%eGJ~Y` zv^DY@ z1iLNLsWgn!AuX0OfJkyBVfPJ0M>7d&lr|p9v8(Kcq+K7mE2~3%u6-ZAVrlX;lvmfq ztjsog|7gKdAeJd8J>+zzHnr6FF&-@ae2d z$Uzf4Sj4v}D6k3I5{}=4zs>n{8Q6Q7zxi~`N}4E zLD6Fg4nRAp0U*`s;Vi2!$Y$r-7xe`m0b3}On>*9E=yQsZZ{S&q!P!xD(U1dg&juJ5 zQSK@L$Sw3Ax$^h#7fV7bO6Y^aeOZE4Oz1l62{yeB8Ly|SoUAOpjC5a?`|~>Gu6&8= znE?R^Z5U5SMf^%jxm+R5utlwpSkg9v$3jQ#6flxfDNkSeXF$-chbA+_>OR2T>~h74fincL|!`S*fN$?)l` z@)X4_WGv3D9>P6iH^qH|#Pm#C#F9;iYLkvp>%-+%j#d+<=c{$gA43+QY;wc>2<_2n z2gd@*xgYI2c1uPkTZT0fWV6Kzd5Lry1|SgBW6t>aI4n8^K9}v6e|o~6t2eGlc~EKS z2@Ksmo-%qJ69P_W>V0!`@KzZ^*UT|lF>xK`Cc^sPMq3!NkO||ba5YZ|-o`cEkL1nuJGYAjT;rubZs2om*0b#1m?8$NEiVO% z9r1`1A$PkC4ft&~*aCW{ZSBiu=La1{4GjJPYlz3oE#%OZVKH}Q=U8uAW~ItYKF{Zs z=c8qrjqSE5tp@W2AmM=hsG&v42UNSq^V?{_&l0Abwl0Sa4+^2wt*s&iv=E2E_Gw++ zmQY@UX@atru}K`9h4&^ALnc+dF8+h#Icm=r?WuA9YILxcP8i3x2l>As)8KnYn8Rxh zBjXLDnx8p=2spKtD=YvxCUI!j0xY8*0m+UA9hRS9DtpPynSj-T@@GQKx<}6l@=%Y9gmi6qCO=%- z?XLC82FSk4Raq18-YY9;zTJ$M_$k;Re|Cu2uO!aah0PN&Gc#{z`uh6%3+dNUy!gEb z=rXhvWab^2=N|jjzCP#naY_RcH-LwJ2bMmI76QjF6x7tmd)GP|$2;^oPw*71X7iek zBB@<(GFnA+?>13wQvxgm_lG@$5vMh@;SEiX4R?3YWvb^ub=9=Kfb(x8o)=}%od^$) z6cZzy90Q*qMS-!6(x@>AFwnOp(|bew@VjCpg^Y&hbYoMV+^OZ#eBsqW# z(vd;ExRZTsWV(N1{NI5e#ABuD4jWr-*SJ3O#@;Aq=*E_e6)*`D(FCJeLoI+f6bKQ-Hm!^0B_ z{|;bQdn8B3*IVADNaRGNv^tcaS*H?tjNSK@QE?NNTRK3854I+tfKJ%;YCFcDs>A90 z3hyGI@G@AekXesNuOMg1g8a5hF2$n(ir!+e{6E=~2y~|PpdYVMD+dFsoeZoJc)h8S zox9p-Au-8YDx-FDH9%FoWSW*(>({LuP7!#%z7)17d{k%BytE>?3QU}QRp>2&ht>P1 zUWPq(V5i>2KC8+&FoldI~e6w#&`-J9aA({D%Hwd0e$RVU?3ebl4?+{%H6Wff=hoI%^N{nt$ z)E-eQGfVG(pc-KQaWXqNBTY;GAt3PivcQV1tBqORnSAQy*lDlr-*f4e44% zRFuv$Ks=|Mk#^#IZe)lW223xV7T(SOJ>5lneHbmHD=uWADjq$?Q)aHA$12v%j z6m+x=+>c35Z#SJGy;4OB>7QEjkPlK8FPo>iI6bEOQ7_$m4?%#i1Q5TU&xcvM9c~Ls ze5Y{08fE+ATx%&x@fWox*sw78eCe8Y0O|+-=U$7twSrF^xt5GdBi(L~VGV|$!JOE@ z`(&25sXAxYQpe$TYx(;l6B3L%J_?fn>+Q_(Tu`N66eArzyW3s1pr7*CY1%tLV#i4A zEs5!os0*l9FnRTdB71QlWgavhDl*`=#-Ut6t`;)2Uzw73QtChbMRa>*kY@nIQ2F55j)y)a!uj`1369qzRFMvbD}J@wQfv&qi}& zi{{QXGOi}1IhfdGxGWSH$xv6<)zVgmRa1zJf`2woa3-1G%%QS{?^4RoR#shY`~GsT z)o8h6*JAZUddNwxiCL!HnnYTq-Uz?S%D$ePstM5R0s=sQB-P7MYmg0&{P1|$t871$ z*iwzftYaJAOJ!5T#0rVb3UUAB-_VX)n2?bu$PTKa)^SVG>x_B3S1PZwx{mG(W<&^i zSXMAJSvdD%Z3 zF+HB>uvG`qDJyqwlI42eAL$tN)FNh8u1i7}E!HT+%~ftp=n3 zp7%E)w~RKh%YPaJVJ9242kZ#3#IF94^zYu>WNt_y@e~Rbl(llqUCxe(h?g}g2?CTr zKDl?PF-gJSHd>clfc!TxHs)SFmOlFKU@uXrp#T7LE8$&%4um0T&>bP+e+ZN6A?c(q zAt}lEW$#0dh;UU4QxMi_Qv#prJM^g?5bJ(N-JTktF{)tOy zmq;@1o`(#%xACJ+lYtUJhM?!4!%2dt(}P^tKT~oFwBbapwTWM63|iLW`6n(e5nby( z{f$0h_h#@T@Ppl6#u72U2dAKg+)ehCcLeQLZOV!(?pe&4*1KEKp1Zlysc#*foJ8XD zVMb)qV1?=Z@V47MiFpGw9D7ytmaNjDYO&%7JU4b&?%dcU${0!MonAT!YW>r5OGm3C z;|ro?AV09~+L@z$XZUiQo}M0nOa(+g9J6XVY?<>jtVN(gc^Toc{zYA>u4PxDV0Op$ z`{?T`0RC|Ug@UKtcH)apr|a%)2QMYNGAs0be#9wskAjSs%kQ6&nNK&zN`)1uZBb3~ zuAAC9Fkn9?reNo-e0+DY`7^k2iWTmdSd*^kI(H|%BNtav=8=J&X4d|#@ZHm{G3x1I zG3KD0I^uM|SyPk!X@91i-&PlL=TsIOGQD~j)T7WU!eWhua~H**ZO!|}dc4yMtFp4s z_kUil+g+y{tpx4Ac>yK1o$d78;iKq!vzS=Oq?5;J)92p?>h@-sKP&6&ubi<+_y*J8 zN(nClGuH4d%$03!RM-wj6usbVwgR(wJJNMd$1nDW6e=&8_-8mk zlV^0^IG{lzA`cJciRfJ+M_%CbjHuINit2Zp|OPTKw@9ztxcVEYK~)(J^m^vg$5Yg?qhzj_VIfF$ zdjUN}mL_bvn=0oPLfu1KU_}kJVR)R3xca#<(*^lO&Ks>4i;#A>GQPh|R5=*L zMA0_sjFfRvgy7>^l@;#tc=T!)6_O_wXUiK^a?_m|tBZVOypr5=PAPAIHLU?dP*$1h zx2{piYkFyVFDFbdTtNQjEvpr7L_qq4OtjwVcI%>GU0y zNL^F>%c*i(N95zQNdpImF6J*I>aC0;gbad6O}cNYiWp6T^?I|QoEAniD!T>U$b<;w z%0e1{qEMa&58DEB>Fik`l-vCLe0-`(L+cOEo1=dL-qBPg;^MQ5#<=Vjm0+=oEkTh3 zWRwTZ>UBYl*tFt~mJDuhx&mQq%WWIk^xhGbMko9+(a!u_{nJ<2Zcp;uwv?|cDpUt* zGj#Z5dV+OIhZlfno_Bnwh}z$ea1@e%TcqE8z2Ep9OPQrMeQC2JI2XLM~Ke~=;W-4MF3}&suPPe zl2pOlo}V8!OL1i{Gsk=ep!s$7dCADmrgg6I96Qb(?qoF-;lpgiUfUyjigKb2yzWpT zIsZF~xGRB4k>MG$-QW-2woAs|y^Yl-&_Z_)`zbb{)&ni3FGwtkyw|v^324EOK6LNV zxAF5N+o!6-w>62xOMW^U=o)v-((cSrY6yg2Nn(?wz)AW$gv+~u(Uhv|0^3A35hg_Zgc%7jhoC9KnHqmP?An>WCb59r zL9Yz43w5?+MdO;m66R*m`^h()l=YU!-d-UrUIEt|qkqetgt967a9AR?W-CV)Jgnq$ zjC@gaXd%@lk)@(`wdK1B3Mm|PR3r0Hn0wiGB4pIuhFmccY&BMvmR7>WAM49(G%;gk z55CzdhYu4<@Fw5Pm@G)iJ$&}o3;KuTVjY!x)UOvb-(FEY7A_4;FVW8<=-WS=OuhWl zSOB@E#bOnb5|U-R%ZJNjA}n4Jh^31i=k|$;At5=sM6Z92oE4!2p-&9yB7^rC(A_i- za=yi5Xq?6>KxRm@IYg&Yu#>BHGtkK9$eTrIx)d+e4>3lF?JX5e(Tsm8g7>^!wHytH z9Qm$$Ad629Pm+hLSd)CCMJMcG&K`RDMfU6c{Ru-A^rzA ztYB2BL2-`NN^hR<;{pAt?f&NcyfRuycA1iX8E*(#wW%}}&9q$PM7I2KBw@ud4SQBq zg6#KD5d%x7Zd`0dR99Em)$!a?WMm`ze#$9NL_{g}StCa$Os4q26si291@VNak_Xj? zPVb6Lr7bD)U1hLJ4aC1zT8kSkjxz%*l;Q;~m)j3Asca>E4f&FQiVMd9EQAWvh}4Tk z(Vn_v5++taOW6>_RnL}yra7x(Uh~jI#}S_}xqBUdxKKiSvDrDBG&GUS!x( z4rW6+dBi||$HR&pAd(z5BIEY(Y3~;FSFh{#&<6Rx_cmia=s6w2hbLt(uWR!Uva`wa zJ(TFH1KUTVEHiBq3|4B4E)|YrgaL!DK%Ri}_H24AA5GnahYJ{*><!rq{ZkIX=#$*v0v#o0hXj#h3LTuCH`903MxKg6^s)vPuGTq7F3P? zp#42qB%;ro9pS92h>&Dd};G^?K1Jm9?UUh1g;)MtbwYi6+UzhZo5S4#Rod^t1p6i|Hn6&U!YWklcR@%qyCP*zvOG*Cq6I-X3^GWq7 z6>4i>8`~6+GD!?P7Zj_?fmgFHLVyWY(CVg!&r^Z(X=*}UULC(JRpoZ1Vjx|k(@x1w zqGu1;G|VnXXt_OX+)d@bn9BE+Apd8YuUS)b(R%Gh6fC$Q&3f`5=qV!x9dS+lNw@AL z3-)Z5Gyiz>j=!w`TMHi67>l?=NW-kYrFift`5_?Z0LDx=m{_u8u)OyS1Ykw;w{$&J zVC5<)U&l$VKQIByJ3PG<6084k(n1dIHOuQ_MxF|eP> zYieC-AFS{UvP{uh`2tGU`|r+*q`YJuQ)mLMY@zm>BD|`E#ezWCP*MbV>8*;d^d9lE zA~V^qT+1)^Dl%#w%@zf*z*XRmdO@uZ|}= zNZ?MC#N?tCdbP*lKN9wDo*}pJzMt5CB#BXAN)jTc!248uSD(w>LJ=_?j%OR(9|`Z3 zxhCblF43iZ3u)N6C>GqBN-8)WfYX6v;Vou?7KV5RxdgEP``kbC6nf0{ z*F>unK6d{B3tifz=3L}bu>L>@upB|@;K=QVG^TH*3T<;UGgS&5ipl4>T z?dt7mmj{IWd9w-vNGF7EjYz)6uy2uxX8@?xfJixZVB}4;n=oO*;`xNqb~@ ziE=eI=+BOhX$_bgL5EWHz zy2(x#A3pHD7WP7>`X$4FT{uwNh+$Mg7IZdBI;`r?=i98D`a7ofESJ~27-w@jmtzj2javt zz%Yo21Okw?`Dm=Supu`=L6ESEo0}PHnj`2SU5JP=`+X^ z;8@SMXSV~6^=JZ~z|zlQ|AC5t`xKB{Q3fp*%G7~Z)DW=}1b55nApq5rj3Ek$Cjxta zvA*g4c)Oa+;@f@!+T-Hizm?V03IIx%a(QJ11{PL?QaI+(+t=3CRvc+vB*4nbDmps4 z#him;8<*MAXvuC3b#d$Y$1)+e0Mg1RE(3)PN!DcDCCb348{%1;_*_tCzjKM-h=>cJg=~6c-=LY@MKjx5jAPk)xhsofx zL=m8xU9-U>BCZ0rR4IS%S9^Q=ZL#fLL0~*OjA4ihK|=#HJ=|54cn@i*FU{HHHR zC~kFn!5zYjDSgKkSL9Vn15CWdMMZ(nV&dWfg;2t-?(T!95MU(ETp^`$fZ3V^Ce{Gs zOQLm+o(U6n6@g7JWL+$m#tJmkQlaCyW>;I?p@xlR)+ddu!okuM7@5j?dh38I^%E2n z&}mBjsV?}Q@Y=m}?{EpW9iIMs=L9cTKg$|hS!i1ZTIADa3N<;ni5C!3bEApNQF4lz zg;T7VgH{0@hHwzP5-hjO$L7BHddVcw73evz4lu9IuOt8*&yWX;F-N`b9~R z0myEU_VwLeWeld+&HV{%^Lss@TwI+wm4P({5Y5>?4I9IEa7fm*e8bC$tkItWzkPwYr04RPd>$!nX%mO5qda^w)x zwD5C(mi$TS)*_&liLw+v9{-Zxd;Nh(fwP7=gtw==HlzFc$mf1;X=WB|x3-F-SPH)o z1fkk02Y)G~DEtHKY_%6p*iq+uBld+h#4*4~p8a>x`+dS)>l0w)30GMJbV|ncH#2_k zG`hXi^78*oNx^+xwO_}LI*w_0{g&{0AShAMT=z$bb9uV_mia_xQ622bPs$iTjvm?V z>uGu^AT!p=BQD+~V!are;pgg5Z}xAH&h~}?CJbcUI$aVZ?WFTbU-A#w)6>D z^3JXcprLyH=K5`RcCB_MSOPr!PZ|%RiwxeU$6*#(Jze(HVD~>-0c=nX&cNaZ;5sQ8 zl7Fw1-n;#uYgPvKHZd_UYNEQ|pOM&Y0O7vo?J&xA)fOHW8;s=p2`$lXxu$1oN|7}B zKl;8Jy3NYY4!N$;~;THH=#13+(lG=TkQYN z&C~Qy^YVRpd7OuXYuCrIY%z)k{yRz)eIHCStAoQ8A1UdEWZoT8Tz-~q&2QV(TXMBq zoLaJ2ciaLElMdsjgZ}>7;&CqrqZ4NL%cAqdmLpBnQ%?LaD-Gk`@(D#S5x3{@k71h_ zNEcO;UIej~E2ZHPQHFh8g52tpPU=zf{1swzZ2RrDV}e&jL%=jv*<5D6Y}{S%0Rp|9`10@|ZR z+8PMNcN7#BnwguwU-^A}S^yT+wzjqi3=~4%{maWuz}kQ9ik2m;_2cE zs}i7p0oV3ct*NA%nwmHVBxj)5BC#d{ooJ|dsh=~V4Ut+f zd>?osd9CtUU3s>juB&08Rng)C=9CNk7aMGrP^=Zm;*3OR%w>s+93St!>O4*DZ%%+W&!A#OZjoNKQoZ}iF4aiz}ezs1cF z_15NezBIOHeVxFb!Aubc^aacFa2#(LFs=jG-1a#vD$y?+jXn}E*nX%9hB0behEX6G zyJR_{HEK}46>O{)dSDau89B=OJLs|Yas!_m7*I&>wZFT7UV4!mym7uxcY3C}TEQ0% z;ZqelFWE+ey;+rM;wO$g%pUae%>~@j?l4INb?r!elg)WPs_*J9*xzin`m) zu4woA1}PI7fWRX!K(&;^z1PPJKeM{SiyA)gjR^0aq$IQyi(7)S-EH1zsha zj8|@KyK)VO@Jk{MT3GGc9U%JZy@e`S($(%*NMDj$oz@j;5FTyfHckAVwuAy3PIMGT z2Z7Y$!o<-m0LT~lD|<0Q!dYw*plmR0{jM zpVtd&db5$j(w{!!AHT%z7cKW8*h{EqmE;;hac*!hjjJ7e?pJZpjGFrg2aV1LG62!D zy=^pI@#_&jvdFGfM}wV1z!o*62qAys+ko=V%)nG#d}%e<;2t1vU>4{`mB*}u6!ltv z7@C;$rZfEe+^|a(!&FTyBHwWQybdKFUTLGxHf@slpJwR?GW# zIQzkYQI1HVwrReC!ooM;x_3Zv&kILTtqZeA@SxhxjW04gIr<>`lQNq{)@r-U`^=mn zZiOg)Q!ZG4x&*SsEOLF~+{-t@O>4sN4GH^Q5j9x9wX+Rbzz}&m?&j_Hix>3#qNl-%mFfqA zh~%6ey@mVr*3l>ZbP!1<`MR{GHd*yO<%*r z`<@0fKLrI5fPf<>`?eHL<6x7LN^}! zajDQnqP8st=;^uN3^}4NU*2x3PqMsue_d=?SZ1lA76Ws(J6SY*{Cck!5$cx;hOtx% zl_co$TqV!<-C~5Tyxuiq*u7%A%75bfW5Gi6wyP$$(Kz|#@!9~CX6M-woP?Y+G%@u! z$~cbgj6{nib5o9VeFCT%7L%C=+s8`br|P)VU4IkIk%{lRFLaZ)I^BMkdo^Ttu+*rl z# zebg*=!1I@a5C}}9bGw}BLoE#J>!>NZWL#jH=!3toU8=^uOv(Yndsa`HB;#SLOF0^enDK3-q58JL$jVdO*@BTsTEBC0PseW@ zQ5j3`$Fl3y%!M1TPCm0{Vl&tRJYYjw^&)or?H_E9LTwIIe(5152k27r-jfD@M5<`kGstLHL zjB6jC?4W0Hs4O#UMty#_z11!!QFzR*8G1}HG}n(f52kFt<27Xv`ko7GZAFct7kc3K znJMd&m=RyD&r2*X(OrsvOw3hwke`I0Z;Q>@?%;ZAbb!ct3QCiao`bZ6y~=V&W^$!o z@h=;x-)dJRz<+0rJjP8iS7_(|*8f`Fb*lc*S6%$g!h(;NH~j|hcfFjX+WeboXzz=w zs_olK+jD;7dRvOm>wE@dK(MLTjt`$S)+jNTr$~V90pwx!02DvH_q^*C3)?W_8LF@y zA9PlW*Ts}eea9jH{q&@6n($)v({WooT;_$aH}L6y@_k2XL3Lqx zY+LfrHhd8D1+m_oPF77AaJlvv?n_)sk$db!{#^b$ry>z^jeJq2$+q0%bMYKP*6!w_ zbW~-^n&!rTKQ#_;T&;jF185OS7Ode|Td^T(r*fvEqYZ$E4Hyp<%V%gTxvb>YpW>XK zS=#iY+Gaf1;H*wt{m9b84PWTCjZzPD4)KUnjd%yIeE<2T$sf;#_|Zx@cHpc?s23k6 zOR6`A&~560tl|PM}vzb`G!2zi!(1 z$_!0G)NBdL$>&K@&Dbtl@7(+|%{hzL>w^hlaphZ}o88&j0rXYs1gS~}2EGWf0Beq9 zDf)%eA+=MpLg&Q_ZD5KqxE~y>@5Y5u@02W3*_DxaY-_XBKQrA0QzQ(+aoD=A?_mBh zNg)fz*NJ%Hd2)K(jynauy&!R?p>rSE-&RR%&r+?f34RNH(r#0@{#tl_lV9`_(^oMK z1pSRZ)ThW$xNth?Jx@h$y)^h#^Wo#K>n;2)-F`rtd5Kw`%vz~X4mwptuS;uCkF@-Y zfO-^scfRVgn@ehX>U~QkoIjJv{~e=V-P^l^GU`4mNVK_w|3ziPlvx0dKItNHwB6l3 z1v(Ib1J8Juxp@{wBo{ts-tqGNlkpzk3jeEe(PYEO>Hd}ujbgt#E7A@lB>)|n_8@65 z{i~bT6l!5ZoJltzZ&v-toLE*8{A4##}#L0#C%FNKs6ecZyVvue85(g^cSl)BhQ%eNL#4@&Pr!ey-YD z5i~vhi;$q%V81a5y;n`1D02XCjf>TWIf;qiOs#kV2TsS2bTwxwh+f#;>1ixc|L}0W z0O&6yBqZ?eTv9Rhi*(-5!V2xy+~oBy?#va8=S%ZocK>D%2|enon_>sw>10}p;!v~w zR=2c^vjE?m_s(m$t{-tK_pjRxBOmIpQyER7iuhUV!E%b{4NXYZ-o@abuJj%qLL`s( zYfg57ykG66(HKBDHg83J06B}_XQBN&#;a+f*V%;^`|~9oQ{uOu)f3G}j)xPs&5fn+ zV=7#5che`q#WC&U>CHV03ze(w^Ym!YJl>DjHwR;Lb8~5&oO?W((L6jjtD6_p0Yy=BQ_& zVjLf|I+&lb%3VDIMFjdR?Y-a?U=Urtw0P0h`@u>?M6~vx_bW1TrOl}-<07((;U)~) zs1G9FOUC6!1qZbA^2jrlxhq?&{?AOB44rDnM@gLT{uh~&?nHY1suptoSvnAV!lYG0 zLPZ5zzknq<f!?q2;Q{{O6+{=DEE&SVZy|`#w_jIf;O_HUw6$y-n|y!e$s!>RM&l)n9pT%U zUO(@GYDJvD_bV%@M=-3kW9eTxGgm+8DLZds1fvio?ou8;L*n1hR1Xe-btBB_j@gvNr$I z!_BYKZd5#QweG`a65&(py}|hKuvU{TUNUMP&FaLWyT8)0lDmh904aL-rMo+Fs$AQm z(k4W~ry3xtfsT%jn|ql?^zC(0g?xA=)j~2`A{@)v!s|Kl_q+kAOoZ=VFInQF+%2ZIB!u-52_ScU>@yp&)>!(b<>Z8s+5Vtx`JdJ|SQcm9?;-i)E#xMI}bC>Po{(pBi+ z5C?i@R+=fBui)LBr;;Vs|=a_EAJ4ga2{;_)@Ic zP*|QP4{zq|xYJc0WaFUK#!7C#<#v$JWG2^T4J66kCt zGAPJfHCWz&x#=F)eZ|3O&ZxHD3Ro>T>JpEj3qHSZ?_OvYJLM z_W<$~zxrgxwhaRQnuBzGAbtQ?zdnh1M82%uqH0JTXzMn^muieZ8AIBdb6A+xeDXCY z;VasgO6%BNQIxRQ{fXdB#}Vnc9)oYF2*DplvmUR)2tM=BnE|Fr|vuqk6Y1_8B#0Y@^|BzuhAo{mh)rO7Ta- z=)mT$WLM^nc2GC7&(o+kF4xe?hmGw(NspvlrNmbM(BejFWH=D}IyL-=q7KK$iY0Tzr4wZY6?ezua$6nj zY{l!pwXjM7LKJ0RDV-0S)ktBxOYHxcepM%oyijm)yms!5KxHE zVPn_Q$hkpl5)}M(S%4P7_~ulWeIuAFH|_eSY-rr*&LzbV#7yRovS#X_8=-b@fD&9e-b2`gN3aWW79Q~TprOY z1f{l{0J*}ldnun`jlW#d~S6bS!AJb@8;NO!An}lP?R<5cI6S9hmLng%dAf^&%eCXQRI+>KQ z0c(zMDcha%b4wvX!M5)_vO&4Th&Np)+Bf(hktWlflvje-1QeNX1~?eu=cju^ca}=| z<7o;*NN{uo5s4kJC1DX|HYFzEye32RaU@<+)OeLN-zIl486`MQ*G*4rbB_MZF8HCb zrtt%YS2o*XV&Bxc;*7UHkRT*po>OU}D4Bwp8YG1FB2%uCN96OA0gwJ&5bp%m!l&O# zmO-6t%84;iu;Ld<*py(CTKu>Y1b7nJ!srk;w4PU*lr!|-$C6om^oCSDwwGEn6vkdC zI1-Qsh_OEL0&6ZU2J-33CmhiUZdVY6MVv72ilj>PZp8OFysocrdqbr@d|_G>;CB@| zINZxN=8Yd$fxt!PC(ZK8?slZ-;(C~VhY#P@rq9tMiz`_~Q(G2~GAv(!E=M}Wrr;{}&^RnU6hZ&_1^0;4l_o5bZU3Z1EN@n-6qPxk z9$E##eWJ7g7bXdX-$&ShlZE;dEsENP_t$pMm-)++nkzn5116Psey zl!U6>epf|@=i-U>SjpU8Uk7VElO!aL&1?&L4{dkLm6CBqypjoJNEAxKWUu7zaLTzO2Y?*g2Ac3CH$m(>`Yxo zRt|77Tw(?;ho=Y=((}q2tiG`ZHgeFFQAt%mrQhcVz<5Zkq!v$R70wn}@peX-`d^dQ zSR>l$QyyDS--4T$Pk|P3Podm&i;~*V^77x+;wHA-xbteccsz&bcRZFP&X* zc+e-%Gde+3VJTm8FdJ>0(G3+h+~eqe_+$Cu^NAEu9}KPF9cm8Ze~2 zimzeKfgnEB*7jy&!R4P)yD!ggUPVr1;IW*kY(*Ru1`SD%l9FR~}kp zh514=ZRrcQ>`_IYrvD-Ixrk8Do6JO^GEL*fwT-m0z2#4CddawEJJ}|t(jA(IZV*L5ur1&i*Od%j5fw3LS?cW}vF#Hd1Ot-_PDhanQBJzVt<_jL}k zvU( z2Va<9`L*llN{T{LoD4ls%SIRb7$|+6&smGNJTFtP*sDGDbEEpq0 za@GS#SoTlmtzQ>NF@LRaM@`gZt=JMQ$!t;ip-K5jXd+dc%tES`5~QT-J#$$icb8mA z6>8bK)z&!va_2IEi4gR!y$%-$NdwDzYPKVQifB*IlW~#o}a^T}QhwnN1T99(Lky z%Gloi&P4;iRFN(o3bn@z@{4`jgNmdOL zc)6pBh%$$PLlGH{Noq7?I&s>>mim%uZ8RxLV2T6OT~NB$K=Ew+mtRp}U*v&Z$c|rB z!PvHKs#YJN5iOO-b)aL4G(8s`8ogl?W8fDdiBkKuS6fk%Eb1P`LRsq@K93?tX5KwL z2n7k9GO*LBYtLIk{!^2L{GeNU0!KEE3@z!}RQcB(ilB*o&}>I9YLDSQGHTyFC-U&h zF6|NtelH=cr$bdLvn7xq`I?GveWuMk87M>t#}-zm=JF+3goTkq+pBH*1RP1Yv&TpI z|#nhD`Yr0m*P(ueSTf!Kgq zc879}k+~GAP)41*`Lm7&Rf;oC5|J0BX=-Pev%+W8JDZM_b9~)Q-fZUUd$Jcd+Wskd zFHVh4Qc0Jt)~Yz;Nd!AeXjo~-E*#H%AC#^^j93{4|IKJaj&EjXe~4Dcb?Rma6CQS< zejiak6UIdpzCh&|@W%4~tIm4U$9aKFSO}jQ`Z=IR7gFp)=8-?A`199>8+A0JZs2uIuq2gW72U>>CW(JOL(Gq`$4X3seJ3CC;o z#e)G!X0~s%>5v|HQ_dHfVY9avsHnh5k{Q?F>L>O>%SfqjxC7bYB1U0d-$Tg?8m$q< z+6ks3F=)C_m)LLyRf3%DGR0X24@1y~QxFd;Oh_r&z948U>btnSiUmh*?H;xb9y~{k zxn|GIX`@ig_Q4|GaHNZ`tiav;Tc9}|FFd+QqT}c_QJ=Z5H%}ea)?p!a7CM0V+bx6< z#P!iPp}ynGO9P2!%}!nb4JK~RXXqqqob(qu#dqcH7jteN+zE0+>Sl-STYgSo=f41yaN5RbGnqRDMaKagY=Gu+e0$tYn zn)mq9-@vx&OYS&~!k)|qB!?v_C6lZ|u@Z=OP&*1Cz&oy`rDd4?Yg|(hBA$5r!MD(B zm#dm(&8$pCs|gOCC!do-{^u|B@`b%W2h3*~i5=F8f(8Dpt&#JgQdDo=;11Pfo-3ktBp^VNM$U=af56Q&Z1vg@Ek zh2WKWDY#qsUfOXUwUMW&HlfymC))}IOqZLB^A)s?82|Zdz46kj2M$;QfhCBjs9X^> z{?g8(-U7{fXP_hqroN-C{weI$rcW9ZPA*AsrEdfu{S+hZ-$u9~i;hc>15%lIEzBUN zA^c@08BtR!But$AE=>A}Rqn(!h%HXcd2Y{7ACIjzUvmtMmzHCIY20RulPRzP z2oUzt3G8tJSSRtokGvkqQSR?H+4mrrBqY6}og~l>dF%rhngnEqyXUw#4F@7t=|Sv! zOPqk+rtG;yjV5_tC~|;zj}b;sRSwiNq`xrU347EbV@AHN?W26~SV6gNdk_wf%~f2Y z-=#4m!S(%pbXeFiuuBP$2;~p?iP5m@*PAntWCG+ZayVYQU4oJ+iO|dsd|%OX5VsIx zY8+j}cUV%`i5!QL31ad%F6&iE)Fz%-?vGd4`H;qPyzU*&F0B&dL`e+kfc+PMxWgkh zHf2&#|(D#Qj3G_ekUw>(x3glYn63E+eTL~z{(OJ%?$8vrr**+sXppw@m? z^a!P54fPQiUjswn98z+wfv+jalb5I_m@be0d!I9l1A8SsO;TNSY^tI?$JJpQo=H0u z<3QSYemgOrS>w1nzGom*@@e5!^PxiD5cl-SF#A}J{uL%?$b?98)ltj}BLtBpRL zr#&)jIc}I*|KD~6u#>0z3&-}(Cf7nW-i%-FkR9O%j^YsW8xDCtfjS^9EJu2N(q$zX z<|1yrx({`IOZs}Ud%@Q!YJr=9SUd|zPo3AmHZ;UUSL2F;6G*6AWg5hgxq=Wu5HtqF zQY08Nd5i2z{lIuf_?Mcsomr#pN*&-qUbW)u($&_EA`*B8wwIxac;=|nY3`8TQnEj> z_?`l4b;7Sk)9>2{zZ<}sJYC@Sm!de2?m};p`~C=eG^2&Tg+mdzK0)an zdhG3+%}pAoO&Z~7M=ks*NwJTV)J1UlK-g`4Y5T`_4h_Blt52iqoXzDhgj5t|v)$v1 zIEzc;CnIJE($tvsb;QI`w%}kmB*fhV=a9k!AUp>bq_w?$UF&u9{`LZB^t35sE1=bz zr>=w{&-f9_dUA{e3aw11UA;C~VV1^;RF)viWoIK*ZY2Eor7rnEe0JWr>zBV?SM4zn zrlJ0Y_5Pg}5^Nqkoy2byj#;mQ)L_o1j6lFn;FrI>_Ra zeR`FZO+FX!eNC3bfq{VYCrLUr*Gc~@oO*wc)Yp3m2#Mw?D-CYIotIj3DEH5Rb8Bj_ zO^g=dYG5Y=Qz4tF7Tevh4_7v$$^t1!By0VfqeD&sp<)#QFL}2&At)6^0tI4G!wiMo zKOWPM4%_*7KJ+@QpFKNqq$Yjg1W=P0j2wW@;4-&HOO%W}^n5kR@$ot!2u`uTUvK9x zZ|G0CG+s9#_cEu+4TymUEb%qXg+@;#;kPWwo-Ya=RJ#`^Tdcoq=n0E1*$zakYMMl~ zT*vS;s=Bo5a4J@zLT(}VLU&g3P{^d)-Xvj@b-Hn!jbpP4k)VZb z9tVOFR%9gK9C4tbSVV~geP8=f1%V*WA@-(O$SjxuA?pz!&ggh>%~oA8x1Iz|ih-rG z2Ez5fqnZBu9LDp%M~x#KgW#b}6of2ribq5gk= yMY!qS(T?A~|A;7LMX0{{ZC%t~=zZ>$*kxA)1?m95AJ`!jLRwrwtV+Zv@P7c)Jj0*> literal 0 HcmV?d00001 diff --git a/connectors/vmware/doc/index.rst b/connectors/vmware/doc/index.rst new file mode 100644 index 000000000..8f840209e --- /dev/null +++ b/connectors/vmware/doc/index.rst @@ -0,0 +1,24 @@ +.. Centreon ESXD documentation master file, created by + sphinx-quickstart on Mon Apr 22 11:17:38 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to Centreon ESXD's documentation! +========================================= + +Contents: + +.. toctree:: + :maxdepth: 2 + + installation/index + exploitation/index + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` + diff --git a/connectors/vmware/doc/installation/index.rst b/connectors/vmware/doc/installation/index.rst new file mode 100644 index 000000000..3534d2c3c --- /dev/null +++ b/connectors/vmware/doc/installation/index.rst @@ -0,0 +1,191 @@ +============ +Installation +============ + +Pré-Requis +========== + +Préconisations logicielles +`````````````````````````` + +Le connecteur "centreon-esxd" est testé et validé sur des environnements Linux. +L'installation sur d'autres environnements n'est pas exclu mais non présenté dans ce document (Solaris, Windows, ...). + +==================== ===================== +Logiciels Version minimum +==================== ===================== +VMWare SDK Perl 5.0 +Perl 5.8 +centreon-esxd 1.3 +==================== ===================== + +Préconisations matérielles +`````````````````````````` + +Le matériel nécessaire dépend du nombre de demandes de vérifications. Par défaut, le connecteur n'effectue aucunes vérifications. Les ressources minimales sont de : + +* mémoire vive : 512 Mo minimum (Peut sensiblement augmenter en fonction du nombre de contrôle). + +* CPU : même pré-requis que pour le serveur de collecte. + +Installation de centreon-esxd - Environnement centos/rhel 5 +=========================================================== + +Installation du SDK Perl VMWare +``````````````````````````````` + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l'installer. Pour cela nous allons commencer par installer CPAN qui est le nom d'un module Perl qui rend aisés le téléchargement, l'installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN. + + +Installer les pré-requis CPAN:: + + root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel + root # yum install perl-XML-LibXML perl-Crypt-SSLeay + + root # cpan install Class::MethodMaker + root # cpan install LWP + root # cpan install Net::SSLeay + root # cpan install LWP::Protocol::https + root # cpan install SOAP::Lite + + root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz + root # tar zxvf UUID-0.04.tar.gz + root # cd UUID-0.04 + root # perl Makefile.PL + root # make && make install + +Nous avons notre environnement prêt pour l'installation du SDK VMWare. + +Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (`SDK VMWare `_). + +Installer le SDK Perl VMWare:: + + root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz + root # cd vmware-vsphere-cli-distrib + root # perl Makefile.pl + root # make && make install + +Installation de modules complémentaires +``````````````````````````````````````` + +Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd : + +Pour envoyer les logs au daemon « syslog », il est nécessaire d'installer le module « Unix::Syslog »:: + + root # cpan install Unix::Syslog + +Pour vérifier la date des snapshots d'une machine virtuelle, il est nécessaire d'installer le module « DateTime::Format::ISO8601 » ( **ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué** ):: + + root # cpan install DateTime + root # cpan install DateTime::Format::ISO8601 + root # o conf make /usr/bin/make + root # o conf commit + +Ensuite redémarrer votre système. + +Installation de centreon-esxd +````````````````````````````` + +Télécharger l'archive de « centreon-esxd ». + +Installer les fichiers:: + + root # tar zxvf centreon-esxd-1.X.tar.gz + root # cd centreon-esxd-1.X + root # cp centreon_esxd /usr/bin/ + + root # mkdir -p /etc/centreon + root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm + root # cp centreon_esxd-init /etc/init.d/centreon_esxd + + root # mkdir -p /usr/share/centreon/lib/centreon-esxd + root # cp lib/* /usr/share/centreon/lib/centreon-esxd/ + +Activer le daemon « centreon-esxd » au démarrage:: + + root # chkconfig --level 2345 centreon_esxd on + + +*Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».* + +Installation de centreon-esxd - Environnement centos/rhel 6 +=========================================================== + +Installation du sdk Perl VMWare +``````````````````````````````` + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. + +Le connecteur « centreon-esxd » utilise le SDK Perl VMWare pour son fonctionnement. Nous allons donc l'installer. Pour cela nous allons commencer par installer CPAN qui est le nom d'un module Perl qui rend aisés le téléchargement, l'installation, la mise à jour et la maintenance des autres modules Perl qui sont archivés sur le CPAN. + +Installer les pré-requis CPAN:: + + root # yum install gcc make unzip wget expat-devel e2fsprogs-devel openssl-devel perl-CPAN libuuid-devel + root # yum install perl-XML-LibXML perl-Crypt-SSLeay perl-Class-MethodMaker perl-SOAP-Lite + + root # cpan install Test::More + root # cpan install LWP + root # cpan install Net::SSLeay + root # cpan install LWP::Protocol::https + + root # wget http://search.cpan.org/CPAN/authors/id/J/JN/JNH/UUID-0.04.tar.gz + root # tar zxvf UUID-0.04.tar.gz + root # cd UUID-0.04 + root # perl Makefile.PL + root # make && make install + +Nous avons notre environnement prêt pour l'installation du SDK VMWare. + +Télécharger la dernière version, correspondant à votre architecture 32/64 bits, sur le site officiel de VMWare (`SDK VMWare `_) + +Installer le SDK Perl VMWare:: + + root # tar zxvf VMware-vSphere-Perl-SDK-5.1.0-780721.x86_64.tar.gz + root # cd vmware-vsphere-cli-distrib + root # perl Makefile.pl + root # make && make install + +Installation de modules complémentaires +``````````````````````````````````````` + +Certains modules complémentaires Perl peuvent être installés si vous souhaitez utiliser certaines fonctionnalités du centreon_esxd : + +Pour envoyer les logs au daemon « syslog », il est nécessaire d'installer le module « Unix::Syslog »:: + + root # cpan install Unix::Syslog + +Pour vérifier la date des snapshots d'une machine virtuelle, il est nécessaire d'installer le module « DateTime::Format::ISO8601 » ( **ce module installe beaucoup de modules CPAN et est difficilement installable sans mettre à jour globalement « Perl ». Cette mise à jour est très risqué** ):: + + root # cpan install DateTime + root # cpan install DateTime::Format::ISO8601 + root # o conf make /usr/bin/make + root # o conf commit + +Ensuite redémarrer votre système. + +Installation de centreon-esxd +````````````````````````````` + +Télécharger l'archive de « centreon-esxd ». + +Installer les fichiers:: + + root # tar zxvf centreon-esxd-1.X.tar.gz + root # cd centreon-esxd-1.X + root # cp centreon_esxd /usr/bin/ + + root # mkdir -p /etc/centreon + root # cp centreon_esxd-conf.pm /etc/centreon/centreon_esxd.pm + root # cp centreon_esxd-init /etc/init.d/centreon_esxd + + root # mkdir -p /usr/share/centreon/lib/centreon-esxd + root # cp lib/* /usr/share/centreon/lib/centreon-esxd/ + +Activer le daemon « centreon-esxd » au démarrage:: + + root # chkconfig --level 2345 centreon_esxd on + + +*Le plugin « nagios » correspond au fichier « centreon_esx_client.pl ».* + +