Я хотел бы настроить Loggly для работы на AWS Elastic Beanstalk, но не могу найти никакой информации о том, как это сделать. Есть ли какое-нибудь руководство в любом месте или какое-то общее руководство по началу работы?Как настроить лоджию на эластичном бобовом стебле?
ответ
Это, как я это делаю, для papertrailapp. com (который я предпочитаю вместо loggly). В вашей папке /ebextensions
(see more info) создать logs.config
, где указать:
container_commands:
01-set-correct-hostname:
command: hostname www.example.com
02-forward-rsyslog-to-papertrail:
# https://papertrailapp.com/systems/setup
command: echo "*.* @logs.papertrailapp.com:55555" >> /etc/rsyslog.conf
03-enable-remote-logging:
command: echo -e "\$ModLoad imudp\n\$UDPServerRun 514\n\$ModLoad imtcp\n\$InputTCPServerRun 514\n\$EscapeControlCharactersOnReceive off" >> /etc/rsyslog.conf
04-restart-syslog:
command: service rsyslog restart
55555
должен быть заменен на UDP номер порта, предоставленной papertrailapp.com. Каждый раз после загрузки нового экземпляра этот конфиг будет применен. Тогда в вашем log4j.properties
:
log4j.rootLogger=WARN, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.facility=local1
log4j.appender.SYSLOG.header=true
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=[%p] %t %c: %m%n
Я не уверен, является ли это оптимальное решение. Подробнее об этом механизме см. В jcabi-beanstalk-maven-plugin
Кажется, что установить имя хоста на EC2 сервер не такая хорошая идея http://stackoverflow.com/questions/603351/can-we-set-easy-to-remember-hostnames-for-ec2-instances –
Используя это решение на EC2 - мне пришлось изменить ' service rsyslog restart', который не работал с '/etc/init.d/rsyslog restart' – yonili
Похоже, что добавление к rsyslog.conf является немного проблематичным - несколько разворачиваются на один и тот же набор серверов с резервным сервером (частое появление) завершится несколькими добавлениями. Как правило, в конце концов, /etc/rsyslog.config будет иметь «$ IncludeConfig /etc/rsyslog.d/*.conf», поэтому вы можете просто ввести свой собственный файл конфигурации, используя часть «files:» вашего. файл ebextensions. Это работает независимо от того, развертываетесь ли вы на свежих серверах или нет. – scolestock
Вот ссылка на loggly сайт поддержки для использования Syslogd с loggly: http://wiki.loggly.com/loggingconfiguration
или с помощью loggly апи с вашим собственным приложением: http://wiki.loggly.com/apidocumention
Здесь приведена конфигурация эластичного перехода для Loggly, которую я только начал использовать благодаря указателям этой темы и инструкциям по настройке поставщиков SaaS. [Loggly Config Mgmt, Papertrail rsyslog]
Сохраните файл как loggly.config в каталоге .ebextensions и обязательно проверьте соглашения о форматировании YAML (без вкладок и т. Д.). Замените номер порта Loggly TCP, имя пользователя, пароль и доменное имя в угловых скобках по мере необходимости.
Обратите внимание, что для AWS-рубиновых версий эластичного покрытия могут быть различия в установке EC2/etc/rsyslog. Например, если /etc/rsyslog.d уже существует, и уже существует директива «$ IncludeConfig /etc/rsyslog.d/*.conf», тогда команда «01-forward-rsyslog-to-loggly:» может быть удален.
Развертывание на обычные скрипты или aws.push. Для того, чтобы помочь отладить толчок, SSH & хвоста /var/log/cfn-init.log
files:
"/etc/rsyslog.d/90-loggly.conf" :
mode: "000664"
owner: root
group: root
content: |
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
# rule. They belong together, do NOT split them. If you create multiple
# forwarding rules, duplicate the whole block!
# Remote Logging (we use TCP for reliable delivery)
#
# An on-disk queue is created for this action. If the remote host is
# down, messages are spooled to disk and sent when it is up again.
$WorkDirectory /var/lib/rsyslog # where to place spool files
$ActionQueueFileName fwdRule1 # unique name prefix for spool files
$ActionQueueMaxDiskSpace 1g # 1gb space limit (use as much as possible)
$ActionQueueSaveOnShutdown on # save messages to disk on shutdown
$ActionQueueType LinkedList # run asynchronously
$ActionResumeRetryCount -1 # infinite retries if host is down
*.* @@logs.loggly.com:<yourportnum> # !!!Loggly supplied port number for each app!!!
# ### end of the forwarding rule ###
encoding: plain
"/tmp/loggly.py" :
mode: "000755"
owner: root
group: root
content: |
import json
import sys
import urllib2
'''
Auto-authenticate Syslog TCP inputs.
Usage: python inputs.py -u user -p pass -s subdomain
'''
state = None
params = {}
for i in range(len(sys.argv)):
arg = sys.argv[i]
if state:
params[state] = arg
state = None
if arg == '--username' or arg == '-u':
state = 'username'
if arg == '--password' or arg == '-p':
state = 'password'
if arg == '--subdomain' or arg == '-s':
state = 'subdomain'
url = 'https://%s.loggly.com/api/inputs' % params['subdomain']
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, url, params['username'], params['password'])
handler = urllib2.HTTPBasicAuthHandler(password_mgr)
opener = urllib2.build_opener(handler)
opener.open(url)
urllib2.install_opener(opener)
inputs = json.loads(urllib2.urlopen(url).read())
for input in inputs:
if input['service']['name'] == 'syslogtcp':
url = 'https://%s.loggly.com/api/inputs/%d/adddevice' % \
(params['subdomain'], input['id'])
response = urllib2.urlopen(url, {}).read()
print response
encoding: plain
commands:
01-forward-rsyslog-to-loggly:
# http://loggly.com/support/sending-data/logging-from/syslog/rsyslog/cd
command: test "$(grep -s '90-loggly.conf' /etc/rsyslog.conf)" == "" && echo -e "\n# Include the loggly.conf file\n\$IncludeConfig /etc/rsyslog.d/90-loggly.conf" >> /etc/rsyslog.conf
02-restart-syslog:
command: service rsyslog restart
03-inform_loggly:
command: "python /tmp/loggly.py -u <Yourloginname> -p <Yourpassword> -s <Yourdomainname>"
Ни одна из вещей, которые я пытался, казалось, работать, а loggly документация очень запутанная! Надеюсь, что это поможет кому-то, вот как я получил его на работу.
Вставьте следующий в .ebextensions/loggly.config
files:
"/etc/rsyslog.conf" :
mode: "000644"
owner: root
group: root
content: |
$ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup adm
# Input for FILE.LOG
$InputFileName /var/app/current/PATH_TO_YOUR_LOG_FILE
$InputFileTag social_php:
$InputFileStateFile stat-social_php #this must be unique for each file being polled
$InputFileSeverity info
$InputRunFileMonitor
#Add a tag for events from this file
$template LogglyFormatsocial_php,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [[email protected] tag=\"php_log\"] %msg%\n"
if $programname == 'social_php' then @@logs.loggly.com:37146;LogglyFormatsocial_php
if $programname == 'social_php' then ~
*.* @@logs.loggly.com:37146
commands:
01-restart-syslog:
command: service rsyslog restart
- заменить все экземпляры social_php с тегом, который имеет смысл для вашего приложения.
- Заменить/уаг/приложение/ток/PATH_TO_YOUR_LOG_FILE с вашего местоположения файла журнала
Как правило, /etc/rsyslog.config будет иметь "$ IncludeConfig /etc/rsyslog.d/*.conf" На end - так что вы можете просто ввести свой собственный файл конфигурации, используя раздел «файлы:» вашего файла .ebextensions. Это работает независимо от того, развертываетесь ли вы на свежих серверах или нет.
Для рубина production.log у вас может быть что-то подобное в файле .ebextensions/01loggly.config. Обратите внимание, что это также вызывает имя среды beanstalk, как тег loggly.
# For docs on eb configs, see http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
# This set of commands sets up loggly forwarding
files:
"/etc/rsyslog.d/myapp-loggly.conf" :
mode: "000664"
owner: root
group: root
content: |
$template LogglyFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [[email protected] tag=`{ "Ref" : "AWSEBEnvironmentName" }`] %msg%\n"
*.* @@logs-01.loggly.com:514;LogglyFormat
# One time config
$ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup adm
$WorkDirectory /var/spool/rsyslog
# Add a tag for file events
# For production.log
$InputFileName /var/app/support/logs/production.log
$InputFileTag production-log
$InputFileStateFile stat-production-log #this must be unique for each file being polled
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
# Send to Loggly then discard
if $programname == 'myapp-production-log' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'myapp-production-log' then ~
encoding: plain
commands:
00-make-work-directory:
command: mkdir -p /var/spool/rsyslog
01-restart-syslog:
command: service rsyslog restart
Для Tomcat, вы можете сделать что-то вроде этого в файле .ebextesions/01logglyg.config:
# For docs on eb configs, see http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
# This set of commands sets up loggly forwarding
files:
"/etc/rsyslog.d/mytomcatapp-loggly.conf" :
mode: "000664"
owner: root
group: root
content: |
$template LogglyFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% [[email protected] tag=`{ "Ref" : "AWSEBEnvironmentName" }`] %msg%\n"
*.* @@logs-01.loggly.com:514;LogglyFormat
# One time config
$ModLoad imfile
$InputFilePollInterval 10
$PrivDropToGroup adm
$WorkDirectory /var/spool/rsyslog
# catalina.log
$InputFileName /var/log/tomcat7/catalina.log
$InputFileTag catalina-log
$InputFileStateFile stat-catalina-log
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'catalina-log' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'catalina-log' then ~
# catalina.out
$InputFileName /var/log/tomcat7/catalina.out
$InputFileTag catalina-out
$InputFileStateFile stat-catalina-out
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'catalina-out' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'catalina-out' then ~
# host-manager.log
$InputFileName /var/log/tomcat7/host-manager.log
$InputFileTag host-manager
$InputFileStateFile stat-host-manager
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'host-manager' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'host-manager' then ~
# initd.log
$InputFileName /var/log/tomcat7/initd.log
$InputFileTag initd
$InputFileStateFile stat-initd
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'initd' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'initd' then ~
# localhost.log
$InputFileName /var/log/tomcat7/localhost.log
$InputFileTag localhost-log
$InputFileStateFile stat-localhost-log
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'localhost-log' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'localhost-log' then ~
# manager.log
$InputFileName /var/log/tomcat7/manager.log
$InputFileTag manager
$InputFileStateFile stat-manager
$InputFileSeverity info
$InputFilePersistStateInterval 20000
$InputRunFileMonitor
if $programname == 'manager' then @@logs-01.loggly.com:514;LogglyFormat
if $programname == 'manager' then ~
encoding: plain
commands:
00-make-work-directory:
command: mkdir -p /var/spool/rsyslog
01-restart-syslog:
command: service rsyslog restart
Эта конфигурация работает для меня - хотя я до сих пор не определено, как получить многострочные записи, входящие в одну запись в Loggly.
В конце концов, эта конфигурация тоже не работала. Он не следит за каталитикой после того, как по часовой стрелке встанет на изображение amazon linux. Это работает: https://gist.github.com/troy/4710601 – scolestock
Вы также можете использовать скрипт установки из самого журнала. Установки ниже следующие инструкции для установки унаследованной на https://www.loggly.com/docs/configure-syslog-script/ с незначительными изменениями (без подтверждения приглашения, команда Sudo не заменяется, поскольку ни терминал не доступен)
(редактирование: обновлено ссылка, кажется, устаревшее решения сейчас в loggly документации)
Поместите следующий скрипт в .ebextensions/loggly.config
Заменить ЛЕКСЕМУ и СЧЕТ с вашим собственным.
#
# Install loggly.com on AWS Elastic Beanstalk
# Tested with node.js environment
# Save this file as .ebextensions/loggly.config
# Deploy per normal scripts or aws.push. To help debug the push, ssh & tail /var/log/cfn-init.log
# See Also /var/log/eb-tools.log
#
commands:
01_loggly_dl:
command: wget -q -O /tmp/loggly.py https://www.loggly.com/install/configure-syslog.py
02_loggly_config:
command: su --session-command="python /tmp/loggly.py setup --auth TOKEN --account ACCOUNT --yes"
Я знаю, что это вопрос довольно старый, но я обнаружил, что ответы реально не ответить на вопрос или просто не работало правильно, когда выполнены. Я обнаружил, что это работает (файл .ebextenstions/02loggly.config):
container_commands:
01-transform-rsyslog.conf:
command: sed "s/NODE_ENV/$NODE_ENV/g" scripts/22-loggly.conf.temp > scripts/22-loggly.conf
02-setup-rsyslog.conf:
command: cp scripts/22-loggly.conf /etc/rsyslog.d/22-loggly.conf
03-restart:
command: /sbin/service rsyslog restart
"01-преобразование-rsyslog.conf" шаг не является обязательным; Я использую это, чтобы установить тег NODE_ENV в файле. «22-loggly.conf.temp» - это модифицированная версия файла «22-loggly.conf», созданная в «/etc/rsyslog.d/» при запуске сценария установки источника Linux (https://www.loggly.com/install/configure-syslog.py). Я только что установил его на экземпляр ec2 и скопировал файл.
Примечание. Мне пришлось добавить команду/sbin в мою служебную команду, потому что она не срабатывала для меня без нее. Кроме того, это перезапускает syslog при каждом развертывании, что должно быть хорошо.
Теперь вам нужно только убедиться, что ваше приложение зарегистрировано в syslog. Для Java это будет log4j или аналогичный. Для Node.js (это то, что я использую) работает rconsole (https://github.com/tblobaum/rconsole).
Следуйте моей конфигурации логоса в эластичном шланге. Для Linux + log4j
по конфигурации .ebextensions файла
container_commands:
01_configure_sudo_access:
command: sed -i -- 's/ requiretty/ \!requiretty/g' /etc/sudoers
02_loggy_configure:
command: sudo python .ebextensions/scripts/loggly_config.py
03_restore_sudo_access:
command: sed -i -- 's/ \!requiretty/ requiretty/g' /etc/sudoers
Loggly скрипт в Python для AMI по умолчанию:
import os
rsyslog_path = '/etc/rsyslog.conf'
loggly_file_path = '/etc/rsyslog.d/22-loggly.conf'
class LogglyConfig:
def __init__(self):
self.__linux_log()
self.__config_loggly_for_log4j()
def __linux_log(self):
#not installed on this machine
if not os.path.exists(loggly_file_path):
os.system('rm -f configure-linux.sh')
os.system('wget https://www.loggly.com/install/configure-linux.sh')
os.system('sudo bash configure-linux.sh -a DOMAIN -t TOKEN -u USER -p PASSWORD -s')
def __config_loggly_for_log4j(self):
f = open(rsyslog_path,'r')
file_text = f.read()
f.close()
file_text = file_text.replace('#$ModLoad imudp', '$ModLoad imudp')
file_text = file_text.replace('#$UDPServerRun 514', '$UDPServerRun 514')
f = open(rsyslog_path,'w')
f.write(file_text)
f.close()
os.system('service rsyslog restart')
LogglyConfig()
В log4j.properties на вашем Java проекта
log4j.rootLogger=INFO, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.SyslogHost=localhost
log4j.appender.SYSLOG.Facility=Local3
log4j.appender.SYSLOG.Header=true
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=java %d{ISO8601} %p %t %c{1}.%M - %m%n
- 1. Как настроить супервизор на эластичном бобовом стебле?
- 2. SOLR на эластичном бобовом стебле
- 3. Как запустить pdftk на эластичном бобовом стебле
- 4. как отключить sqs на эластичном бобовом стебле
- 5. Как настроить Loggly с Tomcat 8 на эластичном бобовом стебле
- 6. Непрерывное развертывание на эластичном бобовом стебле
- 7. GPG Закрытые ключи на эластичном бобовом стебле
- 8. Развертывание рельсов на эластичном бобовом стебле, nodejs?
- 9. Масштабирование по времени на эластичном бобовом стебле
- 10. Django на эластичном бобовом стебле «requirements.txt» недействителен
- 11. RoR Gemfile проблема на эластичном бобовом стебле
- 12. Неисправность развертывания KeystoneJS на эластичном бобовом стебле
- 13. Приложение SaaS на эластичном бобовом стебле
- 14. Окружающая среда-особенности на эластичном бобовом стебле
- 15. Конфигурация приложения Ruby на эластичном бобовом стебле
- 16. WebSockets на эластичном бобовом стебле с докером
- 17. Поддержание сеанса в эластичном бобовом стебле
- 18. Простая программа C в эластичном бобовом стебле
- 19. Развертывание приложения Zend в эластичном бобовом стебле?
- 20. Daemonize Celerybeat в эластичном бобовом стебле (AWS)
- 21. Настройка Django на эластичном бобовом стебле с Postgres
- 22. HTTP-сжатие в IIS 7.5 на эластичном бобовом стебле
- 23. Ошибка журнала эл. Почты Django на эластичном бобовом стебле
- 24. Как развернуть пользовательский образ докеров на эластичном бобовом стебле?
- 25. Как удалить пакеты пакетов на эластичном бобовом стебле
- 26. Изменить кодировку файла Apache Tomcat на эластичном бобовом стебле
- 27. Перенаправление на HTTPS с узлом/экспресс на эластичном бобовом стебле
- 28. Невозможно получить бутылку для работы на эластичном бобовом стебле
- 29. Разверните YII на эластичном бобовом стебле с помощью консоли eb
- 30. Запуск весеннего ботинка с Opencv на эластичном бобовом стебле
ли http API и опция? http://wiki.loggly.com/gettinglogsintologgly Я могу написать более подробное описание, если так –
более детальная настройка, характерная для Elastic Beanstalk, - это то, что я ищу. –
Эластичные бобовые стебли просто работают в военном файле, поэтому API-интерфейс Http, вызывающий вызовы непосредственно из вашего кода, будет работать в любом месте, включая эластичный бобовый стебель.Поскольку у вас нет доступа к вашей машине в beanstalk, syslog api не будет работать для вас. –