martes, 8 de marzo de 2016

SYSLOGD

SYSLOGD (Daemon SYSLOG)

Esta es una de las muchisimas maneras que hay para configurar el syslogd, y no signfica que una sea mejor que otra. La mejor, es la que se adapta de la forma más adecuada a los requerimientos que tenemos y a los recursos que disponemos.

Estos son los ingredientes para la mezcla:
1 zFS
1 GDG
1 STC
1 Archivo de configuración

La preparación es la siguiente:
Tomamos el archivo de configuración y lo colocamos (en preferencia) en /etc. Supongamos, como suele convenirse, que este archivo se llama syslog.conf (como el ejemplo que encuentra en /usr/lpp/tcpip/samples).
En mi caso, decidí que algunos logs se separaban, como ser ftp, telnet, inetd, pero que no se guardarían, sino que al momento del archivado se borran. Luego, todo el log entero, va a ir a parar una vez por día (o cuando el filesystem llega al 75%) a un GDG.

Por qué separar algunos logs si después los borramos? Para una lectura más fácil cuando hay algun error, o cuando queremos implementar/cambiar algun componente, como por ejemplo el FTP.
Si no quiero guardar todo el log, puedo solamente archivar en una generación del GDG algunas partes? Si, se puede. Unicamente tenemos que estar seguros que la información se encuentra disponible.
Puedo guardar los logs en archivos dentro de USS? Si, pero no hay que olvidarse evaluar el crecimiento de la información, el purgado. Si, se puede hacer con cron). Aunque estas opciones son posibles, tienen origen en el uso de systemas *nix. Si realmente queremos hacer las cosas centralizadas del lado mainframe, usemos  un GDG que sea manejado por el sistema.
 Para el resto de las preguntas, se recomienda se recomienda enfáticamente la lectura de /usr/lpp/tcpip/samples/syslog.conf, ya que cuenta con ejemplos de parametrización que se adapten mejor a nuestras necesidades.


zFS: Una vez que lo creamos y lo montamos, no hay que olvidarse agregarlo en la BPXPRMxx que corresponda.



//CHKPOINT EXEC PGM=IDCAMS
//SYSPRINT   DD SYSOUT=A
//SYSIN      DD *
 DELETE                           +
       (dsn)                      +
    CLUSTER
 SET MAXCC = 0
 DEFINE CLUSTER(                  +
   NAME(dsn)                      +
   LINEAR                         +
   MEGABYTES(500 50)              +
   SHAREOPTIONS(2) )              +
  DATA(NAME(dsn.DATA) )

 LISTCAT ENT(dsn) ALL
/*

Ayuda: Usar el Syntaxcheck de OMVS para evaluar si la sintaxis es correcta.
"SETOMVS SYNTAXCHECK=(xx)" Donde xx es el sufijo del miembro de la parmlib que modificamos.

Ejemplo STC:


//SYSLOGD  PROC
//*
//SYSLOGD  EXEC PGM=BPXBATCH,REGION=4096K,TIME=1440,
//           PARM='PGM /usr/sbin/syslogd -c -i -D 0755 -F 0644'
//*
//STDIN    DD PATH='/etc/syslog.conf'
//STDOUT   DD PATH='/tmp/syslogd.stdout',
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//STDERR   DD PATH='/tmp/syslogd.stderr',
//         PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//         PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP)
//CEEDUMP  DD SYSOUT=*,DCB=(RECFM=FB,LRECL=132,BLKSIZE=132)
//         PEND
//*

Ejemplo Syslog.conf


ArchiveThreshold  75
ArchiveCheckInterval  30
ArchiveTimeOfDay  00:01
#
BeginArchiveParms
DSNPrefix  # GDG
EndArchiveParms
#
*.crit             /dev/console
*.alert            /dev/console
*.err              /var/log/error.log -X
auth.*             /var/log/auth.log -X
local1.debug       /var/log/telnet.debug -X
daemon.debug       /var/log/server.debug -X
#####################################################################
*.FTPD*.*.*        /var/log/ftpd -X
#####################################################################
*.INETD*.*.*       /var/log/inetd -X
#####################################################################
*.SYSLOGD*.*.none;*.INETD*.*.none /var/log/daemon -X
#####################################################################
*.*;local1.none;daemon.none;auth.none  /var/log/garbagecan.log -X
#####################################################################
*.*               /var/log/syslog        -N SYSLOGD(+1)


La STC de syslog debe tener permisos para escribir en el GDG, caso contrario en los logs del syslogd encontramos :
FSUM1263 File system /SYSTEM/var/log archive failed on allocation,- file /var/log/syslog - destination "GDG"(+1) - error code,FFFF9700, info code 0000

Y en el output de la STC (si tenemos ACF2)vemos :
CF99913 ACF2 VIOLATION-08,06,SYSLOGD,,GDG
SUM1259 SYSLOGD  ARCHIVE FAILED FOR 1 FILES