Bonjour.
J'ai un shell script qui rapporte la latence, ping loss, etc.. de chacun des nodes réseau sur Internet via MTR. MTR créer un fichier JSON avec tous les nodes entre le point a et le point b...etc..etc.. J'ai un UserParameter dans mon Zabbix agent qui envoie le JSON au Zabbix Sever, et Zabbix est capable de filtrer et d'ordonner les métriques de chacun des nodes avec un Pré Filtre JSON path. J'utilise un LLD pour découvrir le nombre de hop et filtrer les différentes métriques rapportés par le JSON... Je me suis grandement inspiré de ce post : https://www.meinekleinefarm.net/zabb...my-traceroute/
Chacune des métriques de MTR sont classés pour chacun des hops réseau.
Latence[1]=1ms
LatenceMoyenne[1]=0.98ms
IPaddress[1]=10.15.20.21
PingLoss[1]=0%
Latence[2]=1.5ms
LatenceMoyenne[2]=1.1ms
IPaddress[2]=10.15.20.1
etc..
Ceci étant dit, j'essaie de calculer le MOS score théorique entre deux hosts, et pour ce faire j'ai besoin d'avoir ce que le ITU nome le Effective Latency, ce qui est un petit calcul très simple, mais je n'y arrive pas dans Zabbix avec un calculated item.
effective_latency = average_latency + 2* average_jitter + codec_delay
MTR est déjà en mesure de rapporter la moyenne de la latence pour chacun des hops, donc déjà dispo dans une métrique via le LLD.
Voilà mon problème:
Il arrive parfois sur Internet que la route entre deux éléments change , le nombre de "hop" entre les deux points, et ce pour plusieurs raisons... changement de route, problèmes techniques entre deux fournisseurs.
Si je calcul le "effective latency" pour le dernier hop d'une chaine entre deux serveurs et que je sais d'emblée que cette chaine comporte 9 hops...
last("hop.avg.latency[9]")+(last("hop.avg.jitter[9]")*2)+10.
Notez le [9] puisque chaque "key" proviennent d'un LLD et que Zabbix a automatiquement assigné un index pour chacun des hops.
Mais qu'est-ce qui arrive si un fournisseur décide de passer son trafic vers un autre fournisseur , et que ceci ajoute deux hops de plus... les keys [9] ne sont utilisés par le dernier hop entre mes deux points.
Je dois manuellement modifier le calculated item pour [11] et non plus [9].
J'essaie d'insérer un index dynamique qui provient d'un autre item qui est simplement le nombre de hops entre les deux hosts..
Ça pourrait donner quelque chose comme: last("hop.avg.latency[nb_hops]")+(last("hop.avg.jitter[nb_hops]")*2)+10
Mais rien à faire, j'essaie toutes les combinaisons pour entrer un index qui fait référence à un item, mais je n'y arrive pas.
Quelqu'un a une idée?
Merci. Désolé pour ce long post...
J'ai un shell script qui rapporte la latence, ping loss, etc.. de chacun des nodes réseau sur Internet via MTR. MTR créer un fichier JSON avec tous les nodes entre le point a et le point b...etc..etc.. J'ai un UserParameter dans mon Zabbix agent qui envoie le JSON au Zabbix Sever, et Zabbix est capable de filtrer et d'ordonner les métriques de chacun des nodes avec un Pré Filtre JSON path. J'utilise un LLD pour découvrir le nombre de hop et filtrer les différentes métriques rapportés par le JSON... Je me suis grandement inspiré de ce post : https://www.meinekleinefarm.net/zabb...my-traceroute/
Chacune des métriques de MTR sont classés pour chacun des hops réseau.
Latence[1]=1ms
LatenceMoyenne[1]=0.98ms
IPaddress[1]=10.15.20.21
PingLoss[1]=0%
Latence[2]=1.5ms
LatenceMoyenne[2]=1.1ms
IPaddress[2]=10.15.20.1
etc..
Ceci étant dit, j'essaie de calculer le MOS score théorique entre deux hosts, et pour ce faire j'ai besoin d'avoir ce que le ITU nome le Effective Latency, ce qui est un petit calcul très simple, mais je n'y arrive pas dans Zabbix avec un calculated item.
effective_latency = average_latency + 2* average_jitter + codec_delay
MTR est déjà en mesure de rapporter la moyenne de la latence pour chacun des hops, donc déjà dispo dans une métrique via le LLD.
Voilà mon problème:
Il arrive parfois sur Internet que la route entre deux éléments change , le nombre de "hop" entre les deux points, et ce pour plusieurs raisons... changement de route, problèmes techniques entre deux fournisseurs.
Si je calcul le "effective latency" pour le dernier hop d'une chaine entre deux serveurs et que je sais d'emblée que cette chaine comporte 9 hops...
last("hop.avg.latency[9]")+(last("hop.avg.jitter[9]")*2)+10.
Notez le [9] puisque chaque "key" proviennent d'un LLD et que Zabbix a automatiquement assigné un index pour chacun des hops.
Mais qu'est-ce qui arrive si un fournisseur décide de passer son trafic vers un autre fournisseur , et que ceci ajoute deux hops de plus... les keys [9] ne sont utilisés par le dernier hop entre mes deux points.
Je dois manuellement modifier le calculated item pour [11] et non plus [9].
J'essaie d'insérer un index dynamique qui provient d'un autre item qui est simplement le nombre de hops entre les deux hosts..
Ça pourrait donner quelque chose comme: last("hop.avg.latency[nb_hops]")+(last("hop.avg.jitter[nb_hops]")*2)+10
Mais rien à faire, j'essaie toutes les combinaisons pour entrer un index qui fait référence à un item, mais je n'y arrive pas.
Quelqu'un a une idée?
Merci. Désolé pour ce long post...