Авторская информация о системном администрировании.
# apt install python3-pip
# pip install glances[all]==3.2.5
# pip install influxdb-client
Можете запустить glances в консоли и посмотреть, что она из себя представляет. Теперь запустим influxdb. Для простоты будем использовать docker. Запустить можете как локально, так и на любом другом хосте. Я запущу тут же, предварительно создав директорию для хранения данных:
# mkdir ~/influxdb
# docker run -d -p 8086:8086 \
-v ~/influxdb:/var/lib/influxdb2 influxdb:latest
Идём в консоль контейнера и инициализируем базу данных:
# docker exec -i -t 6ee6223a3ce3 bash
# influx setup
> Welcome to InfluxDB 2.0!
? Please type your primary username serveradmin
? Please type your password ***********
? Please type your password again ***********
? Please type your primary organization name serveradmin
? Please type your primary bucket name glances
? Please type your retention period in hours, or 0 for infinite 0
? Setup with these parameters?
Username: serveradmin
Organization: serveradmin
Bucket: glances
Retention Period: infinite
Yes
User Organization Bucket
serveradmin serveradmin glances
Теперь создадим токен для доступа к оrganization serveradmin:
influx auth create \
--org serveradmin --read-authorizations --write-authorizations \
--read-buckets --write-buckets --read-dashboards \
--write-dashboards --read-tasks --write-tasks \
--read-telegrafs --write-telegrafs --read-users \
--write-users --read-variables --write-variables \
--read-secrets --write-secrets --read-labels \
--write-labels --read-views --write-views --read-documents \
--write-documents --read-notificationRules --write-notificationRules \
--read-notificationEndpoints --write-notificationEndpoints \
--read-checks --write-checks --read-dbrp \
--write-dbrp --read-annotations --write-annotations \
--read-sources --write-sources --read-scrapers \
--write-scrapers --read-notebooks --write-notebooks \
--read-remotes --write-remotes --read-replications --write-replications
В конце получите токен вида wEgrY0Y1wY1R1S-qCiKxA== (в оригинале он длиннее, сократил для удобства) Он будет нужен для конфигурации glances. Создаём её в директории ~/.config/glances/glances.conf
[influxdb2]
host=localhost
port=8086
protocol=http
org=serveradmin
bucket=glances
token=wEgrY0Y1wY1R1S-qCiKxA==
Host укажите свой. Если запустили локально, то это localhost, если удалённо, то укажите реальный адрес. Теперь можно идти в web интерфейс influxdb по адресу http://172.25.225.173:8086 (измените ip на свой) и просматривать графики. Для этого перейдите в раздел Load Data ⇨ Buckets и выберите созданный бакет Glances. Дальше, думаю, разберётесь, как выводить данные. Пример ниже на картинке.
На хосте по сути ставится только glances, который можно остановить после окончания наблюдения. При этом собирается приличное количество метрик, часто достаточных, чтобы провести базовую диагностику. При желании influxdb очень просто подключить к grafana и смотреть метрики там.
Получилась законченная инструкция, которую можно сохранить на память, чтобы потом повторить описанное.
#мониторингВебинар пройдет в рамках онлайн-курса «Базы данных» в OTUS. Больше навыков по работе с БД ждет вас на курсе, возможны разные способы его оплаты.
👉 Готовьте вопросы и записывайтесь на вебинар!
https://otus.pw/CA9z/
#Реклама. Информация о рекламодателе на сайте www.otus.ruadd_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security max-age=15768000;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "origin-when-cross-origin";
add_header Permissions-Policy "geolocation=(),midi=(),sync-xhr=(),\
microphone=(),camera=(),magnetometer=(),gyroscope=(),fullscreen=*,payment=()";
#nginx #webserverRestart в разделе [Service]. Он может принимать следующие значения:
◽always — перезапускать всегда, когда сервис был остановлен корректно (exit code 0), с кодом ошибки или завис по таймауту
◽on-success — перезапускать, только если служба завершилась без ошибок (exit code 0)
◽on-failure — перезапускать, только если код завершения был не нулевым, был прибит одним из сигналов принудительного завершения работы (например SIGKILL), завис по таймауту
◽on-abnormal — перезапускать только если сервис был прибит одним из сигналов принудительного завершения работы или завис по таймауту
◽on-abort — перезапускать только если сервис был прибит одним из сигналов принудительного завершения работы
◽on-watchdog — перезапускать только если наступил настроенный для сервиса watchdog timeout
◽no — автоматического перезапуска нет
Надеюсь нигде не наврал. Перевёл кратенько отрывок документации, чтобы не притащить чьи-то ошибки. Так то в инете много статей по этой теме. По умолчанию, если явно не указан параметр, он принимает значение no.
Для того, чтобы настроить автоматический запуск сервиса, не надо редактировать его основной unit файл. Сделайте отдельный файл изменений override.conf и положите его в директорию сервиса со специальным именем. Для nginx оно будет такое: /etc/systemd/system/nginx.service.d/override.conf.
Добавьте туда:
[Service]
Restart=always
RestartSec=5s
После изменений надо перечитать настройки служб:
# systemctl daemon-reload
Теперь можно прибить Nginx и убедиться, что через 5 секунд он поднимется снова:
# systemctl status nginx ; смотрим pid корневого процесса (Main PID)
# kill -9 1910155
# systemctl status nginx
К автозапуску процессов надо подходить с умом. Не стоит для всех подряд его настраивать. Особенное внимание надо уделить службам СУБД. После аварийного завершения работы может запускаться очень ресурсоёмкая процедура восстановления данных, которая в нагруженном сервере может быть прибита oom killer и так по кругу. Это может привести к более серьезным последствиям или потере данных.
То же самое касается каких-то кластерных служб. Они могут падать и подниматься в цикле и приводить к рассинхронизации или каким-то ещё проблемам. Например, elasticsearch может подниматься очень долго на слабом железе. Иногда приходится стандартные таймауты systemd увеличивать, чтобы он удачно стартовал. Если настроить автозапуск, он может в цикле прибивать службу по таймауту.
А тот же самый Nginx, Postfix, Dovecot, Apache, Zabbix Agent можно спокойно ставить в автозапуск в случае падений. Проблем быть не должно.
У автозапуска есть более тонкие настройки и зависимости. Я описал только основной функционал, который нужен чаще всего. Более подробно всё описано в документации. Там настраиваются таймауты, различные статусы завершения работы, которые стоит считать успешными, количество попыток перезапуска, прежде чем они прекратятся и т.д. Можно слать оповещения на почту в случае падения и перезапуска службы. Это делается через параметр OnFailure.
Табличку себе сохраните на память для настройки. Без неё неочевидно, какой параметр лучше использовать. Например, Mariadb по умолчанию имеет настройку on-abort.
#systemd #linux