Table of Contents

8 Problemes coneguts

Veieu també: Problemes de compilació.

Engegada del proxy amb MySQL 8.0.0-8.0.17

El zabbix_proxy amb les versions 8.0.0-8.0.17 de MySQL falla amb l'error d'"accés rebutjat" següent:

[Z3001] connection to database 'zabbix' failed: [1227] Access denied; you need (at least one of) the SUPER, SYSTEM_VARIABLES_ADMIN or SESSION_VARIABLES_ADMIN privilege(s) for this operation

Això es deu al fet que MySQL 8.0.0 comença a aplicar permisos especials per establir variables de sessió. Tanmateix, a la versió 8.0.18, aquest comportament s'ha esborrat: A partir de MySQL 8.0.18, establir el valor de sessió d'aquesta variable del sistema ja no és una operació restringida.

La solució passa per concedir privilegis addicionals a l'usuari zabbix:

Per les versions 8.0.14 a 8.0.17 de MySQL :

 grant SESSION_VARIABLES_ADMIN on *.* to 'zabbix'@'localhost';

Per les versions 8.0.0 a 8.0.13 de MySQL :

grant SYSTEM_VARIABLES_ADMIN on *.* to 'zabbix'@'localhost';

Actualització

Configuració del mode SQL per a una actualització correcta

La configuració sql_mode a MySQL/MariaDB ha de tindre el mode "STRICT_TRANS_TABLES" establert. Si és absent, l'actualització de la base de dades Zabbix fallarà (veieu també ZBX-19435).

Actualitzar amb MariaDB 10.2.1 i versions anteriors

L'actualització de Zabbix pot fallar si les taules de base de dades es van crear amb MariaDB 10.2.1 o versions anteriors, perquè en aquestes versions el format de fila predeterminat és compacte. Això es pot resoldre canviant el format de fila a dinàmic (veieu també ZBX-17690).

Plantilles

Compatibilitat de plantilles en entorns de doble pila (IPv4/IPv6).

En entorns de doble pila (sistemes configurats per suportar tant IPv4 com IPv6), el nom d'equip localhost normalment es resol amb adreces IPv4 i IPv6. A causa de la priorització comuna d'IPv6 sobre IPv4 per part de molts sistemes operatius i solucionadors de DNS, les plantilles Zabbix poden no funcionar correctament si el servei que s'és monitorant està configurat per escoltar només a IPv4.

Els serveis que no són configurats per escoltar a les adreces IPv6 poden arribar a ser inaccessibles, la qual cosa comporta errors de supervisió. Els usuaris poden configurar l'accés correctament per a IPv4, però encara tenen problemes de connectivitat a causa del comportament predeterminat de prioritzar IPv6.

Una solució alternativa és assegurar-se que els serveis (Nginx, Apache, PostgreSQL, etc.) siguin configurats per escoltar tant a les adreces IPv4 com a IPv6, i que el servidor/agent Zabbix tingui accés mitjançant IPv6. A més, a les plantilles i configuracions de Zabbix, utilitzeu localhost explícitament en lloc de 127.0.0.1 per garantir la compatibilitat amb IPv4 i IPv6.

Per exemple, quan es monitori PostgreSQL amb l'agent PostgreSQL by Zabbix 2, potser haureu d'editar el fitxer pg_hba.conf per permetre connexions per a l'usuari zbx_monitor. Si l'entorn de doble pila prioritza IPv6 (el sistema resol localhost a ::1) i configureu localhost però només afegiu una entrada IPv4 (127.0.0.1/32), la connexió fallarà perquè no hi ha coincidències. Entrada IPv6.

El següent exemple de fitxer pg_hba.conf garanteix que l'usuari zbx_monitor es pugui connectar a qualsevol base de dades des de la màquina local mitjançant adreces IPv4 i IPv6 amb mètodes d'autenticació diferents:

# TIPUS BASE DE DADES MÈTODE ADREÇA D'USUARI
         allotja tota la confiança de localhost de zbx_monitor
         allotja tots els zbx_monitor 127.0.0.1/32 md5
         allotja tot zbx_monitor ::1/128 scram-sha-256

Si cal, també podeu utilitzar l'adreça IPv4 (127.0.0.1) directament quan configureu PostgreSQL by Zabbix agent 2 macro de plantilla per a la connexió corda.

