[ZBXNEXT-8186] Build zabbix-proxy-sqlite3 docker image without using shared memory for MikroTik Created: 2023 Jan 01  Updated: 2024 Sep 21  Resolved: 2024 Feb 14

Status: Closed
Project: ZABBIX FEATURE REQUESTS
Component/s: Proxy (P)
Affects Version/s: 6.0.12
Fix Version/s: None

Type: New Feature Request Priority: Trivial
Reporter: Martin Vancl Assignee: Andris Zeila
Resolution: Fixed Votes: 2
Labels: docker, mikrotik, proxy, routeros
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

MikroTik RouterOS 7.6


Attachments: PNG File image-2023-11-18-20-58-09-335.png    

 Description   

Mikrotik in version 7 supports Docker. It would be great to run a zabbix proxy on a $79 router.

I tried running "zabbix/zabbix-proxy-sqlite3:alpine-6.0-latest" docker image on router MikroTik hAP ac².

The container starts without any problem but finally crashes with this error:

"zabbix_proxy [2]: cannot create locks: cannot allocate shared memory for locks"

I looked it up, and it's a MikroTik "bug/missing feature": https://forum.mikrotik.com/viewtopic.php?t=178342#p886791

Shared Memory (SHM) is not enabled and (/dev/shm) is missing

Link to the official documentation: https://help.mikrotik.com/docs/display/ROS/Container

Is it possible to create zabbix-proxy-sqlite3 docker image without using shared memory?

 

[mikrotik] > /disk/format-drive 0 file-system=ext4 partition-table=yes label=flashdrive
  formatted: 100%

[mikrotik] > /disk/print
Flags: M, r - RAID-MEMBER; p - PARTITION
Columns: SLOT, MODEL, SERIAL, INTERFACE, NAME, FS, LABEL
#    SLOT        MODEL                  SERIAL                 INTERFACE         NAME   FS    LABEL
0    usb1         USB  SanDisk 3.2Gen1  050.....7bd7  USB 2.10 480Mbps       1 Mp usb1-part1                                                                                                                                                                     disk3  ext4  flashdrive
[mikrotik] > 

[mikrotik] > /interface/veth/add name=veth1 address=10.70.3.2/24 gateway=10.70.3.1
[mikrotik] > /interface/bridge/add name=dockers
[mikrotik] > /ip/address/add address=10.70.3.1/24 interface=dockers
[mikrotik] > /interface/bridge/port add bridge=dockers interface=veth1
[mikrotik] > /ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.70.3.0/24

[mikrotik] > /container/config/set ram-high=32M

[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_HOSTNAME value="mikrotik.example.net"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_SERVER_HOST value="zabbix.example.net"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_TIMEOUT value="15"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_STARTPOLLERS value="2"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_STARTTRAPPERS value="1"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_CONFIGFREQUENCY value="30"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_TLSPSKIDENTITY value="mikrotik.example.net"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_TLSPSKFILE value="/etc/zabbix/zabbix_proxy.psk"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_TLSCONNECT value="psk"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_TLSACCEPT value="psk"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_CACHESIZE value="2M"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_HISTORYCACHESIZE value="4M"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_HISTORYINDEXCACHESIZE value="2M"
[mikrotik] > /container/envs/add name=zabbixproxy_envs key=ZBX_VMWARECACHESIZE value="1M"

[mikrotik] > /container/mounts/add name=zabbixproxy_psk src=disk3/zabbixproxy.psk dst=/etc/zabbix/zabbix_proxy.psk

[mikrotik] > /container/config/set registry-url=https://registry-1.docker.io tmpdir=disk3/pull

[mikrotik] > /container/add remote-image="zabbix/zabbix-proxy-sqlite3:alpine-6.0-latest" interface=veth1 root-dir="disk3/zabbixproxy" mounts=zabbixproxy_psk envlist=zabbixproxy_envs hostname="mikrotik.example.net"

[mikrotik] > /container/print
 0 name="40ecd139-4104-46b4-8daf-05824001ef89" tag="zabbix/zabbix-proxy-sqlite3:alpine-6.0-latest" os="linux" arch="arm" interface=veth1 envlist="zabbixproxy_envs" root-dir=disk3/zabbixproxy
   mounts=zabbixproxy_psk dns="" hostname="mikrotik.example.net" workdir="/var/lib/zabbix" logging=yes status=stopped
[mikrotik] > 
 

 



 Comments   
Comment by Jay Motetris [ 2023 Feb 12 ]

The WISP industry would love Zabbix-Proxy to be able to run in Mikrotik Container.  I get the same error when running the container - 

"zabbix_proxy [2]: cannot create locks: cannot allocate shared memory for locks"

Comment by Martin Vancl [ 2023 Nov 18 ]

I have great news!

Running zabbix proxy 6.0.1 without encryption on MikroTik hAP ac²:

I have problem with new images, so I used 6.0.1. I have problem with encryption too.

/disk/format-drive 0 file-system=ext4 partition-table=yes label=flashdrive
/disk/print
Flags: B - BLOCK-DEVICE; M - MOUNTED; p - PARTITION
Columns: SLOT, MODEL, SERIAL, INTERFACE, SIZE, FREE, FS
#     SLOT        MODEL                SERIAL          INTERFACE                   SIZE            FREE  FS  
0 B   usb1        USB SanDisk 3.2Gen1  05019xxxxx7bd7  USB 2.10 480Mbps  15 376 318 464                 
1 BMp usb1-part1  @512-15'376'318'464                                    15 376 317 952  15 187 513 344  ext4

/interface/veth/add name=veth1 address=10.70.3.2/24 gateway=10.70.3.1
/interface/bridge/add name=dockers
/ip/address/add address=10.70.3.1/24 interface=dockers
/interface/bridge/port add bridge=dockers interface=veth1
/ip/firewall/nat/add chain=srcnat action=masquerade src-address=10.70.3.0/24

/container/envs/add name=zabbixproxy_envs key=ZBX_HOSTNAME value="mikrotik.test.cz"
/container/envs/add name=zabbixproxy_envs key=ZBX_SERVER_HOST value="zabbix.test.net"
/container/envs/add name=zabbixproxy_envs key=ZBX_TIMEOUT value="15"
/container/envs/add name=zabbixproxy_envs key=ZBX_STARTPOLLERS value="2"
/container/envs/add name=zabbixproxy_envs key=ZBX_STARTTRAPPERS value="1"
/container/envs/add name=zabbixproxy_envs key=ZBX_CONFIGFREQUENCY value="30"
/container/envs/add name=zabbixproxy_envs key=ZBX_CACHESIZE value="2M"
/container/envs/add name=zabbixproxy_envs key=ZBX_HISTORYCACHESIZE value="4M"
/container/envs/add name=zabbixproxy_envs key=ZBX_HISTORYINDEXCACHESIZE value="2M"
/container/envs/add name=zabbixproxy_envs key=ZBX_VMWARECACHESIZE value="1M"

/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk3/pull
/container/config/set ram-high=32M

/container/add remote-image="zabbix/zabbix-proxy-sqlite3:alpine-6.0.1" interface=veth1 root-dir="disk3/zabbixproxy" envlist=zabbixproxy_envs hostname="mikrotik.test.cz" logging=yes status=stopped
/container/set 0 logging=yes
/container/start 0
Comment by Martin Vancl [ 2024 Feb 14 ]

I tried it yesterday and it works on RouterOS 7.13.4.

Comment by Nicolae [ 2024 Sep 21 ]

Could you make builds alpine-7.0-latest, alpine-7.0.* , alpine-trunk for linux/arm/v7 ?

Generated at Tue May 13 10:28:03 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.