Ih WebHostIng Last change: 20051115 portstat v.3.34.84
NAME portstat monItorIng des connexIons tcp/Ip tablIes sur des ports rfrencs, avec possIbIlIt de comptabIlIsatIon d'InformatIons annexes (monItorIng du nombre de process, ...) et support de l'excutIon de tches prconfIgures en table sur atteInte de certaInes valeurs seuIls.
VersIon actueIIe La versIon courante de portstat est la J.J4.84 (portstat -v pour obtenIr versIon et syntaxe)
DESCRIPTION Le scrIpt portstat est prvu pour effectuer un monItorIng des connexIons tablIes sur certaIns ports tcp/Ip dclars en table. En outre Il est conu pour permettre d'affIcher en complment un comptage du nombre de process correspondant un pattern galement prrenseIgn en table. En plus de ces deux types d'usages orIents monItorIng la table accepte galement la dfInItIon d'alertes quI pourront, le cas chant, tre dclanches en fonctIon d'un seuIl donn, avec excutIon des actIons assocIes.
La table utIlIse par dfaut se nomme portstat.tab. l est possIble de prcIser en lIgne de commande un nom de table dIffrent, et donc d'utIlIser une varIt de tables en fonctIon des besoIns.
L'affIchage se faIt selon la mme logIque que les outIls standards de monItorIng (vmstat, Iostat,..), savoIr une lIgne par mesure, avec affIchage des dIffrentes InformatIons recherches dans le nombre adquat de colonnes. Le paramtrage de la largeur des colonnes est possIble, que ce soIt en table comme en lIgne.
Par dfaut une seule mesure est effectue. l est possIble, comme pour les autres outIls de monItorIng cIts, de prcIser en lIgne de commande le nombre de mesures effectuer, aInsI que l'Intervalle entre deux mesures conscutIves.
OPTIONS
Les optIons suIvantes sont supportes.
-v AffIchage de la versIon du scrIpt et rappel de la syntaxe.
-f tabIe> Permet d'IndIquer la table de rfrence utIlIser. La table par dfaut se nomme portstat.tab. Les tables doIvent tre localIses dans le mme rpertoIre que la commande portstat.
OPERANDES
haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
Les oprandes suIvantes sont supportes.
IntervaI> ntervalle entre deux mesures, dans le cas ou le nombre de mesures est dIffrent de 1.
count> Nombre de mesures (dfaut=1).
header_IntervaI> Frquence de rptItIon de l'entte de colonnes. Par dfaut le header est rpt toutes les 20 mesures, de manIere tre toujours apparent sur la fentre d'affIchage. Une valeur de 0 lImIte l'affIchage au seul header InItIal (pas de rptItIon).
MOT-CLEFS
LIste des motclefs autorIss :
Mots-clefs de paramtrage du header
nodIspIay Les InformatIons de monItorIng n'apparaIssent pas (statIstIques comme headers). Ce mode permet de n'affIcher l'cran que les seuls messages prvus cet effet dans les taches prprogrammes sur dclanchement d'alertes. Ce mode vIte un scrollIng InutIle l'cran, en donnant acces un monItorIng 'passIf' se lImItant exclusIvement aux seuls messages d'alerte 'rels'.
noheader Le header n'apparat pas.
fuIIheader Le header apparat dans une forme plus complete, savoIr avec rappel des ports locaux/remotes monItors en plus des enttes de colonnes.
Mots-clefs de paramtrage de la largeur du display
adjust L'affIchage des colonnes se faIt en adaptant la largeur de cellescI la largeur des enttes eux mmes, afIn d'optImIser au mIeux l'utIlIsatIon de l'cran (largeur de colonne varIable). Par dfaut, sI rIen n'est spcIfI en table, la largeur des colonnes est fIxe, sur 6 caracteres.
Femarque :par scurIt, une largeur mInImale de J caracteres est applIque, cecI afIn d'assurer un affIchage correct pour des valeurs de mesures de connexIons allant jusqu' 999 (valeur haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
usuellement suffIsante). CecI est vraI mme sI l'entte de colonne adopte la largeur mInImale quI puIsse luI tre assIgne, savoIr 2 caracteres. Cette dIsposItIon n'est effectIve que depuIs la versIon J.24.84.
adjust:vaIue> L'affIchage des colonnes est 'forc' la valeur passe en arguments. Par dfaut, sI rIen n'est spcIfI en table, la largeur des colonnes est de 6 caracteres. Pour InformatIon Il est par exemple possIble d'affIcher jusqu' 15 colonnes sur un cran de 80 caracteres de large, en utIlIsant la valeur J. 0ans le cas ou les lIbells de colonnes comportent plus de caracteres que prcIss dans le paramtrage du motclef adujst, ceuxcI seront tronqus l'affIchage, maIs le fonctIonnement du traItement de portstat n'en sera pas affect. La valeur mInImale accepte est de 2 caracteres.
Femarque :pour des raIsons hIstorIques, la forme adjust=value reste accepte sous unIx. Elle est rIgoureusement InterdIte sous wIndows, pour des raIsons d'IncompatIbIlIt dans le parsIng des varIables.
Mots-clefs de paramtrage du mode excution
exec ActIvatIon du mode excutIon. Par dfaut aucune excutIon de commande prprogramme en table n'est effectue en l'absence de cette dclaratIon explIcIte en lIgne de commande, ce quI permet de procder des lancements de portstat sans rIsquer de dclancher des actIons non souhaItes.
fuIIexec ActIvatIon du mode excutIon force. Par dfaut le mode excutIon est Inoprant par scurIt dans certaIns contextes :
mode debug actIv (voIr les motsclefs assocIs). lancement de portstat avec une seule mesure (sans prcIsIon du parametre 'count'). lancement de portstat en mode multImesures (parametre 'count' prcIs), maIs avec un Intervalle entre mesures trop faIble (parametre 'Interval' IndIqu, maIs avec une valeur InfrIeure ou gale 900 secondes, soIt 15 mInutes).
0ans ces confIguratIons partIculIeres, et sI une excutIon de commandes est malgr tout souhaIte, la varIante 'fullexec' doIt alors tre utIlIse en remplacement du mot clef classIque 'exec'.
Mots-clefs de paramtrage du mode debug
Iowdebug ActIvatIon du mode debug 'lIght'. Ce mot clef permet d'obtenIr, en sus des InformatIons de mesures ellesmmes, un certaIn nombre de tables et lIstes relatIves aux alertes/tches dclanches, permettant un debug de la sessIon de monItorIng.
debug ActIvatIon du mode debug. haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
En plus des InformatIons fournIes vIa le motclef 'lowdebug' sont affIches d'autres tables et lIstes permettant un debug plus pouss.
fuIIdebug ActIvatIon du mode debug complet. En plus des InformatIons fournIes vIa le motclef 'debug', sont affIchs le dtaIl de l'ensemble des cas rencontrs (exploItatIon de la sortIe de la commande netstat Invoque lors du traItement), aInsI que la lIste des process actIfs pendant le lancement de la sessIon de portstat.
Mots-clefs divers
noptIm (v.3.24.78 et sup.) 0sactIvatIon de l'optImIsatIon de l'excutIon des monItorIng de process Invoquant la commande ps -ef actIv par dfaut (voIr la sectIon spcIfIque en fIn de manuel).
nofIag (v.3.25.80 et sup.) 0sactIvatIon de l'utIlIsatIon du flag de statut d'actIon normalement affIch par dfaut.
coIor (v.3.2.83 et sup.) ActIvatIon du mode de colorIsatIon des valeurs monItors et/ou en alerte.
csv:fIchIer> (v.3.34.84 et sup.) ActIvatIon de la gnratIon d'une trace au format csv, pour exploItatIon vIa une applIcatIon telle qu'un tableur, etc.. Le sparateur de champ est par dfaut le ' ;' Le nom complet du fIchIer doIt tre fournI en argument (sans espaces)
Exemple : csv:/tmp/portstat.csv
csvsep:sparateur> (v.3.34.84 et sup.) |odIfIcatIon du sparateur de champ utIlIs pour la trace csv (dfaut=';'). Le sparateur doIt fIgurer dans la lIste suIvante : E - # @ + _ = . , ; : et l'espace
Exemple : csvsep:''
FORMAT DE LA TABLE DE CONFIGURATION
Une table de confIguratIon doIt ncessaIrement tre renseIgne pour pouvoIr utIlIser portstat.
La table par dfaut se nomme portstat.tab, maIs Il est possIble au lancement du traItement de prcIser le nom de la table de son choIx.
Cette possIbIlIt permet de prdfInIr plusIeurs types de tables, apportant chacune leur propre claIrage sur les connexIons en cours (table utIlIse pour le monItorIng vIa la crontab, table utIlIse pour un monItorIng dIrect, table permettant d'affIcher le dtaIl de certaIns types de connexIons pour analyse plus pousse, etc..). haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
Le format en est le suIvant (les lIgnes vIerges ou prcdes d'un dIese (#) sont Ignores).
J types de lIgnes sont supportes :
les lIgnes pour monItorIng de connexIons (type 'port') les lIgnes pour monItorIng d'un nombre de process actIfs (type 'proc') les lIgnes pour prconfIguratIon de commandes devant tre lances sur atteInte de seuIl (type 'task')
Chaque lIgne comporte un nombre de champs varIables, dont le dtaIl dpend de son type. Le sparateur de champ est le ' ;'
Seuls les champs 'type', 'text' et l'un au moIns des champs 'localP','localPort','remotep' ou 'remotePort' sont requIs.
(0ans le descrIptIf suIvant la valeur entre parentheses correspond au pattern 'abrg' dfInI plus loIn dans la documentatIon)
champ01: type (IcI 'port') champ02: text (lIbell de colonne)
champ0J: localp=adresse P locale devant tre monItore (le cas chant) champ04: localPort=port local devant tre monItor (le cas chant)
champ05: remotep=adresse P remote devant tre monItore (le cas chant) champ06: remotePort=port remote devant tre monItor (le cas chant)
champ07: columnwIdth =largeur d'affIchage de la colonne (facultatIf - dfaut=6 caracteres - mInImum=2).
champ08: taskIfmIn=nom de la tache devant tre excute sI le nombre de connexIon observ est InfrIeur au seuIl mInImum IndIqu (mInvalue). (valeur abrge='If') champ09: mInvalue=valeur seuIl 'mInImum' (valeur abrge='I')
champ10: taskIfbet=nom de la tache devant tre excute sI le nombre de connexIon observ est suprIeur ou gal au seuIl mInImum IndIqu (mInvalue), et InfrIeur au seuIl maxImum (maxvalue). (valeur abrge='If8')
champ11: maxvalue=valeur seuIl 'maxImum' (valeur abrge='s') champ12: taskIfmax=nom de la tache devant tre excute sI le nombre de connexIon observ est suprIeur ou gal au seuIl maxImum IndIqu (maxvalue). (valeur abrge='IfS')
haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
champ1J: equalvalue=valeur seuIl 'equal'. (valeur abrge='e') champ14: taskIfequal=nom de la tache devant tre excute sI le nombre de connexIon observ est gal au seuIl equal IndIqu (equalvalue). (valeur abrge='IfE')
champ15: notequalvalue=valeur seuIl 'not equal' (valeur abrge='d') champ16: taskIfnotequal=nom de la tache devant tre excute sI le nombre de connexIon observ est dIffrent du seuIl not equal IndIqu (notequalvalue). (valeur abrge='If0')
# exemple : nombre de connexIons http sur le port local 80, avec dclanchement d'une alerte sI le nombre de connexIons observes est suprIeur ou gal 70. 0ans ce cas la tche execute aura pour nom 'httpsup70' (voIr l'entre correspondante de type 'task' pour le dtaIl de cellecI).
port;http;;80;;;;;;; 70,httpsup70 ;
Femarque :Il est possIble de spcIfIer dans un champ plusIeurs tches excuter en sparant celles cI par une vIrgule (versIon J.26.80 et suIvantes)
Remarque sur les libells de colonne dans le cas du monitoring de ports
Le monItorIng de port accepte le support du monItorIng cumul de plusIeurs ports avec affIchage du rsultat dans une colonne unIque. Dn parle alors de cas de rfrence : sI plusIeurs monItorIng de ports sont dclars en table en utIlIsant le mme lIbell, alors le premIer cas dclar est dIt 'de rfrence', et les valeurs observes pour les suIvants seront cumuls dans cette premIere colonne.
Par exemple les dclaratIons suIvantes : port;http;;80 ;;; port;http;;8080 ;;; port;http;;81 ;;; permettent de cumuler la totalIt des connexIons observes sur les ports locaux 80, 8080 et 81 dans une seule colonne quI sera lIbelle 'http'.
l est par extensIon possIble de rutIlIser sous plusIeurs formes les mmes lments de monItorIng de ports.
AInsI, la forme suIvante, un petIt peu plus complexe en apparence : port;http;;80 ;;; port;http;;8080 ;;; port;http;;81 ;;; port;http80;;80 ;;; port;http8008;;8080 ;;; port;http81;;81 ;;; permet d'affIcher le mme InformatIons de cumul des connexIons http 'tout types confondus' dans la colonne 'http', maIs galement d'en fournIr la ventIlatIon dans des colonnes ddIes chaque type de port : en colonne 'http80' pour les connexIons sur le port local 80, 'http8080' pour celles du port local 8080, etc..
0ernIere prcIsIon : la largeur par dfaut des colonnes est de 6 caracteres. l est par consquent plus que judIcIeux de choIsIr ses lIbells en se basant sur cette taIlle maxImum. 0ans le cas haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
contraIre (nom plus long que 6 caracteres), une troncature est opre l'affIchage : cecI tant, le regroupement ventuel d'InformatIons sur une seule colonne est toujours bas sur le nom complet de la colonne, et sera donc correctement effectu. l est possIble de forcer l'affIchage la largeur de la colonne une valeur autre que 6 caracteres vIa le champ correspondant de l'entre en table, soIt encore en utIlIsant le motclef 'adjust' (voIr le dtaIl des motclefs cIdessus).
Seuls les champs 'type', 'text' et 'command' sont requIs. (0ans le descrIptIf suIvant la valeur entre parentheses correspond au pattern 'abrg' dfInI plus loIn dans la documentatIon)
champ01: type (IcI 'proc') champ02: text (lIbell de colonne)
champ0J: command (syntaxe de la commande lancer)
champ04: columnwIdth=largeur d'affIchage de la colonne (facultatIf - dfaut=6 caracteres - mInImum=2).
champ05: taskIfmIn=nom de la tache devant tre excute sI le nombre de connexIon observ est InfrIeur au seuIl mInImum IndIqu (mInvalue). (valeur abrge='If') champ06: mInvalue=valeur seuIl 'mInImum' (valeur abrge ='I')
champ07: taskIfbet=nom de la tache devant tre excute sI le nombre de connexIon observ est suprIeur ou gal au seuIl mInImum IndIqu (mInvalue), et InfrIeur au seuIl maxImum (maxvalue). (valeur abrge ='If8')
champ08: maxvalue=valeur seuIl 'maxImum' (valeur abrge ='s') champ09: taskIfmax=nom de la tache devant tre excute sI le nombre de connexIon observ est suprIeur ou gal au seuIl maxImum IndIqu (maxvalue). (valeur abrge ='IfS')
champ10: equalvalue=valeur seuIl 'equal'. (valeur abrge ='e') champ11: taskIfequal=nom de la tache devant tre excute sI le nombre de connexIon observ est gal au seuIl equal IndIqu (equalvalue). (valeur abrge ='IfE')
champ12: notequalvalue=valeur seuIl 'not equal' (valeur abrge ='d') champ1J: taskIfnotequal=nom de la tache devant tre excute sI le nombre de connexIon observ est dIffrent du seuIl not equal IndIqu (notequalvalue). (valeur abrge ='If0')
# exemple : monItorIng du nombre de process apache (on a choIsI IcI une largeur de colonne d'affIchage de 5 caracteres, plutot que d'utIlIser les 6 prvus par dfaut). # proc;HTTP0;ps ef grep [h]ttpd grep v root wc -l ;5 ; haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
Femarque :Il est possIble de spcIfIer dans un champ plusIeurs tches excuter en sparant celles cI par une vIrgule (versIon J.26.80 et suIvantes)
Remarque sur les libells de colonne dans le cas du monitoring de process.
ContraIrement au cas du monItorIng de port, la rutIlIsatIon des mmes lIbells de colonne est possIble dans le monItorIng de process. CecIdIt cela est dconseIll pour la lIsIbIlIt de la sortIe.
Troisime cas - Type task (dclaration dune tche prprogramme)
# CAS 0'UNE TACHE PFEPFDCFA||EE #type;text;task
champ1 : type (IcI 'task') champ2 : text (nom de la tche) champJ : task (syntaxe de la commande lancer sur dclanchement d'alerte)
#exemple : lancement d'une tche sur atteInte d'une alerte, comportant une crIture de message dans les logs et l'envoI d'un maIl (nota : la syntaxe de la commande d'envoI de maIl est adapter en fonctIon de l'operatIng system en prsence). cI la tche se nomme 'httpsup70'.
#task;httpsup70;echo S1:S6 /var/log/portstat_alerts.log EE ( echo S1:S6\n\n\nP our InformatIon, les 10 dernIeres alertes:\n EE taIl /var/log/portstat_alerts.l og) maIlx r TDTALws04@total.com s [portstat ws04] nb.connex. S2 : SJ S4 S5 mon_maIl@fr.Ibm.com
Remarque pralable sur les taches prprogrammes
Les 10 dernIers champs des entres de type 'port' ou 'proc' sont rservs au paramtrage de l'excutIon de taches sur dclanchement d'alertes. l est noter qu'Il est possIble de confIgurer donc jusqu' 5 alertes dIffrentes par port/process monItor, selon que la valeur observe est InfrIeure, suprIeure ou IntermdIaIre au/aux seuIl(s) mInImum/maxImum dfInIs, ou encore gale et/ou dIffrente d'une valeur de rfrence prrenseIgne en table.
Principe de fonctionnement des tches prprogrammes
Pour qu'une tche prprogramme soIt actIve, Il faut que soIent runIes les condItIons suIvantes :
que le mode 'excutIon' soIt explIcItement IndIqu dans la syntaxe de la lIgne de commande (voIr les motsclefs 'exec' et 'fullexec' IndIqus plus haut).
Par dfaut, aucune tche n'est lance, et ce pour des raIsons de scurIt et de souplesse d'utIlIsatIon de la commande : Il est aInsI possIble d'Invoquer portstat sans se poser de questIon haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
pralable sur le faIt de savoIr sI l'admInIstrateur du systeme a -ou n'a pas renseIgn des tches. L'usage par dfaut de la commande releve donc spcIfIquement du monItorIng, sauf besoIn express.
qu'un couple seuIl de dclanchement/tche prprogramme aI t dfInI en table de confIguratIon.
Ce poInt est tres Important : Il est tout faIt possIble de dfInIr en table des entres de type 'task' gnrIques l'avance, sans pour cela que cellescI soIent excutes. Pour qu'une entre correspondant une tche prprogramme soIt effectIve, Il faut que son nom fIgure comme nom de tche dans au moIns une entre de type 'port' ou 'proc', comme tant la commande lancer sur atteInte ou dpassement d'un seuIl. Une mme tche peut tre Invoque par plusIeurs entres : la lIste des entres de type 'task' dclare en table est comprendre comme une lIste de rfrence des tches susceptIbles d'tre utIlIses. Cette lIste peut donc tout faIt tre conue comme une lIste gnrIque exhaustIve commune plusIeurs plateformes.
0ans l'exemple cIdessus, lorsque la commande portstat est Invoque avec le motclef 'exec' ou 'fullexec' (et unIquement dans ces cas), la tche 'httpsup70' dclare comme entre de type 'task' sera execute chaque foIs que le nombre de connexIons sur le port 80 sera suprIeur 70, valeur seuIl IndIque dans l'entre de type 'port' correspondant ce monItorIng. Le nom 'httpsup70' est l'lment quI tablI la correspondance entre les lments du monItorIng (IcI de type port), et la lIste des tches possIbles prvue. Ce mode de fonctIonnement est IdentIque que le mode de monItorIng soIt de type 'port' ou de type 'proc' pour monItorIng de process.
Femarque :cette oblIgatIon de la concordance entre un nom de tche dclare en entre de type 'task' (lIste des tches possIbles) et celuI IndIqu dans l'un des 5 champs correspondants au nom de la commande Invoquer sur dclanchement d'une actIon sur atteInte de seuIl, permet par voIe de consquence de prdfInIr des alertes quI ne seront effectIves que quand la tche apparatra dans la lIste.. cette fonctIonnalIt a pour effet satellIte de permettre une mIse au poInt plus facIle des entres de type port/proc : Il est possIble de mettre des valeurs quelconques dans les champs afIn de mIeux matrIser le format de la lIgne, .aussI longtemps que les noms utIlIss sont absents de la lIste des entres de type 'task'.
Ce prIncIpe est exploIt dans la cratIon d'entres rserves permettant de prrenseIgner facIlement les nouvelles entres de la table de confIguratIon.
Entres rserves inactives et pattern type pour la table de configuration
En fonctIon de tout cecI, et afIn de facIlIter le formatage des alertes dans la table de confIguratIon, Il a t prvu de pouvoIr prrenseIgner la partIe 'alerte' des dfInItIons proc/port de la table en utIlIsant la chaIne suIvante, quI reprend les 9 champs assocIs tItre de mnmonIques plus facIles modIfIer en fonctIon des besoIns: If ;I ;If8 ;s ;IfS ;e ;IfE ;d ;If0 Cette forme peut tout a faIt tre utIlIse comme pattern par dfaut pour la dfInItIon des champs lIs aux alertes, les valeurs If,If8,IfS,IfE et If0 ayant t pour l'occasIon dsactIves et de ce faIt InutIlIsables en tant que nom de tche relle.
Les deux modeles 'type' rsultants sont donc ceuxcI :
Cas 'proc' proc;text;command;6;If;I;If8;s;IfS;e;IfE;d;If0; Cas 'port' port;text;localP;localPort;remoteP;remotePort;6;If;I;If8;s;IfS;e;IfE;d;If0;
avec: haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
IfI = tche sI valeur observe seuIl mInImum 'I' (cas 'sI InfrIeur') I = seuIl mInImum If = tche sI valeur observe seuIl maxImum 's' et = seuIl mInImum 'I' (cas 'sI comprIs entre') s = seuIl maxImum IfS = tche sI valeur observe = seuIl maxImum 's' (cas 'sI suprIeur') e = valeur de rfrence pour l'galIt IfE = tche sI valeur observe = valeur de rfrence 'e' (cas 'sI gal') d = valeur de rfrence pour la dIffrence If0 = tche sI valeur observe =/= valeur de rfrence 'e' (cas 'sI dIffrent')
exemple de lIgne valIde : port;text;localP;localPort;remoteP;remotePort;6;IfI;I;If;70;tomsup70;e;IfE;d;If0;
(IcI 'I' renvoIt au cas InfrIeur : 'I' est la valeur seuIl de l'alerte 'mInImum', et 'If' le nom de la pseudotche dsactIve. 's' renvoIt au cas suprIeur, 'e' au cas gal et 'd' au cas dIffrent (not equal). Il ne s'agIt que d'un exemple. Seule la tche 'tomsup70' est rellement confIgure pour l'alerte de seuIl 'maxImum', dclanche sI la valeur observe est suprIeure ou gale 70 connexIons )
Femarque:pour des raIsons vIdentes, Il est conseIll de commenter dans la table toutes les tches nonactIves. CecI permet la foIs de gagner en lIsIbIlIt, en scurIt, maIs aussI en performances, en allgeant les traItements.
Complment sur le lancement des tches prprogrammes : le passage darguments
AfIn de facIlIter l'exploItatIon en aval dans les tches Invoques ellesmmes lors des dclanchements d'alertes des parametres de monItorIng, l'InvocatIon de cellescI se faIt avec en accompagnement le passage d'un certaIn nombre d'arguments, quI peuvent donc tre dIrectement exploIts dans les scrIpts, etc.
Ces arguments sont les suIvants :
argument1 : date (au format YYYY||00HH:||:SS) argument2 : le lIbell de la colonne argumentJ : la valeur observe (nombre de connexIons ou nombre de process, suIvant les cas) argument4 : l'oprateur du test d'alerte (Inf, sup, between, equal ou not_equal) argument5 : la valeur de rfrence ou valeur 'seuIl' (valeur 'mInImale' dans le cas d'une tche de type ype TASKF8ET) argument6 : le mot clef 'and' (unIquement dans le cas d'une tche de type TASKF8ET) argument7 : la valeur de rfrence 'maxImale' (unIquement dans le cas d'une tche de type TASKF8ET) argument8 : une chaIne prformate IndIquant en claIr la nature de l'alerte :
exemple (IcI 'oracle' est le lIbell de colonne, '48' la valeur observe et '40' la valeur de reference): The parameter oracle match the followIng rule [found=48] = [reference=40]
argument9 : la lIgne d'entte de la sortIe standard de portstat
argument10: la lIgne des valeurs de la sortIe standard de portstat haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
argument11: l'adresse P locale monItore (unIquement en cas d'un moInItorIng de port) argument12: le port TCP local monItor (unIquement en cas d'un moInItorIng de port) argument1J: l'adresse P remote monItore (unIquement en cas d'un moInItorIng de port) argument14: le port TCP remote monItor (unIquement en cas d'un moInItorIng de port)
Complment sur le lancement des tches prprogrammes : programmation dalertes sur franchissement de seuils soft et hard
l est aIsment possIble de dfInIr des alertes bases sur des seuIls de dclanchement 'soft' et 'hard', que ce soIt sur des nombres de process ou de connexIons. Pour ce faIre doIvent tre dfInIs les seuIls mInImaux (mInvalue) et maxImaux (maxvalue). Le dclanchement d'actIon sur franchIssement de la lImIte 'soft' sera programm vIa le champ taskIfbet (value comprIse entre/between les deux seuIls), alors que celle assocIe au franchIssement du seuIl hard le sera vIa le champ taskIfsup.
Les regles sont donc les suIvantes : Alerte 'soft' : (valeur mInImale) = (valeur observe) (valeur maxImale) Alerte 'hard' : (valeur maxImale) = (valeur observe)
AttentIon de bIen posItIonner maxvalue une valeur suprIeure mInvalue, et de bIen renseIgner les deux valeurs ;)
Optimisation de la commande ps (v.3.24.78 et sup)
L'une des utIlIsatIons prIncIpales des tches de types 'proc' est le monItorIng du nombre de process actIfs suIvant tel et tel crItere.
Ce type de requte tant la foIs tres frquent et tres consommateur en ressources systemes, son usage a faIt l'objet d'une optImIsatIon spcIfIque.
Une autre raIson cela est la ncessIt d'obtenIr des mesures les plus synchrones les unes aux autres. A contrarIo des affIchages des lments de monItorIng de ports (nombre de connexIons) quI eux sont tablIs partIr du mme netstat, chaque monItorIng de type 'proc' est luI Indpendant des autres, et correspond au lancement IndIvIduel d'une commande spcIfIque.
Concretement, Il est possIble d'obtenIr un traItement optImIs des monItorIngs de nombre de process actIfs selon les deux dImensIons quI nous Importent, savoIr la sImultanIt des mesures et la moIndre consommatIon en ressources systemes (obtentIon de mesures sImultanes tablIes au fInal partIr d'un seul et mme ps) en suIvant les regles suIvantes :
La lIgne de commande IndIque dans la table de confIguratIon doIt obIr un modele du type : ps -ef [e]grep pattern [ [e]grep -v pattern] wc -l
Les poInts suIvant doIvent tre scrupuleusement respects : la lIgne doIt commencer par le lancement de ps avec ses optIons '-ef', l'exclusIon de toute autre optIon. la commande grep de fIltrage doIt tre prsente avec une seule occurrence (sInon seule la dernIere est traIte ;) et sans optIons (Il n'est donc pas possIble d'utIlIser IcI l'optIon '-I'.). Le pattern pass grep peut tre entour de sImples ou doubles quotes. l est possIble de prcIser un pattern de recherche multIple condItIon d'utIlIser egrep et non grep (exemple : egrep 'tototata') haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
une commande grep d'exclusIon peut tre IndIque. Les mmes regles que celles prcIses dans le cas du grep de fIltrage s'applIquent IcI. L'optIon 'v' doIt tre la seule prsente. La lIgne doIt se termIner par un 'wc -l' l'exclusIon de toute autre optIon. Pour plus de suret, Il est fortement conseIll de bIen Isoler le sparateur de commande '' vIa un espace devant et derrIere.
Femarque fInale : cette optImIsatIon est automatIquement dclanche par dfaut sI les regles dcrItent sont satIsfaItes. SI l'une des regles n'est pas satIsfaIte la commande sera execute telle qu'elle, et Il sera donc procd une excutIon spcIfIque du ps en questIon (mcanIsme de scurIt). SI, pour une raIson quelconque, cette optImIsatIon n'est pas souhaIte, Il suffIt de prcIser sur la lIgne '/bIn/ps -ef' au lIeu de 'ps -ef' pour en InvalIder la prIse en compte. 0epuIs la versIon J.24.79 un motclef 'noptIm' peut tre Invoqu au lancement pour InvalIder toute tentatIve d'optImIsatIon.
|ercI de faIre en sorte de passer le plus systmatIquement possIble par ce cas de fIgure en respectant les modalIts dcrItes : les mesures effectues par portstat n'en seront que plus sIgnIfIcatIves.. et lgeres pour le systeme ;)
EXEMPLES DEXECUTION
# portstat 60 1000 25
(affIchage de 1000 mesures, effectues 60 secondes d'Intervalles, avec rptItIon du header toutes les 25 mesures). La table par dfaut portstat.tab est utIlIse.
# portstat f test.tab 20 adjust:5 fullexec
(affIchage contInu des mesures, effectues 20 secondes d'Intervalles, avec rptItIon du header toutes les 20 mesures par dfaut). La table test.tab est utIlIse. CellecI doIt se trouver dans le mme rpertoIre que portstat. La largeur des colonnes est fIxe 5 caracteres. Le mot clef 'fullexec' est prcIs IcI pour forcer l'excutIon des commandes prconfIgures le cas chant, sI une alerte est programme et dclanche.
Par dfaut portstat utIlIse la sortIe standard pour affIcher le rsultat de ses mesures.
l est possIble de conserver une trace de son actIvIt dans un fIchIer sur dIsque en redIrIgeant la sortIe standard vers la destInatIon choIsIe. CecI est par exemple IndIspensable lors d'une InvocatIon vIa la crontab.
Exemple : # portstat -f oracle.tab 60 1000 25 /var/log/portstat.log
Conservation dune trace au format csv
En plus de la trace standard Il peut tre Intressant de dIsposer d'une trace au format csv, plus facIlement Interprtable par des applIcatIons tIers (par exemple des tableurs, etc..)
haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
Le format csv (comma separated value) est caractrIs par l'utIlIsatIon d'un sparateur de champ standard, IcI ';' par dfaut.
csv:fIchIer>
L'actIvatIon de cette trace se faIt vIa le motclef 'csv' auquel on adjoInt le nom complet du fIchIer concern.
Exemple : # portstat -f oracle.tab 60 1000 25 csv:/var/log/portstat.csv /var/log/portstat.log (dans cet exemple, les deux traces sont actIves)
Femarques portstat ne procede jamaIs l'crasement d'un fIchIer prxIstant. SI des donnes sont dj prsentes dans le fIchIer IndIqu, les nouvelles seront concatnes en fIn de fIchIer. La purge du fIchIer devra donc, sI ncessaIre, tre gre en dehors de l'utIlIsatIon de portstat. la trace au format csv est toujours effectue en utIlIsant une largeur de colonne base sur la pleIne largeur des enttes (avec un mInImum de J caracteres, comme dans le cas de l'emploI du motclef 'adjust') et ce quelque soIt les parametrages choIsIs pour le formatage de la sortIe standard. En outre les squences spcIales Insres dans le texte lors de l'utIlIsatIon du mot clef 'color' ne sont pas ajoutes IcI, afIn de ne pas perturber l'InterprtatIon ultrIeure des rsultats.
csvsep :sparateur> Le spareur de champ (par dfaut ';') peut tre remplac par l'une des valeurs suIvantes : E - # @ + _ = . , ; : et l'espace
Exemple : # portstat -f oracle.tab 60 1000 25 csv:/var/log/portstat.csv csvsep:'' (dans cet exemple, la trace sera gnre avec un pseudocolonnage utIllIsant le caractere '')
Lancement de portstat via la crontab
Le lancement de portstat est prvu pour tre effectu vIa la crontab, des fIns de monItorIng rcurrent.
Un exemple d'ImplmentatIon peut tre le suIvant (lIgnes ajoutes la crontab de root):
0ans ce cas, deux lIgnes ont t ajoutes dans la crontab. La premIere permet de monItorer tous les jours de la semaIne, et cecI toutes les heures 06 mInutes (exemple 10:06, 11:06,..) avec crIture du header. La seconde ajoute un monItorIng ralIs toutes les 5 mInutes du lundI au vendredI, et ce entre 6 heures et 2J heures (tres exactement de 06:01 2J:56). 0ans ce second cas le header n'est pas affIch pour allger la trace et facIlIter sa lecture.
Le fIchIer de sortIe est /var/log/portstat.log, et la table de confIguratIon de portstat est web.tab. L'affIchage se faIt avec une largeur de colonnes force 4 caracteres.
Le motclef 'fullexec' IndIque que l'excutIon d'ventuelles tches programmes sur dclanchement d'alertes est actIve. haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
0ans ce second exemple, le mme monItorIng est effectu en 7j/7, et ce 24h24.
Lors des opratIons de maIntenance Il est possIble de 'forcer' une nonexcutIon des tches prprogrammes vIa la cratIon d'un fIchIer flag. Cette possIbIlIt a pour objet d'empcher qu'un arrt planIfI d'une applIcatIon par exemple n'entraIne le lancement des actIons normalement prvues pour un contexte de dysfonctIonnement : envoI de maIls, relance automatIque de l'applIcatIon en cause, etc. Le fIchIer flag doIt tre cre dans le rpertoIre courant de portstat. Son nom est portstat_flag_maIntenance. Le retour au mode normal se faIt par la suppressIon/renommage de ce fIchIer. Ne pas oublIer de procder en fIn de maIntenance ;)
Femarque :Le code retour alors renvoy en sortIe par portstat est dans ce cas modIfI (voIr la sectIon suIvante).
Valeur du code retour de portstat
Portstat renvoIt comme code retour la valeur '0' sI aucune alerte n'est dclanche (aucun seuIl prconfIgur atteInt), ou le nombre d'alertes trouves dans le cas contraIre. Cette InformatIon n'est renvoye que sI le mode d'excutIon est actIv par l'utIlIsatIon des motclefs adquats ('exec' ou 'fullexec') ou encore qu'un mode de debug est actIf (motclefs 'debug' ou 'fulldebug'), cecI des fIns de monItorIng ponctuel et de dbugage.
Cas partIculIer : mode maIntenance actIv Lorsque le fIchIer flag tmoIn d'une maIntenance en cours est cr (voIr cIdessus) pour dsactIver l'excutIon automatIque de tches, le code retour est modIfI de la manIere suIvante. Le code renvoy sI aucune alerte n'est dclanche est 100 (au lIeu de '0 ') Le code renvoy sI des alertes sont prsentes est 100 augment du nombre d'alertes rencontres (101 pour une alerte, etc..).
Remarque sur les valeurs spcifiques susceptibles dtre affiches
une valeur affIche de ' ::' IndIque non seulement qu'aucune connexIon n'est actIve sur le port monItor (auquel cas la valeur 'normale' attendue alors est de '0'), maIs en outre que ce port n'est pas en coute : portstat ralIse en effet systmatIquement une vrIfIcatIon de la bonne coute des ports qu'Il est en charge de surveIller. Une telle InformatIon peut renvoyer un cas de chute de process, et donc un IncIdent applIcatIf. Une bonne solutIon est d'utIlIser les haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
tches prprogrammes pour dclancher alors une actIon lorsque la valeur observe est prcIsment de ' ::'
une valeur affIche de '-' est affIche lorsque aucune connexIon n'est observe lors d'un monItorIng de port dIstant (remote) : Il n'est en effet pas pertInent d'affIcher la valeur '0' dans ce cas, alors que cette valeur est utIlIse dans le cas des ports locaux pour IndIquer le port est bIen l'coute, maIs qu'aucune connexIon n'est cependant releve. FIen ne permet de valIder le faIt que le port est bIen en coute sur le dIstant : aussI on prfere passer par un sImple '-' pour dIstInguer ce cas partIculIer.
Flag de statut dalertes (v.3.27.81)
Un flag de statut d'alertes est affIch par dfaut en dernIere colonne de monItorIng.
Ce flag se prsente sous la forme d'un caractere entour de parentheses, permettant de dtermIner a posterIorI l'tat prcIs du contexte complet des alertes ce moment tres prcIs.
Tres concretement, les valeurs suIvantes peuvent tre affIches :
(7arIantes sI le mode 'maIntenance' est actIf) (-) Aucune alerte dclanche /|ode maIntenance actIf (S) Alerte(s) dclanche(s) /|ode maIntenance actIf - voIr note sI dessous
(7arIantes sI le mode 'maIntenance' est actIf) (=) Aucune alerte dclanche/|ode maIntenance actIf (#) Alerte(s) dclanche(s)/|ode maIntenance actIf
note sur les cas ( !) et (S) Le mode excutIon n'tant pas actIf, ce message doIt tre consIdr comme un warnIng : un seuIl crItIque confIgur a t franchI, et une actIon auraIt t lance (sI prsente) sI le mode excutIon avaIt t demand. Cette fonctIonnalIt est partIculIerement pratIque lorsque portstat est utIlIs en monItorIng InteractIf, par exemple lors de problemes constats sur la machIne. 0ans ce cas en effet le mode d'excutIon n'est habItuellement pas prcIs dans le lancement de la commande.
L'ensemble des valeurs sont rsumes dans la table suIvante :
Probleme : |ode excutIon : |aIntenance : flag
non (_) non non ouI (-) haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
non () ouI ouI (=)
non (!) non ouI (S) non (+) ouI ouI ouI (#)
Les valeurs usuelles classIquement observes sont donc :
|ode excutIon non actIf sans (_) ou avec ( !) probleme. |ode excutIon actIf sans () ou avec (+) probleme.
Lorsque le mode maIntenance est prsent, ces valeurs devIennent :
|ode excutIon non actIf sans (-) ou avec ( S) probleme. |ode excutIon actIf avec (=) ou avec (#) probleme.
L'affIchage de ce flag peut tre InvalId en utIlIsant le mot clef 'noflag'
Exemple de sortIe (dans le cas prsent une/des alerte(s) ont t dclanches, et celle(s)cI ont donn lIeu au lancement des actIons assocIes en table : le flag est '+'. l auraIt t '#' sI le lancement des actIons prvues dans ce cas avaIent t InvalId par la prsence d'un mode maIntenance actIf)
L'utIlIsatIon du motclef 'color' permet l'affIchage d'une colorIsatIon des valeurs selon la logIque suIvante :
les valeurs monItores (auxquelles sont assocIes des alertes) apparaIssent en gras (bold). les valeurs monItores ayant donn lIeu un dclanchement d'alerte (seuIl franchI) apparaIssent en reverse vIdeo.
Cette optIon est destIne facIlIter le monItorIng InteractIf, en faIsant merger les valeurs crItIques/en alerte. Elle IntervIent en complment du flag de statut d'alertes, dont elle prcIse le dtaIl.
Exemple de sortIe (dans le cas prsent une alerte a t dclanche ('lfront', en Inverse vIdo), et celle(s)cI ont donn lIeu au lancement des actIons assocIes en table : le flag est '+'. Une seconde valeur est monItore ('oracle', en gras) maIs aucun seuIl la concernant n'est franchI).
Femarque :l'utIlIsatIon du mode colorIsatIon entraIne l'InsertIon dans le texte de squences de caracteres spcIaux destInes au formatage des InformatIons en mode gras et/ou Inverse vIdo. En cas de redIrectIon de la sortIe standard pour conservatIon des traces en fIchIer ces caracteres sont galement Insrs dans le fIchIer construIt sur dIsque.
CecI peut en gner la lecture/l'InterprtatIon ultrIeure : des problemes seront aInsI remarqus avec les commandes vI ou more, maIs l'affIchage sera par contre correct avec head, taIl, cat ou pg. haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
INSTALLATION ET DOCUMENTATION
Localisation de portstat
L'ensemble des composantes de portstat, savoIr le scrIpt shell luImme, son scrIpt awk satellIte portstat.awk aInsI que la/les tables de confIguratIon (portstat.tab par dfaut, etc..) doIvent se trouver dans le mme rpertoIre (/usr/local/exploIt/shells par dfaut). La commande portstat peut tre Invoque vIa son chemIn absolu /usr/local/exploIt/shells/portstat (par exemple dans la crontab).
Documentation de portstat
La documentatIon de rfrence est contenue dans portstat.pdf
l est essentIel de se refrer la versIon de manuel correspondant la versIon de portstat Installe.
Environnement systme
La commande portstat a t valIde sur les envIronnements suIvants:
8| AX [45].x et SUN SolarIs 8.x (UNX), Fed Hat enterprIse J (LNUX) et sous u/wIn, l'envIronnement unIx fournI par AtEt pour WIndows XP/200[0J]. Nota : le support de l'envIronnement cygwIn sous wIndows est suspendu pour des raIsons d'IncompatIbIlIt avec la varIante awk Implmente. Seul u/wIn doIt dsormaIs tre utIlIs sous wIndows.
Portstat est susceptIble de fonctIonner sans probleme sur d'autres envIronnements, et suppose comme prrequIs un Interprteur ksh, une varIante compatIble de nawk (gawk,..), aInsI que l'usage de la commande netstat avec ses optIons 'na' et celle de ps avec ses optIons 'ef'. Tres gnralement Il ne ncessIte comme adaptatIon qu'une ventuelle prIse en compte d'une varIante locale de la sortIe de la commande netstat.
|ercI de faIre remonter toute demande de portage sur un nouvel envIronnement.
Annexe : Problmes courants
Q1.Lorsque je trace une alerte en utilisant le champ $8 pass en argument, jobtiens quelque chose du type : The parameter oracle match the followIng rule [found=48] = x Au lIeu de: The parameter oracle match the followIng rule [found=48] = [reference=40]
F1.Ne pas oublIer les quotes dans la table de confIguratIon. 0ans la descrIptIon de la tche vous avez certaInement un : echo S1:S8 . au lIeu de : haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
echo S1:S8 .
Q2a.Lorsque je lance un comptage dun nombre de process (monitoring de type proc), la colonne ne maffiche rien, pas mme un 0. Q2b.Lorsque je lance un comptage dun nombre de process (monitoring de type proc), la colonne ne maffiche pas ce que je souhaite.
F2.La commande spcIfIe en table est IncompatIble avec le mcanIsme d'optImIsatIon mIs en place par dfaut pour ce type de besoIn. Normalement l'ImpossIbIlIt d'actIver l'optImIsatIon conduIt automatIquement et de manIere transparente au lancement de la commande en mode classIque, soIt donc dans un process spar. SI nammoIns un tel comportement est observ, par exemple dans le cas d'une commande plus complexe que le modele standard attendu, procder en 'forant' l'InvalIdatIon de l'optImIsatIon en replaant le 'ps' par un '/bIn/ps'. CecI peut par exemple arrIver lorsque la commande effectue plus d'un grep de fIltrage (hors grep -v d'exclusIon).
Q3.Lorsque je lance une commande complexe (monitoring de type proc), la totalit des actions ne semblent pas tre excute, et la colonne ne maffiche donc pas ce que je souhaite.
FJ.La commande n'estelle pas composIte de plusIeurs commandes spares par un ' ;' : portstat utIlIse ce caractere comme sparateur de champ standard dans sa table de confIguratIon, et cecI constItue une contraInte sur la composItIon des commandes susceptIbles d'y tre Insres
Q4.Lorsque jutilise le mot-clef adjust laffichage des mesures me semble tronqu.
F4.Le motclef 'adjust' est destIn forcer un affIchage format selon les largeurs des enttes de colonne. Une valeur dont la largeur seraIt plus Importante que la largeur de l'entte de colonne quI la concerne sera ncessaIrement tronque : Il est donc Important de choIsIr ses enttes avec soIn.
CecIdIt, et pour des raIsons de scurIt, la largeur mInImale d'une colonne ne peut tre InfrIeure J caracteres, mme dans les cas ou l'entte adopte sa valeur mInImale propre, savoIr 2 caracteres. CecI a pour but de permettre un affIchage correct des nombres de connexIons jusqu' 999, quelque soIt l'entte choIsI.
0ernIere remarque : cecI ne concerne que l'affIchage. Les dtermInatIons des cas de franchIssement d'alertes sont toujours effectus en fonctIon de la valeur relle des mesures, telles que conserves en table.
haIntenance Commands portstat(1h) Ih WebHostIng Last change: 20051115 portstat v.3.34.84
Q5.Jai bien positionn une alerte sur ma ligne de monitoring (type port ou proc), mais cette alerte ne se dclanche pas Q5.Jai bien positionn une tche a excuter dans une entre de type task, mais cette tche ne se dclanche pas
F5.Les alertes ne sont actIves que sI : le motclef 'exec' ou 'fullexec' est prsent sur la lIgne de commande.. estce le cas : le mode maIntenance n'est pas actIv (voIr sI le flag de maIntenance n'a pas oublI d'tre supprIm apres la dernIere maIntenance, par exemple..) la valeur observe correspond bIen ce que l'on souhaIte monItorer : le seuIl estIl bIen atteInt/franchI : L'alerte estelle bIen posItIonne dans le champ correct (ne pas posItIonner une alerte dans le champ utIlIs pour les alertes 'suprIeur ou gal ' alors que l'on souhaIte traIter le cas 'InfrIeur ', etc..) : sI le nom de la tche dclancher est la foIs prsent dans la lIgne de monItorIng ('port' ou 'proc') ET dans une des entres de type 'task' : cette correspondance est IndIspensable.
sI tout cecI semble correct n'estce pas un probleme de formatage (nombre de champs Incorrect, etc..) :
autre pIste : Il est possIble que l'alerte soIt bIen dclanche par portstat, maIs que le soucIs rsIde du cot du contenu de la tche excute ellemme : vrIfIer la syntaxe du lancement de commande IndIqu dans l'entre 'task' et/ou le contenu du scrIpt Invoqu sI Il s'agIt d'un scrIpt.
Pour dIstInguer ce dernIer cas, et mettre hors de cause la confIguratIon de la table de portstat, Il suffIt de remplacer la tche par une tche plus sImple (par exemple un sImple echo), et vrIfIer que cellecI est bIen excute.