Архив метки: Calculate Linux

FSYNCS мониторинг параметра в Proxmox

Мониторинг FSYNCS параметра в системе виртуализации Proxmox является одним из главных, так как сильно влияет на качество работы системы. Контролируя данный параметр в системе Zabbix можно оптимально настроить производительность дисковой системы сервера.

Введение

В системе Proxmox есть замечательный механизм проверки работы дисковой системы. Выполнив в консоли команду pveperf мы увидим полезную информацию о скорости работы жестких дисков. Основной параметр который показывает скорость работы с дисками это FSYNCS/SECOND.

Выведя man сервиса мы увидим всю информацию о требовании к нашему параметру.

man pveperf
= часть вывода команды =
FSYNCS/SECOND value should be greater than 200 (you should enable write back cache mode on you RAID controller - needs a battery backed cache (BBWC)).

В описании четко сказано что параметр должен быть не меньше 200. При меньших значениях однозначно будут проблемы в работе сервера.

Общий принцип мониторинга FSYNCS для Proxmox

Схема действий для мониторинга параметра будет следующей:

  • Создаем скрипт bach который будет записывать нужное значение в текстовый файл;
  • Добавляем в cron задание которое будет с нужной нам периодичностью записывать показания в текстовый файл;
  • Добавляем необходимые параметры в агент Zabbix и проверяем правильность работы;
  • На сервере Zabbix для нужного узла добавляем все необходимые данные для контроля над параметром и настраиваем оповещение в случае плохих параметров.

Действия на Zabbix агенте

Команда для вывода нужных параметров FSYNCS

Для начала нам надо посмотреть куда и что у нас смонтировано в системе.

df -h
= часть вывода для ZFS =
rpool/ROOT/pve-1   99G    1001M    98G   1%   /

= часть вывода для mdadm =
/dev/md2           3,5T    1,2T    2,2T  35% /mnt/md2-raid10

Выводим информацию для нужного раздела.

Обязательно указываем в параметре куда смонтировано иначе не увидим параметр FSYNCS/SECOND.

pveperf /
= вывод команды =
CPU BOGOMIPS: 10044.86
REGEX/SECOND: 1168356
HD SIZE: 98.08 GB (rpool/ROOT/pve-1)
FSYNCS/SECOND: 85.84
DNS EXT: 67.40 ms
DNS INT: 1.44 ms (sevo44.loc)

pveperf /mnt/md2-raid10
= вывод команды =
CPU BOGOMIPS:      37241.08
REGEX/SECOND:      595252
HD SIZE:           3570.96 GB (/dev/md2)
BUFFERED READS:    165.42 MB/sec
AVERAGE SEEK TIME: 18.32 ms
FSYNCS/SECOND:     510.48
DNS EXT:           65.53 ms
DNS INT:           0.82 ms (sevo44.loc)

Теперь нам необходимо вывести только цифровое значение и для этого выполним команду:

pveperf / | grep 'FSYNCS/SECOND' | cut -c20-24
= вывод команды =
81.52

Параметры имеют следующие значения:

  • pveperf / -сама команда с указанием куда смантирован раздел;
  • grep ‘FSYNCS/SECOND’ — выбираем только значения из строки с этими данныи;
  • cut -c20-24 — выводи знаки с 20 по 24 от начала строки.

Создадим папку где будет находится скрипт bach, файл с данными и добавим необходимый скрипт.

mkdir /etc/zabbix/scripts

vim /etc/zabbix/scripts/fsyncs-bin.sh
= необходимые данные =
#!/bin/bash
pveperf / | grep 'FSYNCS/SECOND' | cut -c20-24 > /etc/zabbix/scripts/fsyncs.txt

По действию скрипта данные будут перезаписываться при каждом выполнении скрипта в файле /etc/zabbix/scripts/fsyncs.txt. Файл создавать не надо, так как при выполнении скрипта он создастся сам.

Сделаем файл запускаемым.

chmod +x /etc/zabbix/scripts/fsyncs-bin.sh

Проверим работу скрипта и правильность получения данных.

sh /etc/zabbix/scripts/fsyncs-bin.sh
= вывод пустой =

ls /etc/zabbix/scripts
= вывод команды =
fsyncs-bin.sh  fsyncs.txt

cat /etc/zabbix/scripts/fsyncs.txt
= вывод команды =
117.9

Скрипт создал файл и записал туда правильные данные. Запускаем скрипт несколько раз для полной уверенности в правильности записи данных.

Добавляем скрипт в cron для выполнения по расписанию.

vim /etc/crontab
= необходимый код =
*/3 * * * * root /etc/zabbix/scripts/fsyncs-bin.sh >/dev/null 2>&1

Например, я запускаю скрипт каждые 3 минуты.

Добавление параметров для Zabbix агента

Для того чтобы Zabbix агент мог работать с нашими параметрами необходимо добавить в файл настройки необходимый параметр.

vim /etc/zabbix/zabbix_agentd.conf
= необходимый параметр =
UnsafeUserParameters=1

После необходимого параметра добавляем нужный код. В моем случае получился следующий код:

UserParameter=pve-1.fsyncs,cat /etc/zabbix/scripts/fsyncs.txt

Параметры имеют следующие значения:

  • UserParameter — параметр согласно которого агент понимает что с ним надо работать;
  • pve-1.fsyncs — название параметра который мы будем использовать при добавлении элемента данных;
  • cat /etc/zabbix/scripts/fsyncs.txt — команда и путь по которому брать данные.

Так как скрипт отрабатывает не быстро необходимо увеличить время ожидания.

vim /etc/zabbix/zabbix_agentd.conf 
= необходимый параметр = 
Timeout=15

Перезагружаем агент и проверим как он получает данные.

systemctl restart zabbix-agent

zabbix_get -s 127.0.0.1 -k pve-1.fsyncs
= вывод команды =
123.56

В случае получения ошибок

-bash: zabbix_get: command not found 
или
zabbix_get [20065]: Check access restrictions in Zabbix agent configuration

перейдите по ссылке и узнаете почему не работает zabbix_get.

Действия на сервере Zabbix

Добавление элемента данных

Открываем необходимый узел и перейдя в «Элементы данных» добавляем новый нажав «Создать элемент данных«.

Необходимо заполнить следующие поля:

  • Имя — pve-1 fsyncs zfs;
  • Ключ — pve-1.fsyncs;
  • Тип информации — Числовой (с плавающей точкой);
  • Интервал обновления — 5m;
  • Период хранения истории — 1w;
  • Группы элементов данных — Filesystem.

Добавление тригера

Открываем необходимый узел и перейдя в «Тригеры» добавляем новый нажав «Создать тригер«.

Необходимо заполнить следующие поля:

  • Имя тригера — pve-1 fsyncs zfs;
  • Выражение — {pve-1:pve-1.fsyncs.last()}<200.

Добавление графика

Открываем необходимый узел и перейдя в «Графики» добавляем новый нажав «Создать график«.

Например, мне нравится выводить все параметры  fsyncs для всех серверов в один график.

Заключение

Вначале практики я контролировал параметры только при настройке систем. После того как я стал контролировать мне удалось максимально настроить дисковую систему на лучшую производительность. Параметр постоянно меняется от разных параметров системы и только контролируя его можно разобраться в чем проблема и принять верные решения.

Вот примерно такие графики вы можете наблюдать в период настройки.

Полезные ссылки:

Мониторинг температуры в Zabbix

Мониторинг температуры процессора, материнской платы, памяти и жестких дисков системой Zabbix очень важен и крайне необходим. Контроль над температурными параметрами компьютера избавляет от серьезных проблем связанных с постоянным перегревом важных узлов компьютера.

Введение

Мониторинг температуры сервера это перовое что я обычно настраиваю сразу. Контролирую по максимуму все важные элементы.

Описание подойдёт для разных систем Linux. Более детально про установку и настройку Zabbix агентов для разных систем можно узнать в статье Zabbix agent установка и настройка.

Общий принцип мониторинга температуры

Для любой операционной системы необходимо выполнить 4 условия:

  1. Возможными способами извлечь данные с датчиков температуры нужного устройства;
  2. Обработать данные получив нужное значение;
  3. Передать полученное значение на сервер Zabbix;
  4. На сервере Zabbix добавить элемент данных, тригер и график.

Мониторинг температуры в системах Linux

Для примера я буду использовать систему Debian 10 Buster.

Мониторинг температуры CPU и Memory

Для получения данных о температуре будем применять утилиту  lm-sensors. Утилита очень популярна и присутствует во всех дистрибутивах Linux.

Установим пакет выполнив необходимую команду:

apt install lm-sensors

= Для CentOS 7 =
yum install lm_sensors

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

sensors-detect
= необходимые действия =
На все вопросы отвечаем Y

В конце спросит:
Do you want to add these lines automatically to /etc/modules? (yes/NO)
Отвечаем YES.

Перезагрузим систему и выполним команду которая выведет информацию о всех имеющихся датчиках:

sensors
= вывод команды =
coretemp-isa-0001
Adapter: ISA adapter
Core 0: +81.0°C (high = +86.0°C, crit = +100.0°C)
Core 1: +77.0°C (high = +86.0°C, crit = +100.0°C)
Core 2: +73.0°C (high = +86.0°C, crit = +100.0°C)
Core 3: +73.0°C (high = +86.0°C, crit = +100.0°C)
i5k_amb-isa-0000
Adapter: ISA adapter
Ch. 0 DIMM 0: +75.5°C (low = +110.5°C, high = +124.0°C)
Ch. 0 DIMM 1: +71.0°C (low = +110.5°C, high = +124.0°C)
Ch. 0 DIMM 2: +63.5°C (low = +104.5°C, high = +124.0°C)
Ch. 0 DIMM 3: +64.5°C (low = +110.5°C, high = +124.0°C)
Ch. 1 DIMM 0: +74.5°C (low = +110.5°C, high = +124.0°C)
Ch. 1 DIMM 1: +77.0°C (low = +110.5°C, high = +124.0°C)
Ch. 1 DIMM 2: +69.0°C (low = +104.5°C, high = +124.0°C)
Ch. 1 DIMM 3: +60.0°C (low = +109.0°C, high = +124.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +83.0°C (high = +86.0°C, crit = +100.0°C)
Core 1: +79.0°C (high = +86.0°C, crit = +100.0°C)
Core 2: +77.0°C (high = +86.0°C, crit = +100.0°C)
Core 3: +77.0°C (high = +86.0°C, crit = +100.0°C)

Примерно такой вывод будет при отрицательном ответе на последний вопрос при настройке. При положительном ответе вы увидите гораздо больше параметров.

В выводе мы видим следующие группы датчиков:

  • coretemp-isa-0001 — второй 4 ядерный процессор;
  • i5k_amb-isa-0000 — 8 модулей памяти;
  • coretemp-isa-0000 — первый 4 ядерный процессор.

Можно вывести показания одной группы датчиков.

sensors coretemp-isa-00000
= вывод команды =
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +82.0°C (high = +86.0°C, crit = +100.0°C)
Core 1: +79.0°C (high = +86.0°C, crit = +100.0°C)
Core 2: +75.0°C (high = +86.0°C, crit = +100.0°C)
Core 3: +77.0°C (high = +86.0°C, crit = +100.0°C)

Команды для вывода нужных параметров

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

Например, в моем случае имеется 4 ядерный процессор который показывает температуры на каждом ядре. Можно передавать максимальное, минимальное или среднее значение.

Мне кажется что правильней передавать максимальное значение. Если одно из ядер будет сильно перегреваться а другие имеют температуру ниже среднего я увижу среднюю температуры немного выше обычного показателя и не пойму что надо срочно решать проблему. Возможно для процессора такое и не сможет произойти, но для 8 модулей памяти вполне реально. Контролировать все показатели ядер и каждой планки памяти можно, но не имеет смысла.

Для выборки параметра из всех полей где присутствует параметр Core и есть значение температуры можно использовать следующие универсальные команды:

Вывод минимального значения температуры
sensors | grep Core | awk -F'[:+°]' '{if(min==""){min=$3}; if($3<min) {min=$3};} END {print min}'

Вывод максимального значения температуры
sensors | grep Core | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'

Вывод среднего значения температуры
sensors | grep Core | awk -F'[:+°]' '{avg+=$3}END{print avg/NR}'

Коды подсмотрел тут.

Для вывода параметра с одной строки можно использовать следующий код:

sensors coretemp-isa-00000 | grep 'Core 0' | cut -c16-17
=вывод команды =
65.45

Где параметры имеют следующее значение:

  • sensors — сама программа;
  • coretemp-isa-00000 — группа датчиков с которой выводить значение;
  • grep ‘Core 0’ — название параметра;
  • cut -c16-17 — выводит 16 и 17 знак с начала строки.

В нашем случае присутствует два процессора и у обоих одинаковое значение параметра Core. Для вывода параметров для конкретного процессора необходимо указать группу датчиков.

Вывод максимальной температуры для процессора имеющего группу датчиков coretemp-isa-0000
sensors coretemp-isa-0000 | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'

Для вывода нужной температуры для памяти можно использовать два варианта:

Вывод максимальной температуры из всех значений Ch. в строках 
sensors | grep Ch. | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'

Вывод максимальной температуры из группу датчиков coretemp-isa-0000 
sensors i5k_amb-isa-0000 | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'

Надеюсь вам стало понятно как можно используя эти команды вывести нужный вариант.

Если будут вопросы вы всегда можете задать их в комментариях или поделиться своим опытом.

Добавление параметров для Zabbix агента

Для того чтобы Zabbix агент мог работать с нашими параметрами необходимо добавить в файл настройки необходимый параметр.

vim /etc/zabbix/zabbix_agentd.conf
= необходимый параметр =
UnsafeUserParameters=1

После необходимого параметра добавляем нужный код. В моем случае получился следующий код:

UserParameter=pve-t.core0,sensors coretemp-isa-00000 | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'
UserParameter=pve-t.core1,sensors coretemp-isa-00001 | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'
UserParameter=pve-t.memory,sensors i5k_amb-isa-0000 | awk -F'[:+°]' '{if(max==""){max=$3}; if(max<$3) {max=$3};} END {print max}'

Расшифрую первую строчку кода которая содержит следующие значения:

  • UserParameter — параметр согласно которого агент понимает что с ним надо работать;
  • pve-t.core0 — название параметра который мы будем использовать при добавлении элемента данных;
  • sensors coretemp-isa-00000 | awk -F'[:+°]’ ‘{if(max==»»){max=$3}; if(max<$3) {max=$3};} END {print max}’ — команда которой получается требуемое значение.

После внесения изменений в файл настройки Zabbix агента его обязательно нужно перезапустить.

Для систем использующих Systemd команда перезапуска агента будет одинаковой. Например, для систем CentOS7, Debian 10 команда следующая:

systemctl restart zabbix-agent

Проверка получения значения Zabbix агентом

Для уверенности в том что агент правильно получает данные нам необходимо выполнить команду которая покажет какой параметр получает агент Zabbix.

Выведем значение первого параметра который был в добавляемом коде:

zabbix_get -s 127.0.0.1 -k pve-t.core0
= вывод команды =
65.25

Параметр работает и получает правильное значение.

В случае получения ошибок

-bash: zabbix_get: command not found 
или
zabbix_get [20065]: Check access restrictions in Zabbix agent configuration

перейдите по ссылке и узнаете почему не работает zabbix_get.

Переходим к настройкам на стороне Zabbix сервера.

Мониторинг температуры HDD и SSD

Можно получить данные о температуре жесткого диска с системы SMART, которая присутствует на всех современных дисках. На сервере, с которого я собираюсь получать значения, работает система Proxmox в которой присутствует собственный механизм проверки дисков на основании SMART. Будем получать данные температуры другим способом.

Утилиту hddtemp которая присутствует во всех дистрибутивах Linux и позволяет получать значения температуры дисков нам идиально подходит.

Установим утилиту выполнив команду:

apt install hddtemp

Команды для вывода нужных параметров

Вначале нам необходимо вывести список дисков которые используются в системе. Например, я выполняю следующую команду:

lsblk
= вывод команды =
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk 
├─sda1 8:1 0 100M 0 part 
├─sda2 8:2 0 292,9G 0 part  
└─sda3 8:8 0 443G 0 part /mnt/sda8
sdb 8:16 0 119,2G 0 disk 
├─sdb1 8:17 0 7,5G 0 part [SWAP]
├─sdb2 8:18 0 954M 0 part /boot
└─sdb3 8:19 0 110,9G 0 part /

Из вывода видно что в системе есть два диска sda и sdb.

Выведем показание температуры для диска sda:

hddtemp /dev/sda
= вывод команды =
/dev/sda: ST3120811AS: 46°C

Команда для получения значений температуры будет такой:

hddtemp /dev/sda | cut -c24-25
= вывод команды =
46

Где параметры в коде имеют следующее значение:

  • hddtemp /dev/sda — утилита и диск с которого нужно получить значение;
  • cut -c24-25 — вывод 24 и 25 знака с начала строки.

Добавление параметров для Zabbix агента

Для того чтобы Zabbix агент мог работать с нашими параметрами необходимо наличие в файл настройки необходимого параметра.

vim /etc/zabbix/zabbix_agentd.conf
= необходимый параметр =
UnsafeUserParameters=1

После проверки наличия параметра добавляем необходимый код:

UserParameter=pve-t.sda,hddtemp /dev/sda | cut -c24-25
UserParameter=pve-t.sdb,hddtemp /dev/sdb | cut -c24-25

Расшифрую первую строчку кода которая содержит следующие значения:

  • UserParameter — параметр согласно которого агент понимает что с ним надо работать;
  • pve-t.sda — название параметра который мы будем использовать при добавлении элемента данных;
  • hddtemp /dev/sda | cut -c24-25 — команда которой получается требуемое значение.

После внесения изменений в файл настройки Zabbix агента его обязательно нужно перезапустить.

Для систем использующих Systemd команда перезапуска агента будет одинаковой. Например, для Debian 10 и CentOS 7 команда будет следующая:

systemctl restart zabbix-agent

Проверка получения значения Zabbix агентом

Советую всегда проверять как агент получает значения на самом узле сбора данных.

Перейдите по ссылке сможете узнаете почему Не работает zabbix_get.

Пробуем получить данные температуры диска sda:

zabbix_get -s 127.0.0.1 -k pve-t.sda
= вывод команды =
/dev/sda: open: Permission denied

Мы получили ошибку в которой говорится что нет доступа на выполнение команды от пользователя Zabbix. В интернете масса советов о том как эти права добавить использую sudo, но в нашем случае используется система Proxmox в которой нет этого механизма а усложнять сам гипервизор занятие дурное.

Выведем информацию о правах на утилиту:

ls -l /usr/sbin/hddtemp
= вывод команды =
-rwxr-xr-x 1 root root 40328 Jan 21 2018 /usr/sbin/hddtem

Из вывода видно что принадлежит она root и право запускать имеет только он.

Выполним команду которая позволит пользователю Zabbix запускать это файл:

chmod +s /usr/sbin/hddtemp

Проверим результат:

ls -l /usr/sbin/hddtemp
= вывод команды =
-rwsr-sr-x 1 root root 40328 Jan 21 2018 /usr/sbin/hddtemp

zabbix_get -s 127.0.0.1 -k pve-t.sda
= вывод команды =
45

Как видим данные успешно получены и значит переходим к настройкам на стороне Zabbix сервера.

Мониторинг температуры в системах Windows

Настроить мониторинг на системе Windows температурных параметров оказалось не просто. В большинстве случаев статьи в интернете описывают различные варианты использования программы Open Hardware Monitor а именно её консольной версии. На сайте разработчика я не нашел консольного варианта а скачивать с других сайтов считаю не целесообразно по разным причинам.

Программа позволяет создавать логи в формате csv и имеет веб лицо с выводом всех параметров. Возможно, как то использовать эти возможности, но ответа на этот вопрос я пока не нашел.

Поделитесь пожалуйста в комментариях своими вариантами мониторинга температур в системах Windows.

Действия на сервере Zabbix

Добавление данных для мониторинга будет показано на примере данных максимальной температуры ядра первого процессора.

Добавление элемента данных

Открываем необходимый узел и перейдя в «Элементы данных» добавляем новый нажав «Создать элемент данных«.

Необходимо заполнить следующие поля:

  • Имя — core0 Temperature;
  • Ключ — pve-t.core0;
  • Тип информации — Числовой (с плавающей точкой);
  • Интервал обновления — 1m;
  • Период хранения истории — 1w;
  • Группы элементов данных — CPU.

Добавление тригера

Открываем необходимый узел и перейдя в «Тригеры» добавляем новый нажав «Создать тригер«.

Необходимо заполнить следующие поля:

  • Имя тригера — pve-t core0 Temperature;
  • Выражение — {pve-t:pve-t.core0.last()}>80.

Выражение формируется на вкладке открывающейся по кнопке «Добавить» рядом с полем «Выражение«.

Добавление графика

Открываем необходимый узел и перейдя в «Графики» добавляем новый нажав «Создать график«.

Какое количество графиков и настройки параметров отображения решите сами. Например, мне нравится выводить все параметры температур в один график.

По нажатию кнопки «Добавить» в параметре «Элемент данных» выбираем все необходимые элементы данных для отображения на графике.

В результате мой график имеет следующий вид:

На графике видно как менялись показания когда я подбирал оптимальное положение и тип вентиляторов.

К моему удивлению расположение мощного вентилятора на выдув воздуха снижает общую температуру при закрытом корпусе лучше чем при его отсутствии и открытом корпусе.

Заключение

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

В результате все мои сервера стали работать тише а температурные параметры соответствует средним для данных типов устройств.

Zabbix agent установка и настройка

Zabbix agent можно установить практически на любую операционную систему. В этой статье будет собираться опыт установки агентов Zabbix на разные операционные системы и устройства. Контроль любых параметров после изучения документации от разработчика.

Введение

Узнать как производится установка системы вы можете из статьи Установка Zabbix 4.2. Понять основный принцип работы а так же вникнуть в структуру работы с системой можно в статье Настройка Zabbix сервера. В базовой версии настроек агента вполне достаточно, но если вы захотите контролировать какие то свои параметры вам это удастся после изучения документации на сайте разработчика.

В последствии я напишу еще много статей на тему Zabbix и возможно из них вы узнаете то что вам надо. Подпишитесь и тогда вы будете в курсе всех новых статей.

Действия на сервере Zabbix

Вы можете вначале настроить агента и лишь потом зайти на сервер и добавить необходимый узел, но мне такой вариант не нравится. Добавив узел мониторинга на сервере Zabbix, при проверке агента мы сразу увидим ошибки в случае их наличия.

Система позволяет сделать такие настройки обнаружения при которых сервер сам будет искать агентов и в случае их появления сразу добавлять к себе по ранее заданным сценариям. Конечно круто использовать такие механизмы, но они требуют хорошего понимания системы. Начнем с простого и по мере изучения будем усложнять настройки системы.

Добавление узла сети в Zabbix

В статье про настройку Zabbix я детально останавливался на вопросе подключения активного агента. Дальше я не буду повторятся в этом вопросе а лишь покажу разные варианты указания параметров.

Для добавления узла сети идем по пути:

Настройка — Узлы сети — Создать узел сети

В поле «Имя узла сети» ставится значение которое указывается в настройках агента в поле «Hostname».

Для обычного агента:

Для активного агента:

Все последующие картинки и описания будут делаться с учетом использования обычного агента Zabbix!

Добавляем необходимый шаблон соответствующий операционной системе, устройству или службы .

В списке узлов сети вы всегда можете наглядно видеть короткую информацию об узлах мониторинга. Например, в примере ниже видно что первый узел работает по активному агенту, второй имеет проблемы с подключением и третий у которого всё хорошо.

Проверка получения данных с агента

После подключения узла сети к мониторингу обязательно проверьте правильность получения данных во всех группах элементов данных. Например, для наглядности на картинке ниже показаны только элементы группы OS.

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

Установка Zabbix Agent на Linux

Для установки агентов необходимо вначале подключить репозиторий для нужного дистрибутива. На сайте разработчика Zabbix на странице Скачать и установить Zabbix выбираем необходимый дистрибутив и версию.

Для любого дистрибутива необходимо сделать стандартные действия:

  • подключить репозиторий;
  • установить агент;
  • настроить параметры подключения;
  • добавить в автозагрузку и запустить;
  • проверить правильность работы.

При установке агента на самом сервере Zabbix никаких действий с настройкой не требуется, так как узел по умолчанию имеется на сервере.

Особое вниманию заостряю на порты работы агента Zabbix. На агенте должен быть открыт порт 10050 так как именно по нему Zabbix сервер будет пытаться получить данные с агента. В случае использования активного агента (агент сам отправляет данные на сервер Zabbix) должно быть разрешено исходящее подключения по порту 10051.

На сервере Zabbix должен быть открыть порт 10051.

В случае отсутствия нужного дистрибутива переходим на закладку Для установки агентов и скачиваем агент для необходимого нам дистрибутива.

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

Zabbix agent для CentOS 7

После выбора необходимой операционной системы вы увидите страницу на которой указаны все необходимые команды которые необходимо выполнить в консоли.

Подключаем репозиторий версии Zabbix 4.2 выполнив необходимую команду:

rpm -Uvh https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
= вывод команды =
Загружается https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
предупреждение: /var/tmp/rpm-tmp.W8KoVE: Заголовок V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Подготовка...                 ############################## [100%]
Обновление / установка...
1:zabbix-release-4.2-1.el7    ############################## [100%]

Очистим и пересоздадим кэш yum:

yum clean all
yum makecache

Произведем установку введя в консоли следующую команду:

yum install zabbix-agent

В случае использования FirewallD необходимо выполнить команды которые открою порт 10050:

firewall-cmd --permanent --zone=public --add-service=zabbix-agent

= применить изменения =
firewall-cmd --reload

Более подробно как работать с FirewallD рассказано в статье FirewallD базовая настройка.

В файле конфигурации агента /etc/zabbix/zabbix_agentd.conf необходимо указать  параметры для подключения к серверу Zabbix:

vim /etc/zabbix/zabbix_agentd.conf
= необходимые параметры c пояснениями =
Server=192.168.0.109 # IP адрес сервера Zabbix
ServerActive=192.168.0.109 # IP сервера Zabbix на который активный агент будет отправлять данные
Hostname=test # имя узла мониторинга, которое указано на сервере zabbix

При использовании Zabbix proxy необходимо указывать его IP адрес.

Запускаем агент и добавляем в автозагрузку:

systemctl start zabbix-agent
systemctl enable zabbix-agent

Проверяем лог файл агента для CentOS 7 следующей командой:

cat /var/log/zabbix/zabbix_agentd.log
= вывод команды =
 14646:20190704:220547.611 Starting Zabbix Agent [Zabbix server]. Zabbix 4.2.4 (revision 059af02c82).
 14646:20190704:220547.613 **** Enabled features ****
 14646:20190704:220547.613 IPv6 support:          YES
 14646:20190704:220547.613 TLS support:           YES
 14646:20190704:220547.613 **************************
 14646:20190704:220547.614 using configuration file: /etc/zabbix/zabbix_agentd.conf
 14646:20190704:220547.616 agent #0 started [main process]
 14647:20190704:220547.624 agent #1 started [collector]
 14648:20190704:220547.632 agent #2 started [listener #1]
 14650:20190704:220547.639 agent #4 started [listener #3]
 14649:20190704:220547.643 agent #3 started [listener #2]
 14651:20190704:220547.653 agent #5 started [active checks #1]

Согласно выводу всё в порядке.

Zabbix agent для Debian

На сайте разработчика Zabbix на странице Скачать и установить Zabbix выбираем необходимый дистрибутив и версию.

В примере описан вариант установки и настройки Zabbix agent для операционной системы Debian 10 Buster.

Подключаем репозиторий версии Zabbix 4.2 выполнив необходимые команды:

wget https://repo.zabbix.com/zabbix/4.2/debian/pool/main/z/zabbix-release/zabbix-release_4.2-1+buster_all.deb
dpkg -i zabbix-release_4.2-1+buster_all.deb

Обновляем список пакетов:

apt update

Произведем установку выполнив в консоли следующую команду:

apt install zabbix-agent

В случае использования системы firewall открываем 10050 порт. 10051 порт должен быть открыт на исходящие соединения.

В файле конфигурации агента /etc/zabbix/zabbix_agentd.conf необходимо указать  параметры для подключения к серверу Zabbix:

vim /etc/zabbix/zabbix_agentd.conf
= необходимые параметры c пояснениями =
Server=192.168.0.109 # IP адрес сервера Zabbix
ServerActive=192.168.0.109 # IP сервера Zabbix на который активный агент будет отправлять данные
Hostname=test # имя узла мониторинга, которое указано на сервере zabbix

При использовании Zabbix proxy необходимо указывать его IP адрес.

Добавляем в автозагрузку и производим перезапуск агента:

systemctl enable zabbix-agent
systemctl restart zabbix-agent

Проверяем лог файл агента следующей командой:

cat /var/log/zabbix/zabbix_agentd.log
= вывод команды =
 14646:20190704:220547.611 Starting Zabbix Agent [Zabbix server]. Zabbix 4.2.4 (revision 059af02c82).
 14646:20190704:220547.613 **** Enabled features ****
 14646:20190704:220547.613 IPv6 support:          YES
 14646:20190704:220547.613 TLS support:           YES
 14646:20190704:220547.613 **************************
 14646:20190704:220547.614 using configuration file: /etc/zabbix/zabbix_agentd.conf
 14646:20190704:220547.616 agent #0 started [main process]
 14647:20190704:220547.624 agent #1 started [collector]
 14648:20190704:220547.632 agent #2 started [listener #1]
 14650:20190704:220547.639 agent #4 started [listener #3]
 14649:20190704:220547.643 agent #3 started [listener #2]
 14651:20190704:220547.653 agent #5 started [active checks #1]

Согласно выводу всё в порядке.

Установка Zabbix agent на XigmaNAS

Открываем доступ пользователю Root по SSH в веб панели управления и заходим стандартными командами для подключения по ssh.

ssh root@192.168.0.108
root@192.168.0.108's password: вводим пароль
Last login: Fri Jul 12 22:09:31 2019
Welcome to XigmaNAS!
nas: ~#

Еmbedded версия XigmaNAS

При использовании версии Еmbedded, вы должны понимать, что все изменения, которые вы производите в системе пропадут при перезапуске системы!

Обновляем пакеты:

pkg update

Выводим список всех возможных пакетов Zabbix:

pkg search zabbix

На момент написания статьи актуальная версия была 4.2.4:

pkg install zabbix42-agent-4.2.4

Активируем сервис как службу:

sysrc zabbix_agentd_enable=YES

Копируем конфигурационный файл настройки агента и открываем его для редактирования:

cp /usr/local/etc/zabbix42/zabbix_agentd.conf.sample /usr/local/etc/zabbix42/zabbix_agentd.conf
ee /usr/local/etc/zabbix42/zabbix_agentd.conf
= необходимые параметры c пояснениями = 
Server=192.168.0.109 # IP адрес сервера Zabbix
ServerActive=192.168.0.109 # IP сервера Zabbix на который активный агент будет отправлять данные 
Hostname=test # имя узла мониторинга, которое указано на сервере zabbix

Сохраняем файл и запускаем агент Zabbix:

service zabbix_agentd start

Для проверки смотрими логи выполнив команду:

tail -f /tmp/zabbix_agentd.log
= вывод команды =
2466:20190717:212904.511 IPv6 support: YES 
2466:20190717:212904.511 TLS support: YES 
2466:20190717:212904.511 **************************
2466:20190717:212904.511 using configuration file: /usr/local/etc/zabbix42/zabbix_agentd.conf 
2466:20190717:212904.513 agent #0 started [main process]
2467:20190717:212904.517 agent #1 started [collector]
2469:20190717:212904.542 agent #3 started [listener #2]
2468:20190717:212904.557 agent #2 started [listener #1]
2470:20190717:212904.565 agent #4 started [listener #3]
2471:20190717:212904.572 agent #5 started [active checks #1]

Проверить статус можно следующей командой:

service zabbix_agentd status
= вывод команды =
zabbix_agentd is running as pid 1812.

Full версия XigmaNAS

Вначале выполняем действия как для Еmbedded версии.

При использовании full версии после перезагрузки агент не запуститься и при попытке запустить в ручном режиме выдаст ошибку.

service zabbix_agentd start
= вывод команды =
zabbix_agentd [30451]: user zabbix does not exist
zabbix_agentd [30451]: cannot run as root!

Ошибка говорит о том что пользователя Zabbix нет. Добавлять пользователя через консоль используя стандартные команды для FreeBSD не получится. Работать с пользователями и группами вы сможете только используя веб панель управления.

Добавте пользователя и группу Zаbbix через веб панель управления XigmaNAS. При добавлении пользователя обязательно сделайте ему домашней папку /var/run/zabbix.

В консоли из под пользователя root дайте необходимые права на папку с программой и лог файл:

chown -R zabbix:zabbix /var/run/zabbix
chown zabbix:zabbix /tmp/zabbix_agentd.log

После этого служба будет нормально стартовать после перезагрузки.

В случае если не дать права на лог файл будет ошибка. Надо или давать права на лог файл или менять путь в файле настройки.

service zabbix_agentd start
= ошибка при отсутствии прав на лог файл =
zabbix_agentd [2455]: cannot open "/tmp/zabbix_agentd.log": [13] Permission denied

Установка Zabbix agent на Windows

Переходим на страницу загрузок Zabbix agent и скачиваем самую последнюю версию агента для Windows нужной разрядности.

Распаковываем архив. Создаем на диске С: папку zabbix и купируем туда следующие файлы:

  • zabbix_agentd.exe
  • zabbix_get.exe
  • zabbix_sender.exe
  • zabbix_agentd.conf

Открываем командную строку с правами администратора и выполняем следующую команду для установки zabbix agent на операционную систему Windows:

= код для копирования =
c:/zabbix/zabbix_agentd.exe --config c:/zabbix/zabbix_agentd.conf --install

Открываем файл zabbix_agentd.win.conf любым текстовым редактором (можно WordPAD) и изменяем следующие параметры:

с:/zabbix/zabbix_agenttd.conf
= необходимые параметры c пояснениями = 
LogFile=c:\zabbix\zabbix_agentd.log 
LogFileSize=1
Server=192.168.0.109 # IP адрес сервера Zabbix
ServerActive=192.168.0.109 # IP сервера Zabbix на который активный агент будет отправлять данные 
Hostname=test # имя узла мониторинга, которое указано на сервере zabbix

Не забываем создать разрешающее правило в Брандмауэр, если он у вас включен. Находясь в настройках Брендмауэра идем по пути:

Дополнительные параметры — Правило для входящих подключений — Создать правило.

  • Тип правила: Для порта;
  • Протоколы и порты: Протокол TCP; Определенные локальные порты: 10050;
  • Действие: Разрешить подключение;
  • Профиль (ставим галочки): Доменный, Частный, Публичный;
  • Имя: Zabbix Agent 10050.

В случае использования активного агента идем по пути (даже если не используется лучше открыть):

Дополнительные параметры — Правило для исходящих подключений — Создать правило.

  • Тип правила: Для порта;
  • Протоколы и порты: Протокол TCP; Определенные локальные порты: 10051;
  • Действие: Разрешить подключение;
  • Профиль (ставим галочки): Доменный, Частный, Публичный;
  • Имя: Zabbix Agent 10051.

Ищем службу с именем Zabbix agent в оснастке со службами запускаем ее.

Если все прошло успешно то в логе c:\zabbix\zabbix_agentd.log вы увидите примерно такую информацию:

3728:20190724:153807.390 Starting Zabbix Agent [test]. Zabbix 4.2.4 (revision 059af02).
3728:20190724:153807.394 **** Enabled features ****
3728:20190724:153807.397 IPv6 support: YES
3728:20190724:153807.400 TLS support: NO
3728:20190724:153807.402 **************************
3728:20190724:153807.406 using configuration file: c:\zabbix\zabbix_agentd.conf
3728:20190724:153807.410 agent #0 started [main process]
3448:20190724:153807.412 agent #1 started [collector]
5744:20190724:153807.441 agent #2 started [listener #1]
6856:20190724:153807.628 agent #3 started [listener #2]
6868:20190724:153807.766 agent #4 started [listener #3]
3532:20190724:153807.880 agent #5 started [active checks #1]

В вариантах агента есть возможность выбрать автоматический установщик, но мне больше нравится настраивать руками.

Возможные ошибки в работе

Буду описывать тут все ошибки которые буду считать общими для разных систем.

Периодические ошибки по сбору параметров

На сервере вы можете видеть периодические ошибки по сбору некоторых параметров. Например, кратковременные сообщения о недоступности агента и тому подобные ошибки. Особенно актуальна проблема если на агенте используется сложный механизм получения необходимых данных.

Timeout — параметр который отвечает за ожидание как на получение так и на отправку данных. По умолчанию выставлено значение в 3 секунды.

Необходимо увеличить этот параметр как на сервере так и на клиенте с которого получаете ошибки. В случае использование Zabbix proxy его там тоже необходимо увеличить. Например, я использую значение 10.

Timeout=10

Не работает zabbix_get

zabbix_get -s 127.0.0.1 -k pve-t.core1
= вывод команды =
-bash: zabbix_get: command not found

Ошибку показанную выше вы можете увидеть при попытке получить данные по любому параметру.

В новых версиях Zabbix утилита для опроса агентов вынесена в отдельный пакет zabbix-get и устанавливать её надо согласно командам применяемым в используемом дистрибутиве.

Debian 8-10
apt install zabbix-get

CentOS 7
yum install zabbix-get

Следующую ошибку можно получить когда вы запрашивайте параметр на самом агенте.

zabbix_get -s 127.0.0.1 -k pve-t.core1
= вывод команды =
zabbix_get [20065]: Check access restrictions in Zabbix agent configuration

Необходимо в файл настройки агента в параметр Server добавить через запятую ip адреса компьютеров с которых отправляется запрос. Например, Server=127.0.0.1,192.168.11.19.

Теперь выполнив нужную команду вы увидите правильный ответ.

zabbix_get -s 127.0.0.1 -k pve-t.core1
= вывод команды =
65

Заключение

Статья будет постоянно дополняться и изменяться. Не вижу смысла держать информацию если версия программы сильно устарела. Возможно, при таком подходе, я буду терять часть ссылок в поисковых системах. Зато знаю точно, что никого не будут бесить мои статьи которые потеряли актуальность, но по запросу в поисковике вылазят на первую страницу.

Настройка Zabbix сервера

Настройка Zabbix простыми словами и рассказ о том как работать с системой мониторинга. Система настолько гибкая и удобная, что может удовлетворить любые запросы по мониторингу любых устройств и систем. Лучшая система мониторинга.

Цели статьи

  • Простыми словами описать принцип работы Zabbix;
  • Рассказать как производится настройка Zabbix на личном примере;
  • Коротко пройтись по основным возможностям системы Zabbix.

Введение

Настройка Zabbix мониторинга, это самое главное что должен делать каждый нормальный системный администратор.

Главных причин по которым вам надо использовать мониторинг несколько:

  • Не возможно качественно поддерживать работоспособность сети без постоянного анализа её параметров;
  • Вы первый будете в курсе при возникновении проблемы на обслуживающем оборудовании.

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

Иногда руководители просто не понимают в чем разница между приглашением специалиста по вызову и заключением договора на абонентское обслуживание.

Например, один клиент поймал шифровальщик файлов и восстановление данных ему обошлось в кругленькую сумму. Другой, который заключил договор на обслуживание (я успел на 80 % выполнить работы по защите баз данных и мониторинга сети) отделался легким испугом.

В этой статье я специально не делаю упор как производиться настройка Zabbix определенной версии, так как мигрируя с версии на версию я не заметил принципиальных изменений в работе с системой. При желании вы можете прочитать статью и узнать как производится Установка Zabbix 4.2 на операционную систему CentOS 7.

Главный принцип и подход разработчиков остается неизменным. В системе нет ничего лишнего и порой кажущееся усложнение на практике оказывается удобным механизмом упрощающим жизнь системному администратору контролирующему большой парк разнообразной техники.

Можно часами рассказывать о всех прелестях работы с этой системой, но не буду этого делать. Постараюсь внести понимание того из чего состоит и как работает эта система. Я посвятил много времени на изучение системы пока до меня не дошли элементарные вещи которые необходимо знать при работе с комплексом Zabbix.

Документация у разработчиков Zabbix есть, но написана она сухим техническим языком который вы сможете понять когда поймете основные принципы работы системы.

Простое описание работы Zabbix

Система Zabbix это клиент-серверное решение. На всех контролируемых узлах должен быть установлен клиент (агент) который собирает данные для мониторинга узла.

Когда начнете изучать вы поймете что если описывать все доскональна, то статья получиться очень большая и нудная. Надеюсь из ниже сказанного основную суть вы поймёте.

Порты работы

Один из важных моментов который надо учитывать при настройке это знать на каких портах по умолчанию работает Zabbix.

Порта всего два:

  1. 10051 — по нему сервер получает данные от активных агентов. Порт должен быть открыть на сервере;
  2. 10050 — по нему сервер опрашивает клиентов и забирает данные. Порт должен быть открыть на клиенте.

Клиенты

Клиент  может быть двух видов:

  • Обычный агент — сервер получает доступ к узлу мониторинга и забирает данные;
  • Активный агент — клиент сам отправляет данные серверу.

Далеко не сразу я смог разобраться в нюансах использования активного агента. Из статьи вы узнаете как правильно пользоваться мониторингом компьютеров которые не имеют статического IP адреса.

Шаблоны

Шаблоны это основа системы Zabbix. Разработчик добавил большое количество шаблонов для разных систем и настолько грамотно и взвешено подошел к их разработке, что они подходят под основные требования мониторинга. Кроме того, на просторах интернета вы можете встретить огромное количество шаблонов созданных пользователями. Для использования сторонних шаблонов вам достаточно загрузить их в свою систему и произвести минимальные настройки.

После добавления узла в систему мониторинга и зная операционную систему вам достаточно выбрать необходимый шаблон и узел подключен к мониторингу. Все параметры вы можете подкорректировать под свои требования.

В шаблоне основное понятие — элементы данных.  В элементе данных указано какой параметр контролируется, по каким принципам и с указанием периода хранения данных в базе данных. Элементы данных можно группировать, что даёт удобство при выводе необходимых данных из огромной массы собираемых данных.

Для мониторинга кроме стандартных параметров существуют и те что невозможно указать в жестко. Например, количество и буквы разделов жестких дисков. Для этого в шаблоне присутствует раздел правила обнаружения в котором и указаны правила обнаружения жестких дисков, сетевых интерфейсов и служб (для Windows систем).

Триггеры

Триггеры это то на чем держится и в чем заключается вся прелесть мониторинга. В триггере указываются параметры при которых вы получите сообщение о изменении важного для вас контролируемого значения. Например, при большой нагрузке процессора, при маленьком количество свободной памяти на жестких дисках, и тд. и тп. В триггере указывается важность события. При добавлении нового триггера разработчик придумал конструктор выражения по которому можно составить необходимый вам вариант срабатывания триггера.

Оповещения

Способы оповещений, по умолчанию, в системе не много и основной является сообщение на e-mail. При желании можно настроить отправку сообщений в различные менеджеры. Так же можно настроить что система будет звонить на телефон и проговаривать возникшую проблему. Про то что каждому пользователю можно выбрать период и время получения оповещений я промолчу.

Настройка Zabbix сервера после установки

Со временем вы сами поймете как вам лучше и удобней настроить свою систему мониторинга.

Не рекомендую тупо использовать мои варианты и настоятельно советую оставить стандартные настройки по умолчанию! Все меняется, и то что я меняю сейчас в следующих версиях может уже быть или реализовано другим способом.

Настройка главного пользователя

Первым делом необходимо сменить стандартные данные авторизации (Admin — пользователь, zabbix — пароль) администратора.

Заходим по пути Administration — Users — Admin

В открывшейся форме меняем необходимые параметры.

При выборе другого языка при повторной авторизации он будет задействован.

Можно поменять данные главного пользователя по умолчанию или создать своего и удалить стандартного. Как поступить решайте сами.

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

Следующим этапом настроим куда и по каким правилам будут приходить оповещения. Например, в моем случае сделано оповещение на почту.

Обязательно проверяйте права! В случае добавления нового главного администратора это сделайте обязательно.

Общие настройки

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

Настройка e-mail оповещений

Просто добавить пользователю способ оповещения не достаточно. Необходимо сделать еще несколько настроек.

Для отправки сообщений на почту необходимо вначале активировать необходимый способ оповещения. В примере указаны настройки для почты работающей на yandex.

После выполненных настроек обязательно выполните проверочный тест.

Последнее что надо сделать что бы работало оповещение это активировать действие которое отвечает за отправку почты. В настройках действия указывается шаблон вида письма которое отправляеться на почту при произошедших событиях триггеров.

Мне удобней в получаемом письме видеть вначале название узла мониторинга, статус и название проблемы. Для применения моих предпочтений изменяю параметр в поле «Тема по умолчанию» для «Операции» и «Операции восстановления»

Вот шаблон для копирования:

{HOST.NAME} — {TRIGGER.STATUS}: {TRIGGER.NAME}

Настройка Zabbix шаблонов

В следующих статьях обязательно расскажу как создавать свои шаблоны или экспортировать стороние. Сейчас моя задача сделать понятным для вас как работать с шаблонами и из чего они состоят.

На примере шаблона Template OS Linux расскажу из чего он состоит.

Все шаблоны имеют одинаковую структуру и содержат:

  • Группы элементов данных — все элементы данных сгруппированы по типу событий. Например, все что связано с процессором находится в одной группе и тд. и тп.;
  • Элементы данных — сами параметры подвергающиеся мониторингу;
  • Триггеры — правила по которым срабатывает оповещение о произошедшем событии с контролируемым значениями;
  • Графики — варианты графиков которые могут выводится для данного шаблона;
  • Комплексные экраны — это экраны которые могут быть выведены для узлов которые наблюдаются по данному шаблону. Не стоит путать эти экраны с комплексными экранами находящимися в закладке «Мониторинг»;
  • Правила обнаружения — это правила которые определяют параметры которые свойственны для каждого узла мониторинга персонально. Например, дисковые системы и сетевые интерфейсы;
  • Веб-сценарии — возможность добавлять сайты и осуществлять их мониторинг.

К каждому шаблону можно присоединить любой другой шаблон. Например, для многих шаблонов присоединен шаблон «Template App Zabbix Agent» который отвечает за параметры мониторинга самого агента.

Все параметры вы можете изменять и редактировать по своему усмотрению, но рекомендую не делать это в базовых шаблонах. По крайней мере в начале изучения системы.

Нажав «Полное клонирование» и введя свое имя вы получите полную копию в которой сможете проводить свои эксперименты.

Для шаблона Windows я отключаю правило обнаружения «Windows service discovery» по причине очень частых срабатываний всяких «очень важных параметров»  Windows.

Использование активного агента Zabbix

В сети я не смог найти боле мене полной информации о том как правильно добавлять узлы мониторинга которые не имеют статического IP. Постараюсь закрыть эту брешь в этой статье.

Для добавления узла мониторинга не имеющего статического IP необходимо выполнить 4 условия:

  1. В параметре «ServerActive» настройки агента указывается IP сервера Zabbix;
  2. Брандмауэр должен иметь разрешение на исходящий порт 10051 (будет не плохо если сразу добавите правило и для входящего порта 10050);
  3. Шаблон который используется для узла должен иметь во всех элементах данных параметр «Zabbix агент (активный)»;
  4. При настройке узла в параметре «Интерфейсы агента» указывается IP адрес 0.0.0.0 (говорит что принимать данные нужно с любого адреса), подключение через IP и указывается порт 10051.

По умолчанию почти во всех шаблонах параметр сбора стоит «»Zabbix агент». Менять эти параметры в стандартных шаблонах не целесообразно.

Например, для мониторинга узла без статического IP работающего на операционной системе Linux необходимо взять шаблон «Template OS Linux» и произвести его полное клонирование. Название шаблона сделайте понятным для понимания что в шаблоне используется параметр активного агента.

Как в новом шаблоне сделать параметр «Zabbix агент (активный)» во всех параметрах вы разберетесь сами. Обязательно создайте полную копию шаблона «Template App Zabbix Agent» с аналогичным изменением параметра агента. Главное не забудьте поменять его в присоединенных шаблонах вашего нового шаблона.

Больше никаких различий в дальнейшей работе я не заметил. Единственное что бросается в глаза это отсутствие цветовой зеленой метки на цветовой индикации состояния агента.

На обычных агентах в случае успеха он должен быть зеленым.

Карты сетей

Карты сетей лично я полюбил сразу и активно использую по причине хорошей наглядности схемы мониторинга. При выводе схемы на главную панель хорошо видно всё реальное положение дел в контролируемой сети.

Например, схема моей небольшой личной сети выглядит следующим образом.

Описывать как создавать карты сети  их настраивать нет смысла, так как всё там до безобразия просто.

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

Параметр «Комплексные экраны узла сети» выведет именно комплексные экраны которые настраиваются в шаблоне!

Комплексные экраны

Комплексные экраны которые которые находятся в закладках Мониторинг — Комплексные экраны вы можете настроить на основании реально получаемых данных с разных узлов сети.

Заключение

Надеюсь мне удалось простым языком рассказать как производится настройка Zabbix и пояснить что это за система и как с ней работать. Дальше я размещу еще много статей на эту тему, так как настройка мониторинга для меня одна из основных.

MariaDB оптимизация и установка

Правильная оптимизация MariaDB после установки одна из важнейших задач с которыми сталкиваешься при обслуживании серверов LEMP. Расскажу свой подход к решении этой задачи. Зная информацию вы всегда сможете правильно настроить его работу.

Введение

В этой статье я постарался описать все основные моменты в работе с базами данных MariaDB. Основной задачей было расказать как выполняется оптимизация MariaDB. Тема очень обширная и имеющая много нюансов.  Давать конкретные рекомендации не имеет смысла, так как вариант установки и оптимизации сильно зависит от того какие технические параметры у сервера и какое программное обеспечение будет использоваться.

О том как работать с базами данных в консоли вы можете узнать из статьи MariaDB работа из консоли.

Установка MariaDB

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

Репозиторий разработчика

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

Рекомендую воспользоваться ссылкой выше и использовать код репозитория и команды установки исходя из вашей системы.

Например, для системы CentOS 8 с выбором версии 10.4 я получил код который размещу в необходимый файл:

vim /etc/yum.repos.d/mariadb.repo
= необходимый код =
# MariaDB 10.4 CentOS repository list - created 2019-10-24 18:16 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos8-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Установка MariaDB

На странице, где указан код присутствует и команда которую необходимо выполнить для установки исходя из выбранного дистрибутива. Для CentOS 8 команда имеет такой вид:

dnf install boost-program-options
dnf install MariaDB-server MariaDB-client --disablerepo=AppStream

Перед продолжением установки смотрим чтобы репозиторий был mariadb!

После установки запустим и добавим в автозагрузку выполнив команды:

systemctl start mariadb
systemctl enable mariadb

Проверим статус выполнив команду:

systemctl status mariadb
= вывод команды =
 mariadb.service - MariaDB 10.4.8 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) since Thu 2019-10-24 21:27:02 MSK; 40s ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
 Main PID: 1798 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 30 (limit: 11524)
   Memory: 74.3M
   CGroup: /system.slice/mariadb.service
           └─1798 /usr/sbin/mysqld

окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] InnoDB: Buffer pool(s) load completed at 191024 21:27:02
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] Plugin 'FEEDBACK' is disabled.
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] Server socket created on IP: '::'.
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] Reading of all Master_info entries succeeded
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] Added new Master_info '' to hash table
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: 2019-10-24 21:27:02 0 [Note] /usr/sbin/mysqld: ready for connections.
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc mysqld[1798]: Version: '10.4.8-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
окт 24 21:27:02 wp-lxc.pro-php7.sevo44.loc systemd[1]: Started MariaDB 10.4.8 database server.
окт 24 21:27:14 wp-lxc.pro-php7.sevo44.loc systemd[1]: mariadb.service: Failed to reset devices.list: Operation not permitted

Из вывода видно что все хорошо. Стараюсь всегда проверять статус после установки и запуска сервисов, так как это дает уверенность в том что все работает как надо.

Начальная конфигурация mysql

Для начальной конфигурации необходимо запустить скрипт и ответить на все вопросы исходя из ваших требований. Например, обычно я задаю пароль пользователя root и оставляю остальные параметры по-умолчанию.

/usr/bin/mysql_secure_installation
= вывод команды с пояснениями (перевод) =
Примечание: запуск всех частей этого сценария рекомендуется для всех MariaDB
СЕРВЕРА В ЭКСПЛУАТАЦИЮ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ!

1. Для того, чтобы войти в MariaDB обеспечения его, нам понадобится текущий пароль для пользователя root. Если вы только что установили MariaDB и вы еще не установили пароль root, пароль будет пустым, поэтому вы должны просто нажать здесь.
Введите текущий пароль для root (enter for none):

2. Установка пароля root гарантирует, что никто не может войти в MariaDB пользователь root без надлежащего разрешения.
Задать пароль пользователя root? [Y / n]

3. По умолчанию, установка MariaDB имеет анонимного пользователя, что позволяет любому чтобы войти в MariaDB без необходимости иметь учетную запись пользователя, созданную для их. Это предназначено только для испытывать, и сделать установку пойти немного более гладким. Вы должны удалить их перед перемещением в производственная среда.
Удалить анонимных пользователей? [Y / n]

4. Обычно, root должно быть позволено подключаться от "localhost". Этот гарантирует, что кто-то не может угадать пароль.
Запретить root подключаться удаленно? [Y / n]

5. По умолчанию, MariaDB поставляется с базой данных с именем "test", что любой может доступ. Это также предназначено только для тестирования и должно быть удалено перед переходом в производственную среду.
Удалить тестовую базу данных и доступ к ней? [Y / n]

6. Перезагрузить таблицы привилегий обеспечит, что все изменения, сделанные до сих пор вступит в силу немедленно.
Перезагрузить таблицы привилегий сейчас? [Y / n]

Все сделано! Если вы выполнили все вышеперечисленные шаги, ваш MariaDB теперь установка должна быть безопасной.
Спасибо за использование MariaDB!

Информация о действующих параметрах

Для просмотра всех возможных параметров и настойках по умолчанию можно посмотреть выполнив команду:

mysqld --verbose --help
= часть вывода команды с пояснениями =
!!! в консоли у меня не показывается первая часть вывода и как её увидеть я сказу ниже!!!
= в верхней части вы увидите где находится файл настойки =
mysqld Ver 10.3.12-MariaDB-log for Linux on x86_64 (MariaDB Server)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Starts the MariaDB database server.

Usage: mysqld [OPTIONS]

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf

= в этой части увидите вывод всех возможных параметров = 
--thread-handling=name 
                      Define threads usage for handling queries. One of: 
                      one-thread-per-connection, no-threads, pool-of-threads
  --thread-pool-idle-timeout=# 
                      Timeout in seconds for an idle thread in the thread
                      pool.Worker thread will be shut down after timeout
  --thread-pool-max-threads=# 
                      Maximum allowed number of worker threads in the thread
                      pool

= в этой части параметры которые используются по умолчанию =
Variables (--variable-name=value)
and boolean options {FALSE|TRUE}                           Value (after reading options)
---------------------------------------------------------- ---------------
allow-suspicious-udfs                                      FALSE
alter-algorithm                                            DEFAULT
aria                                                       ON
aria-block-size                                            8192
aria-checkpoint-interval                                   30
aria-checkpoint-log-activity                               1048576
aria-encrypt-tables                                        FALSE
aria-force-start-after-recovery-failures                   0
aria-group-commit                                          none
aria-group-commit-interval                                 0
aria-log-dir-path                                          /var/lib/mysql/
aria-log-file-size                                         1073741824
aria-log-purge-type                                        immediate
= в конце информация о том как посмотреть текущие параметры =

To see what values a running MySQL server is using, type
'mysqladmin variables' instead of 'mysqld --verbose --help'.

перевод
Чтобы увидеть, какие значения использует работающий сервер MySQL, введите 'mysqladmin variables' вместо 'mysqld --verbose --help'.

Вся информация в консоли не покажется поэтому лучше вывод сделать в файл:

 mysqld --verbose --help > mysqld--verbose--help.txt

Какие значения использует работающий сервер тоже лучше вывести в файл:

mysqladmin variables -u root -p > mysqladmin-variables.txt
Enter password: 

Правильная оптимизация MariaDB возможно только при использовании правильных параметров исходя из вашей версии!

