Пять, удалите GitLab
После установки жалею, а карту нельзя переместить, потому что после завершения установки она автоматически запустится после загрузки. Что случилось с хорошей виртуальной машиной?
Итак, я чувствую, что у меня есть молодой и красивый образ моего Ubuntu, и я удалил ненавистный gitlab:
Перед удалением давайте посмотрим, где он установлен, потому что мы прошли Команда для установки, поэтому она будет установлена в Под каталогом посмотрим, выглядит ли он так:
Мы обнаружили, что этот ребенок был здесь, но он был мертв.
Следующее исполнение нашего плана вымирания:
2. Выполните команду удаления.
Выполните следующие три команды, а затем перезапустите систему.
илиВыполните эту команду:
После казни я взглянул и обнаружил, что в исходном файле было только 2M:
Убейте первый процесс:
Потом пропало после просмотра.
Установка Elasticsearch
Устанавливаем ядро системы по сбору логов — Elasticsearch. Его установка очень проста за счет готовых пакетов под все популярные платформы.
Centos 7 / 8
Копируем публичный ключ репозитория:
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Подключаем репозиторий Elasticsearch:
# mcedit /etc/yum.repos.d/elasticsearch.repo
name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md
Приступаем к установке еластика:
# yum install --enablerepo=elasticsearch elasticsearch
В в завершении установки добавим elasticsearch в автозагрузку и запустим его с дефолтными настройками:
# systemctl daemon-reload # systemctl enable elasticsearch.service # systemctl start elasticsearch.service
Проверяем, запустилась ли служба:
# systemctl status elasticsearch.service
Проверим теперь, что elasticsearch действительно нормально работает. Выполним к нему простой запрос о его статусе.
# curl 127.0.0.1:9200 { "name" : "centos8", "cluster_name" : "elasticsearch", "cluster_uuid" : "zsYgZQSeT6uvhTCkFJPiAA", "version" : { "number" : "7.11.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "8ced7813d6f16d2ef30792e2fcde3e755795ee04", "build_date" : "2021-02-08T22:44:01.320463Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Все в порядке, сервис реально запущен и отвечает на запросы.
Ubuntu / Debian
Копируем себе публичный ключ репозитория:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Если у вас нет пакета apt-transport-https, то надо установить:
# apt install apt-transport-https
Добавляем репозиторий Elasticsearch в систему:
# echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
Устанавливаем Elasticsearch на Debian или Ubuntu:
# apt update && apt install elasticsearch
После установки добавляем elasticsearch в автозагрузку и запускаем.
# systemctl daemon-reload # systemctl enable elasticsearch.service # systemctl start elasticsearch.service
Проверяем, запустился ли он:
# systemctl status elasticsearch.service
Проверим теперь, что elasticsearch действительно нормально работает. Выполним к нему простой запрос о его статусе.
# curl 127.0.0.1:9200 { "name" : "debioan10", "cluster_name" : "elasticsearch", "cluster_uuid" : "zsYgZQSeY6uvhWCkFJPiAA", "version" : { "number" : "7.11.0", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "8ced7813d6f16d2ef30792e2fcde3e755795ee04", "build_date" : "2021-02-09T21:44:01.320413Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Если все в порядке, то переходим к настройке Elasticsearch.
Что такое ELK Stack
Расскажу своими словами о том, что мы будем настраивать. Ранее на своем сайте я уже рассказывал о централизованном сборе логов с помощью syslog-ng. Это вполне рабочее решение, хотя очевидно, что когда у тебя становится много логов, хранить их в текстовых файлах неудобно. Надо как-то обрабатывать и выводить в удобном виде для просмотра. Именно эти проблемы и решает представленный стек программ:
- Elasticsearch используется для хранения, анализа, поиска по логам.
- Kibana представляет удобную и красивую web панель для работы с логами.
- Logstash сервис для сбора логов и отправки их в Elasticsearch. В самой простой конфигурации можно обойтись без него и отправлять логи напрямую в еластик. Но с logstash это делать удобнее.
- Beats — агенты для отправки логов в Logstash. Они бывают разные. Я буду использовать Filebeat для отправки данных из текстовых логов linux и Winlogbeat для отправки логов из журналов Windows систем.
К этой связке еще добавляется Nginx, который проксирует соединения на Kibana. В самом простом случае он не нужен, но с ним удобнее. Можно, к примеру, добавить авторизацию или ssl сертификат, в nginx удобно управлять именем домена. В случае большой нагрузки, разные службы разносятся по разным серверам или кластерам. В своем примере я все установлю на один сервер. Схематично работу данной системы можно изобразить вот так:
Начнем по этапам устанавливать и настраивать все компоненты нашей будущей системы хранения и обработки логов различных информационных систем.
Если у вас еще нет своего сервера с CentOS 8, то рекомендую мои материалы на эту тему:
- Установка CentOS 8.
- Настройка CentOS.
Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:
- Установка Debian на сервер
- Базовая настройка Debian после установки
Установка GitLab в Ubuntu 18.04
У GitLab есть несколько версий. Кроме онлайн версии, в которую вы можете выгружать свои проекты, доступной на веб-сайте GitLab.com, есть версия Community Edition и платная версия Enterprice Edition, которые можно установить на свой компьютер и создать собственный Git-сервер. В этой инструкции мы рассмотрим, как установить GitLab Ubuntu 18.04 версии Community Edition. Для этого будем использовать официальный репозиторий.
Сначала обновите репозитории до самой последний версии:
1. Установка репозитория
Затем нужно загрузить установщик репозитори из официального сайта. Этот скрипт загрузит и установит все ключи и инструменты необходимые, чтобы подключить репозиторий Gitlab в систему. Для его загрузки и запуска выполните команду:
2. Установка пакета программы
После завершения вы можете установить gitlab-ce командой:
Когда установка GitLab Ubuntu 18.04 будет завершена, вы увидите такое сообщение:
3. Развёртывание GitLab
Теперь нам необходимо подготовить программу к работе. Сначала нужно настроить URL, по которой будет открываться интерфейс GitLab. Для этого откройте файл /etc/gitlab/gitlab.rb и найдите там строчку external_url. Здесь нужно указать ваш домен. На своём локальном компьютере я буду использовать домен gitlab.local:
Сохраните и закройте файл. После этого надо пересобрать программу, учитывая изменённую конфигурацию:
Если на вашем сервере включён брандмауэр, необходимо добавить в исключения порты для протоколов http и ssh:
Чтобы наш локальный домен работал, необходимо добавить запись о нём в файл /etc/hosts:
4. Развёртывание программы с установленным Apache
Если на вашем компьютере уже установлен веб-сервер Apache, вы можете настроить программу таким образом, чтобы она работала через существующий веб-сервер. Для этого измените такие строки в /etc/gitlab/gitlab.rb:
Затем пересоберите программу:
В Apache надо добавить новый виртуальный хост с такой конфигурацией:
<VirtualHost *:80> ServerName gitlab.local ServerSignature Off ProxyPreserveHost On AllowEncodedSlashes NoDecode <Location /> Require all granted ProxyPassReverse http://127.0.0.1:8080 ProxyPassReverse http://gitlab.local </Location> RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public ErrorDocument 404 /404.html ErrorDocument 422 /422.html ErrorDocument 500 /500.html ErrorDocument 503 /deploy.html LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded ErrorLog /var/log/apache2/gitlab_error.log CustomLog /var/log/apache2/gitlab_forwarded.log common_forwarded CustomLog /var/log/apache2/gitlab_access.log combined env=!dontlog CustomLog /var/log/apache2/gitlab.log combined </VirtualHost>
Здесь gitlab.local — это домен, который будет использоваться для доступа к gitlab, а порт 8080 — тот порт, на котором сервис gitlab ожидает соединений. Его можно посмотреть командой:
После этого активируйте модули Apache — rewrite, proxy и proxy_http:
А потом активируйте наш виртуальный хост и перезапустите Apache:
Установка GitLab
1. Установка и настройка сервиса
Установим репозиторий.
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
б) для платной версии:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
После установки репозитория, устанавливаем сам GitLab.
а) бесплатную:
dnf install gitlab-ce
б) платную версию:
dnf install gitlab-ee
Если установка прошла успешно, мы должны увидеть:
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
2. Конфигурируем веб-адрес
Для запуска и корректной работы портала мы должны задать external_url. Для этого открываем файл:
vi /etc/gitlab/gitlab.rb
Нам нужно только изменить параметр external_url:
external_url ‘http://gitlab.dmosk.ru’
* данная настройка говорит, что наш веб-инструмент будет отвечать на запросы, которые пришли на узел gitlab.dmosk.ru — это значит, что данное имя должно быть зарегистрирована в DNS или прописано в локальный файл hosts.
Выполняем конфигурирование:
gitlab-ctl reconfigure
Данная операция займет какое-то время.
Шаг 6 — Ограничение или отключение открытого входа в систему (опционально)
Возможно на начальной странице GitLab вы заметили, что зарегистрировать учетную запись может кто угодно. Если вы собираетесь разместить публичный проект, эта возможность будет полезна. Однако в большинстве случаев желательны более строгие ограничения.
Прежде всего, откройте область администрирования. Для этого нажмите значок гаечного ключа на панели меню вверху страницы:
На следующей странице вы увидите обзор своего экземпляра GitLab. Для изменения настройки нажмите Settings (Настройки) в нижней части левого меню:
Вы перейдете в раздел глобальных настроек для вашего экземпляра GitLab. Здесь вы можете изменить ряд настроек, влияющих на возможность регистрации новых пользователей и их уровень доступа.
Отключение регистрации
Если вы хотите полностью отключить регистрацию (вы все равно сможете сами создавать учетные записи для новых пользователей), прокрутите страницу до раздела Sign-up Restrictions (Ограничения регистрации).
Уберите отметку из поля Sign-up enabled (Регистрация разрешена):
Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):
Теперь на начальной странице GitLab не должен отображаться раздел регистрации.
Ограничение регистрации по домену
Если вы используете GitLab в организации, предоставляющей адреса электронной почты в определенном домене, вы можете разрешить регистрацию только для этого домена, а не отключать ее полностью.
Затем добавьте свой домен или домены в поле Whitelisted domains for sign-ups (Белый список доменов для регистрации). В каждой строке можно указать только один домен. Вы можете использовать звездочку (*) как подстановочный символ в именах доменов:
Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):
Теперь на начальной странице GitLab не должен отображаться раздел регистрации.
Ограничение создания проектов
По умолчанию новые пользователи могут создавать до 10 проектов. Если вы хотите разрешить новым пользователям видеть данные и участвовать в проектах, но при этом ограничить им возможность создания новых проектов, вы можете использовать для этой цели раздел Account and Limit Settings (Настройки учетных записей и ограничений).
Вы можете установить для параметра Default projects limit (Лимит проектов по умолчанию) значение 0, чтобы полностью запретить новым пользователям создавать проекты:
Новых пользователей можно будет добавлять в проекты вручную, и у них будет доступ к внутренним или публичным проектам, созданным другими пользователями.
Прокрутите страницу до конца и нажмите кнопку Save changes (Сохранить изменения):
Новые пользователи смогут создавать учетные записи, но не смогут создавать проекты.
Обновление сертификатов Let’s Encrypt
По умолчанию в GitLab имеется запланированная задача обновления сертификатов Let’s Encrypt каждые четыре дня после полуночи, точное время зависит от параметра . Вы можете изменить эти настройки в файле . Например, если вы хотите выполнять обновление каждый 7-й день в 12:30, вы можете задать это следующим образом:
/etc/gitlab/gitlab.rb
Автоматическое обновление можно отключить, добавив соответствующий параметр в :
/etc/gitlab/gitlab.rb
Когда автоматическое обновление включено, вам не нужно беспокоиться о перебоях в обслуживании.
Установка Gitea
Gitea можно установить из исходного кода, двоичного кода или в виде пакета. Его также можно развернуть как образ Docker. Мы установим Gitea с использованием двоичного файла.
Первый шаг — установить Git на CentOS:
Проверьте установку, отобразив версию Git:
Создайте пользователя Git
Создайте нового системного пользователя для запуска приложения Gitea:
Команда создаст нового пользователя и группу с именем и установит домашний каталог в .
Скачать бинарный файл Gitea
На момент написания последняя версия — 1.12.3. Если доступна новая версия, измените переменную в приведенной ниже команде.
Используйте чтобы загрузить двоичный файл Gitea в каталог :
Вы можете запустить двоичный файл из любого места. Мы будем следовать соглашению и переместим двоичный файл в каталог :
Сделайте двоичный исполняемый файл:
Следующие команды создадут необходимые каталоги и установят необходимые разрешения и владельца :
Указанная выше структура каталогов рекомендована официальной документацией Gitea.
Для каталога заданы разрешения чтобы мастер установки мог создавать файлы конфигурации. После завершения установки мы установим более строгие разрешения.
Создайте файл модуля Systemd
Gitea предоставляет файл модуля Systemd, который настроен в соответствии с нашей настройкой.
Загрузите файл в каталог , набрав:
После этого включите и запустите службу Gitea:
Убедитесь, что служба запущена успешно:
Настроить Gitea
Теперь, когда Gitea запущена и работает, пора завершить установку через веб-интерфейс.
По умолчанию Gitea прослушивает подключения через порт на всех сетевых интерфейсах. Вам необходимо настроить брандмауэр, чтобы разрешить доступ к веб-интерфейсу Gitea:
Откройте браузер, введите , и появится страница начальной конфигурации:
Заполните обязательные поля следующим образом:
Настройки базы данных:
- Тип базы данных: SQLite3
- Путь: используйте абсолютный путь,
Общие настройки приложения:
- Заголовок сайта — введите название вашей организации.
- Путь к — оставьте значение по умолчанию .
- Корневой путь Git LFS — оставьте значение по умолчанию .
- Запуск от имени пользователя — git
- Домен SSH-сервера — введите IP-адрес вашего домена или сервера.
- SSH Port — 22, измените его, если SSH прослушивает другой порт.
- Порт прослушивания HTTP Gitea — 3000
- Базовый URL Gitea — используйте http и IP-адрес вашего домена или сервера.
- Путь к — оставьте значение по умолчанию
Позже вы можете изменить настройки, отредактировав файл конфигурации Gitea.
После этого нажмите кнопку «Установить Gitea». Установка происходит мгновенно. По завершении вы будете перенаправлены на страницу входа.
Щелкните ссылку «Зарегистрироваться сейчас». Первый зарегистрированный пользователь автоматически добавляется в группу администратора.
Чтобы сделать установку более безопасной, измените разрешения файла конфигурации Gitea на доступ только для чтения, используя:
Вот и все. Gitea установлена на вашем компьютере с CentOS.
Установка GitLab
Установку выполним в два шага — установка необходимых компонентов и, собственно, установка GitLab.
1. Необходимые компоненты
apt-get install curl openssh-server ca-certificates
Для отправки уведомлений, установим также postfix:
apt-get install postfix
При запросе типа конфигурации, выбираем Internet Site (если уведомления должны отправляться наружу) или Local only (уведомления в пределах сервера):
* при получении других запросов во время установки postfix можно ответить по умолчанию, нажимая Enter.
2. Установка GitLab
Установим репозиторий.
а) для платной версии:
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
После установки репозитория, устанавливаем сам GitLab.
а) платную версию:
apt-get install gitlab-ee
б) бесплатную:
apt-get install gitlab-ce
Если установка прошла успешно, мы должны увидеть:
It looks like GitLab has not been configured yet; skipping the upgrade script.
*. *.
*** ***
***** *****
.****** *******
******** ********
,,,,,,,,,***********,,,,,,,,,
,,,,,,,,,,,*********,,,,,,,,,,,
.,,,,,,,,,,,*******,,,,,,,,,,,,
,,,,,,,,,*****,,,,,,,,,.
,,,,,,,****,,,,,,
.,,,***,,,,
,*,.
_______ __ __ __
/ ____(_) /_/ / ____ _/ /_
/ / __/ / __/ / / __ `/ __ \
/ /_/ / / /_/ /___/ /_/ / /_/ /
\____/_/\__/_____/\__,_/_.___/
Thank you for installing GitLab!
3. Конфигурируем веб-адрес
Для запуска и корректной работы портала мы должны задать external_url. Для этого открываем файл:
vi /etc/gitlab/gitlab.rb
Нам нужно только изменить параметр external_url:
external_url ‘http://gitlab.dmosk.ru’
* данная настройка говорит, что наш веб-инструмент будет отвечать на запросы, которые пришли на узел gitlab.dmosk.ru — это значит, что данное имя должно быть зарегистрирована в DNS или прописано в локальный файл hosts.
Выполняем конфигурирование:
gitlab-ctl reconfigure
Данная операция займет какое-то время.
Установка Filebeat для отправки логов в Logstash
Установим первого агента Filebeat на сервер с nginx для отправки логов веб сервера на сервер с ELK. Ставить можно как из общего репозитория, который мы подключали ранее, так и по отдельности пакеты. Как ставить — решать вам. В первом случае придется на все хосты добавлять репозиторий, но зато потом удобно обновлять пакеты. Если подключать репозиторий не хочется, можно просто скачать пакет и установить его.
Ставим на Centos.
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.0-x86_64.rpm # rpm -vi filebeat-7.11.0-x86_64.rpm
В Debian/Ubuntu ставим так:
# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.11.0-amd64.deb# dpkg -i filebeat-7.11.0-amd64.deb
Или просто:
# yum install filebeat # apt install filebeat
После установки рисуем примерно такой конфиг /etc/filebeat/filebeat.yml для отправки логов в logstash.
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/*-access.log fields: type: nginx_access fields_under_root: true scan_frequency: 5s - type: log enabled: true paths: - /var/log/nginx/*-error.log fields: type: nginx_error fields_under_root: true scan_frequency: 5s output.logstash: hosts: xpack.monitoring: enabled: true elasticsearch: hosts: ["http://10.1.4.114:9200"]
Некоторые пояснения к конфигу, так как он не совсем дефолтный и минималистичный. Я его немного модифицировал для удобства. Во-первых, я разделил логи access и error с помощью отдельного поля type, куда записываю соответствующий тип лога: nginx_access или nginx_error. В зависимости от типа меняются правила обработки в logstash. Плюс, я включил мониторинг и для этого указал адрес elastichsearch, куда filebeat передает данные мониторинга напрямую. Показываю это для вас просто с целью продемонстрировать возможность. У меня везде отдельно работает мониторинг на zabbix, так что большого смысла в отдельном мониторинге нет. Но вы посмотрите на него, возможно вам он пригодится. Чтобы мониторинг работал, его надо активировать в соответствующем разделе в Management — Stack Monitoring. И не забудьте запустить elasticsearch на внешнем интерфейсе. В первоначальной настройке я указал слушать только локальный интерфейс.
Запускаем filebeat и добавляем в автозагрузку.
# systemctl start filebeat # systemctl enable filebeat
Проверяйте логи filebeat в дефолтном системном логе. По умолчанию, он все пишет туда. Лог весьма информативен. Если все в порядке, увидите список всех логов в директории /var/log/nginx, которые нашел filebeat и начал готовить к отправке. Если все сделали правильно, то данные уже потекли в elasticsearch. Мы их можем посмотреть в Kibana. Для этого открываем web интерфейс и переходим в раздел Discover. Так как там еще нет индекса, нас перенаправит в раздел Managemet, где мы сможем его добавить.
Вы должны увидеть индекс, который начал заливать logstash в elasticsearch. В поле Index pattern введите nginx-* и нажмите Next Step.
На следующем этапе выберите имя поля для временного фильтра. У вас будет только один вариант — @timestamp, выбирайте его и жмите Create Index Pattern.
Новый индекс добавлен. Теперь при переходе в раздел Discover, он будет открываться по умолчанию со всеми данными, которые в него поступают.
Получение логов с веб сервера nginx на linux настроили. Подобным образом настраивается сбор и анализ любых логов. Можно либо самим писать фильтры для парсинга с помощью grok, либо брать готовые. Вот несколько моих примеров по этой теме:
- Мониторинг производительности бэкенда с помощью ELK Stack
- Сбор и анализ логов samba в ELK Stack
- Дашборд для логов nginx
Теперь сделаем то же самое для журналов windows.
Шаг 4 — Редактирование файла конфигурации GitLab
Прежде чем вы можете использовать приложение, вам нужно обновить файл конфигурации и запустить команду изменения конфигурации. Прежде всего, откройте файл конфигурации Gitlab:
Наверху вы увидите строку конфигурации . Измените эту строку для соответствия с вашим доменом. Замените на , чтобы GitLab автоматически перенаправлял пользователей на сайт, защищенный сертификатом Let’s Encrypt:
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab.rb
Сохраните и закройте файл. Запустите следующую команду, чтобы изменить конфигурацию Gitlab:
Команда выполняет инициализацию GitLab, используя информацию о вашем сервере, которую она сможет найти. Этот процесс полностью автоматизирован, и вам не нужно вводить никакие данные в диалоги. Данный процесс также настроит сертификат Let’s Encrypt для вашего домена.