fusioninventory / FusionInventory

Open and follow issues about the project (agent, plugin for GSIT, website and documentation)
1 stars 0 forks source link

le plugin agent ne remonte pas la RAM dans une VM de generation 2 créé sous hyper V #39

Open gverrey opened 3 years ago

gverrey commented 3 years ago

Bonjour,

Pour info :

Le plugin agent ne remonte pas la RAM dans une VM de génération 2 créé sous hyper V. Typiquement, j'ai toute mes VM sous plein d'hyper V (2012, 2016, 2019) J'ai créé des VM (win 2019 et win 2012 r2) sur un hyperviseur sous win 2019, en VM de génération 2 et la RAM n'est pas remontée. Sur glpi, dans la section ordinateurs, quand je clique sur la VM, dans la partie composants, sous processeur, n'apparait que le processeur virtuel mais pas la RAM.

g-bougard commented 3 years ago

Bonjour @gverrey , c'est probablement plutôt un problème de l'agent du coup. Peux-tu déjà préciser dans quel contexte tu es ? Inventaire depuis l'hôte ou inventaire dans la VM ? Et est-ce que tu utilises l'agent FusionInventory v2.6 ?

gverrey commented 3 years ago

Hello,

Oui, l'inventaire est fait depuis la vm avec l'agent en 2.6

Guillaume VERREY

g-bougard commented 3 years ago

Juste un point concernant la réponse: évitez de garder le message original dans une réponse par mail pour ne pas polluer inutilement le fil de l'issue. Merci d'avance ;-)

Du coup, il faudrait commencer par savoir quel est l'output de la commande dmidecode sur cette machine. Cette commande est livrée avec l'agent dans le sous-dossier perl\bin du dossier d'installation et doit être exécutée dans une console admin.

gverrey commented 3 years ago
# dmidecode 3.3-gitd64af977
SMBIOS 3.1 present.
15 structures occupying 1082 bytes.
Table at 0x00760D48.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
        Vendor: Microsoft Corporation
        Version: Hyper-V UEFI Release v4.0
        Release Date: 12/17/2019
        ROM Size: 64 kB
        Characteristics:
                BIOS characteristics not supported
                ACPI is supported
                Targeted content distribution is supported
                UEFI is supported
                System is a virtual machine
        BIOS Revision: 4.0

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: Microsoft Corporation
        Product Name: Virtual Machine
        Version: Hyper-V UEFI Release v4.0
        Serial Number: 3135-4298-3414-7021-8716-7514-85
        UUID: f78a0579-5bf5-4de9-a5c7-b5ad2023449b
        Wake-up Type: Power Switch
        SKU Number: None
        Family: Virtual Machine

Handle 0x0002, DMI type 3, 24 bytes
Chassis Information
        Manufacturer: Microsoft Corporation
        Type: Desktop
        Lock: Not Present
        Version: Hyper-V UEFI Release v4.0
        Serial Number: 3135-4298-3414-7021-8716-7514-85
        Asset Tag: 3135-4298-3414-7021-8716-7514-85
        Boot-up State: Safe
        Power Supply State: Safe
        Thermal State: Safe
        Security Status: Unknown
        OEM Information: 0x00000000
        Height: Unspecified
        Number Of Power Cords: Unspecified
        Contained Elements: 0
        SKU Number: Virtual Machine

Handle 0x0003, DMI type 2, 17 bytes
Base Board Information
        Manufacturer: Microsoft Corporation
        Product Name: Virtual Machine
        Version: Hyper-V UEFI Release v4.0
        Serial Number: 3135-4298-3414-7021-8716-7514-85
        Asset Tag: None
        Features:
                Board is a hosting board
        Location In Chassis: Virtual Machine
        Chassis Handle: 0x0002
        Type: Motherboard
        Contained Object Handles: 0

Handle 0x0004, DMI type 4, 48 bytes
Processor Information
        Socket Designation: None
        Type: Central Processor
        Family: Unknown
        Manufacturer: None
        ID: 00 00 00 00 00 00 00 00
        Version: None
        Voltage: Unknown
        External Clock: Unknown
        Max Speed: 4000 MHz
        Current Speed: Unknown
        Status: Populated, Enabled
        Upgrade: None
        L1 Cache Handle: Not Provided
        L2 Cache Handle: Not Provided
        L3 Cache Handle: Not Provided
        Serial Number: None
        Asset Tag: None
        Part Number: None
        Core Count: 1
        Core Enabled: 1
        Thread Count: 1
        Characteristics: None