Instal·lació accidental de paquets EPEL Zabbix

Amb el repositori EPEL instal·lat i habilitat, la instal·lació de Zabbix des dels paquets farà que s'instal·lin els paquets EPEL Zabbix en lloc dels paquets oficials de Zabbix.

En aquest cas, desinstal·leu els paquets Zabbix d'EPEL, és a dir:

dnf remove zabbix-server-mysql

Bloqueu els paquets Zabbix d'EPEL. Afegiu la línia següent al fitxer /etc/yum.conf:

exclude=zabbix7.0*

Torneu a instal·lar el servidor Zabbix:

dnf install zabbix-server-mysql

Tingueu en compte que els paquets oficials de Zabbix tenen la paraula releasea la cadena de la versió:

7.0.0-release1.el8

Paquets Zabbix per a RHEL en entorns Red Hat UBI

Quan instal·leu Zabbix des de paquets de Red Hat Enterprise Linux en entorns Red Hat Universal Base Image, assegureu-vos l'accés als repositoris i dependències necessàries. Els paquets Zabbix depenen de les biblioteques libOpenIPMI.so i libOpenIPMIposix.so, que no són proporcionades per cap paquet als repositoris del gestor de paquets per defecte habilitats als sistemes UBI i provocaran errors d'instal·lació.

Les biblioteques libOpenIPMI.so i libOpenIPMIposix.so són disponibles al paquet OpenIPMI-libs, que és proporcionat pel repositori redhat-#-for-<arch>-appstream-rpms. L'accés a aquest dipòsit es soluciona mitjançant subscripcions, que, en el cas dels entorns UBI, es propaguen muntant la configuració del dipòsit i els directoris de secrets de l'equip RHEL a l'espai de noms del sistema de fitxers del contenidor.

Per obtindre més informació, veieu ZBX-24291.

Clau de signatura caducada per als paquets RHEL

Quan actualitzeu Zabbix a Red Hat Enterprise Linux o els seus derivats, és possible que us trobeu amb un problema de clau de signatura caducada per als paquets al repositori Zabbix. Quan caduca una clau de signatura, els intents de verificar les signatures dels paquets donaran lloc a un error que indica que el certificat o la clau ja no són vàlids. Per exemple:

error: verificant una signatura mitjançant el certificat D9AA84C2B617479C6E4FCF4D19F2475308EFA7DD (Zabbix LLC (jul 2022) <[email protected]>):
         1. El certificat 19F2475308EFA7DD no és vàlid: el certificat no és viu
             perquè: La clau primària no és en directe
             perquè: caducat el 2024-07-04T11:41:23Z
         2. La clau 19F2475308EFA7DD no és vàlida: la clau no és activa
             perquè: La clau primària no és en directe
             perquè: caducat el 2024-07-04T11:41:23Z

Per resoldre aquests problemes, torneu a instal·lar manualment el darrer paquet zabbix-release per a la vostra variant específica de RHEL (substituïu l'enllaç següent per el correcte del repositori Zabbix.

Per exemple, a RHEL 9, executeu:

rpm -Uvh https://repo.zabbix.com/zabbix/7.2/release/rhel/9/noarch/zabbix-release-latest.el9.noarch.rpm

A continuació, actualitzeu la informació del repositori:

dnf update

Per obtindre més informació, veieu ZBX-24761.

Timescale DB : alt ús de memòria amb un gran nombre de particions

Les versions 9.6-12 de PostgreSQL empren massa memòria quan actualitzen taules amb un gran nombre de particions (veieu l'informe del problema). Aquest problema es manifesta quan Zabbix actualitza les tendències als sistemes amb TimescaleDB si les tendències es divideixen en segments relativament petits (p. ex., 1 dia). Això fa que es vegin centenars de fragments a les taules de tendències amb la configuració de manteniment predeterminada, la condició en la qual és probable que PostgreSQL es quedi sense memòria.

El problema s'ha corregit des de Zabbix 5.0.1 per a instal·lacions noves amb TimescaleDB, però si TimescaleDB es va configurar amb Zabbix abans, consulteu ZBX-16347 per a notes de migració.

Timescaledb 2.5.0: l'estratègia de compressió pot fallar en taules que contenen nombres enters

Aquest problema es manifesta quan s'empra TimescaleDB 2.5.0 / 2.5.1. S'ha resolt des de TimescaleDB 2.5.2.

Per obtindre més informació, consulteu TimescaleDB Issues #3773.

Connexió TLS a la base de dades amb MariaDB

La connexió TLS a la base de dades no s'admet pas amb l'opció 'verify_ca' per al paràmeetre DBTLSConnect si s'empra MariaDB.

Blocatges possibles amb MySQL/MariaDB

Quan s'executa amb una càrrega pesada i amb més d'un agent LLD implicat, és possible entrar en un bloqueig causat per un error d'InnoDB relacionat amb la política de bloqueig de filera (veieu l'error. mysql-server/commit/7037a0bdc83196755a3bf3e935cfb3c0127715d5)). L'error s'ha corregit a MySQL des de l'8.0.29, però no a MariaDB. Per obtindre més informació, consulteu ZBX-21506.

