Как установить PostgreSQL Linux часть 4.

Введение.

Изучая основы работы сервера PostgreSQL, переходим к рассмотрению вопросов обеспечения безопасности пользователей использующих БД PgSQL. В статье PostgreSQL Linux часть 4, мы будем рассматривать такие важные понятия как пользователи и роли.

Основу защиты учётных записей пользователей PgSQL формируют пользовательские роли и пароли.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 4.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • Simply Linux, имя: lin-sl, IP=10.0.2.30
      • Пользователь, имя: trt

Роль — это пользователь СУБД или, если пользоваться терминологией ОС Linux, Windows — группа. Роли не связаны с именами пользователей ОС. Роли являются общими объектами для PgSQL, могут подключаться к разным базам и быть владельцами для объектов различных БД.

Команды управления ролями PostgreSQL Linux часть 4.

  • Список основных команд для управления ролями:
    • CREATE ROLE — вызывается из psql
    • DROP ROLE — вызывается из psql
    • ALTER ROLE — вызывается из psql
    • createuser — вызываются из командной строки ОС
    • dopuser — вызываются из командной строки ОС
  • CREATE ROLE — создать роль в базе данных
    • CREATE ROLE имя [ [WITH] параметр [ …] ]
      • параметр
        • LOGIN — вход на сервер
        • SUPERUSER — суперпользователь
        • CREATEDB — создавать базы данных
        • CREATEROLE — создавать, изменять, удалять роли
        • REPLICATION — выполнять репликации
        • и другие…

Параметры (атрибуты) имеют два варианта, пример, CREATEDB (дает право на создание БД) и NOCREATEDB (не дает такого права), по умолчанию выбирается ограничивающий вариант.

  • DROP ROLE — удалить роль в базе данных
    • DROP ROLE [ IF EXISTS ] имя [, …]
      • IF EXISTS — не считать ошибкой, если роль не существует
  • ALTER ROLE — изменяет атрибуты роли
  • ALTER ROLE имя [ [WITH] параметр [ …] ]
    • параметр
      • SUPERUSER
      • NOSUPERUSER
      • CREATEDB
      • NOCREATEDB
      • CREATEROLE
      • NOCREATEROLE
      • INHERIT
      • NOINHERIT
      • LOGIN
      • NOLOGIN
      • REPLICATION
      • NOREPLICATION
      • BYPASSRLS
      • NOBYPASSRLS
      • CONNECTION LIMIT предел_подключений
      • [ ENCRYPTED ] PASSWORD ‘пароль
      • PASSWORD NULL
      • VALID UNTIL ‘дата_время
  • createuser — создать новую учётную запись PostgreSQL
    • createuser [параметр…] [имя_пользователя]
      • параметр
        • -c номер количество соединений
        • -d может создавать базы данных
        • -D не может создавать базы данных
        • -g role роль, к которой будет добавлена текущая роль
        • -i наследовать права ролей
        • -I не наследовать права ролей
        • -l может подключаться к серверу
        • -L не может подключаться к серверу
        • -r может создавать, изменять и удалять роли
        • -R не может создавать, изменять и удалять роли
        • -s имеет права суперпользователя
        • -S не имеет права суперпользователя
        • —interactive диалоговый режим для параметров
        • и другие…

createuser — та же функциональность, что и команда CREATE ROLE

  • dopuser — удалить учётную запись пользователя PostgreSQL
    • dropuser [параметр…] [имя_пользователя]
      • параметр
        • -i диалоговый режим
        • -e журнал выполнения команд

dopuser — та же функциональность, что и команда DROP ROLE

Управление ролями PostgreSQL Linux часть 4.

Перейдём к практическим действиям использования ролей. Для начала посмотрим, какие роли, пользователи, БД существуют после установки и первичной настройки PgSQL.

Для сокращения фрагментации кода, строки

$ sudo su - postgres -s /bin/bash
-bash-4.4$ psql
будут в дальнейшем опущены, мы внутри psql
$ postgres=# \l Список баз данных Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа -----------+----------+-----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | template0 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres postgres=# \du Имя роли | Атрибуты, Список ролей | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {}

Создадим новую базу данных.

postgres=# CREATE DATABASE trest;

Введём в нашу БД новую роль (пользователя)

postgres=# CREATE ROLE trt LOGIN CREATEROLE;

Установим пароль для пользователя trt.

postgres=#  \password trt
Введите новый пароль для пользователя "trt":********** 
Повторите его:**********

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

$ psql -U trt
Пароль пользователя trt: 
...
trt=> 

Используя ключ du смотрим роли.

trt=> \du Список ролей Имя роли | Атрибуты | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {} trt | Создаёт роли | {}

Пользователь trt не обладает привилегированной ролью, мы вынужденны, для управления, обращаться к роли postgres. Это неправильно, тем более, что консольные команды createuser и dopuser для postgres не доступны, он не имеет регистрации в OC и это хорошо. Узко — целевое значение пользователя postgres, один из элементов безопасности БД — postgres владеет только теми данными, которыми управляет сервер БД.

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

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

Добавление административной роли.

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

postgres=# ALTER ROLE trt SUPERUSER CREATEDB CREATEROLE; ALTER ROLE postgres=# \du Список ролей Имя роли | Атрибуты | Член ролей ----------+-------------------------------------------------------------------------+------------ postgres | Суперпользователь, Создаёт роли, Создаёт БД, Репликация, Пропускать RLS | {} trt | Суперпользователь, Создаёт роли, Создаёт БД | {}

Заключение.

Тема управления ролями PostgreSQL широка и требует более глубокого рассмотрения. Читайте продолжение статьи в следующей части PostgreSQL Linux часть 5.

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

Как установить PostgreSQL Linux часть3.

Введение.

