Эффективно собирайте журналы от Heroku и Archive до S3 - PullRequest
0 голосов
/ 03 июля 2019

У меня есть несколько приложений Heroku (аналогичные приложения, развернутые в нескольких экземплярах на разных серверах).Каждое приложение генерирует несколько журналов, и я хочу заархивировать сгенерированные журналы на S3.

Я пытался использовать дополнения Heroku, но после определенного момента цена этих услуг дополнения не оправдывает мой вариант использования.

Поэтому я попытался написать очень простой приемник журнала и начал преобразовывать записи журнала в файл и публиковать файлы на S3.

Вот пример кода -

    now = datetime.datetime.now()
    r = math.floor(random.random() * 10000)

    bucket = 'my-example-bucket'
    key = '/logdrain/raw/{y}/{mon}/{d}/{h}/{h}-{min}-{s}-{ms}-{r}.txt'.format(
        y=now.year, mon=now.month, d=now.day, h=now.hour, min=now.minute, s=now.second, ms=now.microsecond//1000, r=r)

    s3_file_path = 's3://{bucket}/{key}'.format(bucket=bucket, key=key)

    # Append the new content and save the file back to S3
    data = str(request.data)

    if 'l10' in data.lower():
        print('ERROR: ', data)

    with smart_open.open(s3_file_path, 'w') as fout:
        fout.write(data)

    return 'Log write successful', 200

Но похоже, что яЯ не могу сопоставить скорость потребления logplex с моей скоростью потребления / обработки.Вот логлайн

ERROR:  b'142 <172>1 2019-07-03T10:06:07+00:00 host heroku logplex - Error L10 (output buffer overflow): 6 messages dropped since 2019-07-03T09:43:52+00:00.595 <158>1 2019-07-03T10:06:07.509894+00:00 host heroku router - at=info ...

Вот документ , который подтверждает то же самое.Просто хотел узнать, есть ли у кого-то лучший подход к реализации «утечки журналов».

PS: я развернул это в приложении на колбу на Heroku с динамометрами 2enterprise и все еще получаю сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...