Страницы

вторник, 30 октября 2012 г.

Мониторинг микросервера с помощью настройки TMUX

Компьютерная жизнь микросервера (HP Proliant microserver) протекает неспешно, с временами переконфигурирования и далее опять неспешно.
Т.к. микросервер работает без монитора, без мыши, без клавиатуры, то соответственно нет привычного графического интерфейса. Остается одна лишь консоль, по ssh-подключению.
И вот эту, простую чёрную консоль, можно превратить в удобнейший рабочий стол, по управлению микросервером.

Консоль - Терминал - Интерфейс командной строки - CLI.


Мультиплексирование терминала - TMUX - terminal multiplexing

Самое большое удобство этой программы в том, что можно на сервере, запустить настроенный tmux, отсоединиться от сервера, и через пару месяцев присоединиться, а tmux-будет работать и всё окружение тоже и вся информация тоже. Но надо постараться настроить и сохранить в скрипт запуска.
TMux практически, аналог приборных панелей, т.н. dashboards. Отображаемая информация зависит от используемых консольных программ.

После настройки, пользователю останется только не забыть способ навигации внутри tmux.

Более того, tmux можно использовать вместо командной оболочки при заходе на сервер. Сразу настроенная среда.

Внутри tmux, можно использовать вместо обычного bash, любую другую оболочку, либо интерпретаторы языков высокого уровня.


Краткий обзор TMUX
Общесистемный конфигурационный файл: /etc/tmux.conf
Пользовательский конфигурационный файл: ~/.tmux.conf
Произвольный конфигурационный файл, задается опцией -f, при запуске tmux.
Руководство (en): man tmux

Запуск: tmux [команда]

Установка в Ubuntu server: $ sudo apt-get install tmux


Префикс по умолчанию, для управления с клавиатуры: ctrl-b

Поддерживаются несколько буферов обмена, мышь.

Сессии tmux

Сессий может быть много. Имена и логическое назначение выбирает пользователь.
Например, сессии - общий мониторинг микросервера (microserver), общий мониторинг сети (network), мониторинг и управление сервисами (services), управление удаленными вебсерверами (webservers), баз данных (database).

В принципе, для любого системного сервиса можно использовать сессию, либо окно внутри сессии.

Система адресации в Tmux

сессия  - [имя сессии]
окно     - [сессия]:[имя окна]
панель - [сессия]:[окно].[номер панели]

примеры:

сессия  - microserver
окна     - microserver:control      microserver:logfiles
панели - microserver-control.0   microserver.logfiles.2



Команды tmux

$ tmux new-session -n [имя окна] -s [имя сессии]

сессия создаётся с окном по умолчанию, для задания имени такого окна используется опция -n. Опция -s задает имя сессии. Опция -d - запуск сессии в фоне (daemon-режим).

$ tmux new-window -n [имя окна] -t [имя сессии] [скрипт]

создается новое окно внутри сессии, например:

$ tmux new-window -a -n logfiles -t microserver
(просто окно, без команды)
опция -a указывает окно делается с индексом следующим за текущим в данной сессии
[скрипт] - командный файл, который будет выполнен во вновь созданном окне.


$ tmux new-window -a -n logfiles -t microserver "top"
(выполниться команда top во вновь созданном окне)

По умолчанию выполняется приглашение оболочки. Если выполнить [скрипт], то окно закроется, чтобы не закрывалась (нужно иногда), надо установить опцию: remain-on-exit = on в конфигурационном файле.
Если не планируется закрывать такое окно, то можно использовать и такую форму запуска.

И другой путь - запускать в окнах стандартную оболочку (фунция по-умолчанию), и исполнять команды в ней, тогда окна не закрываются, пока не набрать exit.

пример:
# tmux send-keys -t network:real.2 "slurm -i home.8" C-m
в сессию network, окно real, панель №2, набрать "slurm -i home.8" и нажать ввод "C-m"


Рабочее окружение на основе TMUX

Пример командного файла формирования рабочего окружения, на базе tmux. Запускается под обычным пользователем.

#!/bin/bash
# сервер: microserver, микросервер, n40l
# 30.10.2012

# Сессии
# microserver - общая сессия, для разнообразных работ на сервере
# services - сессия наблюдения за сервисами микросервера
# network - сессия наблюдения за домашней сетью

tmux new-session -d -n control -s microserver
tmux new-session -d -n s-view -s services
tmux new-session -d -n n-view -s network

# В каждой сессии создается свой набор окон, помимо первых окон.
# окна logfiles предназначены для просмотра логфайлов
tmux new-window -a -n logfiles -t microserver
tmux new-window -a -n logfiles -t services
tmux new-window -a -n logfiles -t network