Продолжая изучение PgSQL переходим к рассмотрению специальной учётной записи postgres. Ранние мы кратко упоминали о пользователе postgres, см.часть2, теперь, в PostgreSQL Linux часть3, рассмотрим этот вопросе более подробно.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL Linux часть 3.

  • Стенд
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
      • PostgreSQL X.X
        • метод аутентификации md5
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь. имя: trt

Пользователь PostgreSQL Linux часть3.

При установке БД, создаётся пользователь, который регистрируется в операционной системе с именем — postgres. Учётная запись postgres обладает ролью суперпользователя, для кластера PqSQL и методом аутентификации, из «коробки», trust.

Пример атрибутов пользователя postgres для PostgreSQL Linux часть3.

$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)

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

  • PostgreSQL предлагает несколько вариантов аутентификации:
    • trust
    • password
      • scram-sha-256
      • md5
      • password
    • GSSAPI
    • SSPI
    • ident
    • peer
    • LDAP
    • RADIUS
    • по сертификату SSL
    • RAM
    • BSD

Из списка приведённого выше, остановимся на методе аутентификации md5, как более распространённым. Для включения md5, необходимо внести изменения в файл /var/lib/pgsql/data/pg_hba.conf.

Перед выполнением создадим резервную копию файла pg_hba.conf.

$ sudo su - postgres -s /bin/bash -bash-3.2 cp -n /var/lib/pgsql/data/pg_hba.conf pg_hba.conf.orig

Возврат старой копии файла pg_hba.conf, если требуется.

$ sudo su - postgres -s /bin/bash -bash-3.2$ cp pg_hba.conf.orig /var/lib/pgsql/data/pg_hba.conf

Смотрим содержание файла pg_hba.conf.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SHOW hba_file;
hba_file
---------------------------------
/var/lib/pgsql/data/pg_hba.conf 
(1 строка) 

Из листинга показанного выше видно, что файл pg_hba.conf содержит одну строку.

Создадим запрос для демонстрации содержимого файла pg_hba.conf до редактирования.

$ sudo su - postgres -s /bin/bash -bash-3.2$ psql postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules; line_number | type | database | user_name| address | auth_method -------------+-------+---------------+-----------+-----------+------------- 84 | local | {all} | {all} | | trust 86 | host | {all} | {all} | 127.0.0.1 | trust 88 | host | {all} | {all} | ::1 | trust 91 | local | {replication} | {all} | | trust 92 | host | {replication} | {all} | 127.0.0.1 | trust 93 | host | {replication} | {all} | ::1 | trust (6 строк) \q

Как видно из листинга в качестве метода аутентификации, для PostgreSQL Linux часть3, стоит trust.

Установка пароля для PostgreSQL Linux часть3.

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

  • Список команд для управления ролями и паролями PqSQL:
    • CREATE ROLE
    • ALTER ROLE
    • password — входит в сборник утилиты pqsql.

Для нашей задачи выбираем команду password.

Дополнительные сведения про роли и пароли читайте в следующих частях.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql 
postgres=# \password postgres
Введите новый пароль: 
Повторите его: 
postgres=# \q

Вносим изменения в столбец database, БД replication нас сейчас не интересует, все базы находятся на одном сервере, реплик нет

$ sudo su - postgres -s /bin/bash -bash-3.2$ echo 'local all all md5' > /var/lib/pgsql/data/pg_hba.conf -bash-3.2$ echo 'host all all all md5' >> /var/lib/pgsql/data/pg_hba.conf

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

$ sudo su - postgres -s /bin/bash
bash-3.2$ psql
postgres=# SELECT pg_reload_conf();
pg_reload_conf 
----------------
 t
(1 строка)
\q

Проверяем наши действия на ошибки.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ psql
postgres=# SELECT line_number, error FROM pg_hba_file_rules;  line_number | error 
-------------+-------
           1 | 
           2 | 
(2 строки)

Смотрим какой метод аутентификации представлен теперь.

$ sudo su - postgres -s /bin/bash -bash-3.2$ psql postgres=# SELECT line_number, type, database, user_name, address,auth_method FROM pg_hba_file_rules; line_number | type | database | user_name | address | auth_method -------------+-------+----------+-----------+---------+------------- 1 | local | {all} | {all} | | md5 2 | host | {all} | {all} | all | md5 (2 строки) \q

Проверяем с помощью параметра password_encryption, алгоритм хранения пароля.

-bash-3.2$ psql
postgres=# SHOW password_encryption;
password_encryption 
---------------------
 scram-sha-256
(1 строка)
\q

Таким образом мы установили метод аутентификации md5 с алгоритмом шифрования, scram-sha-256.

Заключение.

В приведённом выше примеры было показано, как установить пароль и метод аутентификации с шифрованием для привилегированного пользователя postgres. Для этого мы использовали самый распространённый метод аутентификации md5.

В дальнейшем, при широком использовании БД PostgreSQL, возникнет потребность доступа к базам данных других пользователей, использующих табличное пространство PqSQL в своей работе. Как создавать новых пользователей и управлять пользовательскими учётными записями, читайте в следующей части цикла статей о PostgreSQL.

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

Как установить PostgreSQL Linux часть 2.

Введение.

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

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL.

  • Стенд
  • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
    • PostgreSQL X.X
  • ПК Simply Linux, имя: lin-sl, IP=10.0.2.30
  • Пользователь. имя: trt

Ввод команд PqSQL.

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

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

Консоль пользователя.

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

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

Оболочка BASH.

Из среды BASH управление осуществляет пользователь с именем postgres. Пользователь создаётся в процессе установки PgSQL, ему присваивается роль администратора всего кластера.

Это, пока, единственный пользователь, имеющий привилегированные права для управления PgSQL.

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

Команда для входа в BASH.

$ sudo su - postgres -s /bin/bash
  • sudo — выполнить команду от имени другого пользователя
  • su — добавить права суперпользователя
  • s — путь к оболочке
  • /bin/bash — имя оболочки

