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

    image
    В комметариях к одной из предыдущих статей была просьба выложить на всеобщее обозрение все наши наработки, используемые в повседневной жизни. Общими усилиями все было собрано, описано и выложено на github.
    Под катом ссылка на репозиторий и краткое описание скриптов.


    Ссылка на репозиторий: github.com/olemskoi/centos-admin
    Вот краткое описание скриптов и способов работы с ними.

    1. admin.sh

    use ./admin.sh <create|remove> [ip]

    Создает площадку под сайт по шаблону. То есть конфиги nginx apache, делает релоад сервисов и создает БД mysql и/или postgresql. В зависимости от наличия файла /root/.mysql /root/.postgresql.
    Так же создает FTP аккаунт на базе pure-ftpd.
    Информацию по доступам выводит в STDOUT.

    use ./admin.sh <mysql|postgresql> Создает БД. Информацию по доступам выводит в STDOUT.

    use ./admin.sh <change_root_pass> <mysql|postgresql>

    Меняет пароль суперпользователя.

    2. apache-top.py, apachetop.sh

    Скрипт показывающий запросы apache в реальном времени.
    Требует некоторой настройки nginx:
    location /apache-status {
    proxy_pass 127.0.0.1:8080;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_read_timeout 300;
    client_max_body_size 256m;

    proxy_buffer_size 16k;
    proxy_buffers 32 16k;
    }
    А так же настройки apache:
    ServerName localhost

    <Location /apache-status>
    SetHandler server-status


    3. cacti-php-fpm.sh

    Скрипт настройки web сервисов для монитронга php-fpm в cacti

    4. highload-report.sh

    Скрипт собирающий полную информацию о системе в конкретный момент времени и отсылающий информацию на почту:
    *) список процессов, сортировка по CPU
    *) список процессов, сортировка по MEM
    *) список запросов mysql
    *) список запросов apache
    *) список запросов nginx
    *) список конектов netstat с сортировкой по ip
    *) всего TCP/UDP сессий
    *) mysql status

    Скрипт запускает monit при la > X

    5. httpd-restart.sh

    Просто рестарт apache, нужен для monit

    6. maldet.sh

    Скрипт для проверки сайтов на наличие вирусов, использует maldet

    7. mongodb-backup.sh

    Скрипт бэкапа mongoDB. Сделан на основе mysql-backup.sh

    8. mysql-backup.sh

    Бэкап mysql. Подробное описание в этой статье

    9. mysql-slave-check.sh

    Скрипт проверки состояние mysql slave с уведомлением.

    10. mysql-table-check.sh

    Скрипт проверки таблиц

    11. php-cron.sh

    Скрипт для добавления php cron задач

    12. postfix.sh

    Остановка / запуск postfix, нужно для monit.

    13. postgresql-backup.sh

    Скрипт бэкапа postgresql. Работает аналогично mysql-backup.sh за исключением характерных особенностей.

    14. redis-backup.sh

    Скрипт бэкапа redis. Работает аналогично mysql-backup.sh за исключением характерных особенностей.

    15. redis-ping.sh

    Скрипт проверки живости redis.

    16. rstr-xtra-mysql.sh

    Скрипт для работы с mysql xtrabackup

    17. unicornstat.pl, unicornstat.sh

    Скрипт для получении статистики по работе unicorn

    18. vz-exec.pl

    Скрипт для правления контейнерами openvz через ssh
    Southbridge
    351,48
    Обеспечиваем стабильную работу серверов
    Поделиться публикацией

    Комментарии 21

      –3
      Redis backup — а зачем бекапить Редис?
        +2
        А зачем лишний раз грузить бэкенд (или еще того хуже внешнего поставщика информации) набивкой кеша по новой, если можно dump/load.
          +4
          Причина по которой я не люблю рейтинги и кармы на Хабре — в реакции пользователей на мой вопрос.
          Зачем минусовать мой вопрос?

          Я спросил зачем бекапить Редис по простой причине — он изначально задумывался как персистентное хранилище данных. Причем данных которые не являются критичными, потеря которых не приведет к серьезным сбоям работы в системе. Лично я считал что бекапить Редис, это как пульт от телевизора завернуть в пленку, и хранить его потом в сейфе (чтобы дети случайно не сломали).

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

          Но вот загаживание кармы мне непонятно. Непонятно потому что оно противоречит идее ресурса — предоставлять информацию. Противоречит, потому что любой уточняющий вопрос, касаемый сути проблемы, карается минусами умников, которые знают ответ на этот вопрос. И при этом они считают что все остальные тоже должны его знать.

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

          Спасибо что прочли.
            0
            Т.к. почему-то этот комментарий оказался в ответ на мой — скажу за себя лично, что прекрасно понимаю и разделяю ваши чувства, сам в похожие ситуации приезжал ранее :) голосовать же я в принципе не имею возможности :)

            Да и в любом случае — даже если кто-то заминусовал и т.п. от излишнего ЧСВ, то, к счастью, почти всегда находятся люди, которые всё же дают ответ/уточняют. И в итоге даже такой «ценой» хабр выполняет свою миссию. Ну а бороться с каким-либо ЧСВ — это сродни борьбе с ветряными мельницами, имхо. :)
          +2
          Редис часто используют как раз из-за того что он хранит данные и на диске. Не нужны были бы данные при рестарте — юзаем мемкэш.
            0
            Ну, не скажите, даже если данные при рестарте не нужны, в редисе полно полезных вещей, отсутствующих в мемкеше, которыми можно воспользоваться, например, те же sorted sets
              0
              Ну вопрос был зачем дампить редис.
                0
                Ну это я к тому, что если данные при рестарте не нужны, совершенно необязательно нужно переходить именно на мемкеш :)
          +3
          Попробую, пожалуй highload-report.sh.
          Спасибо за статью!
            0
            Конфиг хоста nginx инклудит vhost.inc.conf. Хотелось бы увидеть содержимое искомого файла, если можно.
            И для чего используется apache, если присутствует php-fpm?
              +2
              Конфиг хоста nginx инклудит vhost.inc.conf. Хотелось бы увидеть содержимое искомого файла, если можно.

              Ничего особенного:
              location ~ /\.git {
                  deny all;
              }
              
              location ~ /\.ht {
                  deny all;
              }
              
              location ~ /\.svn {
                  deny all;
              }
              
              location ^~ /awstatsicons/ {
                  alias /var/www/awstats/icon/;
              }
              

              Правила для локейшенов по всем хостам на машине. Закрывают потенциальные дыры.

              И для чего используется apache, если присутствует php-fpm?

              Правило общее для всех случаев. Чтобы не перенастраивать отдельно для httpd и отдельно для php-fpm.
              +1
              У нас на проекте все такие хелперы оформлены в виде тасков для Capistrano. Очень удобно, и мульти-серверно.

              $ cap production redis:restart
              $ cap testing-yellow monit:restart
              $ cap testing-green deploy:from_local
                +1
                Да, это удобно. Тоже такое практикуем, только редко.
                Далеко не на всех проектах есть возможность использовать капистрано по ряду различных причин.
                  0
                  У нас через капистрано делается почти абсолютно все. От установки нового тестово/продакшн сервера, до анализа логов, бекапов и тд.
                –1
                Велосипед настоящий? :)
                  –1
                  Конечно)
                  0
                  Почему не используете взрослые CM-системы?
                    0
                    Используем Chef и Ansible на отдельных проектах.
                    Была попытка все перевести под них, но слишком уж проекты разношерстные на поддержке. На написание скриптов/рецептов уйдет нерационально много времени.
                    Хотя, мечта такая есть, да )
                      0
                      попробуйте The Foreman
                      для себя его "+" я вижу в том что:
                      — Можно разбить на группы (проекты) и создавать подгруппы
                      — на каждые группы можно свои параметры назначать
                      — параметры модулей (я использую с puppet) можно так же назначать в зависимости от совпадения с заданными переменными (домен, fqdn, hostname)
                      и т.д.
                      С Chef и Ansible знаком только по статьям, не настраивал и не пользовался, поэтому что то сказать не смогу, но знаю что Foreman работает с Chef. Для Ansible тоже есть решения на github
                    +1
                    Половину всего этого заменяет zabbix, остальную половину вменяемыми, проверенными инструментами…
                      0

                      А куда репозиторий переехал с этими скриптами?

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

                      Самое читаемое