Моя задумка/наработка: Хочу проработать в тестовом окружении какими действиями нужно обозначить мою систему мониторинга на базе Zabbix 5.0 LTS on Ubuntu 18.04
дабы снимать интересующие меня показания с Windows Server 2016
на которой развернут SQL Database 2016
версии 13.0.5850.14
. На случай если Вы не знаете как добиться устанавливаю такой версии, то Вам следует ознакомиться с заметкой "Порядок поднятия SQL (srv-db01) как на работе"
.
Как всегда для отработки шагов используется тестовый полигон на базе Proxmox 6 on Debian 10
Мне понадобится:
- srv-zabbix.polygon.lan который развернут по заметке
srv-zabbix.polygon.lan <=> 172.33.33.105
- srv-sql.polygon.lan который развернут по заметке выше.
srv-sql.polygon.lan <=> 172.33.33.115
Система Windows
не в домене.
Итак поехали, шаги чтобы добиться решения поставленной задачи.
Шаг №1:
Сперва нужно на Windows Server 2016 Std SQL Server 2016
проверить, что разрешены удаленные подключения с Вашего сервиса мониторинга Zabbix 5.0.
Либо отключаем брандмауэр
Win + X - Command Prompt (Admin)
C:\Windows\system32> netsh advfirewall set allprofiles state off
либо добавляем правило:
C:\Windows\system32> netsh advfirewall firewall add rule name="Zabbix ODBC" protocol=TCP localport=1433 action=allow dir=IN remoteip=172.33.33.105
нажимаю значок с лупой возле меню пуск и набираю manag
, в найденном нахожу Microsoft SQL Server Management Studio
и через правый клик мышью на данному приложению для удобства выбираю Pin to Start
, теперь могу просто нажать клавишу Пуск (или Win
) и быстро перейти в оснастку SQL Management Studio
Подключаюсь с
Server type: Database Engine
Server name: srv-sql
Authentication: Windows Authentication
и нажимаю Connect
(отработает если на srv-sql
вы авторизованы из под той учетной записи которая имеет доступ на SQL
)
Затем через правый клик на srv-sql (SQL Server 13.0.5850.14)
захожу в Properties
(Свойства)
перехожу в Select a page: Connections
и проверяю, что стоит галочка
Allow remote connections to this server: отмечено галочкой
после нажимаю OK.
Шаг №2:
Для подключения c системы где установлен Zabbix 5.0 LTS
к SQL Server
обязательно должна использовать SQL
авторизацию, а значит на Вашем SQL Server
должна быть включена смешанная аутентификация через оснатку SQL Management Studio
.
Проверяю, что у меня используется смешанная аутентификация:
SQL Management Studio
— авторизуюсь под Windows
аутентификацией — открываю Properties: SRV-SQL (SQL Server 13.0.5850.14) - Select a page: Security
и вижу, что у меня только Windows
аутентификация:
Чтобы включить аутентификацию и через SQL
, нужно:
Server authentication: отметить SQL Server and Windows Authentication mode
Для применения изменений перезапустить SQL Server:
SQL Management Studio
— авторизуюсь под Windows
аутентификацией — через правый клик мышью на SRV-SQL (SQL Server 13.0.5850.14)
выбираю меню Restart
Подтвердить свое намерение путем нажатия Yes
на запрос “Are you sure you want to restart the MSSQLSERVER service on SRV-SQL?”
Stopping this service will also stop SQL Server Agent (MSSQLSERVER). Do you with to continue? Yes
После все также через оснастку SQL Management Studio
включить учетную запись Login: sa
, т. к. сейчас она выключена.
SQL Management Studio
— авторизуюсь под Windows
аутентификацией — Security - Logins
— смотрите скриншот для наглядного понимания
Щелкаю левой кнопкой мыши по учетной записи sa
, задаю ей пароль:
Select a page: General
Password: 712mbddr@
Confirm password: 712mbddr@
включаю ее
Select a page: Status
Login:
изменяю Disabled
на Enabled
и нажимаю OK
окна “Login Properties - sa”
и нажимаю клавишу F5
дабы теперь в списке всех учетных записей Logins
учетная запись с логином sa
стала активной, т. е. Без пометки красным крестиком, что она выключена.
Шаг №3:
Проверяю, что могу выполнить авторизацию под SQL
учетной записью sa
:
и нажимаю Connect
— и успешно:
а если через консоль командной строки утилиты sqlcmd:
Win + Command Prompt (Admin)
C:\Windows\system32>sqlcmd -S srv-sql -H 172.33.33.115 -U sa -P 712mbddr@
1> — это приглашение свидетельствует об успешном подключении.
1> quit C:\Windows\system32>
Шаг №4:
Т.к. мой Zabbix
сервис будет подключаться к SQL
без установки Zabbix Agent
мне нужно установить ODBC-драйвер (Open Database Connectivity):
ekzorchik@srv-zabbix:~$ sudo apt-get install -y curl ekzorchik@srv-zabbix:~$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - ekzorchik@srv-zabbix:~$ sudo bash -c "curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list" ekzorchik@srv-zabbix:~$ sudo apt-get update ekzorchik@srv-zabbix:~$ sudo apt-get install -y msodbcsql17 mssql-tools Do you accept the license terms? Yes ekzorchik@srv-zabbix:~$ dpkg -l | grep odbc ii libodbc1:amd64 2.3.7 amd64 ODBC library for Unix ii msodbcsql17 17.6.1.1-1 amd64 ODBC Driver for Microsoft(R) SQL Server(R) ii odbcinst 2.3.7 amd64 Helper program for accessing odbc ini files ii odbcinst1debian2:amd64 2.3.7 amd64 Support library for accessing odbc ini files ii unixodbc 2.3.7 amd64 Basic ODBC tools
Проверяю конфигурацию:
ekzorchik@srv-zabbix:~$ sudo odbcinst -j unixODBC 2.3.7 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /root/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8 ekzorchik@srv-zabbix:~$
Проверю, а что содержится в файле odbcinst.ini:
ekzorchik@srv-zabbix:~$ cat /etc/odbcinst.ini [ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1 UsageCount=1
В данном выводе важно, что зарегистрировался драйвер libmsodbcsql-17.6.so.1.
Но может это не произойти, тогда вручную даем команду:
ekzorchik@srv-zabbix:~$ odbcinst -i -d -f /etc/odbcinst.ini odbcinst: SQLInstallDriverEx failed with Invalid install path. ekzorchik@srv-zabbix:~$ sudo odbcinst -i -d -f /etc/odbcinst.ini odbcinst: Driver installed. Usage count increased to 2. Target directory is /etc ekzorchik@srv-zabbix:~$
После проверяю регистрацию:
ekzorchik@srv-zabbix:~$ odbcinst -q -d -n "ODBC Driver 17 for SQL Server" [ODBC Driver 17 for SQL Server] Description=Microsoft ODBC Driver 17 for SQL Server Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1 UsageCount=2 ekzorchik@srv-zabbix:~$
Шаг №5:
Переходим к настройки подключения Zabbix 5.0 к srv-sql (SQL-SQL (SQL Server 13.0.5850.14)):
ekzorchik@srv-zabbix:~$ sudo nano /etc/odbc.ini [srv-sql] Description = srv-sql master Driver = ODBC Driver 17 for SQL Server Server = tcp:172.33.33.115,1433 User = sa Password = 712mbddr@ Database = master
Зарегистрируем источник данных:
ekzorchik@srv-zabbix:~$ odbcinst -i -s -f /etc/odbc.ini
Проверим регистрацию:
ekzorchik@srv-zabbix:~$ odbcinst -q -s -n srv-sql [srv-sql] Description=srv-sql master Driver=ODBC Driver 17 for SQL Server Server=tcp:172.33.33.115,1433 User=sa Password=712mbddr@ Database=master ekzorchik@srv-zabbix:~$
Проверим все ли получилось. Для начала подключимся к удаленной СУБД:
ekzorchik@srv-zabbix:~$ isql -v srv-sql sa 712mbddr@ +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> quit ekzorchik@srv-zabbix:~
На заметку: Подключение через ODBC
-драйвер работает только через SQL
учетную запись, если Вы попробуете указывать Windows
учетную запись даже у нее есть все права, то будете получаться ошибку вида:
ekzorchik@srv-zabbix:~$ isql -v srv-sql ekzorchik 712mbddr@ [28000][unixODBC][Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user 'ekzorchik'. [ISQL]ERROR: Could not SQLConnect ekzorchik@srv-zabbix:~$
Шаг №6:
Раз подключение проходит, то можно проверить выполнив подключение и запросив какую-либо информацию, к примеру количество баз на SQL Server
(по умолчанию если он только развернут, то баз всего 4 — это системные базы: master, model, msdb,tempdb)
ekzorchik@srv-zabbix:~$ isql -v srv-sql sa 712mbddr@ +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> select count(*) from [sys].[databases]; +------------+ | | +------------+ | 4 | +------------+ SQLRowCount returns 0 1 rows fetched SQL> quit ekzorchik@srv-zabbix:~
запрос вернул число 4
что соответствует количеству баз на sql server.
Шаг №7:
Теперь нужно поставить хост srv-sql
на мониторинг и создать элемент данных на проверку количества баз:
http://IP&DNS/zabbix - user&pass - Configuration - Hosts
— перехожу в хост srv-sql
, затем Items - Create Item
Name: ODBC Check Count Database
Type: Database monitor
Key: db.odbc.select[ODBC_Check_Count_Database,srv-sql]
User name: sa
Password: 712mbddr@
SQL query: select count(*) from [sys].[databases]
Type of information: Numeric (unsigned)
Update interval: 1m
Enabled: отмечаю галочкой
и нажимаю Add
и нажимаю Apply
На заметку: в ключе key Description
не должно быть пробелов, поэтом заменяю их на символ нижнего подчеркивания.
Проверю, что после выполнения данного элемента данных по отношению к хосту выводит:
http://IP&DNS/zabbix - user&pass - Monitoring - Latest data - Hosts - Select -
Host group: GROUP_SQL
отмечаю srv-sql
и нажимаю Select, Apply
Итого я для себя составил пошаговые действия как посредством ODBC
драйвера подключаться к SQL Server
и снимать различные показатели требующие моего уведомления (я использую Email & Telegram
).
На этом заметка завершена дабы не усложнять написанное. Продолжение следует. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.