Среда BASH позволяет выполнять основные команды управления сервером БД.

Интерактивный клиент psql.

Интерактивный клиент psql имеет расширенные и более гибкие возможности для работы с PqSQL, включая сложные SQL запросы.

Установленный сервер из коробки имеет метод авторизации trust. Это означает, что при подключению к серверу, находясь в консоли, пароль вводить не требуется.

Все доступные методы авторизации читайте в других частях.

Команда для входа в окружение psql выглядит так.

$ psql -Uuser -p[port]
  • Ключи.
  • -d имя базы данных
  • -h имя сервера
  • -p номер порта сервера, можно не указывать если стандартный
  • -U имя пользователя

Таким образом, основными средами управления PgSQL являются BASH и Psql.

Настройка клиента.

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

Осуществить удалённое подключение к PgSQL с помощью клиента psql можно изменив параметр listen_addresses в настройках postgresql.conf сервера.

Указанный параметр использует протокол TCP/IP. По умолчанию в listen_addresses указанно значение localhost — только для локальных подключений к серверу через unix-domain socket. Это значение можно оставить без изменений при условии, что сервер PgSQL и приложения установленные на нём, например Zabbix, работают на одном сервере.

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

используя права пользователя postgres.

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

Значение listen_addresses из коробки.

-bash-3.2$ psql
postgres=# SHOW listen_addresses;
 listen_addresses
------------------
 localhost
(1 строка)
\q

Меняем параметр listen_addresses с localhot на  *.  Переменная * позволяет разрешить подключение к серверу PgSQL из всех сетевых диапазонов организации по протоколу TCP/IP.

Корректировка listen_addresses .

-bash-3.2$ psql postgres=# \! sed "s/.*listen_addresses =.*/listen_addresses = '*'/" -i /var/lib/pgsql/data/postgresql.conf

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

-bash-3.2$ pg_ctl restart

Контролируем фиксацию значение.

-bash-3.2$ psql 
postgres=# SHOW listen_addresses;
 listen_addresses 
------------------
 *
(1 row)
\q

При желание параметр  *  можно сузить до нужного диапазона сети.

Журнал PqSQL.

Сервер PqSQL позволяет вести журнал производительности и ошибок своей работы. При установке сервера, режим журналирования отключен. Пользователь, при желании, может включить контроль записи работы сервера с помощью журнала, отредактировав файл postgresql.conf. После наших действий в дереве каталога /var/lib/pgsq/data создаётся папка log, для хранения файлов журналов

Папка журналов PgSQL.
Папка журналов PgSQL.

Команда включающая режим журнала.

# \sed "s/.*logging_collector =.*/logging_collector = 'on'/" -i /var/lib/pgsql/data/postgresql.conf

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

-bash-3.2$ pg_ctl restart

Контролируем фиксацию значения.

-bash-3.2$ psql
postgres=# SHOW listen_addresses;
 listen_addresses 
------------------
 *
(1 строка)

Заключение.

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

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

Как установить PostgreSQL Linux часть 1.

 Введение.

 В семейство управления базами данных входит PostgreSQL — рекомендованный для установки и эксплуатации Единым реестром Российских программ для ЭВМ и баз данных.

Этой публикацией, PostgreSQL часть 1, открывается цикл статей посвящённых теоретическим основам и практическим рекомендациям по вопросам установки, запуску и эксплуатации экземпляра сервера PostgreSQL в среде Linux.

Все статьи посвящённые PostgreSQL см.

тэг БД или поиск postgres

Подготовка PostgreSQL.

  • Стенд: 
    • Cервер ALT Linux, имя: lin-pq; IP 10.0.2.11;
    • Simply Linux, имя: lin-sl, IP=10.0.2.30
    • Пользователь, имя: trt

Определение.

  • В различных источниках можно встретить:
    • PostgreSQL
    • PL/pgSQL — процедурное расширение языка SQL
    • PgSQL

Архитектура и терминология.

  • PostgreSQL выполняет архитектуру клиент-сервер, включающий:
    • главный серверный процесс-имя postgres
    • клиентские запросы — графика, текст, вэб страница …

Главный процесс , postgres, порождает множество подпроцессов, для каждого подключаемого клиента, обеспечивая этим многопоточность.

Сервер PostgreSQL, согласно терминологии, является — экземпляром сервера.

Данные сервера хранятся в базах, один экземпляр PostgreSQL может работать с несколькими базами определяемые, как кластер БД.

Развёртывание PostgreSQL.

Для установки пакетов используйте графический менеджер — synaptic.

# apt-get update
# apt-get install synaptic
# synaptic
  • Для установки PqSQL необходимо:
    • проверить службу времени NTP.
    • проверить кодировку
locale -a|grep ru_RU
ru_RU
ru_RU.cp1251
ru_RU.ibm866
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
  • выбрать необходимую версию сервера PqSQL
# apt-cache show postgresql Виртуальный пакет postgresql предоставляется следующими пакетами: .... You should explicitly select one to show. E: Package postgresql is a virtual package with multiple providers.
  • установить выбранный пакет сервера
# apt-get install postgresqlXX-server

XX — версия выбранного сервера PqSQL

  • После установки создаются каталоги:
    • /var/lib/pgsql — папки кластера БД
    • /usr/share/pgsql — пакеты PostgreSQL

Формирование кластера PostgreSQL часть1.

Кластер — область хранения баз данных на диске

При установке сервера PqSQL создаётся пользователь postgres.

$ id postgres
uid=46(postgres) gid=46(postgres) группы=46(postgres)

Пользователь postgres осуществляет начальное управление сервером, обладая ролью суперпользователя. По умолчанию пароль для postgres не установлен — метод аутентификации из «коробки» trust.

Используя роль postgres, создадим кластер сервера. Для выполнения необходимо, что бы учётная запись осуществляющая действия с пользователем postgres была членом группы whell.

