Скрипт / программа, которая прослушивает ввод пользователя, читает журналы для вывода и отправляет широковещательную рассылку

321
ARL

Во время развертывания кода существует риск сбоя службы / системы. Центр управления сетью отслеживает предупреждения от серверов. Если предупреждение приходит в результате развертывания кода, то это может не беспокоить. Однако, если никто не работает на сервере, то ясно, что предупреждение является поводом для беспокойства.

В настоящее время мы информируем NOC, когда работаем на сервере. Мне было интересно, существует ли уже сценарий / программа, которая может прослушивать входные данные на данном сервере и когда определенный входной сигнал получен для широковещательной передачи входного сигнала, который был получен вместе с сервером, на котором он был получен на указанном сервере.

Допустим, я работаю на сервере «х» и запускаю агент кукол

Может ли процесс, работающий в фоновом режиме, сконфигурирован для прослушивания пользовательского ввода в терминале с помощью «агента-марионетки» и последующей передачи сообщения на данный сервер, когда этот ввод присутствует?

Идея состоит в том, чтобы добавить список общих команд, используемых группой развертывания, которые этот процесс будет прослушивать и отправлять широковещательные сообщения для всех из них.

Было бы также полезно, если бы он мог искать в предопределенном месте, например, в журнале, для этой команды (в данном случае агент марионеток) для сообщения о выходе, такого как «марионетка успешно завершена ...», и в случае, если он обнаружил это, отправить дополнительная трансляция на данный сервер.

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

Спасибо

1
Добро пожаловать в Супер пользователя. К сожалению, мы не сервис для написания кода. Вместо того, чтобы просто запрашивать код для выполнения конкретной задачи, пожалуйста, покажите нам, что вы уже пробовали (включая любой код, который у вас есть) и где вы застряли, чтобы мы могли помочь вам с вашей конкретной проблемой. Вопросы, которые задают только код, слишком широки и, скорее всего, будут [отложены или закрыты] (http://stackoverflow.com/help/closed-questions). Пожалуйста, прочитайте [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask). DavidPostill 8 лет назад 0
Привет, Дэвид. Я не думаю, что я просил кого-то написать какой-либо код для меня. Просто спросили, знает ли кто-нибудь сценарий или инструмент, который уже выполняет эту функцию. Я попытался найти в Google, но это одна из ситуаций, когда хитрость заключается в том, чтобы узнать правильный вопрос, чтобы найти то, что вы ищете. Опять же, если что-то подобное не существует, я могу обратиться к RnD. Если он делает все, что я, по сути, прошу, это указать в правильном направлении. При этом, спасибо за совет. Я буду иметь это в виду. ARL 8 лет назад 0
«Просто спросили, знает ли кто-нибудь о скрипте или инструменте, который уже выполняет эту функцию» - учебный материал, такой как запрос скриптов, не по теме. Лично я бы попробовал поисковую систему или прочитал книгу и выучил навыки, необходимые для выполнения задачи самостоятельно. Dave 8 лет назад 0
«Просто спросили, знает ли кто-нибудь сценарий или инструмент, который уже выполняет эту функцию» - это не по теме. Вопросы по поиску рекомендаций по продуктам, услугам или учебным материалам не по теме. См. [По теме] (http://superuser.com/help/on-topic). Попробуйте http://softwarerecs.stackexchange.com/, но сначала прочитайте [Что требуется для того, чтобы вопрос содержал «достаточно информации»] (http://meta.softwarerecs.stackexchange.com/questions/336/what-is- требуется в обмен на а-вопрос-к-содержат-достаточно-информации). DavidPostill 8 лет назад 0

1 ответ на вопрос

0
spuder

There probably is no real tool that exists which does what you are looking for, because the paradigm of having special snowflakes that you ssh/rdp into is fading because it does not scale. You should think of your servers as cattle, not pets.

Instead of ssh-ing into your machine, and running puppet apply; it is better to use a puppet server, and leverage parameterized classes to define which build should be released.

Puppet Master
External Node Classifier

Ideally, you should have two to four nearly identical servers, each with identical configurations. (production + stage + qa + dev). That way you can test that your deployment works correctly on a machine before you push your deploy to production.

If your deploys require multiple steps that can not be encapsulated in your module (like remove from load balancer, modify database, ect...). Then you will want to augment your puppet runs with a tool that can do these steps in order.

CloudSlang Orchestration Management
Capistrano Deployment Automation
RunDeck Gui that define jobs / Tasks

Other tools that can help with the deployment procedure.

Consul Service Discovery + Reporting

Lastly, it sounds like you want a feed back loop that tells you if a deploy was successful. Puppet master, and the foreman can both do that. You could also report the status to a REST base database.

InflxDB
Iron.io

Then use a dashboard style tool to show the last x number of results.

dashing
tipboard

Or, you could push straight to a chat room like slack.

You mentioned watching logs to find the output of commands. You could setup log monitoring, which could show messages in a dashboard, or even send alerts if a particular line is logged.

Here is documentation on setting up an ELK Stack (Elasticsearch, Logstash, Kibana )

Other Resources

https://sysadmincasts.com/episodes/47-zero-downtime-deployments-with-ansible-part-4-4

http://aws.amazon.com/codedeploy/

Spuder, спасибо за ваш ценный вклад. Я только начал работать в новой должности и сейчас изучаю веревки. Я уверен, что предоставленные вами ресурсы будут очень полезны. Еще раз спасибо! ARL 8 лет назад 0

Похожие вопросы