Рубрики
Uncategorized

SSH-Bulk-проверка-супер гибкая проверка группы узлов от SSH.

SSH-Bulk-проверка-супер гибкий плагин для проверки многих состояний узлов SSH. Tagged с мониторингом, DevOps, Perl6, Bash.

Иногда нам нужно следить за тем, что Группа хостов в правильном состоянии. Письмовые тесты принимают ручные. Существующие инструменты, такие как Goss или Inspec, хороши, но им не хватает гибкости. Всегда есть что -то, что не покрывается предоставленным API.

Новый Воробей6 плагин SSH-Bulk-проверка Позволяет писать сценарии проверки для проверки состояний группы хостов SSH неограниченным образом.

Это чрезвычайно гибкий и всеобъемлющий, потому что полагается на Воробей6 Проверка задачи DSL и простые сценарии Bash, которые способны покрывать практически любые варианты использования.

Позвольте мне показать, как это работает.

ZEF установить https://github.com/melezhik/sparrow6.git

Экспорт:///TMP/Repo mkdir -p/tmp/repo s6 -repo_init/tmp/репо git Clone https://github.com/melezhik/sparrow-plugins.git CD Sparrow -Plugins && find -maxDepth 2 -mindepth 2 -name Sparrow.json -Execdir s6 -Upload \;

Скажем, у нас есть группа узлов, где каждый узел должен иметь одно и то же состояние:

  • каталог /var/data существуют

  • размер /TMP не более 1 ГБ

  • Nginx бежит с большим количеством 2 работников.

Это довольно образный пример, но вы, вероятно, поймали эту идею.

Давайте создадим скрипт оболочки, который запускается тест команды первыми:

MKDIR -файлы

nano files/cmd.sh

echo '==='

echo "check /var/data dir"
  ls -d /var/data && echo "/var/data is a directory"
echo "end check"

echo '==='

echo "check /tmp/ dir size"
  sudo du -sh /tmp/
echo "end check"


echo '==='

echo "check if nginx is alive"
  ps uax| grep nginx| grep -v grep
echo "end check"

echo '==='

Теперь давайте определим правила проверки, что анализировать Вывод cmd.sh сценарий Я использую Sparrow6 TaskCheck DSL с выражением диапазона, так что, чтобы сказать один чек от другого:

between: { 'check /var/data dir' } { end \s+ check }

  /var/data is a directory

end:

note: ===

between: { '/tmp/ dir size' } { end \s+ check }

  regexp: ^^ \d+(\w+) \s+ '/tmp/'

  generator: <[0];
      print "assert: ", ( $order eq 'G' ? 0 : 1 ), " the size of /tmp dir is less
      then 1 GB\n";
    }

  HERE

end:

note: ===

between: { 'check if nginx is alive' } { end \s+ check }

  /usr/sbin/nginx -g daemon on; master_process on;

  regexp: ^^ 'www-data' \s+ .* \s+ worker \s+ process $$

  generator: <

Мы почти настроены, теперь давайте запустим все наши чеки против хостов SSH, мы будем использовать Sparrowdo Task Runner в -localhost Режим, потому что мы запускаем тесты от Localhost, используя SSH/SSHPASS Утилиты:

Воробей

#!perl6

task-run "check my hosts", "ssh-bulk-check", %(
  cmd => "files/cmd.sh",
  state => "files/state.check",
  hosts => [ "192.168.0.1" ],
);

Чтобы запустить тест, просто скажите:

Воробейдо -Локалхост

Вот результат:

20:01:46 04/29/2019 [check my hosts] check host [192.168.0.1]
20:01:46 04/29/2019 [check my hosts] ===
20:01:46 04/29/2019 [check my hosts] check /var/data dir
20:01:46 04/29/2019 [check my hosts] /var/data
20:01:46 04/29/2019 [check my hosts] /var/data is a directory
20:01:46 04/29/2019 [check my hosts] end check
20:01:46 04/29/2019 [check my hosts] ===
20:01:46 04/29/2019 [check my hosts] check /tmp/ dir size
20:01:46 04/29/2019 [check my hosts] 40K        /tmp/
20:01:46 04/29/2019 [check my hosts] end check
20:01:46 04/29/2019 [check my hosts] ===
20:01:46 04/29/2019 [check my hosts] check if nginx is alive
20:01:46 04/29/2019 [check my hosts] root      1243  0.0  0.0 140628  1500 ?        Ss   18:32   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
20:01:46 04/29/2019 [check my hosts] www-data  1244  0.0  0.0 143300  6264 ?        S    18:32   0:00 nginx: worker process
20:01:46 04/29/2019 [check my hosts] www-data  1245  0.0  0.0 143300  6264 ?        S    18:32   0:00 nginx: worker process
20:01:46 04/29/2019 [check my hosts] end check
20:01:46 04/29/2019 [check my hosts] ===
20:01:46 04/29/2019 [check my hosts] end check host [192.168.0.1]
[task check] ====================================================
[task check] check results
[task check] ====================================================
[task check] stdout match (r)  True
[task check] ===
[task check] stdout match (r) <^^ \d+(\w+) \s+ '/tmp/'> True
[task check]  True
[task check] ===
[task check] stdout match (r)  True
[task check] stdout match (r) <^^ 'www-data' \s+ .* \s+ worker \s+ process $$> True
[task check]  True

Для этого примера я использую только один хост — 192.168.0.1 Но мы можем добавить столько хостов, сколько нам нужно, плагин проверит их все в одной транзакции.

Это мертва, легко написать практически любую проверку с этим плагином. Пожалуйста, поделитесь своими вариантами использования, и я буду рад помочь вам, как использовать SSH-Bulk-проверка для них

Оригинал: «https://dev.to/melezhik/ssh-bulk-check-super-flexible-check-of-group-of-nodes-by-ssh-42ff»