Открываем доступ группе wheel, для выполнения команд sudo.

# visudo … WHEEL_USERS ALL=(ALL) ALL … :wq

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

$ id -Gn trt
trt wheel uucp proc cdrom floppy cdwriter audio radio users vboxusers scanner xgrp camera

Используя роль postgres создадим кластер сервера PqSQL.

$ sudo su - postgres -s /bin/bash [sudo] password for trt:******** -bash-x.x$ initdb -k Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres". От его имени также будет запускаться процесс сервера. Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8". Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8". Выбрана конфигурация текстового поиска по умолчанию "russian". Контроль целостности страниц данных включён. исправление прав для существующего каталога /var/lib/pgsql/data... ок создание подкаталогов... ок выбирается значение max_connections... 100 выбирается значение shared_buffers... 128MB выбор реализации динамической разделяемой памяти... posix создание конфигурационных файлов... ок выполняется подготовительный скрипт... ок выполняется заключительная инициализация... ок сохранение данных на диске... ок ПРЕДУПРЕЖДЕНИЕ: используется проверка подлинности "trust" для локальных подключений. Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A, --auth-local или --auth-host при следующем выполнении initdb. Success. You can now start the database server using: service postgresql start or pg_ctl -D /var/lib/pgsql/data -l файл_журнала start -bash-x.x$ exit
  • sudo su — выполнить команду от имени пользователя входящего в группу администраторов
  • s — запуск команд в оболочке BASH

-bash-x.x— текущая версия bash

Команды для запуска PqSQL часть1.

  • Запуск PqSQL включают два варианта:
    • консольной командой
# systemctl start|status|stop|restart|  postgresql
  • утилитой pg_ctl из инструментария PqSQL
$ sudo su - postgres -s /bin/bash
-bash-x.x$ pg_ctl start | stop | restart| reload| status

Вид1. Листинг запуска сервера командой pg_ctl start

$ sudo su - postgres -s /bin/bash -bash-x.x$ pg_ctl start ожидание запуска сервера.... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv4 "127.0.0.1" открыт порт 5432 ... [1337] СООБЩЕНИЕ: для приёма подключений по адресу IPv6 "::" открыт порт 5432 ... [1337] СООБЩЕНИЕ: для приёма подключений открыт Unix-сокет "/tmp/.s.PGSQL.5432" ... [1337] СООБЩЕНИЕ: передача вывода в протокол процессу сбора протоколов ... [1337] ПОДСКАЗКА: В дальнейшем протоколы будут выводиться в каталог "log". готово сервер запущен

При запуске postgresql, может возникнуть сообщение, Вид2, это нормально.

стартовый PID автозагрузки запустил кластер

все команды pg_ctl, кроме start доступны

Вид2. Листинг сообщения о ошибке при старте PqSQL.

-bash-3.2$ pg_ctl start pg_ctl: возможно, уже работает другой сервер; всё же пробуем запустить этот сервер ожидание запуска сервера....ВАЖНО: файл блокировки "postmaster.pid" уже существует ПОДСКАЗКА: Другой экземпляр postmaster (PID 1118) работает с каталогом данных "/var/lib/pgsql/data"? прекращение ожидания pg_ctl: не удалось запустить сервер

Управление автозагрузкой PqSQL.

# systemctl enable postgresql
# systemctl is-enabled postgresql
enabled
  • Продолжение смотри:
  • «Как установить PostgreSQL Linux часть2«
  • «Как установить PostgreSQL Linux часть3«
  • «Как установить PostgreSQL Linux часть4«

Проверка работы сервера.

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

$ psql -U postgres -c 'select now()'
Пароль пользователя postgres: 
              now              
-------------------------------
 2023-03-21 13:05:28.538569+03
(1 строка)

Пользователь postgres имеет, из коробки, аутентификацию trust — без пароля

Подробности управления правами и ролями доступа к PgSQL, читайте в 3 части.

 Заключение.

 Сервер PqSQL зарекомендовал себя, как надёжный, устойчивый при длительной эксплуатации СУБД. Встроенные возможности PqSQL, позволяют конкурировать с Microsoft SQL и Oracle. Конечно, те кто вложился деньгами и знаниями в изучение и эксплуатацию MS SQL и Oracle, желания переходить или мигрировать на PqSQL не испытывают. Слишком высоки риски, да и годами устоявшиеся система управления вполне устраивает. Но жизнь и время требует новых подходов и решений. Создать с нуля БД и запустить в эксплуатацию это одно, а подготовить и выполнить план по миграции другое. Здесь требуется проведение предварительных действий. Начинать надо с обучения и развёртывания стенда, что бы на практике получать навыки и опыт работы с PostgreSQL.

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

В качестве «живого» примера установки и работы PqSQL,читайте статью.

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

Восстановление Zabbix PostgreSQL.

Ведение.

После того, как была создана резервная копия Zabbix PostgreSQL, переходим к рассмотрению вопроса восстановления сервера Zabbix PL/pgSQL из backup.

Все статьи посвящённые Zabbix см. полезные ссылки.

или тэг zabbix

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

  • Что могло сломаться:
    • не запускается БД
    • вышел из строя диск
    • сервер не запускается
    • сломаться могло всё что угодно

Подготовка.

  • Стенд
    • ALT Linux сервер, имя lin-zab; ip-10.0.2.13;
    • PostgreSQL
    • zabbix_23_back.tar.bz2 — созданный архив

Установив, предварительно, причину отказа Zabbix, приступаем к действиям, которые помогут полностью восстановить работу системы мониторинга. Мы, «придя в сознание», вспоминаем — у нас есть файл(ы) созданные резервным копированием, которые не поленились сделать. «Buckup наше всё!»

Ошибка связанна с БД.

