Ad Widget

Collapse

CPU-Limitierung ?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • piti87
    Junior Member
    • Jun 2020
    • 23

    #1

    CPU-Limitierung ?

    Guten Morgen,
    ich überwache den IIS (Template Microsoft IIS).
    Wir haben auf dem Server 85 IIS-Sites und AppPools.

    Leider geht das ziemlich auf die Performance.

    Im Taskmanager sehe ich dazu immer wieder die Powershells hochkommen (ca. 3-6 Sekunden)
    "powershell -NoProfile -ExecutionPolicy Bypass -File C:\sys_batch\zabbix\iis\get_sitestate.ps1 "website_1""
    usw., halt für jeden AppPool.

    Wenn ich den Befehl
    "powershell -NoProfile -ExecutionPolicy Bypass -File C:\sys_batch\zabbix\iis\get_sitestate.ps1 "website_1""
    so direkt in einer CMD (als Admin) ausführe, geht es viel schneller und zieht auch deutlich weniger CPU?

    Die Checks laufen alle 5 Minuten und ziehen dann für ca. 2 min. bis zu 90 % CPU.
    Kann ich dem Befehl/Check irgendwie die Priorität runtersetzen, oder sagen dass er nur 20% der CPU verwenden darf?
    Gibt es da einen guten Ansatz?

    Mich würde es ja nicht stören, wenn der Check dann eine Minute im Summe länger läuft und dafür etwas weniger CPU zieht.


    Zabbix 5.0.26

    Danke!
    Last edited by piti87; 23-08-2022, 08:42.
  • ddenk
    Junior Member
    • Mar 2019
    • 14

    #2
    Hallo piti87,
    ​kannst du ein Link schicken, wo hast du das Template gefunden? Für Hilfe braucht man mehr Information.

    Comment

    • piti87
      Junior Member
      • Jun 2020
      • 23

      #3
      Ja klar, sorry.
      Dachte es gibt nur das eine.

      Müsste dieser hier sein (in Version 5)
      https://www.zabbix.com/de/integratio...s_agent_active

      Beim Export des Templates erhalte ich folgendes

      (
      Code:
      <?xml version="1.0" encoding="UTF-8"?>
      
      -<zabbix_export>
      
      <version>5.0</version>
      
      <date>2022-09-09T11:26:18Z</date>
      
      
      -<groups>
      
      
      -<group>
      
      <name> Templates </name>
      
      </group>
      
      </groups>
      
      
      -<templates>
      
      
      -<template>
      
      <template>Template Microsoft IIS</template>
      
      <name>Template Microsoft IIS</name>
      
      
      -<groups>
      
      
      -<group>
      
      <name> Templates </name>
      
      </group>
      
      </groups>
      
      
      -<applications>
      
      
      -<application>
      
      <name>IIS APP Pool</name>
      
      </application>
      
      
      -<application>
      
      <name>IIS Site</name>
      
      </application>
      
      </applications>
      
      
      -<discovery_rules>
      
      
      -<discovery_rule>
      
      <name>IIS AppPool</name>
      
      <key>apppool.discovery</key>
      
      <delay>1h</delay>
      
      <lifetime>0</lifetime>
      
      
      -<item_prototypes>
      
      
      -<item_prototype>
      
      <name>IIS AppPool {#APPPOOL}</name>
      
      <key>apppool.state[{#APPPOOL}]</key>
      
      <delay>3m</delay>
      
      <history>30d</history>
      
      <trends>0</trends>
      
      <value_type>TEXT</value_type>
      
      
      -<applications>
      
      
      -<application>
      
      <name>IIS APP Pool</name>
      
      </application>
      
      </applications>
      
      
      -<trigger_prototypes>
      
      
      -<trigger_prototype>
      
      <expression>{str(Stopped)}<>0</expression>
      
      <name>IIS AppPool {#APPPOOL} is down</name>
      
      <priority>HIGH</priority>
      
      </trigger_prototype>
      
      </trigger_prototypes>
      
      </item_prototype>
      
      </item_prototypes>
      
      </discovery_rule>
      
      
      -<discovery_rule>
      
      <name>IIS Site</name>
      
      <key>site.discovery</key>
      
      <delay>1h</delay>
      
      <lifetime>0</lifetime>
      
      
      -<item_prototypes>
      
      
      -<item_prototype>
      
      <name>IIS Site {#SITE}</name>
      
      <key>site.state[{#SITE}]</key>
      
      <delay>6m</delay>
      
      <history>30d</history>
      
      <trends>0</trends>
      
      <value_type>TEXT</value_type>
      
      
      -<applications>
      
      
      -<application>
      
      <name>IIS Site</name>
      
      </application>
      
      </applications>
      
      
      +<trigger_prototypes>
      
      
      
      
      
      
      
      
      
      
      
      </item_prototype>
      
      </item_prototypes>
      
      </discovery_rule>
      
      </discovery_rules>
      
      </template>
      
      </templates>
      
      </zabbix_export>​
      )

      Aber es ist halt ein grundsätzliches Thema mit der PowerShell, habe das auch mit der Tasküberwachung.
      Wenn Zabbix eine Powershell immer offen halten würde und mit dieser arbeiten, geht das überhaupt nicht groß auf die CPU. Aber jedes Mal wenn eine Powershell aufgemacht wird (sehe ich ja auch wenn ich manuell eine öffne) das leider erst Mal CPU zieht. Und wenn natürlich ständig welche zum Teil zeitgleich aufgemacht werden...

      Das ist aus meiner Sicht die Thematik.

      Danke und Grüße

      Comment

      • ddenk
        Junior Member
        • Mar 2019
        • 14

        #4
        Leider habe ich das Skript "get_sitestate.ps1" im Template nicht gefunden. Was macht es?

        LG

        Comment

        • piti87
          Junior Member
          • Jun 2020
          • 23

          #5
          Gerne:

          get_sites.ps1

          Code:
          Import-Module WebAdministration
          $sites = Get-ChildItem -Path IIS:\Sites -Name
          $idx = 1
          write-host "{"
          write-host " `"data`":[`n"
          foreach ($currentsite in $sites)
          {
          if ($idx -lt $sites.count)
          {
          
          $line= "{ `"{#SITE}`" : `"" + $currentsite + "`" },"
          write-host $line
          }
          elseif ($idx -ge $site.count)
          {
          $line= "{ `"{#SITE}`" : `"" + $currentsite + "`" }"
          write-host $line
          }
          $idx++;
          }
          write-host
          write-host " ]"
          write-host "}"
          ​


          get_sitestate.ps1


          Code:
          param ([string] $name = 0)
          Import-Module WebAdministration
          $siteState = Get-WebsiteState -name "$name"
          Write-Output ($siteState.value)​


          get_apppool.ps1


          Code:
          Import-Module WebAdministration
          $apppool = Get-ChildItem -Path IIS:\Apppools -Name
          $idx = 1
          write-host "{"
          write-host " `"data`":[`n"
          foreach ($currentapppool in $apppool)
          {
              if ($idx -lt $apppool.count)
              {
              
                  $line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" },"
                  write-host $line
              }
              elseif ($idx -ge $apppool.count)
              {
              $line= "{ `"{#APPPOOL}`" : `"" + $currentapppool + "`" }"
              write-host $line
              }
              $idx++;
          }
          write-host
          write-host " ]"
          write-host "}"
          ​



          get_apppoolstate.ps1

          param ([string] $name = 0)
          Import-Module WebAdministration
          $apppoolState = Get-WebAppPoolState -name "$name"
          Write-Output ($apppoolState.value)​
          LG

          Comment


          • ddenk
            ddenk commented
            Editing a comment
            Hallo,
            sehe ich nichts besonderes.

            Ich teste späte diese Template. Dann gebe ich Bescheid.
            LG
        Working...