sexta-feira, 26 de agosto de 2011

[ Varnish Troubleshoot ] Varnish Error to start

Olá,
Tive um problema para subir um varnish em produção e gostaria de compartilhar a solução:

- Ao tentar o start, ocorre o erro:

[root@varnish-machine ~]#     /etc/init.d/varnish  start
[root@varnish-machine ~]# or:                         [FAILED]


- Ao tentar startar apenas usando o daemon, ocorre:

[root@varnish-machine ~]# varnishd
storage_file: filename: ./varnish.4lLrqn size 3586 MB.
Using old SHMFILE


- Tentei então fazer um debug no init do varnish e então no final ele mostra o seguinte trecho em negrito

[root@varnish-machine ~]# sh -x     /etc/init.d/varnish  start
+ echo -n 'Starting varnish HTTP accelerator: '
Starting varnish HTTP accelerator: + ulimit -n 131072
+ ulimit -l 82000
+ '[' '-a :80  -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -u varnish -g varnish -h classic,116387 -p listen_depth=16384 -p overflow_max=10000 -p sess_timeout=5 -p session_linger=50 -p thread_pools=16 -p lru_interval=900 -p cli_timeout=20 -p ping_interval=5 -w 300,4096,60 -t 60 -s file,/var/lib/varnish/varnish_storage.bin,20G' = '' ']'




- Então tentei subir manualmente o varnish, e ai que encontrei o erro e a solução:

[root@varnish-machine ~]# varnishd  -a :80  -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -u varnish -g varnish -h classic,116387 -p listen_depth=16384 -p overflow_max=10000 -p sess_timeout=5 -p session_linger=50 -p thread_pools=16 -p lru_interval=900 -p cli_timeout=20 -p ping_interval=5 -w 300,4096,60 -t 60 -s file,/var/lib/varnish/varnish_storage.bin,20G
storage_file: filename: /var/lib/varnish/varnish_storage.bin size 20480 MB.
Message from VCC-compiler:
Unused backend backend1, defined:
(/etc/varnish/backends.inc Line 29 Pos 9)backend backend1 {
--------########################--
Running VCC-compiler failed, exit 1
VCL compilation failed


Havia um problema na VCL, acessei o arquivo, fui até a linha, corrigi e problema solucionado.

Espero que ajude, abs.

terça-feira, 9 de agosto de 2011

sqlplus

Falae galera!
Hoje precisei realizar a conexão em um banco oracle de um parceiro para homologar se a conexão com o mesmo encontrava-se ok. Consultei nossos amigos DBA's e os mesmos sugeriram utilizar o client sqlpus.

Quando realizei a instalação me deparei com ajustes que foram necessário realizar e graças aos skills de nosso amigo Arnaldo Pedroso, demorei apenas 2 minutos para configurar, e gostaria de compartilhar com vocês para caso haja uma necessidade futura. (:

1 - Deve-se fazer o export das bibliotecas do client, para evitar o seguinte erro: sqlplus64: error while loading shared libraries: libsqlplus.so: cannot open shared object file: No such file or directory
Essa configuração pode ser adicionada para ser exportada automaticamente via .bashrc, porém isso fica a critério e necessidade de cada um.
export LD_LIBRARY_PATH="/usr/lib/oracle/10.2.0.3/client64/lib/"
 ou
echo "/usr/lib/oracle/10.2.0.3/client64/lib/" > /etc/ld.so.conf.d/sqlplus 


2 - Você deve criar o arquivo aonde ficarão os dados para a conexão com o banco:
Por default ele busca esse arquivo na seguinte ordem:
/root/.tnsnames.ora #Podendo variar de acorodo com o usuário logado, no meu caso estava como root, por isso ele buscou primeiro no /root
/etc/tnsnames.ora
/usr/lib/oracle/10.2.0.3/client64/lib/network/admin/tnsnames.ora
Utilizei a última opção em vermelho


3 - Dentro do arquivo, adicionei a seguinte configuração:

nomeConexaoOracle =
#O nome acima será o mesmo nome utilizado para a conexão
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = 127.0.0.1)(Port = 1542))
# Acima colocam-se o IP e a porta a qual deseja-se conectar.
   )
 (CONNECT_DATA =
   (SERVICE_NAME = SINNPROD)
 )
)


4 - Para realizar a conexão basta:

sqlplus username/password@conexão

sqlplus USERtest/PASSWORD@
nomeConexaoOracle

Se todas as informações estiverem corretas, sucesso total.


Espero que ajude em algum momento, abs.

Referências: http://www.orafaq.com/wiki/Tnsnames.ora
DBA: Arnaldo Pedroso's mind (:

segunda-feira, 25 de abril de 2011

TCPDUMP SQL style :D

Um amigo do trabalho Julio, nos passou esse cara abaixo, achei bastante útil, estou repassando :D
Nesse caso estamos monitorando o MySQL, podemos ver pela porta 3306, porém apesar de não ter testado ainda ele pegue qualquer linguagem SQL, claro adaptando para a porta do mesmo, ainda vou testar ou caso você tenha testado por favor poste :D Grato.




 tcpdump -i eth0 -s 0 -l -w - dst port 3306 | strings | perl -e '
        while(<>){
                chomp; next if /^[^ ]+[ ]*$/;
                if(/^(SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER)/i){
                        if (defined $q){
                                print "$q\n";
                        }
                $q=$_;
                }
                else{
                        $_ =~ s/^[ \t]+//; $q.=" $_";
                }
        }'

Espero que ajude assim como me auxiliou, abraço.

segunda-feira, 10 de janeiro de 2011

Listar crontabs e listar vhosts de várias instâncias de apache

Hoje tive a necessidade de verificar os crontabs de algumas máquinas e como possuia alguns usuários e eu necessitava analisar todos fiz um for simples porém funcional e gostaria de compartilhar pois pode ser que alguém necessite, e apesar de sua simplicidade gostaria de compartilhar mesmo assim.

https://github.com/abargiela/scripts/blob/master/crontab_list.sh

Aproveitando também hoje precisei listar um ambiente legado aonde possuo vários servidores apache rodando N sites, então achei mais fácil automatizar isso para saber rapidamente em qual instância o vhost que eu precisava está, então segue o "forzinho" simples porém funcional para mim e espero que para alguém também seja um dia :D.

https://github.com/abargiela/scripts/blob/master/vhost_list.sh

Abs.