Как отправить файл журнала linux напрямую на S3 (минуя CloudWatch) - PullRequest
0 голосов
/ 10 февраля 2020

Как отправить файл журнала linux непосредственно на S3 (таким образом, минуя CloudWatch).

Один из примеров - использование logrotate, как описано в https://www.digitalocean.com/community/tutorials/how-to-use-logrotate-and-s3cmd-to-archive-logs-to-object-storage-on-ubuntu-16-04. Есть ли лучшие методы сейчас доступны? Я подтвердил, что вы не можете настроить агент CloudWatch для отправки на S3 вместо CloudWatch.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Большое спасибо за ваш ответ.

Во-первых, я хочу экспортировать приведенные ниже журналы в корзину s3 напрямую в обход cloudwatch.

/var/log/audit/audit.log
/var/log/dmesg
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/lynx/lynx.log
/var/log/lynx/cmx_auth.log
/var/log/lynx/lynxaudit.log
/var/log/lynx/lynxretention.log
/var/log/tomcat/catalina.log

при поиске различных способов я нашел кое-что например, используя s3cmd и экспортируя логи в корзину s3 напрямую. что-то вроде ниже

1. yum install s3cmd
2. sudo s3cmd --configure --config=/root/logrotate-s3cmd.config (Where it asks the below information)
   Access Key: your-access-key
   Secret Key: your-secret-key
   Default Region [US]: ENTER
   S3 Endpoint [s3.amazonaws.com]: nyc3.digitaloceanspaces.com
   DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: %(bucket)s.nyc3.digitaloceanspaces.com
   Encryption password: ENTER, or specify a password to encrypt
   Path to GPG program [/usr/bin/gpg]: ENTER
   Use HTTPS protocol [Yes]: ENTER
   HTTP Proxy server name: ENTER, or fill out your proxy information
   At this point, s3cmd will summarize your responses, then ask you to test the connection. Press y then ENTER to start the test:

Output
Test access with supplied credentials? [Y/n] y
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

3. Edit vi /etc/logrotate.d/tomcat

/var/log/tomcat/catalina.out {
  copytruncate
  rotate 3
  daily
  missingok
  compress
  create 0644 tomcat tomcat
    dateext
    dateformat -%Y-%m-%d-%s
    lastaction
            HOSTNAME=`hostname`
            /usr/bin/s3cmd sync /var/log/tomcat/catalina.log*.gz "s3://cmx-doc-eu-west-2-arv/$HOSTNAME/"
            /usr/bin/s3cmd sync /var/log/tomcat/catalina.out*.gz "s3://cmx-doc-eu-west-2-arv/$HOSTNAME/tomcat/"
    endscript
}

4. After adding the above I tested immediately whether it is working properly or not.

sudo logrotate /etc/logrotate.conf --verbose --force

Но странная часть - шаг 2, не сработал. У файла logrotate-s3cmd.config нет ключей доступа и секретных ключей. Просто так получилось.

0 голосов
/ 10 февраля 2020

Какой тип журналов вы хотите загрузить на S3?

Полагаю, вы хотите игнорировать Amazon CloudWatch и напрямую загружать его в корзину Amazon S3.

  1. Затем вам просто нужно написать пользовательский скрипт (Bash / Python или что-то еще) для получения ваших Linux журналов. Например, я хотел бы получить использование памяти, как показано ниже:
#!/bin/bash

MEMORY=$(free -m | awk 'NR==2{printf "%.2f\t", $3*100/$2 }')
echo $MEMORY > MEM.log.$(date +"%d-%m-%y")
После этого попытайтесь сгенерировать и использовать секретную пару ключей IAM, которая может взаимодействовать с Amazon S3 с помощью достаточных действий (описать / загрузить).
aws configure
Наконец, вы можете использовать crontab или любые Linux службы для автоматического запуска загрузки объектов API-команды в корзину Amazon S3.
crontab -e
*/5 * * * *    aws cp /home/log/*.log s3://<YOUR-BUCKET>/<YOUR-BUCKET-PATH>/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...