Go to file
paspo b3e648baae
All checks were successful
continuous-integration/drone/push Build is passing
initial import
2023-07-28 14:43:54 +02:00
src initial import 2023-07-28 14:43:54 +02:00
.drone.star initial import 2023-07-28 14:43:54 +02:00
LICENSE initial import 2023-07-28 14:43:54 +02:00
README.md initial import 2023-07-28 14:43:54 +02:00

Modified zabbix proxy with MSSQL support

Build Status

Available tags

Because of unavailability of the Microsoft ODBC driver for other architectures, only amd64 is supported. We can easily expand that in the future.

These are the supported upstream flavours:

flavour image to use
sqlite3 docker.asperti.com/paspo/zabbix-proxy-sqlite3-mssql
mysql docker.asperti.com/paspo/zabbix-proxy-mysql-mssql

These are the supported upstream versions:

version
6.4
6.2
6.0
5.0
4.0

You can use the desired version as image tag (e.g. docker.asperti.com/paspo/zabbix-proxy-sqlite3-mssql:5.0), the correct arch will be used. If you prefer, you can also pin to a specific architecture: docker.asperti.com/paspo/zabbix-proxy-sqlite3-mssql:5.0-amd64.

Usage with docker compose

version: '3.9'

services:
  zabbix-proxy:
    image: docker.asperti.com/paspo/zabbix-proxy-mysql-mssql:6.0
    restart: always
    ports:
      - '10051:10051'
    volumes:
      - ./zabbix-proxy.psk:/var/lib/zabbix/enc/zabbix-proxy.psk:ro
      - ./odbc.ini:/etc/odbc.ini:ro
    environment:
      ZBX_DATASENDERFREQUENCY: 20
      ZBX_CONFIGFREQUENCY: 300
      ZBX_STARTDISCOVERERS: 3
      ZBX_TLSACCEPT: psk
      ZBX_TLSCONNECT: psk
      ZBX_TLSPSKFILE: zabbix-proxy.psk
      ZBX_TLSPSKIDENTITY: "PSK identity"
      ZBX_SERVER_HOST: zabbix.server.com:12345
      ZBX_HOSTNAME: px_73271_example

Create the PSK file

openssl rand -hex 32 | tee /zabbix-proxy.psk

Create the odbc.ini

[server_dsn_123]
Driver = ODBC Driver 17 for SQL Server
DSN = MSSQL17
Server = tcp:192.168.12.34
Port = 1433

Configuration in zabbix

First, apply the MSSQL by ODBC template to an host. You can find it here. Then configure the following macros:

Macro Value
{$MSSQL.DSN} This refers to the odbc.ini file. server_dsn_123 in this example.
{$MSSQL.INSTANCE} If needed, you can put here the name of the instance, in the format MSSQL$instance
{$MSSQL.USER} No need to explain.
{$MSSQL.PASSWORD} Also, no need to explain.

Monitoring user

It's always better to use a dedicated user for monitoring. Please don't use sa.

USE [master];
CREATE LOGIN zbx_monitor
  WITH PASSWORD=N'superSecurePassword', 
  DEFAULT_DATABASE=[master], 
  DEFAULT_LANGUAGE=[us_english], 
  CHECK_EXPIRATION=OFF, 
  CHECK_POLICY=OFF
GRANT VIEW SERVER STATE TO zbx_monitor;
GRANT VIEW ANY DEFINITION TO zbx_monitor;
USE msdb;
CREATE USER zbx_monitor FOR LOGIN zbx_monitor; 
GRANT SELECT ON OBJECT::msdb.dbo.sysjobs TO zbx_monitor;
GRANT SELECT ON OBJECT::msdb.dbo.sysjobservers TO zbx_monitor;
GRANT SELECT ON OBJECT::msdb.dbo.sysjobactivity TO zbx_monitor;
GRANT EXECUTE ON OBJECT::msdb.dbo.agent_datetime TO zbx_monitor;