Неисправность БД zabbix— сервер не запускается, в журнале читаем сообщения об отказе при запуске. Самое простое решение, не требующее большого времени на поиск неисправности — удаляем старую БД и восстанавливаем новую из backup. Конечно, мы сначала попытаемся исправить ситуацию, запустив команду проверки и исправления БД.

$ sudo su - postgres -s /bin/bash
-bash-X.X$ pg_amcheck -a
-bash-X.X$ pg_ctl restart

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

Восстановление БД PL/pgSQL.

Сразу надо отметить — резервное копирование БД Zabbix, выполнялось в режиме backup одной базы.

PqSQL допускает два режима создания резервной копии — целевой базы с помощью программы pg_dump и кластера pg_dumpall.

в архиве zabbix_23_back.tar.bz2 хранится только бд zabbix

Для начала следует разархивировать актуальную резервную копию в которой, вместе с другими файлами, находится dump БД zabbix.

# tar xvf zabbix_23_back.tar.bz2
# cd /tmp/zbk
...

Восстановить БД можно только при наличие «чистой» базы zabbix, иначе некуда буде копировать данные.

$ sudo su - postgres -s /bin/bash
-bash-X.X$ createdb zabbix

Теперь можно запустить процесс восстановления.

# psql -d zabbix -f zabbix.bd
  • d — имя БД
  • f — имя_файла

Восстановление сервера PL/pgSQL

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

Другое дело если выходит из строя сервер или отказывает HDD. Здесь уже требуется больше времени на поиски «железа» и установки базовой конфигурации сервера для восстановления Zabbix.

На новом оборудовании, требуется выполнить действия, которые осуществлялись при развёртывание сервера.

  • Восстановить:
    • имя сервера
    • IP сервера
    • пароль PgSQL
    • ту же версию Zabbix

После того, как сервер заработал и система мониторинга Zabbix пришла в готовность. Выполните действия по восстановлению БД из резервной копии, как описывалось выше.

Заключение.

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

Проверьте на стенде свои действия при восстановление Zabbix PgSQL.

выручит в дальнейшем

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

Справочная информация Zabbix Linux.

Введение.

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

Все статьи посвящённые Zabbix см. полезные ссылки.

или щёлкнув тэг zabbix

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

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

  • Стенд
    • ALT Linux сервер, имя zabbix; ip-10.0.2.13;
      • БД, имя- zabbix
      • БД пароль — zabbix
      • БД пользователь — zabbix
    • Simply Linux, имя lin-sl; ip-10.0.2.33

Основные задачи Zabbix справки.

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

Конфигурация агентов Zabbix.

Фрагмент типового сценария для zabbix server daemon.

# /etc/zabbix/zabbix_server.conf
...
# ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
...

Типовой сценарий zabbix agent daemon для сервера, фрагмент.

# /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1
# ListenPort=10050
ServerActive=127.0.0.1
Hostname=zabbix

Сценарий zabbix agent daemon для узла lin-sl, фрагмент.

# /etc/zabbix/zabbix_agentd.conf
...                            
ListenPort=10050
ServerActive=zabbix
Hostname=zabbix
...

Конфигурационный файл MySQL.

Для Zabbix MySQL файл конфигурации выглядит так.

# /var/www/webapps/zabbix/ui/conf/zabbix.conf.php ... // Zabbix GUI configuration file. $DB['TYPE'] = 'MYSQL'; $DB['SERVER'] = 'localhost'; $DB['PORT'] = '0'; $DB['DATABASE'] = 'zabbix'; $DB['USER'] = 'root'; $DB['PASSWORD'] = 'zabbix'; ... $ZBX_SERVER_NAME = 'zabbix'; ...

Конфигурационный файл PostgreSQL.

Если устанавливается Zabbix PostgreSQL, то настройки такие.

# /var/www/webapps/zabbix/ui/conf/zabbix.conf.php ... // Zabbix GUI configuration file. // Zabbix GUI configuration file. $DB['TYPE'] = 'POSTGRESQL'; $DB['SERVER'] = 'localhost'; $DB['PORT'] = '0'; $DB['DATABASE'] = 'zabbix'; $DB['USER'] = 'zabbix'; $DB['PASSWORD'] = 'zabbix'; // Schema name. Used for PostgreSQL. $DB['SCHEMA'] = ''; ... $ZBX_SERVER_NAME = 'zabbix'; ...

Службы Zabbix сервера.

Команды для управления работой сервера Zabbix MySQL

# systemctl start|stop|enable|is-enabled|restart|status zabbix_mysql

Команды для управления работой сервера Zabbix PostgreSQL

# systemctl start|stop|enable|is-enabled|restart|status zabbix_pgsql

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

# systemctl start|stop|enable|is-enabled|restart|status zabbix_agentd

Управление Zabbix SQL.

Выполнить управление MySQL можно командами.

# systemctl start|stop|enable|is-enabled|restart|status mysqld

Для работы с PostgreSQL действительны команды.

# systemctl start|stop|enable|is-enabled|restart|status postgresql

Будет полезна команда перехвата управления PqSQL из BASH.

$ sudo su - postgres -s /bin/bash
-bash-3.2$ pg_ctl restart

Веб службы Zabbix справки.

В качестве вэб сервера для работы Zabbix используют Apache2 или Night.

Управлять сервером Apache2 можно командами.

# systemctl start|stop|enable|is-enabled|restart|status httpd2

Для управления вэб сервером Night выполняем команды.

# systemctl start|stop|enable|is-enabled|restart|status nginx

Журналы Zabbix справки.

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

Команда просмотра в реальном времени журналов сервера и агента.

# tail -f /var/log/zabbix/zabbix_server.log
# tail -f /var/log/zabbix/zabbix_agentd.log

Порты Zabbix справки.

Следующие команды проверяют работу основных служб.

  • работа агентов сервера
# apt-get update # apt-get install nmap nmap -p T:10050,10051 zabbix ... Nmap scan report for zabbix (10.0.2.13) Host is up (0.000025s latency). Other addresses for zabbix (not scanned): fe80::a00:27ff:fee7:2121 rDNS record for 10.0.2.13: localhost PORT STATE SERVICE 10050/tcp open zabbix-agent 10051/tcp open zabbix-trapper

nmap — утилита исследования сети и портов

  • MySQL, по умолчанию, стартует в режиме UNIX socket.

UNIX socket — передача данных осуществляется без сетевого протокола при помощи байтового потока в буфере устройства.

обмен данными происходит локально, внутри сервера, для обеспечения безопасности.
  • смотрим существование процесса MySQL
# ps aux | grep mysqld mysql 3956 1.1 7.6 1724988 345996 ? Ssl 12:08 0:15 /usr/sbin/mysqld-C utf8 root 4367 0.0 0.0 6064 2136 pts/0 S+ 12:31 0:00 grep --color=auto mysqld
  • получаем информацию о работе UNIX socket
# mysqladmin -uroot -pzabbix --socket=/var/lib//mysql/mysql.sock version ... Server version X.X.XX-altX.X Protocol version XX Connection Localhost via UNIX socket UNIX socket /var/lib//mysql/mysql.sock Uptime: 45 min 36 sec ... Threads: 2 Questions: 2 Slow queries: 0 Opens: 2226 Flush tables: 3 Open tables: 5 Queries per second avg: 0.000
  • мониторинг MySQL с помощью журнала journalctl
# journalctl -u mysqld.service ... zabbix systemd[1]: Starting MySQL database server... ... zabbix systemd[1]: Started MySQL database server. ...
  • проверяем рабочий порт PostgreSQL
# nmap -p T:5432 zabbix ... Nmap scan report for zabbix (10.0.2.13) Host is up (0.000033s latency). Other addresses for zabbix (not scanned): fe80::a00:27ff:fee7:2121 rDNS record for 10.0.2.13: localhost PORT STATE SERVICE 5432/tcp open postgresql
  • проверяем работу агента Zabbix на узле lin-sl
# nmap -p T:10051 lin-sl ... Nmap scan report for lin-sl (10.0.2.33) Host is up (0.000048s latency). Other addresses for lin-sl (not scanned): 10.0.2.33 rDNS record for 127.0.0.1: lin-sl PORT STATE SERVICE 10051/tcp open zabbix-trapper

Заключение.

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

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

Устранение Zabbix ошибок Linux.

Введение.

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

Все статьи посвящённые Zabbix см. полезные ссылки.

или щёлкнув тэг zabbix

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

В статье блога рассмотрены наиболее часто встречающие, при начальной эксплуатации Zabbix, ошибки.

  • Стенд
    • ALT Linux сервер, имя lin-zab; ip-10.0.2.13;

Виды Zabbix ошибок.

Основные коллизии и неисправности можно разделить на следующие группы.

  • Группы ошибок:
    • настройки агентов Zabbix
    • прав доступа к папкам и файлам zabbix
    • отсутствие нужной утилиты

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

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

Перечень Zabbix ошибок.

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

Zabbix ошибка выполнения команды.

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

nmap — инструмент исследования сети и сканер безопасности портов

Попытка запуска команды «обнаружение операционной системы».

Zabbix обнаружение операционной системы.
Обнаружение операционной системы.

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

Ошибка выполнения команды nmap Zabbix.
Ошибка выполнения команды nmap Zabbix.

Возникшая неисправность указывает на отказ доступа к каталогу /usr/bin/, где находится утилита nmap.

Для решения проблемы, проверяем/устанавливаем утилиту nmap.

# apt-get update
# apt-get install nmap

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

# visudo ... ## Uncomment to allow members of group wheel to execute any command WHEEL_USERS ALL=(ALL) ALL ## Same thing without a password # WHEEL_USERS ALL=(ALL) NOPASSWD: ALL zabbix ALL=(root) NOPASSWD: /usr/bin/nmap ...

Добавляем пользователя zabbix в группу администраторов whell.

# usermod -a -G wheel zabbix

Снова запускаем команду «обнаружение операционной системы».

Не забудьте перезапустить сервер Zabbix, см. справка.

Zabbix нажатие кнопки «Detect operating system».
Нажатие кнопки «Detect operating system».

Теперь мы видим полную информацию о проверяемом узле.

Zabbix правильная работа кнопки «Detect operating system».
Правильная работа кнопки «Detect operating system».

Zabbix ошибка: host [hostname] notfound

Следующая ошибка появляется при просмотре журнала Zabbix.

# tail -f /var/log/zabbix/zabbix_server.log ... ..no active checks on server [127.0.0.1:10051]: host [zabbix ] not found ...
  • Требуется проверить:
    • сведения о узле: Панель -«Настройка-Узлы сети».
Диагностика работы узла Zabbix.
Диагностика работы узла.
  • настройки DNS сервера на котором работает Zabbix
$ cat /etc/hosts
127.0.0.1 zabbix zabbix.trt.vs localhost  
10.0.2.13 zabbix zabbix.trt.vs localhost 
  • файл конфигурации Zabbix PostgreSQL, для MySQL см.справка
# cat /var/www/webapps/zabbix/ui/conf/zabbix.conf.php // Zabbix GUI configuration file. $DB['TYPE'] = 'POSTGRESQL'; $DB['SERVER'] = 'localhost'; $DB['PORT'] = '0'; $DB['DATABASE'] = 'zabbix'; $DB['USER'] = 'zabbix'; $DB['PASSWORD'] = 'zabbix'; // Schema name. Used for PostgreSQL. $DB['SCHEMA'] = ''; // Used for TLS connection. $DB['ENCRYPTION'] = true; $DB['KEY_FILE'] = ''; $DB['CERT_FILE'] = ''; $DB['CA_FILE'] = ''; $DB['VERIFY_HOST'] = false; $DB['CIPHER_LIST'] = ''; ...

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

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

— Не работает агент Zabbix, красный «фонарь».

Проверить настройки агента Zabbix.
Проверить настройки агента Zabbix.

Zabbix ошибка: session terminated, re-login, please…

Пользователю отказано в управление панелью Zabbix, время сессии истекло, пере логин не помогает.

Ошибка входа в панель Zabbix.
Ошибка входа в панель Zabbix.

Для исправления ошибки, в браузере, выполните следующие шаги…

Как очистить куки браузера.
Как очистить куки браузера.

Zabbix ошибка: проверки traceroute.

При вызове команды из панели Zabbix, появляется сообщение «отказ запуска скрипта traceroute».

Zabbix команда traceroute не выполняется.
Команда traceroute не выполняется.

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

Заключение.

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

При подготовке сервера для Zabbix, уделяйте особое внимание настройкам DNS и NTP.

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

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

Установка Zabbix Linux Sisyphus.

Введение.

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

Sisyphus — репозиторий пакетов свободных программ ALT Linux Team

Пакеты Sisyphus можно устанавливать на любой дистрибутив ALT Linux, но при условии, что вы уверенны в своих действиях. По сути Sisyphus является «песочницей», здесь разработчики выкладывают собранные пакеты готовые к использованию. Далее пакеты начинают тестировать, используя алгоритм проверки зависимостей при взаимодействии библиотек пакетов различных программ.

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

В отличие от нестабильной ветки Sisyphus существует стабильное ответвление Branch, на которой работают все дистрибутивы ALT Linux компании ООО «Базальт СПО»

Понятие «стабильное» — не нарушение работы системы при установке любой программы из репозитория.

Подготовка.

  • Стенд
    • ALT Linux сервер, имя lin-zab; ip-10.0.2.13;
    • MySQL или PostgreSQL

Предварительные условия — Zabbix установлен и работает, требуется обновить версию до актуальной, как на сайте производителя.

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

Можно предпринять попытки самостоятельного компилирования исходников, но будет лучше и безопасней поискать обновление в Sysiphus. Как правило там уже лежит свежий пакет нужной вам программы. Вопрос «Почему нет в Branch» зависит от многих факторов, на которые могут ответить только разработчики.

Подключение Sysiphus.

Подключившись к серверу произведём переключение репозитория с Branch на Sysiphus. Для наглядности наших действий, воспользуемся графическим менеджером пакетов, Synaptic.

# apt-get update
# apt-get install synaptic
# synaptic

В качестве примера установим из Sysiphus свежий пакет Zabbix.

 Когда на экране появится окно менеджера пакетов Synaptic, необходимо аккуратно переключиться на ветку Sysiphus.

Переключение репозитория с branch на sisyphus.
Переключение репозитория с Branch на Sisyphus.

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

Поиск пакета.
Поиск пакета, некоторые версии программ «запиканы».

Выполнив необходимые действия, возвращаем систему на ветку branch.

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

$ apt-repo
$ rpm [pX] ftp://server/ pX/branch/x86_64 classic
$ rpm [pX] ftp://server/ pX/branch/x86_64-i586 classic
$ rpm [pX] ftp://server/ pX/branch/noarch classic

Заключение.

Для тех, кто хочет следить за новыми версиями программного обеспечения, будет полезно пользоваться Sysiphus. Здесь надо помнить об одном важном условии, ваша система должна иметь минимальное количество установленных пакетов. Почему это так важно, становится ясно из условий, при котором зависимости библиотек Sisyphus начинают «цепляться» к уже установленным библиотекам.

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

Прежде чем подключаться к Sisyphus, запланируйте установку минимальной конфигурации ALT Linux, которая выполнит загрузку основных пакетов ядра. В противном случае, если установка произведена по «полной», да ещё с графикой вы гарантированно получаете проблемы с зависимостями различных библиотек при использовании Sisyphus .

Если всё сделано правильно, то можно уверено выполнять манипуляции с Sisyphus и работать на актуальной версии Zabbix.

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

Восстановление Zabbix MySQL.

Ведение.

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

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

  • Что могло сломаться:
    • не запускается БД
    • вышел из строя диск
    • сервер не запускается

Подготовка.

  • Стенд
    • ALT Linux сервер, имя lin-zab; ip-10.0.2.13;
    • MySQL 8.x.x
    • zabbix_23_back.tar.bz2 — созданный ранние архив

Установив, предварительно, причину отказа Zabbix, приступаем к действиям, которые помогут восстановить работу системы мониторинга. Мы, «придя в сознание», вспоминаем, что у нас есть файл(ы) созданные резервным копированием, которые не поленились создать в ручную или по расписанию. «Buckup наше всё!»

Ошибка MySQL.

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

# mysqlcheck -uroot -pzabbix --auto-repair --check --all-databases

Если БД стартовало, то должна начаться проверка и автоматическое исправление таблиц. В противном случае получаем сообщение.

# mysqlcheck -uroot -pzabbix --auto-repair --check --all-databases mysqlcheck: [Warning] Using a password on the command line interface can be insecure. mysqlcheck: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) when trying to connect

Из сообщения консоли становится понятно — БД остановлено и не загружается. Можно много времени потратить на поиск решения по исправлению БД — проще и быстрее переустановить MySQL, ведь у нас есть backup.

Удаление MySQL.

  • для удаления выполним команду
# apt-get update
# apt-get remove MySQL-server
  • удаляем папки БД
# rm -r /var/lib/mysql
# rm -r /etc/my.cnf.d 
# systemctl restart

Установка MySQL.

Пакеты необходимые для работы MySQL.

# apt-get update
# apt-get install MySQL-server
# systemctl start mysqld
# systemctl enable mysqld

Восстановление MySQL Zabbix.

Теперь нужно разархивировать, актуальную резервную копию в которой, вместе с другими файлами, находится dump БД.

