martes, 31 de julio de 2012

logrotate RHEL y CENTOS para: kannel sms gateway, apache httpd y tomcat

bueno, en el día de hoy me he visto en la tarea de configurar los log rotate para unos servidores en los cuales tengo que configurarles dicha funcionalidad, en este caso pues me he valido de google y pues el codigo de los log rotate es:


para kannel,
suponiendo que se tiene un usuario llamado kannel:

/home/kannel/logs/*.log {
      daily
      missingok
      rotate 7
      compress
      dateext
      delaycompress
      notifempty
      create 640 kannel adm
      sharedscripts
      postrotate

           killall -HUP bearerbox bearerbox-normal smsbox smsbox-normal || true > /dev/null 2> /dev/null
      endscript
}

para httpd (apache):

/var/log/httpd/*log {
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 apache apache
    sharedscripts
    postrotate
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
    endscript
}

y para tomcat:


/home/appserver/apache-tomcat-7.0.28/logs/*{
    weekly
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 appserver appserver
}

espero les sea de ayuda.... jejeje... y hasta la proxima...


Oracle diccionario de datos data dictionary y consultas utiles

esta son unas consultas bastante utiles para aumentar y rastrear el rendimiento en ORALE como dijo Diego!! ejejejejeje... espero que tambien les sirva, en el centro se encuentra una consiguración de parametros de oracle para aumentar el rendimiento.


select program Aplicacion, count(program) Numero_Sesiones
from v$session
group by program
order by Numero_Sesiones desc
-- agrupadas por maquina
select program Aplicacion,MACHINE, count(program) Numero_Sesiones
from v$session
group by program,MACHINE
order by Numero_Sesiones desc

-- ultimas consultas ejecutadas por un usuario de una maquina especifica
select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT, vs.sharable_mem,
  vs.persistent_mem,  vs.sorts,
  vs.executions, vs.parse_calls, vs.module, 
  vs.buffer_gets, vs.disk_reads, vs.version_count,
  vs.users_opening, vs.loads, 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.hash_value hash_value ,
  rows_processed  , vs.command_type, vs.parsing_user_id  ,
  OPTIMIZER_MODE  , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME like 'HABITATSMS'
AND au.USERNAME like s.USERNAME
AND s.MACHINE like'JUBILO'
and (vs.executions >= 1) order by   vs.CPU_TIME, vs.executions desc

-- modificada menos parametros que la anterior -- ultimas consultas ejecutadas por un usuario de una maquina especifica
select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT||' ||| ',vs.SQL_TEXT||' ||| ', 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.parsing_user_id , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME like 'HABITATSMS'
AND au.USERNAME like s.USERNAME
AND s.MACHINE like'JUBILO'
AND to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD') like '06/28'
and (vs.executions >= 1) order by   first_load_time,vs.CPU_TIME, vs.executions desc

desc v$sqlarea
desc all_users
desc v$session
-- consulta para traza y optimizar .NET


-- pruebas
SELECT  instance_name,
        DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
FROM    sys.v_$parameter ,
        v$instance
WHERE   name = 'spfile';
-- cantidad maximo de sessiones que se pueden tener activas
SELECT name, value
  FROM v$parameter
 WHERE name = 'sessions'
--
SELECT
  'Currently, '
  || (SELECT COUNT(*) FROM V$SESSION)
  || ' out of '
  || DECODE(VL.SESSIONS_MAX,0,'unlimited',VL.SESSIONS_MAX)
  || ' connections are used.' AS USAGE_MESSAGE
FROM
  V$LICENSE VL

select program Aplicacion, MACHINE, TERMINAL, PROGRAM, PROCESS, OSUSER
from v$session
order by Aplicacion, MACHINE desc
-- RESOURCE_CONSUMER_GROUP, MACHINE, TERMINAL, PROGRAM,
desc v$session

select owner||'.'||OBJECT_NAME as object_list
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS')
  order by owner

--aumentar maximo de conexiones ORACLE

alter system set processes = 1000 scope = spfile;
alter system set sessions = 1000 scope = spfile;
alter system set transactions = 1500 scope = spfile;


select TABLE_NAME,TABLE_TYPE, OWNER from SYS.ALL_TABLES where owner in ('HABITAT', 'GENERAL_COMMONS')
   order by OWNER, TABLE_NAME
--consulta que obtiene el nombre de todos los objetos de un usuario en la base de datos
SELECT object_list, OBJECT_TYPE, owner FROM (
select owner||'.'||OBJECT_NAME as object_list, OBJECT_TYPE, owner
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS', 'HABITATSMS')
  --order by owner
  UNION
select owner||'.'||SYNONYM_NAME as object_list, 'SYNONYM' OBJECT_TYPE, owner
  from ALL_SYNONYMS
  where owner in ('HABITAT', 'GENERAL_COMMONS', 'HABITATSMS')
  --order by owner
  )
  ORDER BY owner
 

  desc dba_tables
  desc dba_objects
  desc all_tables
desc user_tables
desc ALL_SYNONYMS

desc dba_objects
--propietarios y obajetos
select owner||'.'||OBJECT_NAME as object_list
  from dba_objects
  where owner in ('HABITAT', 'GENERAL_COMMONS')
  order by owner
 
  select * from user_catalog
--cantidad de objetos por usuario
select owner, count(owner) Numero
  from dba_objects
  group by owner
  order by Numero desc
 
 
  ---------------------------------------------------------
  select s.program Aplicacion, s.MACHINE, s.TERMINAL,vs.CPU_TIME , vs.runtime_mem,vs.EXECUTIONS,vs.SQL_FULLTEXT, vs.sharable_mem,
  vs.persistent_mem,  vs.sorts,
  vs.executions, vs.parse_calls, vs.module, 
  vs.buffer_gets, vs.disk_reads, vs.version_count,
  vs.users_opening, vs.loads, 
  to_char(to_date(vs.first_load_time,
  'YYYY-MM-DD/HH24:MI:SS'),'MM/DD  HH24:MI:SS') first_load_time, 
  rawtohex(vs.address) address, vs.hash_value hash_value ,
  rows_processed  , vs.command_type, vs.parsing_user_id  ,
  OPTIMIZER_MODE  , au.USERNAME parseuser 
from v$sqlarea vs , all_users au, v$session s  
where (parsing_user_id != 0)  AND
(au.user_id(+)=vs.parsing_user_id)
AND au.USERNAME IN ('HABITATSMS' , 'GENERAL_COMMONS')
AND au.USERNAME like s.USERNAME
AND s.MACHINE IN('JUBILO','WARPATH')
AND vs.module IN ('HABITATSMS','ROOT-1-%','Axesnet.HabitatEnterprise.WindowsService.Habitat','JDBC Thin Client','QTAgent32.exe')
and (vs.executions >= 1) order by   vs.runtime_mem desc



--selecciona los bloqueos si existen
select used_ublk from v$transaction;

select username, status from v$session where username IN ('HABITATSMS' , 'GENERAL_COMMONS')

select * from v$transaction;



desc v$session
-- selecciona las conexiones y su estado con usuario diferente a oracle
SELECT sid||','||serial# username,
          status,
          MODULE,
          osuser,
          client_info,
          MACHINE,
          TO_CHAR(logon_time,'DD-MON-YY HH:MI:SSSS') loged_on
   FROM v$session where OSUSER!='oracle'
  
   order by MACHINE
  

SELECT sid||','||serial# username,
         
   FROM v$session where OSUSER!='oracle'
   where module like 'JDBC Thin Client'

-- comando para matar las sessiones
alter system kill session '25,1207';
alter system kill session '27,494';
alter system kill session '35,4668';
alter system kill session '771,4703';
alter system kill session '778,4548';
alter system kill session '793,8510';
alter system kill session '796,3188';
alter system kill session '798,618';
--seleccioona los identificadores  de jdbc para poder darles kill
SELECT sid||','||serial# username
         
   FROM v$session where OSUSER!='oracle'
   AND module like 'JDBC Thin Client';



SELECT 'GRANT SELECT, UPDATE, INSERT, DELETE ON GENERAL_COMMONS."'||object_name||'" TO USUARIO_CRUD;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')
SELECT 'GRANT SELECT, UPDATE, INSERT, DELETE ON DUENO."'||object_name||'" TO USUARIO_CRUD;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')

SELECT 'GRANT SELECT ON GENERAL_COMMONS."'||object_name||'" TO USUARIO_READ;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')
SELECT 'GRANT SELECT ON DUENO."'||object_name||'" TO USUARIO_READ;' FROM all_objects WHERE owner='DUENO' AND object_type IN ('TABLE','VIEW')

lunes, 9 de julio de 2012

instalar open-ssh o scp accede a un linux remotamente y maneja archivos

en esta url está bastante explicito el uso y que se debe instalar para poder usar el comando scp.  http://www.techotopia.com/index.php/Configuring_RHEL_6_Remote_Access_using_SSH

comprimir yh descomprimir en CENTOS

algo impresidible que se debe tener a la mano como usar el comando tar, en este enlace se enfocan muy bien en el uso del mismo http://www.pedroventura.com/linux/como-comprimir-una-carpeta-entera-en-linux-desde-consola/


apache en centos y RHEL

en este caso los permisos me han jugado una mala pasada (gracias al compañero Oz), no tuve que hacer nada diferente a asignar los permisos adicionales a la carpeta del usuario en donde se contendrán los archivos, en este caso la guia va a ser la siguiente:


1. crear enlaces simbolicos dentro de /var/www/html/  -> ln -s /home/usuario/recurso recursito
2. chmod apache:apache recursito -> ubicado en /var/www/html/recursito
3. de igual forma con el contenido de recurso cambiar el propietario a apache
4. y por ultimo!!!!.... lo que me demoró 1 día!!!!, cambiar permisos a cada uno de los folder previos, en este caso chmod -R 755 /home/usuario/ chmod -R 755 /home/usuario/recurso/

no ser terco y leer este tramo del texto en el mismo archivo httpd.conf

# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid.  This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.



ahhhhhhhhhh, no olvidar habilitar las lineas que deben agregarse en el archivo /etc/httpd/conf/httpd.conf

buscar (FollowSymLink) y si no están estas lineas, agregarlas:


    Options FollowSymLinks
    AllowOverride None





#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.  Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
    Options Indexes FollowSymLinks


y por ultimo reiniciar el servidor!!!, /sbin/service httpd restart


y no es mas!!!, que carma!!!, por fin saale eso!!!arrrrrrggggggggg, bueno... eso es para quien tenga algun problema eso será sufiente, algo importante tambien es la ubicacion del archivo de log:

vi /var/log/httpd/error_log


y si le dice el error:

Symbolic link not allowed or link target not accessible:

no sea terco, revise la ruta completa de acceso y hag lo que dice el bloque de arriba chmod 755 al directorio y ruta completa, porque es muy probable que esté en la carpeta de un usuario que no deja ingresar a apache a leer o ejecutar dicho archivo...