Handle 0x0005, DMI type 11, 5 bytes
OEM Strings
        String 1: [MS_VM_CERT/SHA1/9b80ca0d5dd061ec9da4e494f4c3fd1196270c22]
        String 2: 00000000000000000000000000000000
        String 3: To be filled by OEM

Handle 0x0006, DMI type 16, 23 bytes
Physical Memory Array
        Location: System Board Or Motherboard
        Use: System Memory
        Error Correction Type: None
        Maximum Capacity: 0 bytes
        Error Information Handle: Not Provided
        Number Of Devices: 2

Handle 0x0007, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x0006
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: 3968 MB
        Form Factor: Unknown
        Set: None
        Locator: M0001
        Bank Locator: None
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Microsoft Corporation
        Serial Number: None
        Asset Tag: None
        Part Number: None
        Rank: Unknown
        Configured Memory Speed: Unknown
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: Unknown

Handle 0x0008, DMI type 19, 31 bytes
Memory Array Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000F80003FF
        Range Size: 3968 MB
        Physical Array Handle: 0x0006
        Partition Width: 0

Handle 0x0009, DMI type 20, 35 bytes
Memory Device Mapped Address
        Starting Address: 0x00000000000
        Ending Address: 0x000F80003FF
        Range Size: 3968 MB
        Physical Device Handle: 0x0007
        Memory Array Mapped Address Handle: 0x0008
        Partition Row Position: Unknown

Handle 0x000A, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x0006
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: 128 MB
        Form Factor: Unknown
        Set: None
        Locator: M0002
        Bank Locator: None
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Microsoft Corporation
        Serial Number: None
        Asset Tag: None
        Part Number: None
        Rank: Unknown
        Configured Memory Speed: Unknown
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: Unknown

Handle 0x000B, DMI type 19, 31 bytes
Memory Array Mapped Address
        Starting Address: 0x00100000000
        Ending Address: 0x001080003FF
        Range Size: 131073 kB
        Physical Array Handle: 0x0006
        Partition Width: 0

Handle 0x000C, DMI type 20, 35 bytes
Memory Device Mapped Address
        Starting Address: 0x00100000000
        Ending Address: 0x001080003FF
        Range Size: 131073 kB
        Physical Device Handle: 0x000A
        Memory Array Mapped Address Handle: 0x000B
        Partition Row Position: Unknown

Handle 0x000D, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Handle 0xFEFF, DMI type 127, 4 bytes
End Of Table
g-bougard commented 3 years ago

Ici le module mémoire est celui de type 17:

Handle 0x0007, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x0006
        Error Information Handle: Not Provided
        Total Width: Unknown
        Data Width: Unknown
        Size: 3968 MB
        Form Factor: Unknown
        Set: None
        Locator: M0001
        Bank Locator: None
        Type: Unknown
        Type Detail: Unknown
        Speed: Unknown
        Manufacturer: Microsoft Corporation
        Serial Number: None
        Asset Tag: None
        Part Number: None
        Rank: Unknown
        Configured Memory Speed: Unknown
        Minimum Voltage: Unknown
        Maximum Voltage: Unknown
        Configured Voltage: Unknown

Avec tout ces "Unknown", ça signifie que le bios monté avec ton Hyper-V n'est pas très coopératif, mais ça c'est une constante avec les produits de cette marque d'éviter de suivre les standards et de casser le travail des autres. Bref, j'imagine que le plugin échoue à importer le module mémoire comme il doit manquer quelque chose. As-tu vérifié les noeuds XML MEMORIES dans le fichier XML d'import pour voir si c'est cohérent avec ce que voit dmidecode ? Le fichier est disponible depuis l'onglet "Informations d'import".

Tu peux aussi faire un test en renommant le binaire dmidecode sur la VM pour que l'agent ne puisse pas l'exécuter et qu'il se rabatte sur des appels WMI. Ca pourrait donner un meilleur résultat dans ton cas.

