# DevOps

# Сервера и кластеры

# Сервисы мониторинга

  • Sentry.io - для логирование ошибок приложений и сервисов
  • Site24x7.com - для мониторинга инраструктуры

# Рекомендации при выборе платформы для приложения

  • Предпочитайте хостить проект в Kubernetes kuberntes.
  • Для описания серверов и автоматического создания используйте Terraform.
  • Dev-окружение должно запускаться через Docker-Compose, без необходимости установки другого локального софта.
  • Каждый проект должен сам себя тестировать и деплоить. Смотрите Gitlab CI/CD.
  • Скриптовой язык bash. Если требуется сложная логика, используйте PHP.
  • У каждого проекта должен быть Dashboard в Grafana.

# Ansible

  • Для настройки серверов используйте Ansible.
  • Если необходимо хранить секреты, шифруйте через ansible-vault. Прострая инструкция по применению ansible-vault https://gist.github.com/tristanfisher/e5a306144a637dc739e7.
  • Файлы ansible храним в папке ansible/, роли в ansible/roles.
  • Все зависимые роли держим в репозитории проекта.
  • Использйуте разделитем - в именах ролей. Например, apliteni.postgres-wal-archiving .

# Docker-compose

  • Имя файла docker-compose.yml.

  • Выносите ENV параметры в .env файл. В репозитории должен быть только .env.example.

  • Для крупных проектов желательно подготовить конфиги для docker-sync

  • Grafana/Prometheus/AlertManager - если нужен кастомный мониторинг, включая отслеживание бизнес показателей

# Sentry.io

Каждое приложение в production режиме должно отсылать ошибки в sentry.io.

# Site24x7

Что мониторим:

  • Показатели сервера (cpu, ram, disk) с алертами
  • Состояние и нагрузку баз (MySQL, Postgres, Redis)
  • Процессы, которые приведут к остановке обсслуживания (haproxy, nginx)

# Grafana

  • 1 инсталляция для каждого проекта или группы схожих проектов
  • Источник данных служит Prometheus.
  • Доступ к UI должен быть доступен только с нашего VPN.
  • Рекомендуемые Dashboard'ы: `
    • 10242 (Node Exporter Full with Node Name)
    • 455 (Postgres Performance)
    • 893 (Docker)
    • 9628 (PostgreSQL database stats)
  • Рекомендуемые плагины:
    • camptocamp-prometheus-alertmanager-datasource
  • Авторизацию настриаваем на auth.google
    • [auth.google] allow_sign_up = true - иначе авторизация новых пользователей не будет работать.
    • [users] auto_assign_org_role = Admin - чтобы каждый мог управлять Grafana.
    • [auth] disable_login_form = true - отключить авторизацию по паролю.
    • Удалите пользователя admin.
  • Для некритических ситуаций шлем нотификации в канал #alerts или канал проекта.
  • Важно устранять нотификации, на которые не требуется реакция, чтобы сократить уровень шума.

# Prometheus

  • Доступ к UI должен быть доступен только с нашего VPN или закрыт вовсе.
  • Рекомендуемые jobs:
    • prom/node-exporter - сервера (cpu, ram, disk)
    • wrouesnel/postgres_exporter - Postgres
    • google/cadvisor - контейнеры

# AlertManager

  • Для некритических ситуаций шлем нотификации в канал #alerts.
  • Важно устранять нотификации, на которые не требуется реакция, чтобы сократить уровень шума.

# Terraform

  • Храните состояние в одним из наших Minio.