{"id":227,"date":"2007-08-22T11:22:21","date_gmt":"2007-08-22T09:22:21","guid":{"rendered":"https:\/\/bob-team.de\/wordpress\/?p=227"},"modified":"2008-04-02T22:12:15","modified_gmt":"2008-04-02T20:12:15","slug":"perfmon-mit-cacti-visualisieren","status":"publish","type":"post","link":"https:\/\/bob-team.de\/wordpress\/2007\/08\/22\/perfmon-mit-cacti-visualisieren\/","title":{"rendered":"Perfmon mit Cacti visualisieren"},"content":{"rendered":"<p><img src='https:\/\/bob-team.de\/wordpress\/wp-content\/uploads\/2007\/08\/nagios_perfmon.png' alt='Screenshot Perfmon' \/><\/p>\n<p>Perfmon kann unter Windows Leistungsdaten ermitteln und grafisch aufbereitet darstellen. M\u00f6chte man diese Werte zentral mit Cacti verarbeiten, m\u00fcssen sie a) vom Cacti abgefragt werden k\u00f6nnen b) entsprechend gespeichert werden und c) in einem Diagramm dargestellt werden k\u00f6nnen.<\/p>\n<p><!--more--><\/p>\n<p>a) Der <em>NRPE<\/em> (l\u00e4uft wegen dem <em>Nagios<\/em>) liefert die gew\u00fcnschten Werte mit Hilfe eines kleinen VBS-Skripts und <em>wincheck_counter<\/em>.<\/p>\n<p>[code lang=&#8220;vb&#8220;]Set objShell=Wscript.CreateObject(&#8222;Wscript.shell&#8220;)<\/p>\n<p>&#8218;CPU<\/p>\n<p>Set objExecObject=objShell.exec(&#8222;%comspec% \/c C:\\nrpe_nt\\tools\\wincheck_counter\\wincheck_counter -C &#8222;&#8220;Prozessor&#8220;&#8220; -I &#8222;&#8220;_Total&#8220;&#8220; -P &#8222;&#8220;Prozessorzeit (%)&#8220;&#8220;&#8220;)<\/p>\n<p>Do Until objExecObject.stdOut.AtEndOfStream<br \/>\n   cpu_counter=objExecobject.stdOut.ReadLine()<br \/>\nLoop<\/p>\n<p>&#8218;RAM<\/p>\n<p>Set objExecObject=objShell.exec(&#8222;%comspec% \/c C:\\nrpe_nt\\tools\\wincheck_counter\\wincheck_counter -C &#8222;&#8220;Speicher&#8220;&#8220; -P &#8222;&#8220;Zugesicherte verwendete Bytes (%)&#8220;&#8220;&#8220;)<\/p>\n<p>Do Until objExecObject.stdOut.AtEndOfStream<br \/>\n   ram_counter=objExecobject.stdOut.ReadLine()<br \/>\nLoop<\/p>\n<p>&#8218;HDD<\/p>\n<p>Set objExecObject=objShell.exec(&#8222;%comspec% \/c C:\\nrpe_nt\\tools\\wincheck_counter\\wincheck_counter -C &#8222;&#8220;Physikalischer Datentr\u00e4ger&#8220;&#8220; -I &#8222;&#8220;_Total&#8220;&#8220; -P &#8222;&#8220;Durchschnittl. Warteschlangenl\u00e4nge des Datentr\u00e4gers&#8220;&#8220;&#8220;)<\/p>\n<p>Do Until objExecObject.stdOut.AtEndOfStream<br \/>\n   hdd_counter=objExecobject.stdOut.ReadLine()<br \/>\nLoop<\/p>\n<p>Wscript.Echo cpu_counter &#038; &#8222;;&#8220; &#038; ram_counter &#038; &#8222;;&#8220; &#038; hdd_counter<br \/>\nWScript.Quit(0)[\/code]<\/p>\n<p>b) <em>Rrdtool<\/em> schafft eine Datenbank zum speichern der Werte<\/p>\n<p>[code lang=&#8220;bash&#8220;]rrdtool create \/var\/rrd\/xyz_perfmon.rrd \\<br \/>\nDS:cpu:GAUGE:600:U:U \\<br \/>\nDS:ram:GAUGE:600:U:U \\<br \/>\nDS:hdd:GAUGE:600:U:U \\<br \/>\nRRA:AVERAGE:0.5:1:2160[\/code]<\/p>\n<p>Ein kleines Skript f\u00fcllt die Datenbank mit Werten.<\/p>\n<p>[code lang=&#8220;bash&#8220;]#!\/usr\/bin\/perl<\/p>\n<p>use Text::ParseWords;<\/p>\n<p>sub parse_csv {<br \/>\n   return quotewords(&#8222;;&#8220;,0, $_[0]);<br \/>\n}<\/p>\n<p>$ip = $ARGV[0];<br \/>\n$datei = $ARGV[1];<\/p>\n<p>$cmd = `\/usr\/local\/groundwork\/nagios\/libexec\/check_nrpe -H $ip -c check-wmi_cacti -t 60`;<\/p>\n<p>chomp $cmd;<\/p>\n<p>@fields = parse_csv($cmd);<\/p>\n<p>$cpu=$fields[0];<br \/>\n$cpu =~ s\/,\/.\/;<\/p>\n<p>$ram=$fields[1];<br \/>\n$ram =~ s\/,\/.\/;<\/p>\n<p>$hdd=$fields[2];<br \/>\n$hdd =~ s\/,\/.\/;<\/p>\n<p>system(&#8222;\/usr\/bin\/rrdtool update $datei N:$cpu:$ram:$hdd&#8220;);[\/code]<\/p>\n<p>Eine dazu passende Zeile in der <em>\/etc\/crontab<\/em> ruft das Skript jede Minute auf.<\/p>\n<p>[code lang=&#8220;bash&#8220;]* * * * * root \/root\/wincounter2rrd.pl 192.168.10.10 \/var\/rrd\/xyz_perfmon.rrd[\/code]<\/p>\n<p>c) ein Diagramm in <em>Cacti<\/em> erzeugen<\/p>\n<p>Eine nicht aktive &#8222;Data Source&#8220; beschreibt den Pfad zum Rrd-File und verkn\u00fcpft dieses mit einem &#8222;Data Template&#8220;, was die Werte &#8222;cpu&#8220;, &#8222;ram&#8220; und &#8222;hdd&#8220; definiert. Die &#8222;Data Source&#8220; wird dann zusammen mit einem &#8222;Device&#8220; \u00fcber ein &#8222;Graph Template&#8220; f\u00fcr einen &#8222;Graph&#8220; genutzt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Perfmon kann unter Windows Leistungsdaten ermitteln und grafisch aufbereitet darstellen. M\u00f6chte man diese Werte zentral mit Cacti verarbeiten, m\u00fcssen sie a) vom Cacti abgefragt werden k\u00f6nnen b) entsprechend gespeichert werden und c) in einem Diagramm dargestellt werden k\u00f6nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[36,31,45],"class_list":["post-227","post","type-post","status-publish","format-standard","hentry","category-netzwerk","tag-cacti","tag-nagios","tag-rrdtool","entry"],"_links":{"self":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":0,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/posts\/227\/revisions"}],"wp:attachment":[{"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/media?parent=227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/categories?post=227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bob-team.de\/wordpress\/wp-json\/wp\/v2\/tags?post=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}