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...

jueves, 5 de julio de 2012

configurar firewall en linux centos y RHEL

En el día de hoy me encontré en otra de esas sabrosas aventuras con las cuales uno debe aprender a las malas, "es decir buscar en internet" y es hacer que sirva el comando YUM en linux pero con el firelwall algo restrictivo... entonces me encontré con este par de palabras que me alegraron la tarde:

RELATED,ESTABLISHED


Es de recordar que si se hace como la segunda forma entonces se debe tener cuidado se agregar primero el puerto 22 que es SSH sino nos va a desconectar.

pero sin embargo se pueden hacer las cosas de multiples maneras para configurar el firewall como son:

copiar el siguiente contenido en el archivo "vi /etc/sysconfig/iptables" y luego ejecutar "/sbin/service iptables start" entonces aca está el contenido para un JBOSS y un TOMCAT:

# Generated by iptables-save v1.3.5 on Thu Jul  5 16:00:14 2012
*filter
#:INPUT ACCEPT [2:80]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [13:876]
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8080 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -m state --state NEW -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

-A INPUT -j DROP

COMMIT
# Completed on Thu Jul  5 16:00:14 2012




-----------------------------

pero si se desea tambien se puede dar uno el trabajo de agregar regla por regla como es:

/sbin/iptables -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp -m tcp -m state --state NEW --sport 80 -j ACCEPT




algo importante o configuraciones un poco mas detalladas las especifico a continuación (las lineas de # son comentarios):

*filter
#:INPUT ACCEPT [2:80]
#:FORWARD ACCEPT [0:0]
#:OUTPUT ACCEPT [13:876]

#acepta todas las reglas de entrada por la interfaz de loopback (127.0.0.1)
-A INPUT -i lo -j ACCEPT

#acepta todas las reglas de salida por la interfaz de loopback (127.0.0.1)
-A OUTPUT -o lo -j ACCEPT
#acepta todas las solicitudes de PING tanto entrada como salida, es util para el monitoreo y fragmentacion de paquetes
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
-A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
-A INPUT -p icmp --icmp-type echo-reply -j ACCEPT

#acepta la conexion por el puerto 22 ssh para poder conectarse remotamente
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14243 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14244 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 14245 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42424 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42425 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42426 -m state --state NEW -j ACCEPT
#-A INPUT -p tcp -m tcp --dport 42427 -m state --state NEW -j ACCEPT

#acepta conexion por el puerto 3306 usado por mysql
-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
# se pueden colocar rangos de puertos como en este caso, tiene un rango de puertos abiertos para entrada
-A INPUT -p tcp -m tcp --dport 14243:14499 -m state --state NEW -j ACCEPT
-A INPUT -p tcp -m tcp --dport 42424:42699 -m state --state NEW -j ACCEPT

#dice que las conexiones que han sido establecidas con OUT se aceptan como seguras
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#se abre un puerto especifico diferencia sport (source port) dport (destination port)
-A OUTPUT -p tcp -m tcp --dport 12586 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 12586 -m state --state NEW -j ACCEPT

(permite aceptar las conexiones que han salido)
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#elimina todas las conexiones de entrada o solicitudes de puertos que no han sido abiertos
-A INPUT -j DROP

COMMIT
# Completed on Thu Jul  5 16:00:14 2012

miércoles, 4 de julio de 2012

configurar memcached en RHEL o CENTOS acelerar rendimiento de php

bueno, en otra de mis aventuras por el mundo de la infraestructura me encontré con el caso de tener que montar esta extension en un servidor para acelerar el rendiemiento de php, los pasos basicos son los siguientes:


yum install -y php-soap scp php php-mysql php-gd mysql-cli httpd php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-magpierss php-mapserver php-mbstring php-mcrypt php-mhash php-mssql php-shout php-snmp php-soap php-tidy memcached memcached-devel zlib-devel zlib

wget http://mirror.nyi.net/apache/tomcat/tomcat-7/v7.0.28/bin/apache-tomcat-7.0.28.tar.gz

/usr/sbin/useradd appserver

passwd appserver

chown appserver:appserver apache-tomcat-7.0.28.tar.gz

mv apache-tomcat-7.0.28.tar.gz  /home/appserver/



rpm -ivh jdk-7u5-linux-x64.rpm
vi /etc/sysconfig/memcached
-> add after to void a file
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1"



/sbin/chkconfig memcached on
/sbin/service memcached start
cd /root/
wget http://pecl.php.net/get/memcache-2.2.6.tgz

tar xvpzf memcache-2.2.6.tgz

cd memcache-2.2.6

phpize

./configure

make

make install

vi /etc/php.ini

-> add in the zone extension
extension = “memcache.so”
/sbin/service httpd restart
php -i | grep memcache -i


su appserver

tar xvpzf apache-tomcat-7.0.28.tar.gz



comandos para arrancar JBOSS en linux:

arrancar jboss y escuchar todas las ips:
sh standalone.sh -b 0.0.0.0 &

Detener jboss:

/home/appServer/jboss-as-7.1.0.Final/bin/jboss-cli.sh --connect command=:shutdown