# Делим первое окно (control) в сессии microserver
# По горизонтали на 2 панели, правую панель по вертикали на 2
tmux split-window -dv -p 50 -t microserver:control.0
tmux split-window -dh -p 50 -t microserver:control.1

# Делаем небольшоое окошко командной строки
tmux split-window -dv -p 10 -t microserver:control.2

# Делим второе окно (logfiles) в сессии microserver
# 4 панели - четверти экрана
# Вначале, делим текущее окно пополам, потом появившуюся панель
# с номером 1 пополам, а затем остаток от панели 0 пополам.
tmux split-window -dh -p 50 -t microserver:logfiles.0
tmux split-window -dv -p 50 -t microserver:logfiles.1
tmux split-window -dv -p 50 -t microserver:logfiles.0

# Делаем небольшоое окошко командной строки
tmux split-window -dv -p 10 -t microserver:control.2

# Выбираем окно по умолчанию, в сессии microserver
tmux select-window -t microserver:control


Базовая система навигации TMux

Префикс по умолчанию, для управления с клавиатуры: ctrl-b
Его можно перенастроить в конфигурационном файле (переназначить).

Отсоединение от терминала tmux: ctrl-b d
Присоединение к терминальной сессии: tmux attach-session -t microserver

Переключение между окнами сессии, по номеру: ctrl-b 0, ctrl-b 1


Перемещение между панелями: ctrl-b и стрелки курсора
Показать индексы панелей: ctrl-b q
Также можно выбрать панель по индексу: ctrl-b q 1

Можно изменять размеры панелей: нажимаете ctrl-b, затем отпускаете b, но держите ctrl и стрелками курсора двигаете.

Закрыть окно, панель: набрать exit

Вращение панелей: ctrl-b o, удерживая ctrl
Может быть полезно, когда надо "одним глазом" присматривать за происходящим на панели, но, её размер уменьшить до разумного минимума, а когда возникнет в ней необходимость - повернуть, чтобы она заняла место крупной панели, сделать нужное и повернуть обратно.

Переключение (attach) сессий не выходя из текущей сессии: ctrl-b s


Дополнительный команды навигации см. man tmux

Баги TMUX

Если в TMUX вывести огромный текстовый файл, то TMux перестает реагировать на команды.
Вывод, либо лечить патчами, либо не выводить большие файлы, либо дождаться завершения вывода.


Интересные консольные приложения для TMux


Хвосты файлов - Tail, Multitail

Простейшие средства организации мониторинга (отслеживания изменений) микросервера. Хвосты системных журналов, выведенные в отдельных панелях tmux, отфильтрованные с помощью grep, дают разнообразную информацию администратору-пользователю.
Наблюдение длительных процессов, всё это доступно простому хвосту.

Визулизация траффика по интерфейсу - Slurm

$ slurm -i home.8

Список процессов -Htop

$ htop


Доступность сети - sntop

$ sntop
Конфигурационный файл sntop: /etc/sntoprc
Чрезвычайно полезна вещь, особенно когда сеть достаточно разветвленная, но небольшая. Сеть тестируется с помощью периодического ping.
"Зелененькое хорошо, красненькое плохо".


Именованные конвейеры - Named pipes - байтопровод

Именованные конвейеры - средство межпроцессного взаимодействия в Linux/Unix. Могут быть чрезвычайно полезны в связке с фреймовыми менеджерами и мультиплексированными терминалами.
Изготавливаются командой: mkfifo
Пример позже, а пока можно сказать, что их удобно использовать для связывание вывода и ввода программ.


Фреймовые оконные менеджеры Awesome, XMonad

Аналогичные рабочие окружения можно создать с помощью фреймовых оконных менеджеров для систем X Window.
Принцип управления сохраняется, добавляются возможности вывода графических приложений.


Выводы

- Подход к использованию мультиплексирования терминала, фреймовых оконных менеджеров, отличается от привычных действий, требует вдумчивой и достаточно длительной настройки. Результат будет великолепный.
- Мощь программы tmux раскрывается запускаемыми консольными приложениями, способом представления информации, подбором информации и продумыванием управления.


Ресурсы

-. Официальный сайт TMux. http://tmux.sourceforge.net/
-. Cool unix tools. http://kkovacs.eu/cool-but-obscure-unix-tools-. http://wiki.fornex.com/index.php/Команды_Linux
-. Жизнь в консоли. http://welinux.ru/blog/115/
-. http://debiania.blogspot.ru/2010/05/nohup-dtach-screen-tmux.html
-. Пятерка фреймовых оконных менеджеров. http://help.ubuntu.ru/fullcircle/37/top5_37

-. Awesome в Ubuntu. http://help.ubuntu.ru/wiki/awesome

Комментариев нет: