Вопрос или проблема
У меня graylog2 v0.20.6, и когда я пытаюсь отправить тестовое уведомление по электронной почте, я вижу такую ошибку:
Ошибка! ×Не удалось отправить мусорное уведомление, проверьте серверный журнал для получения деталей:
Ошибка API вызова GET http://@127.0.0.1:12900/streams/53eb19b722e4a0c4d93dcfe5/alerts/sendDummyAlert вернула 500 Внутренняя ошибка сервера тело: Отправка электронного письма на следующий сервер потерпела неудачу: 192.168.169.10:587
Ниже я делюсь своим конфигурационным файлом graylog2-server:
# Если вы запускаете более одного экземпляра graylog2-server, вам нужно выбрать один из этих
# экземпляров в качестве мастера. Мастер будет выполнять некоторые периодические задачи, которые не-мастера не выполняют.
is_master = true
# Автоматически сгенерированный идентификатор узла будет храниться в этом файле и считываться после перезагрузок.
# Хорошая идея использовать абсолютный путь к файлу здесь, если вы запускаете graylog2-server из init-скриптов или аналогичных.
node_id_file = /etc/graylog2-server-node-id
# Вы ДОЛЖНЫ установить секрет для защиты/перепечатывания хранимых паролей пользователей здесь.
# Используйте не менее 64 символов.
# Сгенерируйте один, используя, например: pwgen -s 96
password_secret = 8OiOyemf3RBqK2SdmppNouFilSIgKjGShI6fgC72ixeCgRYtxMsfffsdfasfsdfefeffsdfsafsdfafeasZen2ycrRRzGEbuasoiN2q3Z6GrDNiQEGNfmAemNd4wc1
# пользователь root по умолчанию называется 'admin'
# root_username = admin
# Вы ДОЛЖНЫ указать хэшированный пароль для пользователя root (который вам нужно только для первоначальной настройки системы
# и в случае, если вы потеряете соединение с вашим сервером аутентификации)
# Этот пароль нельзя изменить с помощью API или через веб-интерфейс. Если вам нужно его изменить,
# измените его в этом файле.
# Создайте один, используя, например: echo -n yourpassword | shasum -a 256
# и поместите полученное хэш-значение в следующую строку
root_password_sha2 = 5430d65ba153185053363eb0fdsfsdfdasdwrwerewr32c36cd38df30a2feaa6e2e876f5efadef32ce29
# Установите директорию плагина здесь (относительно или абсолютно)
plugin_dir = plugin
# URI для прослушивания REST API. Должен быть доступен другим узлам graylog2-server, если вы запускаете кластер.
rest_listen_uri = http://127.0.0.1:12900/
# Транспортный адрес REST API. По умолчанию совпадает со значением rest_listen_uri. Исключение: если rest_listen_uri
# установлен в адрес IP с подстановочным знаком (0.0.0.0), используется первый непетлевой IPv4-адрес системы.
# Это будет продвигаться в API обнаружения кластера, и другие узлы могут пытаться подключиться к этому
# адресу. (см. rest_listen_uri)
rest_transport_uri = http://127.0.0.1:12900/
# Включите заголовки CORS для REST API. Это необходимо для JS-клиентов, обращающихся к серверу напрямую.
# Если это отключено, современные браузеры не смогут получать ресурсы с сервера.
# Это отключено по умолчанию. Раскомментируйте следующую строку, чтобы включить его.
#rest_enable_cors = true
# Включите поддержку GZIP для REST API. Это сжимает ответы API и таким образом помогает уменьшить
# общее время поездки. Это отключено по умолчанию. Раскомментируйте следующую строку, чтобы включить его.
#rest_enable_gzip = true
# Конфигурационный файл встроенного elasticsearch
# обратите внимание на рабочую директорию сервера, возможно, используйте абсолютный путь здесь
#elasticsearch_config_file = /etc/graylog2-elasticsearch.yml
elasticsearch_max_docs_per_index = 20000000
# Сколько индексов вы хотите сохранить?
# elasticsearch_max_number_of_indices*elasticsearch_max_docs_per_index=общее количество сообщений в вашей настройке
elasticsearch_max_number_of_indices = 20
# Решите, что происходит со старыми индексами, когда достигнуто максимальное количество индексов.
# Следующие стратегии доступны:
# - удалить # Полностью удаляет индекс (по умолчанию)
# - закрыть # Закрывает индекс и скрывает его от системы. Можно открыть позже.
retention_strategy = close
# Сколько шардов и реплик ElasticSearch следует использовать на индекс? Обратите внимание, что это применяется только к вновь созданным индексам.
elasticsearch_shards = 1
elasticsearch_replicas = 0
elasticsearch_index_prefix = graylog2
# Вы хотите разрешить поиск с ведущими подстановочными знаками? Это может быть крайне ресурсоемким и должно быть
# включено только осторожно. Смотрите также: http://support.torch.sh/help/kb/graylog2-web-interface/the-search-bar-explained
allow_leading_wildcard_searches = false
# Вы хотите разрешить выделение найденных? В зависимости от размера ваших сообщений это может быть требовательно к памяти и
# должно быть включено только после того, как вы убедитесь, что ваш кластер elasticsearch имеет достаточно памяти.
allow_highlighting = false
# настройки, которые будут переданы клиенту elasticsearch (переопределяя те, которые в предоставленном elasticsearch_config_file)
# все эти
# это должно быть таким же, как для вашего кластера elasticsearch
#elasticsearch_cluster_name = graylog2
# вы также можете оставить это пустым, но это упрощает идентификацию экземпляра клиента graylog2
#elasticsearch_node_name = graylog2-server
# мы не хотим, чтобы сервер graylog2 хранил какие-либо данные или был основным узлом
#elasticsearch_node_master = false
#elasticsearch_node_data = false
# используйте другой порт, если вы запускаете несколько узлов elasticsearch на одном компьютере
#elasticsearch_transport_tcp_port = 9350
# нам не нужно запускать встроенный HTTP-сервер здесь
#elasticsearch_http_enabled = false
elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300
# следующие настройки позволяют изменить адреса привязки для клиента elasticsearch в graylog2
# эти настройки по умолчанию пустые, позволяя elasticsearch выбирать автоматически,
# переопределите их здесь или в 'elasticsearch_config_file', если вам нужно привязаться к специальному адресу
# обратитесь к http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/modules-network.html для специальных значений здесь
# elasticsearch_network_host =
# elasticsearch_network_bind_host =
# elasticsearch_network_publish_host =
# Анализатор (токенизатор), который следует использовать для поля сообщения и полного сообщения. Фильтр "стандартный" обычно является хорошей идеей.
# Все поддерживаемые анализаторы: стандартный, простой, разделитель пробелов, стоп, ключевое слово, шаблон, язык, снежок, пользовательский
# Документация ElasticSearch: http://www.elasticsearch.org/guide/reference/index-modules/analysis/
# Обратите внимание, что эта настройка вступает в силу только для вновь созданных индексов.
elasticsearch_analyzer = standard
# Размер партии для вывода ElasticSearch. Это максимальное (!) количество сообщений, которые модуль вывода ElasticSearch
# получит за раз и запишет в ElasticSearch в пакетном вызове. Если настроенный размер партии не был
# достигнут в течение output_flush_interval секунд, всё, что доступно, будет сброшено за раз. Помните,
# что каждый процессор outputbuffer управляет своей собственной партией и выполняет свои собственные вызовы записи.
# ("outputbuffer_processors" переменная)
output_batch_size = 25
# Интервал сброса (в секундах) для вывода ElasticSearch. Это максимальное количество времени между двумя
# партиями сообщений, записанными в ElasticSearch. Он будет эффективен только в том случае, если ваше минимальное количество сообщений
# для этого периода времени меньше, чем output_batch_size * outputbuffer_processors.
output_flush_interval = 1
# Количество параллельно работающих процессоров.
# Увеличьте это число, если ваши буферы заполняются.
processbuffer_processors = 5
outputbuffer_processors = 3
# Стратегия ожидания, описывающая, как процессоры буфера ждут последовательности курсоров. (по умолчанию: спать)
# Возможные типы:
# - отдача
# Компромисс между производительностью и использованием CPU.
# - спать
# Компромисс между производительностью и использованием CPU. Задержки могут возникать после тихих периодов.
# - блокировка
# Высокая пропускная способность, низкая задержка, большее использование CPU.
# - активное ожидание
# Избегает системных вызовов, которые могут ввести задержки. Лучше всего, когда потоки могут быть привязаны к определенным ядрам CPU.
processor_wait_strategy = blocking
# Размер внутренних кольцевых буферов. Увеличьте это, если увеличение outputbuffer_processors больше не помогает.
# Для оптимальной производительности ваши объекты LogMessage в кольцевом буфере должны вписываться в кэш L3 вашего CPU.
# Запустите сервер с флагом --statistics, чтобы увидеть использование буфера.
# Должен быть степенью двойки. (512, 1024, 2048, ...)
ring_size = 1024
# ЭКСПЕРИМЕНТАЛЬНО: Мертвые письма
# Каждая неудачная попытка индексации по умолчанию регистрируется и становится видимой в веб-интерфейсе.
# Вы можете включить экспериментальную функцию мертвых писем, чтобы записывать каждое сообщение, которое не было успешно индексировано, в
# коллекцию MongoDB "dead_letters", чтобы убедиться, что вы никогда не потеряете сообщение. Фактическая запись мертвых
# писем должна работать хорошо, но она еще не была сильно протестирована и получит больше функций в будущих
# выпусках.
dead_letters_enabled = false
# Сколько секунд ждать между пометкой узла как МЕРТВЫЙ для возможных балансировщиков нагрузки и началом фактического
# процесса отключения. Установите на 0, если у вас нет проверяющих статусы балансировщиков нагрузки впереди.
lb_recognition_period_seconds = 3
# Конфигурация MongoDB
mongodb_useauth = false
#mongodb_user = grayloguser
#mongodb_password = 123
mongodb_host = 127.0.0.1
#mongodb_replica_set = localhost:27017,localhost:27018,localhost:27019
mongodb_database = graylog2
mongodb_port = 27017
# Увеличьте это в зависимости от максимальных подключений, которые может обрабатывать ваш сервер MongoDB, если вы сталкиваетесь с проблемами подключения к MongoDB.
mongodb_max_connections = 100
# Число потоков, допустимых для блокировки множителем подключения к MongoDB. По умолчанию: 5
# Если mongodb_max_connections равно 100, и mongodb_threads_allowed_to_block_multiplier равно 5, тогда 500 потоков могут блокироваться.
# Если больше этого, будет выброшено исключение.
# http://api.mongodb.org/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
mongodb_threads_allowed_to_block_multiplier = 5
# Файл правил Drools (используйте для переписывания входящих логов)
# Смотрите: http://support.torch.sh/help/kb/graylog2-server/custom-message-rewritingprocessing
# rules_file = /etc/graylog2.drl
# Электронная почта транспорт
transport_email_enabled = true
transport_email_protocol = smtp
transport_email_hostname = 192.168.159.10
transport_email_port = 587
transport_email_use_auth = false
transport_email_use_tls = false
transport_email_auth_username = [email protected]
transport_email_auth_password = W6eteqAqeye3
transport_email_subject_prefix = [graylog2]
transport_email_from_email = [email protected]
transport_email_from_name = Graylog2
transport_email_web_interface_url = http://192.168.178.133:3000
# Укажите и раскомментируйте это, если вы хотите включить ссылки на поток в ваших электронных письмах оповещения потока.
# Это должно определить полностью квалифицированный базовый URL вашего веб-интерфейса так, как он доступен вашим пользователям.
#
#transport_email_web_interface_url = http://192.168.178.133:3000
# HTTP прокси для исходящих HTTP вызовов
#http_proxy_uri =
Кто-нибудь имеет представление о том, что не так, и почему graylog2 не может отправить уведомление по электронной почте.
С уважением,
Мик
Вам нужно связать адрес вашего сервера с другим IP, а не 127.0.0.1
Попробуйте (замените 192.168.0.1 на ваш IP)
rest_listen_uri = http://192.168.0.1:12900/
rest_transport_uri = http://192.168.0.1:12900/
Тогда это должно сработать.
Ответ или решение
Решение проблемы с отправкой email-уведомлений в Graylog2
Ваша проблема с отправкой тестового уведомления по электронной почте в Graylog2 v0.20.6, приведшая к возникновению ошибки 500 (Internal Server Error), может быть обусловлена несколькими факторами. Ниже мы рассмотрим наиболее вероятные причины и предложим решения для их устранения.
1. Проверьте настройки электронной почты
Согласно вашему конфигурационному файлу, настройки для отправки электронной почты указаны следующим образом:
transport_email_hostname = 192.168.159.10
transport_email_port = 587
transport_email_use_auth = false
transport_email_use_tls = false
transport_email_auth_username = [email protected]
transport_email_auth_password = W6eteqAqeye3
transport_email_from_email = [email protected]
transport_email_from_name = Graylog2
Проверьте следующее:
- Hostname: Убедитесь, что
192.168.159.10
– это правильный адрес SMTP-сервера, до которого можно добраться из вашей сети. - Порт: Порт 587 обычно используется для smtp с поддержкой TLS. Убедитесь, что SMTP-сервер действительно работает на этом порту и принимает соединения.
- Аутентификация: Так как у вас указано
transport_email_use_auth = false
, проверьте, требуется ли на самом деле аутентификация для вашего SMTP-сервера. Если аутентификация необходима, необходимо установить параметр вtrue
и указать правильные учетные данные. - Шифрование: Если ваш SMTP-сервер требует шифрования, включите TLS, установив
transport_email_use_tls = true
.
2. Логи Graylog
Ошибка 500 Internal Server Error может быть более детально описана в логах сервера Graylog. Проверьте логи, чтобы получить дополнительную информацию о том, что именно идет не так. Логи обычно можно найти в директории, где установлен Graylog, или в системном журнале.
3. Конфигурация REST API
В конфигурации указаны следующие параметры для REST API:
rest_listen_uri = http://127.0.0.1:12900/
rest_transport_uri = http://127.0.0.1:12900/
Давайте изменим их, чтобы Graylog слушал не только на 127.0.0.1
, но и на более доступном IP-адресе вашей сети:
rest_listen_uri = http://192.168.0.1:12900/
rest_transport_uri = http://192.168.0.1:12900/
Замените 192.168.0.1
на актуальный IP-адрес вашего сервера. Это позволит другим устройствам в сети взаимодействовать с Graylog через отдельный адрес, что также может устранить некоторые проблемы с доступом к API.
4. Брандмауэр и сетевые настройки
Убедитесь, что ваш брандмауэр или сетевые настройки не блокируют соединения, особенно на порту SMTP и на порте, используемом Graylog. Проверьте, разрешен ли доступ к указанному IP и порту из вашей сети.
5. Настройки SMTP-сервера
Если сообщения по-прежнему не отправляются, необходимо проверить настройки вашего SMTP-сервера. Убедитесь, что он работает корректно и настроен на прием сообщений от Graylog. Рассмотрите возможность тестирования отправки электронной почты напрямую с сервера Graylog с использованием инструментов вроде telnet
или smtp-cli
.
Заключение
Применение этих шагов поможет вам диагностировать и решить проблему с отправкой email-уведомлений из Graylog2. Если проблема сохранится, предоставьте дополнительную информацию из логов Graylog для дальнейшего анализа. Вы также можете обратиться к документации Graylog или официальным форумам для получения помощи от сообщества.