# tar xvf zabbix_23_back.tar.bz2
# cd /tmp/zbk

Остаётся вернуть dump в базу данных MySQL.

# mysql -uroot -pzabbix -A < all_bd.sql

Если база в архиве исправна, то при вызове панели, см. установку Zabbix MySQL, увидим восстановленные узлы и настройки системы мониторинга.

Восстановление сервера.

Рассмотрим вопрос неисправности жёсткого диска или сервера, для Zabbix это практически звучит одинаково — система не работает.

Все действия должны быть такими же, как и при первой установке.

При установке нового сервера, необходимо полностью восстановить: имя, IP и пароль MySQL сервера. После этого необходимо выполнить все вышеуказанные манипуляции и действия по установке, см установка Zabbix MySQL.

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

# cd /home # tar xvf zabbix_23_back.tar.bz2 # cd /tmp/zbk # mysql -uroot -pzabbix -A < all_bd.sql # cp -r zabbix_server.conf /etc/zabbix/zabbix_server.conf # cp -r zabbix.conf.php /var/www/webapps/zabbix/frontends/php/conf/zabbix.conf.php # systemctl restart mysqld # systemctl restart httpd2

Заключение.

Работа по восстановлению сервера мониторинга Zabbix , возникает не часто. Обычно система долгое время стабильно и ровно работает, собирает мониторинг, реагирует на события, хранит историю своих действий в журнале событий. Всё меняется в одно мгновение, если система «падает». Материл статьи поможет администратору сориентироваться в аварийной ситуации и принять правильные действия по восстановлению Zabbix MySQL.

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

Резервное копирование Zabbix PostgreSQL.

Введение.

Продолжая публикации о Zabbix, см.полезные ссылки, переходим к обсуждению вопроса создания резервной копии Zabbix PostgreSQL.

Многие админы согласятся — «Buckup наше всё!» и это действительно так. Что бы мы не делали и какие бы усилия не прикладывали, всё окажется бесполезным если нет возможности к восстановлению программы после краха.

Подготовка.

  • Стенд
    • ALT Linux сервер, имя lin-zab; ip-10.0.2.13;
    • БД PostgreSQL

План создания резервной копии.

  • Что надо сохранить:
    • dump БД
    • настройки сервера
    • настройки серверного агента
    • журналы

dump БД — содержит структуру и контент базы данных

  • Каталоги Zabbix.
    • /etc/zabbix — файлы агентов
    • /var/www/webapps/zabbix/ui — рабочий каталог
    • /var/www/webapps/zabbix/ui/conf/zabbix.conf.php — настройки
    • /var/log/zabbix — журналы Zabbix
    • /usr/share/doc — пакеты Zabbix
    • /var/lib/pgsql — папки кластера БД PostgreSQL
    • /usr/share/pgsql -пакеты PostgreSQL

Содание dump PostgreSQL.

Для создания резервной копии воспользуемся программой pg_dump — выгрузить только одну БД zabbix.

# pg_dump -Upostgres zabbix > zabbix.db

Для backup кластера PgSQL используйте программу pg_dumpall.

pg_dumpall предназначена для «выгрузки» всех БД кластера

Копирование каталогов Zabbix.

Вся информация о работе агентов Zabbix и настройках подключённых узлов- хранится в БД

Для копирования каталогов используем утилиту cp.

# cp -r /etc/zabbix/zabbix_server.conf /home/bkz # cp -r /etc/zabbix/zabbix_agentd.conf /home/bkz # cp -r /var/www/webapps/zabbix/ui/conf/zabbix.conf.php /home/bkz # cp -r /var/log/zabbix /home/bkz

Мы сохранили необходимые файлы для восстановления сервера мониторинга вводя команды с консоли.

Автоматизация Backup PostgreSQL.

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

Для выполнения backup по заданному расписанию создадим файл zbk.sh командной оболочки bach, с инструкцией к исполнению при обращении к нему.

Напишем файл zbk.sh командной оболочки bach с инструкцией к исполнению при обращении к нему.

#!/bin/bash TEMPDIR=/tmp/zbk/ BACKUPDIR=/home/ mkdir -p $TEMPDIR # Создать dump PostgreSQL копировать во временный каталог pg_dump -Upostgres zabbix > $TEMPDIR/zabbix.db # Копировать конфиги во временную директорию cp -r /etc/zabbix/zabbix_server.conf $TEMPDIR cp -r /etc/zabbix/zabbix_agentd.conf $TEMPDIR cp -r /var/www/webapps/zabbix/ui/conf/zabbix.conf.php $TEMPDIR cp -r /var/log/zabbix $TEMPDIR # Сжать и добавить дату создания(максимально до 31 дня месяца) tar -cjf $BACKUPDIR/zabbix_`date +%d`_back.tar.bz2 $TEMPDIR # Очистить временный каталог rm -rf /tmp/zbk

Файл содержит всё необходимое для последовательного выполнения действий по созданию Backup Zabbix PostgreSQL

Созданный архив будет иметь название и формат записи: zabbix_23_back.tar.bz2

Выполнение Backup PostgreSQL Zabbix.

Сценарий zbk.sh следует поместить в /usr/local/bin с правами.

# chmod 744 /usr/local/bin/zbk

/usr/local/bin — пользовательский каталог хранения сценариев оболочки bash

Скрипт zbk.sh, для проверки, можно запускать с консоли.

# zbk.sh

Для выполнения запуска программ по расписанию используем cron.

cron — планирует выполнение команд в указанные даты и время

Формирование расписания для backup zabbix postgreSQL.

# crontab -e
minute (0-59),
| hour (0-23),
| | day of the month (1-31),
| | | month of the year (1-12),
| | | | day of the week (0-6 with 0=Sunday).
| | | | | commands
00 00 * * 0 zbk

Заключение.

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

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

Восстановление резервной копии читайте в разделе полезные ссылки.

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

Index