Correlació global d'esdeveniments

Els esdeveniments poden no ésser correlacionats correctament si l'interval de temps entre el primer i el segon esdeveniment és molt petit, és a dir, mig segon o menys.

Interval de tipus de dades numèriques (flotant) amb PostgreSQL 11 i anteriors

PostgreSQL 11 i versions anteriors només admeten l'interval de valors de coma flotant al rang de -1.34E-154 a 1.34E+154.

NetBSD 8.0 i més recent

Diversos processos Zabbix es poden bloquejar aleatòriament a l'inici a les versions 8.X i 9.X de NetBSD. Això es deu al fet que la mida de la pila per defecte és massa petita (4 Mo), i es pot d'augmentar executant:

 límit -s 10240

Per obtindre més informació, consulteu l'informe del problema relacionat: ZBX-18275.

Limitacions d'expressió regular a l'agent Zabbix 2

L'agent Zabbix 2 no admet els lookaheads i lookbacks a les expressions regulars degut a les limitacions estàndard de la biblioteca d'expressions regulars de Go.

Verificacions IPMI

Les comprovacions IPMI no funcionaran amb el paquet estàndard de la biblioteca OpenIPMI a Debian abans de la versió 9 (stretch) i Ubuntu anterior a la 16.04 (xenial). Per resoldre aquest problema, torneu a compilar la biblioteca OpenIPMI amb OpenSSL habilitat, tal com es mostra a ZBX-6139.

Verificacions SSH

