Salvando arquivos de log httpd para S3 no desligamento usando s3cmd

1

Eu tenho um grupo de escalonamento automático no Amazon Web Services (AWS). Eu quero preservar os arquivos de log em uma instância (Amazon Linux AMI) quando o grupo desce. Minha idéia atual é usar a ferramenta s3cmd em um script que é executado quando a instância é reinicializada ou desligada. O script (sendlogtos3, no diretório /etc/init.d) é executado bem na linha de comando. Ele também é executado na reinicialização / desligamento (ele registra sua mensagem no arquivo / var / log / messages), mas a parte crítica, o comando s3cmd, não está sendo executada. Nenhuma saída s3cmd é enviada para o arquivo de mensagens na reinicialização, mas é quando executada a partir da linha de comando.

Este é o script:

#!/bin/bash
PATH=$PATH:/usr/sbin:/opt/aws/bin

start(){
touch /var/lock/subsys/0sendlogtos3
}


stop() {

S3_BUCKET=<<bucket_name>>
EC2_INSTANCE_STRING="'ec2-metadata -i'"
LOG_FILE_LOCATION=/var/log/httpd/

s3_dest=s3://$S3_BUCKET/${EC2_INSTANCE_STRING:13}/
s3cmd --config /root/.s3cfg put -r $LOG_FILE_LOCATION  $s3_dest >> /var/log/messages  2>&1
wait
echo "'date'" - sendlogtos3 executed >> /var/log/messages
rm -f /var/lock/subsys/0sendlogtos3
}

case "$1" in
start)
start
;;
stop)
stop
;;
esac

########END#######

O arquivo está vinculado (simbolicamente) nas pastas rc0.d e rc6.d como K000sendlogtos3 e na pasta rc3.d como S99sendlogtos3. As permissões no script parecem corretas (rwxr-xr-x). Eu tentei explicitamente declarar a localização do arquivo de configuração e seguir links simbólicos, mas nenhum deles teve qualquer efeito.

Não consigo descobrir por que o s3cmd não está em execução. Alguém tem alguma idéia? Ou como descobrir o problema?

    
por unknownrisk 06.02.2014 / 00:59

1 resposta

2

Provavelmente não está em execução porque não consegue encontrar o binário. Sem qualquer log de erro, isso é apenas uma suposição que estou fazendo.

Tente ajustar a parte s3cmd no seu script para usar o caminho completo. Não tenho certeza de como você instalou s3cmd (via yum ou manualmente), mas você pode descobrir seu caminho completo executando which s3cmd .

    
por 06.02.2014 / 01:06