gverrey commented 3 years ago

J'ai testé en en renommant le binaire dmidecode sur la VM et la remonté de la RAM se passe nikel.

Par contre c'est bizarre car j'ai remis le dmidecode, relancer un inventaire, ma RAM disparait a nouveau mais quand je regarde le XML généré, j'obtiens :

    <HARDWARE>
      <CHASSIS_TYPE>Desktop</CHASSIS_TYPE>
      <CHECKSUM>7</CHECKSUM>
      <DEFAULTGATEWAY>192.168.2.60</DEFAULTGATEWAY>
      <DNS>127.0.0.1</DNS>
      <ETIME>14</ETIME>
      <IPADDR>192.168.2.3</IPADDR>
      <MEMORY>4094</MEMORY>
      <NAME>dc1</NAME>

mais aussi plus bas ans le xml

   <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>M0001</CAPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>1</NUMSLOTS>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>M0002</CAPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>2</NUMSLOTS>
    </MEMORIES>

Bref, je rapporte les faits mais je ne sais pas quoi en penser. :) En tout cas, en WMI c'est mieux, merci à toi pour ta réactivité et ton astuce impeccable !

g-bougard commented 3 years ago

Oui, c'est ce que je disais, l'information est très pauvre dans ce cas à cause du Bios utilisé par ton HyperV. Tu devrais comparer les blocs MEMORIES à ceux que tu vois en passant par WMI quand dmidecode est renommé. Ça pourrait d'ailleurs nous donner une piste pour un correctif. Avoir l'output des commandes suivantes aiderait peut-être aussi :

wmic path Win32_PhysicalMemory get /Format:list
wmic path Win32_PhysicalMemoryArray get /Format:list
gverrey commented 3 years ago
> wmic path Win32_PhysicalMemory get /Format:list

Attributes=0
BankLabel=None
Capacity=4160749568
Caption=Mémoire physique
ConfiguredClockSpeed=0
ConfiguredVoltage=0
CreationClassName=Win32_PhysicalMemory
DataWidth=
Description=Mémoire physique
DeviceLocator=M0001
FormFactor=0
HotSwappable=
InstallDate=
InterleaveDataDepth=0
InterleavePosition=0
Manufacturer=Microsoft Corporation
MaxVoltage=0
MemoryType=0
MinVoltage=0
Model=
Name=Mémoire physique
OtherIdentifyingInfo=
PartNumber=None
PositionInRow=
PoweredOn=
Removable=
Replaceable=
SerialNumber=None
SKU=
SMBIOSMemoryType=2
Speed=
Status=
Tag=Physical Memory 0
TotalWidth=
TypeDetail=4
Version=

Attributes=0
BankLabel=None
Capacity=134217728
Caption=Mémoire physique
ConfiguredClockSpeed=0
ConfiguredVoltage=0
CreationClassName=Win32_PhysicalMemory
DataWidth=
Description=Mémoire physique
DeviceLocator=M0002
FormFactor=0
HotSwappable=
InstallDate=
InterleaveDataDepth=0
InterleavePosition=0
Manufacturer=Microsoft Corporation
MaxVoltage=0
MemoryType=0
MinVoltage=0
Model=
Name=Mémoire physique
OtherIdentifyingInfo=
PartNumber=None
PositionInRow=
PoweredOn=
Removable=
Replaceable=
SerialNumber=None
SKU=
SMBIOSMemoryType=2
Speed=
Status=
Tag=Physical Memory 1
TotalWidth=
TypeDetail=4
Version=
> wmic path Win32_PhysicalMemoryArray get /Format:list

Caption=Bloc de mémoire physique
CreationClassName=Win32_PhysicalMemoryArray
Depth=
Description=Bloc de mémoire physique
Height=
HotSwappable=
InstallDate=
Location=3
Manufacturer=
MaxCapacity=0
MaxCapacityEx=2147483648
MemoryDevices=2
MemoryErrorCorrection=3
Model=
Name=Bloc de mémoire physique
OtherIdentifyingInfo=
PartNumber=
PoweredOn=
Removable=
Replaceable=
SerialNumber=
SKU=
Status=
Tag=Physical Memory Array 0
Use=3
Version=
Weight=
Width=

Blocs MEMORIES avec dmidecode :

    <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>M0001</CAPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>1</NUMSLOTS>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>M0002</CAPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>2</NUMSLOTS>
    </MEMORIES>

Blocs MEMORIES sans dmidecode :

    <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>Mémoire physique</CAPTION>
      <DESCRIPTION>Mémoire physique</DESCRIPTION>
      <FORMFACTOR>Unknown</FORMFACTOR>
      <NUMSLOTS>0</NUMSLOTS>
      <REMOVABLE>0</REMOVABLE>
      <SERIALNUMBER>None</SERIALNUMBER>
      <TYPE>Unknown</TYPE>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>Mémoire physique</CAPTION>
      <DESCRIPTION>Mémoire physique</DESCRIPTION>
      <FORMFACTOR>Unknown</FORMFACTOR>
      <MEMORYCORRECTION>None</MEMORYCORRECTION>
      <NUMSLOTS>1</NUMSLOTS>
      <REMOVABLE>0</REMOVABLE>
      <SERIALNUMBER>None</SERIALNUMBER>
      <TYPE>Unknown</TYPE>
    </MEMORIES>
g-bougard commented 3 years ago

Salut @gverrey

merci, j'ai utilisé ton cas pour ajouter des tests unitaires à l'agent GLPI et tout de même supporter l'exécution avec dmidecode. Le patch est là si tu veux l'appliquer à ton agent FusionInventory. Il devrait s'appliquer sans problème.

Le résultat devrait donner chez toi pour les noeuds XML ceci:

    <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>M0001</CAPTION>
      <DESCRIPTION>Hyper-V Memory</DESCRIPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>1</NUMSLOTS>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>M0002</CAPTION>
      <DESCRIPTION>Hyper-V Memory</DESCRIPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>2</NUMSLOTS>
    </MEMORIES>

Avec seulement le noeud DESCRIPTION en plus qui est mandataire ici.

gverrey commented 3 years ago

Merci Guillaume.

Ok je vais attendre le nightly build pour pouvoir l'installer sur ma VM windows, car je sais pas trop comment l'appliquer autrement :(. Merci encore, je te tiens au courant demain.

gverrey commented 3 years ago

C'est ok, Merci !

La sortie XML 👍

   <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>Mémoire physique</CAPTION>
      <DESCRIPTION>Mémoire physique</DESCRIPTION>
      <FORMFACTOR>Unknown</FORMFACTOR>
      <NUMSLOTS>0</NUMSLOTS>
      <REMOVABLE>0</REMOVABLE>
      <SERIALNUMBER>None</SERIALNUMBER>
      <TYPE>Unknown</TYPE>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>Mémoire physique</CAPTION>
      <DESCRIPTION>Mémoire physique</DESCRIPTION>
      <FORMFACTOR>Unknown</FORMFACTOR>
      <MEMORYCORRECTION>None</MEMORYCORRECTION>
      <NUMSLOTS>1</NUMSLOTS>
      <REMOVABLE>0</REMOVABLE>
      <SERIALNUMBER>None</SERIALNUMBER>
      <TYPE>Unknown</TYPE>
    </MEMORIES>
g-bougard commented 3 years ago

Sauf que là tu as les noeuds sans utiliser dmidecode...

gverrey commented 3 years ago

Oups, je sais pas pourquoi... Je viens de refaire la manip et effectivement, ça à du se faire sans dmidecode précédemment.. Bref, ça remonte bien avec dorénavant. Merci !!

  <MEMORIES>
      <CAPACITY>3968</CAPACITY>
      <CAPTION>M0001</CAPTION>
      <DESCRIPTION>Hyper-V Memory</DESCRIPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>1</NUMSLOTS>
    </MEMORIES>
    <MEMORIES>
      <CAPACITY>128</CAPACITY>
      <CAPTION>M0002</CAPTION>
      <DESCRIPTION>Hyper-V Memory</DESCRIPTION>
      <MANUFACTURER>Microsoft Corporation</MANUFACTURER>
      <NUMSLOTS>2</NUMSLOTS>
    </MEMORIES>
ddurieux commented 3 years ago

Sorry, not fixed, I reopen the issue