- Algunes distribucions de Linux com Debian i Ubuntu no admeten claus privades xifrades (amb mot de pas) si la biblioteca libssh2 és instal·lada des dels paquets. Consulteu [ZBX-4850](https://support.zabbix.com/browse/ZBX-4850) per obtindre més informació.
       
       - Quan empreu libssh 0.9.x a CentOS 8 en algunes distribucions de Linux amb OpenSSH 8, les comprovacions SSH poden informar de tant en tant que "No es poden llegir les dades del servidor SSH". Això és causat per un [problema](https://gitlab.com/libssh/libssh-mirror/-/merge_requests/101) a libssh ([informe detallat](https://bugs.libssh.org/T231)) . L'error s'hauria d'haver corregit amb una versió estable de libssh 0.9.5. Consulteu també [ZBX-17756](https://support.zabbix.com/browse/ZBX-17756) per a més detalls.
       
       - Emprar la pleca "|" a l'script SSH pot provocar un error "No es poden llegir les dades del servidor SSH". En aquest cas, es recomana actualitzar la versió de la biblioteca libssh. Consulteu també [ZBX-21337](https://support.zabbix.com/browse/ZBX-21337) per obtindre més detalls.

Verificacions ODBC

  • El controlador MySQL unixODBC no s'ha d'emprar amb el servidor Zabbix o el proxy Zabbix compilat amb la biblioteca de connectors MariaDB i viceversa, si és possible. També és millor evitar emprar el mateix connector que el controlador a causa d'un error. Configuració suggerida:

    Connector PostgreSQL, SQLite o Oracle → Controlador unixODBC MariaDB o MySQL Connector MariaDB → Controlador MariaDB unixODBC Connector MySQL → Controlador MySQL unixODBC

Consulteu ZBX-7665 per obtindre més informació i solucions alternatives disponibles.

  • Les dades XML consultades des de Microsoft SQL Server es poden truncar de diferents maneres en sistemes Linux i UNIX.

  • S'ha observat que l'ús de comprovacions ODBC per monitorar les bases de dades Oracle emprant diferents versions d'Oracle Instant Client per a Linux fa que el servidor Zabbix es bloquegi. Veieu també ZBX-18402, ZBX-20803.

  • Si empreu el controlador FreeTDS UnixODBC, heu d'afegir una instrucció 'SET NOCOUNT ON' a una consulta SQL (per exemple, SET NOCOUNT ON DECLARE @strsql NVARCHAR(max) SET @strsql = ....). En cas contrari, l'element de monitoratge de la base de dades a Zabbix no podrà recuperar la informació amb un error "La consulta SQL ha retornat un resultat buit". Consulteu ZBX-19917 per obtindre més informació.

El paràmetre del mètode de petició és incorrecte als elements

El paràmetre del mètode de sol·petició, que només s'empra a les comprovacions HTTP, pot estar configurat incorrectament a "1", un valor no predeterminat per a tots els elements després d'una actualització d'una versió anterior a la versió 4.0 de Zabbix. Per obtindre més informació sobre com solucionar aquest problema, consulteu ZBX-19308.

Monitoratge Web i agent HTTP

El servidor Zabbix perd memòria en algunes distribucions de Linux a causa d'un error quan s'habilita "SSL verifica peer" en escenaris web o un agent HTTP. Consulteu ZBX-10486 per obtindre més informació i solucions alternatives disponibles.

Verificacions simples

Hi ha un error a les versions fping anteriors a la v3.10 que gestiona malament els paquets de reproducció d'eco duplicats. Això pot provocar resultats inesperats per als elements icmpping, icmpping, icmpping, icmppingsec. Es recomana emprar la darrera versió d'fping. Consulteu ZBX-11726 per obtindre més informació.

Errors amb l'execució d'fping a contenidors sense arrel

Quan els contenidors s'executen en mode sense arrel o en un entorn de restriccions específiques, és possible que us trobeu amb errors relacionats amb l'execució d'fping quan feu comprovacions ICMP, com ara "fping: operació no permesa" o es perdin tots els paquets de tots els recursos.

Per solucionar aquest problema, afegiu --cap-add=net_raw a les ordres "docker run" o "podman run".

A més, l'execució d'fping en entorns no root pot menester modificacions de sysctl, és a dir:

sudo sysctl -w "net.ipv4.ping_group_range=0 1995"

on "1995" és el GID zabbix. Per obtindre més informació, consulteu ZBX-22833.

Verificacions SNMP

Si s'empra el sistema operatiu OpenBSD, un error a la biblioteca Net-SNMP, fins a la versió 5.7.3, pot provocar que el servidor Zabbix es bloquegi si el paràmetre SourceIP s'estableix al fitxer de configuració del servidor Zabbix. Per solucionar aquest problema, no configureu el paràmetre SourceIP. El mateix problema també s'aplica a Linux, però no impedeix que el servidor Zabbix funcioni. S'ha aplicat una correcció local per al paquet net-snmp a OpenBSD i es publicarà amb OpenBSD 6.3.

Pics de dades SNMP

S'han observat pics en les dades SNMP que poden estar relacionats amb alguns factors físics com ara pics de tensió. Consulteu ZBX-14318 per obtindre més informació.

Traps SNMP

El paquet "net-snmp-perl", necessari per a les trampes SNMP, es va treure a RHEL 8.0-8.2; i s'ha afegit a RHEL 8.3.

Per tant, si empreu RHEL 8.0-8.2, la millor solució és actualitzar a RHEL 8.3.

Consulteu també ZBX-17192 per obtindre més informació.

Fallida del procés Alerter amb RHEL 7

S'han trobat bloquejos de les instàncies del procés d'alerta del servidor Zabbix a RHEL 7. Consulteu ZBX-10461 per obtindre més informació.

Actualització de l'agent Zabbix 2 (6.0.5 o anterior)

Quan actualitzeu l'agent Zabbix 2 (versió 6.0.5 o anterior) des dels paquets, es pot produir un error de conflicte de fitxer relacionat amb els connectors. Per solucionar l'error, feu una còpia de seguretat de la configuració de l'agent 2 (si cal), desinstal·leu l'agent 2 i instal·leu-lo de nou.

En sistemes basats en RHEL, executeu:

dnf remove zabbix-agent2
       dnf install zabbix-agent2

En sistemes basats en Debian, executeu:

apt remove zabbix-agent2
       apt install zabbix-agent2

Per obtindre més informació, veieu ZBX-23250.

Inversió de la configuració regional de la interfície web

S'ha observat que la configuració regional de la interfície web pot canviar sense lògica aparent, és a dir, algunes pàgines (o parts de pàgines) es mostren en un idioma mentre que altres pàgines (o parts de pàgines) es mostren en un idioma diferent. Normalment, el problema pot aparèixer quan hi ha diversos usuaris, alguns dels quals empren una configuració regional, mentre que altres n'empren una altra.

Una solució alternativa coneguda és desactivar el multithreading a PHP i Apache.

El problema és relacionat amb el funcionament de la configuració de localitzacions a PHP: la informació de la configuració regional es manté per procés, no per fil. Per tant, en un entorn multifils, quan s'executen diversos projectes pel mateix procés d'Apache, és possible que la configuració regional es canviï en un altre fil i això canviï la manera com es poden processar les dades al fil Zabbix.

Per obtindre més informació, consulteu els informes de problemes relacionats:

  • ZBX-10911 (Problema amb la commutació de configuració regional de la interfície web)
  • ZBX-16297 (Problema amb la gestió de nombres als gràfics mitjançant la funció bcdiv de les funcions BC Math)

Gràfics

Horari d'estiu

Els canvis a l'horari d'estiu (DST) causen irregularitats en mostrar les etiquetes de l'eix X (data doble, data que manca, etc.).

Suma afegida

Quan s'empra la suma afegida a un gràfic durant un període inferior a una hora, els gràfics mostren valors incorrectes (multiplicats) quan les dades provenen de tendències.

Text superposat

Per a alguns idiomes d'interfície (per exemple, el japonès), els tipus de lletra locals poden provocar que el text es superposi a la llegenda del gràfic. Per evitar-ho, empreu la versió 2.3.0 (o posterior) de l'extensió PHP GD.

Monitoratge dels arxius de registre

Els elements log[] i logrt[] reprodueixen repetidament el fitxer de registre des del principi si el sistema de fitxers és ple al 100% i el fitxer de registre és en mode d'adjuntar (veieu ZBX-10884 per obtindre més informació).

Consultes de MySQL lentes

El servidor Zabbix genera consultes SELECT lentes en cas de valors inexistents per als elements. Això es deu a un problema conegut a les versions de MySQL 5.6/5.7. Una solució alternativa és desactivar l'optimitzador d'index_condition_pushdown o prefer_ordering_index a MySQL. Per a una discussió en profunditat, veieu ZBX-10652.

De tota manera, això és una solució temporal i no corregirà pas tots els elements relatius a les consultes lentes.

Connexió a l'API

Es poden crear un gran nombre de sessions d'usuari obertes quan s'empren scripts personalitzats amb el mètode user.login sense user.logout després.

Problema d'adreça IPv6 als paquets SNMPv3

A causa d'un error net-snmp, és possible que l'adreça IPv6 no es mostri correctament quan s'empra SNMPv3 a les trampes SNMP. Per obtindre més detalls i una possible solució, veieu ZBX-14541.

L'adreça IP IPv6 llarga ha fallat en la informació d'inici de sessió

Un missatge d'intent d'inici de sessió fallit només mostrarà els primers 39 caràcters d'una adreça IP emmagatzemada perquè aquest és el límit de caràcters al camp de la base de dades. Això significa que les adreces IP IPv6 de més de 39 caràcters es mostraran de manera incompleta.

Verificacions de l'agent Zabbix sota Windows

Les entrades de DNS inexistents al paràmetre "Servidor" del fitxer de configuració de l'agent Zabbix (zabbix_agentd.conf) poden augmentar el temps de resposta de l'agent Zabbix a Windows. Això passa perquè el dimoni de memòria cau DNS de Windows no guarda a la memòria cau les respostes negatives per a adreces IPv4. Tanmateix, per a les adreces IPv6, les respostes negatives s'emmagatzemen a la memòria cau, de manera que una possible solució serà desactivar IPv4 a l'equip.

Exportació/importació YAML

Hi ha problemes coneguts amb exportacions/importacions YAML:

  • Els missatges d'error no es poden traduir;
  • De vegades no es pot importar un JSON vàlid amb extensió de fitxer .yaml;
  • Les dates llegibles per humans sense citar es converteixen automàticament en segells de temps Unix.

Assistent de configuració a SUSE amb NGINX i php-fpm

L'assistent de configuració de la interfície no pot desar el fitxer de configuració a SUSE amb NGINX + php-fpm. Això és causat per una configuració a la unitat /usr/lib/systemd/system/php-fpm.service, que impedeix que Zabbix escrigui a /etc (afegit amb PHP 7.4).

Hi ha dues opcions per passar de llarg disponibles:

  • Estableix l'opció ProtectSystem a "true" en lloc de "full" a la unitat php systemd -fpm.
  • Deseu manualment el fitxer /etc/zabbix/web/zabbix.conf.php.

Chromium per al servei web Zabbix a Ubuntu 20

Tot i que en la majoria dels casos el servei web Zabbix pot funcionar amb Chromium, a Ubuntu 20.04 amb Chromium provoca el següent error:

 No es poden recuperar les dades: no s'ha pogut iniciar Chrome:cmd_run.go:994:
        AVÍS: no es pot crear el directori de dades d'usuari: no es pot crear
        "/var/lib/zabbix/snap/chromium/1564": mkdir /var/lib/zabbix: permís denegat
        Ho sentim, els directoris d'inici fora de /home actualment no són compatibles. Consulteu https://forum.snapcraft.io/t/11209 per obtindre més informació.

Aquest error es produeix perquè /var/lib/zabbix s'empra com a directori inicial de l'usuari 'zabbix'.

Codis d'error personalitzats de MySQL

Si Zabbix s'empra amb la instal·lació de MySQL a Azure, pot aparèixer un missatge d'error poc clar [9002] Alguns errors poden aparèixer als registres de Zabbix. Aquest text d'error genèric s'envia al servidor o proxy Zabbix per la base de dades. Per obtindre més informació sobre la causa de l'error, consulteu els registres d'Azure.

Expressions regulars no vàlides després de canviar a PCRE2

A Zabbix 6.0, es va afegir suport per a PCRE2. Tot i que PCRE encara és compatible, els paquets d'instal·lació de Zabbix per a RHEL 7 i posteriors, SLES (totes les versions), Debian 9 i posteriors, Ubuntu 16.04 i posteriors s'han actualitzat per emprar PCRE2. Tot i que ofereix molts avantatges, canviar a PCRE2 pot invalidar alguns patrons d'expressió regular PCRE existents o comportar-se de manera diferent. En particular, això afecta el patró ^[\w-\.]. Per tal que aquesta expressió regular torni a ser vàlida sense afectar la semàntica, substituïu l'expressió per ^[-\w\.]. Això es deu al fet que PCRE2 tracta el guió com un delimitador, creant un interval dins d'una classe de caràcters.

Error del giny del geomapa

És possible que els mapes del giny Geomap no es carreguin correctament si heu actualitzat des d'una versió anterior de Zabbix amb NGINX i no heu canviat al nou fitxer de configuració d'NGINX durant l'actualització.

Per solucionar el problema, podeu descartar el fitxer de configuració antic, emprar el fitxer de configuració del paquet de la versió actual i tornar-lo a configurar tal com es descriu a les instruccions de descàrrega a la secció e. Configura PHP per a la interfície Zabbix.

Alternativament, podeu editar manualment un fitxer de configuració NGINX existent (normalment, /etc/zabbix/nginx.conf). Per fer-ho, obriu el fitxer i localitzeu el bloc següent:

location ~ /(api\/|conf[^\.]|include|locale|vendor) {
               deny            all;
               return          404;
       }

Ara, canvieu aquest bloc amb:

location ~ /(api\/|conf[^\.]|include|locale) {
               deny            all;
               return          404;
       }
       
       location /vendor {
               deny            all;
               return          404;
       }

Cas d'ús amb variables globals compartides entre crides de webhook

A mesura que les variables globals es comparteixen entre diferents crides de webhook, el codi següent farà que el comptador del valor de l'etiqueta augmenti gradualment:

try 
       {
          aa = aa + 1;
       }
       catch(e)
       {
          aa = 0;
       }

       result = {
               'tags': {
                   'endpoint': aa
               }
           };
       return JSON.stringify(result);

Es recomana emprar variables locals en lloc de globals per assegurar-se que cada script funciona amb les seves pròpies dades i que no hi ha conflicte entre crides simultànies.