Мониторинг серверов c Grafana и Influxdb
Есть меня несколько серверов которые бы мне хотелось постоянно мониторить на предмет оперативной памяти, диского пространства и т.п. Хотя сами сервера расположены в разных местах все они объединены между собой по openvpn. Для того чтобы решить задачку мой выбор пал на связку influxdb+grafana.
Influxdb это так называемая timeseries база данных, в которой мы можем хранить данные которые изменяются во времени. Grafana - это универсальный UI который удобно использовать для визуального представления таких данных. InfuxDB и Grafana поднимаются на при помощи docker-compose. К при этом для того, чтобы послать данные состояния сервера используется баш скрипт который периодически запускается через cron и при помощи curl посылает данные на сервер
Таким образом я всегда могу видеть состояние того или иного сервера. Все системы будем подымать в докере для этого достаточно склонировать репозиторий с docker-compose который содержит в себе 3 образа - influxdb, grafana и chronograph.
git clone git@github.com:maxistar/docker-compose-influxdb-grafana.git
cd docker-compose-influxdb-grafana
git checkout influx1_8
docker-compose up -d
Influxdb версии 2.x требует авторизации и поэтому я использовал версию 1.8. Исправленный docker-compose.yaml живет в ветке influx1_8 где я использую именно эту версию, возможно в будущем разберусь как использовать и последнюю версию.
После того как InfluxDB и Grafana запущены, на сервере, который будем мониторить, создаем bash скрипт (script.sh).
#!/bin/bash
dbName="db0"
stat=`free | awk -v RS="" '{print "memory,host=acentauri used=" $9 "\nmemory,host=acentauri total=" $8 "\nmemory,host=acentauri swap=" $15 "\nmemory,host=acentauri swapused=" $16}'`
curl -s -i -XPOST "http://10.8.0.100:8086/write?db=db0" \
--data-binary "$stat"
делаем файл исполнимым и добавляем команду для запуска скрипта в cron:
chmod +x script.sh
contab -e
в открывшимся файле добавляем следующую строчку:
* * * * * /home/maxim/infrastructure/utils/memusage/script.sh
После того как данные начали посылаться на сервере настраиваем dashboard и наслаждаемся.
После того как начал мониторить состояние asterisk сервера он волшебным образом перестал зависать! Возможно его зависания были связаны с тем что зависает wifi модуль и я его перестаю видеть по сети.
OpenVPN
Много лет использую OpenVPN. Прекрасная штука. Пока я жил в России при помощи нее можно было обходить блокировки Роскомпозора, она также позволяла мне подключаться к умному зеркалу в машине и видеть, что творится вокруг, сейчас же я использую OpenVPN чтобы подключаться к домашнему серверу в России на котором хранится фотоархив и крутится Gitlab с личными проектами.
Но вот вчера, привычно зайдя на сервер я не смог к нему присоединиться. Сначала подумал, что проблема с домашним сервером, однако потом обнаружил что я также не могу подсоединиться к VPN ни с одного из устройств.
Оказалось, что по-умолчанию opnvpn создает сертификаты действительные десять лет. Через десять лет сертификат нужно продлевать. Это несложно сделать если у вас все еще есть доступ к серверу, можно просто создать новый сертификат и залить его на все ваши клиенты. Если же доступа у вас нет то, воспользоваться старыми ключами уже на получится.
Порекомендовали попробовать откатить время на сервере на несколько дней назад, но это не помогло. Дело в том, что ca.crt также копируется на клиент а он тоже истек.
Единственным рабочим способом подключиться к серверу с истекшими сертификатами оказалось подключение когда и на сервере и на клиенте время было переведено назад, но такой способ мне не годится - у меня нет физического доступа к серверу.
Проверить когда истечет ваш сертификат openvpn можно слeдующей командой:
openssl x509 -in ca.crt -dates -noout
Так что будет мне хороший урок - нужно следить на валидностью сертификатов и вовремя их обновлять!
Запуск Linux под Android без регистрации и SMS
Давно интересуюсь темой запуска Линукс программ на мобильных устройствах. Все дело в том, что мобильные прогаммы по функционалу сильно проигрывают своим компьютерным аналогам, в то же время современные мобильники имеют железо, которое, по вычислительной мощности лишь незначительно уступает железу персональных компьютеров, а иногда, даже, в чем то у него выигрывает. Почему же я не могу запустить дескопное приложение на мобильном устройстве?
Оказывается, это вполне возможно, правда требует определенного погружения в тему и подходит далеко не всем. Последнее время ситуация значительно улучшилась - уже не нужно перепрошивать железо, получать рут доступ и тому подобное, можно обойтись минимальным набором программ из Google Play.
Необходимое железо
Прежде всего понадобится подходящий телефон с Android. Не все устройства подойдут, так как различные телефоны работают с разными типами процессоров, данный метод сработает если у вас 64 битный ARM процессор. На 32 битных устройствах нужно использовать 32 битный образ Linux.
Желательно использовать физическую клавиатуру и мышь. Работать с програмной клавиатурой можно, но некоторые клавиши типа табуляции и стрелок отсутствуют на виртуальной клавиатуре, поэтому я предпочитаю физическую, благо большинство Bluetooth клавиатур прекрасно работают с Android.
Я использую раскладную клавиатуру с тачпадом - все же мобильное устройство должно оставаться мобильным и не занимать много места. Хотя на раскладной клавиатуре работать немного непривычно, возможно, у меня просто неправильная клавиатура.
Переключение языков по умолчанию происходит комбинацией Contol+Space как на Макинтош. Для этого в настройках Android нужно настроить дополнительные языки для физической клавиатуры.
Необходимые программы
Для полноценного запуска Линукс нам потребуются две программы:
- Termux - эмулятор Linux под андроид.
- XServer XSDL - реализация X Server для Андроид.
Установка Linux
В Termux выполняем следующие команды чтобы скачать образ Fedora:
pkg install wget
wget https://raw.githubusercontent.com/nmilosev/termux-fedora/master/termux-fedora.sh
sh ./termux-fedora.sh f32_arm64
startfedora
Если все скачалось успешно вы окажетесь в командрой строке Fedora и получите доступ ко всем программам экосистемы под платформу на процессорах ARM.
Обновим систему и поставим необходимые программы:
dnf update
#установим xfce:
dnf install @xfce
#программы по вкусу, список можно расширить:
dnf instll mc gimp audacity
Следует отметить что приведенные выше команды скачивают порядка пятисот мегабайт данных и после установки займут раза в три больше места, поэтому перед их вызовом убедитесь, что обладаете достаточным объемом памяти на устройстве.
Запускаем XServer XSDL ждем когда появится синий экран с приглашением
export DISPLAY=192.168.0.178:0 PULSE_SERVER=tcp:192.168.0.178:473
startxfce4 &
Если все установилось нормально то в X Server вы увидите оконный менеджер и сможете запускать GUI программы.
Доступ к файлам устройства.
Файлы устройства видны по адресу /storage/emulated/0 - это не удобно так как родительские папки без доступа на чтение и из GUI программ туда не всегда получается пробраться - проблема решается созданием символической ссылки
ln -s /storage/emulated/0 /mnt/storage
Проблемы
Что пока не работает: звук пока мне не удалось заставить работать - хотя поддержка, вроде бы, заявлена.
Популярные браузеры не запустились. Ни Хромиум ни Firefox запускаться не захотели.
Поскольку пользователь в графическом окружении федоры пользователь оказывается под root, некоторые программы отказываются работать из под рута.
Так что, до полнеценной работы на мобильнике как на лаптопе еще далеко, но, прогресс определенно уже есть. Возможно, через некотрое время нам уже не нужно будет повсюду таскать лаптоп а можно будет обходиться одним мобильным телефоном.
Создание точки доступа на Ubuntu
Оказывается, Ubuntu из коробки позволяет поднять точку доступа WiFi.
На новой квартире пока нет Интернета - подключение Интернета в Берлине это отдельная головная боль, заслуживающая отдельного описания.
3G в Берлине работает так себе, но рядом есть точка доступа Vodafon - меня она с моим логином - паролем не пускает, пока не понял почему, однако, позволяет купить доступ за денежку.
Однако, авторизация происходит только по MAC адресу телефона и пользоваться интернетом можно только с того устройства, с которого был оплачен доступ.
Меня такое положение вещей решительно не устраивает, я хочу, чтобы доступ был не только на телефоне а еще и на компьютере, и желательно не одном.
Разрешил задачку таким образом - подключил телефон к компьютеру USB кабелем, телефон подключил к Hotspot Vodafon, включил на телефоне режим USB модема, а на компьютере поднял точку доступа Wifi. Получается, что телефон работает на приём WiFi в режиме клиента, передает трафик на компьютер, а компьютер, в свою очередь раздает интернет по клиентам.
Так что, теперь у меня есть временное решение проблемы и я могу пользоваться Интернетом с нескольких устройств!