Файл настройки MariaDB

В фале /etc/my.cnf присутствует строка !includedir /etc/my.cnf.d говорящая о том что все настройки находятся в папке /etc/my.cnf.d

Все основные настройки необходимо вносить в раздел [mysqld] файла server.cnf.

Аналитика работы MariaDB

Без аналитики работы сервера проводить оптимизацию MariaDB сложно и очень неудобно. Самый важный момент который необходим при анализе работы, это медленные запросы к базе данных.

Включим отображение медленных запросов добавив следующие строки в /etc/my.cnf.d/server.cnf, в секцию [mysqld]:

vim /etc/my.cnf.d/server.cnf
= необходимые параметры в секцию [mysqld] =
# запись лога медленных запросов
slow_query_log=ON
# путь к файлу 
slow_query_log_file=/var/lib/mysql/slow_queries.log
# минимальное время запроса для внесения
long_query_time=2
# включить в лог запросы, которые не используют индексы
#log-queries-not-using-indexes=1

Последний параметр отключен, так как используется больше для отладки кода и правильности создания таблиц.

Перезапустим сервер баз данных и посмотрим лог медленных запросов:

systemctl restart mariadb
tail -f /var/lib/mysql/slow_queries.log
= вывод команды =
Time		    Id Command	Argument
/usr/sbin/mysqld, Version: 10.3.12-MariaDB-log (MariaDB Server). started with:
Tcp port: 0  Unix socket: (null)
= для выхода ctrl+c =

В нашем случае медленных запросов нет.

Оптимизация MariaDB

Подходите очень ответственно. Неправильные действия могут вызвать неприятные последствия!

Для правильной оптимизации необходимо владеть всей необходимой информацией. Например, для меня это:

  • Информация о действующих параметрах — перед тем как вносить изменения необходимо смотреть какой параметр действует на данный момент ,
  • Аналитика работы — без аналитики работы вообще бессмысленно производить оптимизацию,
  • Требование к базе данных — у разных движков сайтов существует разное требование для работы с базой данных и это надо учитывать.

Работа с MySQLTunner

Существует perl-скрипт Mysqltuner, который анализирует статистику работы Mysql и выдает свои рекомендации что бы была проведена правильная оптимизация MariaDB.

Установка

Создадим папку, перейдем в неё и скачаем скрипт следующим образом:

mkdir mysqltuner
cd mysqltuner
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl

Если возникает ошибка вида:

ERROR: cannot verify raw.githubusercontent.com’s certificate, issued by ‘/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA’:
Unable to locally verify the issuer’s authority.
To connect to raw.githubusercontent.com insecurely, use `—no-check-certificate’.

Запускаем с ключом —no-check-certificate:

# wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl --no-check-certificate

Можно скачать базы данных простых паролей и уязвимостей. Скачаем обе базы:

= База простых паролей =
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/basic_passwords.txt -O basic_passwords.txt

= База уязвимостей =
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/vulnerabilities.csv -O vulnerabilities.csv

Базы простых паролей и уязвимостей будут использоваться только при запуске скрипта!

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

Debian/Ubuntu:

apt install mysqltuner

CentOS:

yum install mysqltuner

Оптимизация

Чтобы данные анализа и статистика были корректными, сервер Mysql должен проработать без смены параметров конфигурации и без перезагрузок, по рекомендации самого Mysqltuner не менее 24 часов.

Обращаю внимание на то что правильная оптимизация MariaDB возможно при рабочих базах данных. Перед внесением изменений не ленитесь смотреть какие имеются текущие настройки базы. Скрипт может давать ошибочные выводы!

Если производилось скачивание скрипта находясь в папке со скриптом необходимо выполнить команду:

perl mysqltuner.pl

Если производилась установка:

mysqltuner

После введения данных пользователя root для MariaDB вы увидите примерно такой вывод:

mysqltuner
= вывод команды =
>> MySQLTuner 1.7.13 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering

[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 10.3.12-MariaDB
[OK] Operating on 64-bit architecture

-------- Log file Recommendations
[--] Log file: /var/lib/mysql/mysql_error.log(0B)
[!!] Log file /var/lib/mysql/mysql_error.log doesn't exist
[!!] Log file /var/lib/mysql/mysql_error.log isn't readable.

-------- Storage Engine Statistics
[--] Status: +Aria +CSV +InnoDB +MEMORY +MRG_MyISAM +MyISAM +PERFORMANCE_SCHEMA +SEQUENCE 
[!!] InnoDB is enabled but isn't being used
[OK] Total fragmented tables: 0

-------- Analysis Performance Metrics
[--] innodb_stats_on_metadata: OFF
[OK] No stat updates during querying INFORMATION_SCHEMA.

-------- Security Recommendations
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] There is no basic password file list!

-------- CVE Security Recommendations
[--] Skipped due to --cvefile option undefined

-------- Performance Metrics
[--] Up for: 28s (10 q [0.357 qps], 14 conn, TX: 56K, RX: 1K)
[--] Reads / Writes: 100% / 0%
[--] Binary logging is disabled
[--] Physical Memory : 1.8G
[--] Max MySQL memory : 856.4M
[--] Other process memory: 33.7M
[--] Total buffers: 417.0M global + 2.9M per thread (151 max threads)
[--] P_S Max memory usage: 0B
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 419.9M (22.84% of installed RAM)
[OK] Maximum possible memory usage: 856.4M (46.59% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (0/10)
[OK] Highest usage of available connections: 0% (1/151)
[!!] Aborted connections: 7.14% (1/14)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[!!] Query cache may be disabled by default due to mutex contention.
[!!] Query cache efficiency: 0.0% (0 cached / 1 selects)
[OK] Query cache prunes per day: 0
[OK] No Sort requiring temporary tables
[OK] No joins without indexes
[OK] Temporary tables created on disk: 0% (0 on disk / 4 total)
[OK] Thread cache hit rate: 92% (1 created / 14 connections)
[OK] Table cache hit rate: 64% (11 open / 17 opened)
[OK] Open file limit used: 0% (25/16K)
[OK] Table locks acquired immediately: 100% (18 immediate / 18 locks)

-------- Performance schema
[--] Performance schema is disabled.
[--] Memory used by P_S: 0B
[--] Sys schema isn't installed.

-------- ThreadPool Metrics
[--] ThreadPool stat is enabled.
[--] Thread Pool Size: 1 thread(s).
[--] Using default value is good enough for your version (10.3.12-MariaDB)

-------- MyISAM Metrics
[!!] Key buffer used: 18.2% (24M used / 134M cache)
[OK] Key buffer size / total MyISAM indexes: 128.0M/123.0K

-------- InnoDB Metrics
[--] InnoDB is disabled.
[!!] InnoDB Storage engine is disabled. InnoDB is the default storage engine

-------- AriaDB Metrics
[--] AriaDB is enabled.
[OK] Aria pagecache size / total Aria indexes: 128.0M/1B

-------- TokuDB Metrics
[--] TokuDB is disabled.

-------- XtraDB Metrics
[--] XtraDB is disabled.

-------- Galera Metrics
[--] Galera is disabled.

-------- Replication Metrics
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] Binlog format: MIXED
[--] XA support enabled: ON
[--] Semi synchronous replication Master: OFF
[--] Semi synchronous replication Slave: OFF
[--] This is a standalone server

-------- Recommendations
General recommendations:
Add skip-innodb to MySQL configuration to disable InnoDB
MySQL was started within the last 24 hours - recommendations may be inaccurate
Reduce or eliminate unclosed connections and network issues
Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
Performance schema should be activated for better diagnostics
Consider installing Sys schema from https://github.com/mysql/mysql-sys
Variables to adjust:
query_cache_size (=0)
query_cache_type (=0)
query_cache_limit (> 1M, or use smaller result sets)
performance_schema = ON enable PFS

Так выглядит вывод команды после 48 часов работы MariaDB без рабочих баз.

Обращать внимание надо на параметры с восклицательными знаками.

Для того чтобы была информация в разделе Log file Recommendations необходимо добавить следующий код:

vim /etc/my.cnf.d/server.cnf
= необходимые дополнения в [mysqld] =
# необходимо для mysqltuner
log_error=/var/lib/mysql/mysql_error.log

В самом конце вывода утилита предоставит список рекомендаций как исправить ситуацию.

  • query_cache_size (=0)
  • query_cache_type (=0)
  • query_cache_limit (> 1M, or use smaller result sets)

Скрипт рекомендует отключить кэш запросов. Query Cache — это кэш вызовов SELECT. Когда базе данных отправляется запрос, она выполняет его и сохраняет сам запрос и результат в этом кэше. При использовании его вместе с InnoDB при любом изменении совпадающих данных кэш будет перестраиваться, что влечет за собой потерю производительности. И чем больше объем кэша, тем больше потери. Кроме того при обновлении кэша могут возникать блокировки запросов. Таким образом, если данные часто пишутся в базу данных — его надежнее отключить добавив следующий код:

vim /etc/my.cnf.d/server.cnf
= необходимые дополнения [mysqld] =
# рекомендации mysqltuner
query_cache_size=0
query_cache_type=0
query_cache_limit=1M
  • performance_schema = ON enable PFS

Performance Schema это механизм для мониторинга производительности MySQL сервера который по умолчанию выключен. Система позволяет делать многое, но её настройка сложна и надо обладать хорошими знаниями в плане работы баз данных MySQL. Возможно, в будущем я добавлю сюда информацию о том как с ней работать.

После внесения изменений выполним перезапуск MariaDB:

systemctl restart mariadb

Теперь вывод примет вид:

mysqltuner
= вывод команды =
>> MySQLTuner 1.7.13 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering

[--] Skipped version check for MySQLTuner script
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password: [OK] Currently running supported MySQL version 10.3.12-MariaDB-log
[OK] Operating on 64-bit architecture

-------- Log file Recommendations
[--] Log file: /var/lib/mysql/mysql_error.log(35K)
[OK] Log file /var/lib/mysql/mysql_error.log exists
[OK] Log file /var/lib/mysql/mysql_error.log is readable.
[OK] Log file /var/lib/mysql/mysql_error.log is not empty
[OK] Log file /var/lib/mysql/mysql_error.log is smaller than 32 Mb
[!!] /var/lib/mysql/mysql_error.log contains 0 warning(s).
[!!] /var/lib/mysql/mysql_error.log contains 0 error(s).
[--] 12 start(s) detected in /var/lib/mysql/mysql_error.log
[--] 1) 2019-02-11 23:07:41 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 2) 2019-02-11 0:19:06 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 3) 2019-02-11 0:01:53 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 4) 2019-02-10 23:45:22 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 5) 2019-02-10 23:42:20 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 6) 2019-02-10 23:40:37 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 7) 2019-02-10 23:36:16 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 8) 2019-02-10 23:33:53 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 9) 2019-02-10 23:16:12 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 10) 2019-02-10 23:05:08 0 [Note] /usr/sbin/mysqld: ready for connections.
[--] 11 shutdown(s) detected in /var/lib/mysql/mysql_error.log
[--] 1) 2019-02-11 9:12:02 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 2) 2019-02-11 0:19:06 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 3) 2019-02-11 0:01:53 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 4) 2019-02-10 23:45:21 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 5) 2019-02-10 23:42:19 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 6) 2019-02-10 23:40:37 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 7) 2019-02-10 23:36:16 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 8) 2019-02-10 23:28:06 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 9) 2019-02-10 23:16:12 0 [Note] /usr/sbin/mysqld: Shutdown complete
[--] 10) 2019-02-10 23:05:07 0 [Note] /usr/sbin/mysqld: Shutdown complete

-------- Storage Engine Statistics
[--] Status: +Aria +CSV +InnoDB +MEMORY +MRG_MyISAM +MyISAM +PERFORMANCE_SCHEMA +SEQUENCE 
[!!] InnoDB is enabled but isn't being used
[OK] Total fragmented tables: 0

-------- Analysis Performance Metrics
[--] innodb_stats_on_metadata: OFF
[OK] No stat updates during querying INFORMATION_SCHEMA.

-------- Security Recommendations
[OK] There are no anonymous accounts for any database users
[OK] All database users have passwords assigned
[!!] There is no basic password file list!

-------- CVE Security Recommendations
[--] Skipped due to --cvefile option undefined

-------- Performance Metrics
[--] Up for: 58s (10 q [0.172 qps], 14 conn, TX: 56K, RX: 1K)
[--] Reads / Writes: 100% / 0%
[--] Binary logging is disabled
[--] Physical Memory : 1.8G
[--] Max MySQL memory : 1.5G
[--] Other process memory: 59.2M
[--] Total buffers: 1.0G global + 2.9M per thread (151 max threads)
[--] P_S Max memory usage: 0B
[--] Galera GCache Max memory usage: 0B
[OK] Maximum reached memory usage: 1.0G (57.61% of installed RAM)
[OK] Maximum possible memory usage: 1.5G (81.36% of installed RAM)
[OK] Overall possible memory usage with other process is compatible with memory available
[OK] Slow queries: 0% (0/10)
[OK] Highest usage of available connections: 0% (1/151)
[!!] Aborted connections: 7.14% (1/14)
[!!] name resolution is active : a reverse name resolution is made for each new connection and can reduce performance
[OK] Query cache is disabled by default due to mutex contention on multiprocessor machines.
[OK] No Sort requiring temporary tables
[OK] No joins without indexes
[OK] Temporary tables created on disk: 0% (0 on disk / 4 total)
[OK] Thread cache hit rate: 92% (1 created / 14 connections)
[OK] Table cache hit rate: 64% (11 open / 17 opened)
[OK] Open file limit used: 0% (26/16K)
[OK] Table locks acquired immediately: 100% (18 immediate / 18 locks)

-------- Performance schema
[--] Performance schema is disabled.
[--] Memory used by P_S: 0B
[--] Sys schema isn't installed.

-------- ThreadPool Metrics
[--] ThreadPool stat is enabled.
[--] Thread Pool Size: 1 thread(s).
[--] Using default value is good enough for your version (10.3.12-MariaDB-log)

-------- MyISAM Metrics
[!!] Key buffer used: 18.2% (24M used / 134M cache)
[OK] Key buffer size / total MyISAM indexes: 128.0M/123.0K

-------- InnoDB Metrics
[--] InnoDB is disabled.
[!!] InnoDB Storage engine is disabled. InnoDB is the default storage engine

-------- AriaDB Metrics
[--] AriaDB is enabled.
[OK] Aria pagecache size / total Aria indexes: 128.0M/1B

-------- TokuDB Metrics
[--] TokuDB is disabled.

-------- XtraDB Metrics
[--] XtraDB is disabled.

-------- Galera Metrics
[--] Galera is disabled.

-------- Replication Metrics
[--] Galera Synchronous replication: NO
[--] No replication slave(s) for this server.
[--] Binlog format: MIXED
[--] XA support enabled: ON
[--] Semi synchronous replication Master: OFF
[--] Semi synchronous replication Slave: OFF
[--] This is a standalone server

-------- Recommendations
General recommendations:
Control warning line(s) into /var/lib/mysql/mysql_error.log file
Control error line(s) into /var/lib/mysql/mysql_error.log file
Add skip-innodb to MySQL configuration to disable InnoDB
MySQL was started within the last 24 hours - recommendations may be inaccurate
Reduce or eliminate unclosed connections and network issues
Configure your accounts with ip or subnets only, then update your configuration with skip-name-resolve=1
Performance schema should be activated for better diagnostics
Consider installing Sys schema from https://github.com/mysql/mysql-sys
Variables to adjust:
performance_schema = ON enable PFS

Базовые параметры

Обычно я добавляю следующие параметры по умолчанию в свои сервера:

vim /etc/my.cnf.d/server.cnf 
= необходимые дополнения [mysqld] =
# базовые настройки
character_set_server=utf8
collation-server=utf8_bin
init_connect="SET NAMES utf8 collate utf8_bin"

innodb_file_per_table=1
innodb_buffer_pool_size = 800M # внимание на параметр! установить примерно в 2 раза меньше объема оперативной памяти сервера
innodb_log_file_size = 200M # размер файла лога innodb должен составлять 25% от размера буфера
innodb_buffer_pool_instances=1 # увеличивать на 1 каждый GB innodb_buffer_pool_size
innodb_flush_log_at_trx_commit = 0
innodb_log_files_in_group = 3

Обязательно после всех работ с настройкой баз данных выполняйте проверку статуса на предмет ошибок выполняя команду:

# systemctl status mariadb -l

Ротация логов MariaDB

Откроем необходимый файл и сделаем необходимые изменения:

vim /etc/logrotate.d/mysql
= часть вывода с необходимыми изменениями =
/var/lib/mysql/*log {
        # create 600 mysql mysql
        notifempty
        daily
        size 5M
        rotate 7
        missingok
        compress
    postrotate
        # just if mysqld is really running
        if test -x /usr/bin/mysqladmin && \
           /usr/bin/mysqladmin ping &>/dev/null
        then
           /usr/bin/mysqladmin --local flush-error-log \
              flush-engine-log flush-general-log flush-slow-log
        fi
    endscript
}

Мы указали что надо ротировать все логи и хранить 7 дней при условии что размер файла 5 Mегабайт.

Сохраним и применим изменения без перезагрузки:

logrotate /etc/logrotate.conf

Проверим правильность выполнив тестирование (опция -d):

logrotate -d /etc/logrotate.d/mysql
= вывод команды =
reading config file /etc/logrotate.d/mysql
Allocating hash table for state file, size 15360 B

Handling 1 logs

rotating pattern: /var/lib/mysql/*log  5242880 bytes (7 rotations)
empty log files are not rotated, old logs are removed
considering log /var/lib/mysql/mysql_error.log
  log does not need rotating (log size is below the 'size' threshold)
considering log /var/lib/mysql/slow_queries.log
  log does not need rotating (log size is below the 'size' threshold)
considering log /var/lib/mysql/tc.log
  log does not need rotating (log size is below the 'size' threshold)

Все логи не имеют необходимого размера для выполнения ротации.

Вывод

Постарался изложить основные момента по работе с базой данных MariaDB. Настройка и оптимизация MariaDB для каждого ресурса может сильно отличатся и поэтому нет смысла описывать каждый параметр.

Никогда не копируйте тупо коды в свои конфигурационые файлы, так как версии могут быть разные и вы можете получить большие проблемы с базами данных.

Исходя из статьи вы теперь знаете откуда брать информацию о всех параметрах вашего сервера баз данных.

Для желающих дополнить или подправить ниже есть комментарии.

SWAP для Linux

SWAP один из важных параметров для стабильной работы операционной системы Linux. Споров о том как правильно использовать в интернете существует масса. Для правильной настройки надо иметь понимание для чего используется ваша система.

Введение

Постараюсь  коротко рассказать основные моменты которые надо учитывать и дать практические советы проверенные на личном опыте.

Нужен SWAP или нет?

Однозначно нужен! Можно обойтись и без него, но тогда имейте в виду, что:

  1. SWAP используется при организации режима сна и при его отсутствии про этот режим можно забыть,
  2. Если SWAP отсутствует и память будет исчерпана тогда компьютер зависнет и потребуется выполнять полный сброс (hard reset). У меня был случай когда браузер Chrome скушал всю память и повесил систему.

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

Размер SWAP

Советов по размеру множество, но мы остановимся на советах разработчиков Red Hat (CentOS):

  • Если памяти < 2G то необходимый объем S = M *2
  • Если памяти > 2G то необходимый объем S = M + 2

При современных объемах жестких дисков я бы не стал жалеть места на размер SWAP и уверяю вас что экономия места в данном случае может привести к гораздо большим проблемам.

Варианты размещения SWAP

Вариантов несколько:

  • на разделе диска,
  • в файле,
  • или в оперативной памяти использую zRAM.

Исторически в Linux SWAP размещался на разделе, но в современных дистрибутивах производительность SWAP-файла не уступает SWAP-разделу и это весьма радует.

SWAP-раздел

Когда вы точно знаете, что размер оперативной памяти меняться не будет и вы точно уверены в размере SWAP разумно выделить раздел при установке системы.

Хочу заострить ваше внимание на установку систем Linux из готовых шаблонов которые предлагают хозяева ресурсов предоставляющих услуги VDS. Один из шаблонов при использовании 2 G памяти создал мне SWAP раздел размером 512 М. При таком размере он заполнился на стадии настройки системы. Устанавливайте OS Linux по возможности с минимального iso образа системы!

SWAP-файл

Использование файла очень удобно особенно когда нет точного понимания какие будут окончательные аппаратные параметры системы. Файл можно создать в любом удобном месте и необходимым вам размером. Ниже я расскажу как это сделать.

ZRAM и ZSWAP

Вариант с использованием этих вариантов требует наличие хорошего опыт в использовании Linux систем. На мой взгляд данный способ имеет смысл использовать с хорошим знанием системы на которой это будет работать.

ZRAM — это модуль ядра Linux, позволяющий сжимать содержимое оперативной памяти, и таким образом увеличивать ее объем в несколько раз. ZRAM создает сжатое блочное устройство в ОЗУ которое чаще всего используется как swap. При этом степень сжатия данных получается в среднем 3:1. Это означает что на 1 гигабайт подкачки будет использовано в 333 мегабайт физической памяти.

ZSWAP — тличается от ZRAM тем, что использует существующий swap-раздел на диске, а в ОЗУ создаётся пул со сжатыми данными (кэшем). После того как пул до отказа забьётся сжатыми данными, он сбросит их в раздел подкачки и снова начнёт принимать и сжимать данные.  По утверждению разработчиков, в их конфигурации при компиляции ядра в ситуации когда происходит своппинг, выигрыш по объему ввода/вывода составил 76%, а время выполнения операции сократилось на 53%. При использовании ZSWAP, используется раздел swap на диске, в ОЗУ хранится только сжатый кэш.

Проверка наличия SWAP

Проверка наличие:

swapon -s

Если пусто, значит его нет.

Можно проверить используя утилиту htop.

Создание SWAP-файла

Создадим файл c именем swap размером 4 G в папке /etc:

dd if=/dev/zero of=/etc/swap bs=1024 count=4000000
= вывод команды =
4000000+0 записей получено
4000000+0 записей отправлено
скопировано 4096000000 байт (4,1 GB), 176,33 c, 23,2 MB/

Форматируем файл в формат свопа:

mkswap /etc/swap
=вывод команды=
Setting up swapspace version 1, size = 3999996 KiB
no label, UUID=7db57287-a7c3-4973-9f89-0be098a493ac

Подключаем файл к системе:

swapon /etc/swap
=вывод команды=
swapon: /etc/swap: insecure permissions 0644, 0600 suggested.

Проверяем результат работы:

swapon -s
=вывод команды=
Filename Type Size Used Priority
/etc/swap file 3999996 0 -1

Сделаем чтобы swap монтировался при загрузке. Для этого добавляем в fstab необходимый параметр:

vim /etc/fstab
=необходимые дополнения=
# Подключим swap при загрузке
/etc/swap swap swap defaults 0 0

В конце файла делаем переход на новую строку!

Сохраняем файл и перезагружаемся.

reboot

Проверяем:

swapon -s
=вывод команды=
Filename Type Size Used Priority
/etc/swap file 3999996 0 -1

Оптимизация SWAP

Оптимизация сводится к настройке двух параметров.

Параметр ядра swappiness

Параметры от 0 до 100. При значениях близких к нулю, ядро не переносит данные на диск, если в этом нет крайней необходимости.

Определение используемого параметра swappiness:

cat /proc/sys/vm/swappiness
= вывод команды =
30

Исходя из действующего значения принимаете решение об изменении. Изменим значение до 10:

sysctl -w vm.swappiness=10
= вывод команды =
vm.swappiness=10

параметр -w для сохранения этой настройки после перезагрузки.

Параметр ядра vfs_cache_pressure

Показывает системе какое время нужно хранить открытые. Значение по умолчанию 100. При значениях близких к нулю, ядро будет держать их в памяти как можно дольше.

Определение используемого параметра vfs_cache_pressure:

cat /proc/sys/vm/vfs_cache_pressure
= вывод команды= 
100

Исходя из действующего значения принимаете решение об изменении. Изменим значение до 1000:

sysctl -w vm.vfs_cache_pressure=1000
= вывод команды =
vm.vfs_cache_pressure=1000

Значительное увеличение vfs_cache_pressure за пределы 100 может отрицательно сказаться на производительности. Для восстановления кода необходимо использовать различные блокировки для поиска свободных каталогов и объектов inode. При vfs_cache_pressure = 1000 он будет искать в десять раз больше свободных объектов, чем есть.

Вывод

Внимательней подходите к настройке SWAP так как в будущем будет меньше проблем при обслуживании системы. Не уделяя должного внимания на такой кажущийся пустяк я не раз получал сюрпризы  при работе Linux.

Tmux терминальный менеджер

Tmux терминальный оконный менеджер при использовании дает возможность при обрыве связи с сервером по ssh не терять информацию о выполняемых действиях. Работает в любом дистрибутиве Linux. Одна из любимых утилит администраторов Linux.

Введение

Очень быстро при работе с серверами по ssh я стал ощущать два неудобства:

  • Из за обрыва связи я терял информацию о ходе выполняемых действий на сервере,
  • Для выполнения нескольких действий мне приходилось создавать несколько подключений по ssh.

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

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

Установка Tmux

Пакет присутствует во всех популярных системах и устанавливается с помощью команды:

CentOS 7
yum install tmux

Debian
apt install tmux

Calculate Linux
emerge -av tmux

При настройке под себя необходимо знать какая версия используется для указания правильных параметров в файле настройки.

Вывод информации об установленной версии:

tmux -V
= вывод команды =
tmux 1.8

Более подробно про программу можно почитать на  Wikipedia или на странице разработки.

Работа с Tmux

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

Оптимальный вариант для работы с Tmux это запускать его на удаленном сервере. Только так вы не будете получать проблем при обрыве связи или вашей миграции от компьютера к компьютеру.

Для более детального изучения можно ознакомится с документацией выполнив команду:

man tmux

Управление сессиями

Вывод информации обо всех возможных командах:

tmux list-commands

Рассмотрим основные команды используемые в работе с Tmux при действиях в консоли сервера.

Создание сессии:

= Создание сессии Tmux =
tmux

= Создание сессии с названием  sevo44 =
tmux new -s sevo44

= Информация о работающих сессиях Tmux =
tmux ls
= вывод команды =
0: 1 windows (created Mon Dec 10 10:48:09 2018) [150x33]
sevo44: 1 windows (created Mon Dec 10 10:48:23 2018) [150x33]

= Переименование сессии 0 в sevo44-2 =
tmux rename-session -t 0 sevo44-2

Подключение к сессии:

= Подключение к последней сессии =
tmux a

= Подключение к сессии использую имя или номер =
tmux attach -t sevo44

Удаление сессии:

= Удаление сессии по номеру или имени =
tmux kill-session -t sevo44

= Удаление все сессий =
tmux kill-server

Работа в сессии

При работе в сессии Tmux существует понятие «Префикс» это то что переводит его в командный режим.

По умолчанию префикс «CTRL + b».

Префикс всегда набираем перед введением любой команды ниже!

Основные команды:

Функция Команда
Вывести справку по всем командам ?
Выйти из сесиии d
Закрыть сессию x
Скролинг [ для выхода из режима q

Команды для работы с панелями:

Функция Команда
Разделить текущую панель на две, по вертикали Shift + %
Разделить текущую панель на две, по горизонтали Shift + » (на клавиатуре слева от Enter)
Переход между панелями →←↑↓
Изменить размеры панели Alt + →←↑↓
Закрыть панель x (или набрать exit)

Команды для работы с закладками (окнами):

Функция Команда
Создание закладки с
Переименование закладки ,
Вывод всех закладок для перехода w
Закладка вперед n
Закладка назад p
Удалить закладку x

Настройка Tmux под себя

Вся настройка сводится к тому что в своей домашней папке необходимо создать файл .tmux.conf в который добавить необходимые настройки.

При настройках надо знать версию и понимать необходимость изменяемых параметров. Множество советов что вы найдете в интернете попросту не будут у вас работать.

Моя версия такая:

tmux -V
= вывод команды =
tmux 3.1c

Сменим префикс с «CTRL + b» на «CTRL + а» и добавим возможность прокручивать колесиком на мышке:

vim ~/.tmux.conf
= необходимые параметры =
set -g prefix C-a
unbind C-b
bind C-a send-prefix

set -g mouse on

Перезагрузите tmux.conf с помощью команды:

$ tmux source-file ~/.tmux.conf

Вывод

Мною указаны лишь основные моменты по работе с Tmux которых мне вполне достаточно. Функционал большом и при желании можно настроить многие параметры под свои требования. Некоторые моменты в работе могут показаться неудобными в сравнении с работой в простой консоли, но это мелочи. Иметь возможность работы с сервером не привязываясь с рабочему месту стоит того чтобы иметь маленькие неудобства.

SFTP настройка для веб хостинга

SFTP удобное и безопасное подключение к файлам ресурса используя ssh. Инструкцию можно использовать для любых систем Linux. Отличие только в командах на перезапуск сервисов Nginx, Php-fpm, SSH и путях к файлам настройки.

Введение

Ранее я использовал для работы с файлами сайтов программу ProFTP, но отказался в пользу SFTP из за более стабильной работы и простоты настройки. Настройка показана на примере CentOS 7.

С статье на сайте можете узнать про настройку доступа по FTP к сайтам на сервере VDS под управлением CentOS 7 используя программу ProFTPd. Создание файловой базы пользователей для авторизации с правами от Nginx. Подключение с использованием сертификата для TLS.

Добавление пользователя

Создадим пользователя которому дадим права на файлы ресурса. Удобно использовать имя пользователя пересекающееся с названием сайта.

В нашем случае мы настраиваем доступ к сайту sevo44.ru. Добавим пользователя с нужными параметрами и создадим ему пароль:

useradd -s /sbin/nologin sevo44.ru 
passwd sevo44.ru

Добавляем пользователя nginx в группу sevo44.ru.

usermod -aG sevo44.ru nginx

Настройка SSH для SFTP

Открываем конфигурационный файл ssh находящийся по пути /etc/ssh/sshd_config. Комментируем один параметр и добавим необходимый код:

vim /etc/ssh/sshd_config
= необходимые изменения и добавления =
# Закоментируем параметр
#Subsystem sftp /usr/lib64/misc/sftp-server

# Для работы sftp
Subsystem sftp internal-sftp
# Для sevo44.ru
Match User sevo44.ru
 X11Forwarding no
 AllowTcpForwarding no
 AllowAgentForwarding no
 PermitTunnel no
 ForceCommand internal-sftp
 ChrootDirectory /var/www/sevo44.ru
# /sevo44.ru

Перезапускаем службу sshd:

systemctl restart sshd

Доступ к файлам ресурса уже есть и можно подключатся, но могут возникнуть проблемы с правами. Ниже я расскажу как избежать проблем связанных с правами на файлы.

Настройка прав на данные

Назначаем владельцем содержимого сайта пользователя которого мы создали выше:

chown -R sevo44.ru:sevo44.ru /var/www/sevo44.ru/

Возвращаем обратно рута владельцем корня chroot:

chown root. /var/www/sevo44.ru/
chown root. /var/www/sevo44.ru/log/

Внимание! Сначала мы рекурсивно назначаем права на все содержимое директорий, а потом возвращаем владельца root на корень сайта.

Все папки в пути /var/www/sevo44.ru/ должны быть пользователя root!

Только в таком варианте все будет корректно работать!

Для безопасности запретим пользователю редактировать папку log.

Редактирование будет возможно только в папке WWW где находятся все файлы сайта!

Перед выполнением следующего этапа лучше проверить подключение. В случае проблем с подключением смотрим лог выведя последние 10 строчек:

tail -n 10 /var/log/secure

Настройка Logrotate для сайтов

Для просмотра логом сайтов используя подключение по sftp необходимо создать файл со следующим кодом (на основе скопированного файла nginx):

cp /etc/logrotate.d/nginx /etc/logrotate.d/site
vim /etc/logrotate.d/site
= необходимый код =
/var/www/sevo44.ru/log/*.log
{
        daily
        missingok
        rotate 15
        compress
        delaycompress
        notifempty
        #create 640 nginx adm
        sharedscripts
        postrotate
                if [ -f /var/run/nginx.pid ]; then
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

Сохраним и применим изменения без перезагрузки:

logrotate /etc/logrotate.conf

Настройка PHP-FPM

Создадим отдельный pool для php-fpm, который будет обслуживать сайт sevo44.ru. Использование отдельного пула для сайта так же может быть обусловлено специфическими настройками для ресурса. Удобно когда для каждого сайта используется независимый пул в котором можно выставить необходимые значения. Переходим в нужную папку, копируем существующий конфигурационный файл и делаем необходимые изменения:

cd /etc/php-fpm.d/
cp www.conf sevo44.ru.conf
vim /etc/php-fpm.d/sevo44.ru.conf
= необходимые параметры =
[sevo44.ru]
 user = sevo44.ru
 group = sevo44.ru
 listen = /run/php-fpm/php-fpm-sevo44.sock
 listen.owner = sevo44.ru
 listen.group = sevo44.ru
 pm = dynamic
 pm.max_children = 20
 pm.start_servers = 2
 pm.min_spare_servers = 1
 pm.max_spare_servers = 3

Осталось указать нужный параметр в настройки хоста для nginx.

Откроем необходимый файл и внесём необходимую настройку:

vim /etc/nginx/conf.d/sevo44.ru.conf
= необходимый параметр =
fastcgi_pass unix:/run/php-fpm/php-fpm-sevo44.sock;

Проверим правильность настройки Nginx и перезагрузим необходимые сервисы:

nginx -t
systemctl reload nginx
systemctl restart php-fpm

Детальнейшую работу с файлами, для избежания проблем с правами на файлы, лучше осуществлять используя программу для подключения по SFTP.

Заключение

В результате настроек мы получаем защищённый и удобный доступ для работы с файлами ресурса. Для работы я использую программу FileZilla. Кроме того, из статьи RSA или авторизация SSH по ключу вы можете узнать как используя программу FileZilla можно подключатся по файлу с ключом расширения ppk.