在 NixOS 上安装 Zabbix 服务器

Install Zabbix Server on NixOS

我有什么

我有一台服务器(raspberry pi 通过以太网连接到 fritzbox-router),上面安装了新的 nixos。我可以通过 ssh (ssh admin@nixos.fritz.box) 连接到它。 我已经有一些使用 nixos 的经验,但不多。

我想要的

我希望它 运行 一个 zabbix 服务器 并连接 一个网络界面 连接到 (例如在 nixos.fritz.box/zabbix,但我真的不在乎在哪里)。

我试过的

我发现https://github.com/NixOS/nixpkgs上有多个zabbix的包:

另外 nix search zabbix 给了我关于 zabbix-clizabbixctl 的提示,我相信它们用于管理现有的 zabbix 安装,因此对我的问题没有帮助。

我在options for configuration.nix中查了zabbix,发现了很多。 最有前途的是 services.zabbixServer.enable。我在我的配置中将其设置为 true 并重建了它。这似乎奏效了:

systemctl status zabbix-server.service

● zabbix-server.service - Zabbix Server
     Loaded: loaded (/nix/store/dxm7imx0ryfxdyqq5bj42klprycnpzna-unit-zabbix-server.service/zabbix-server.service; enab>
     Active: active (running) since Sat 2020-10-31 17:45:59 UTC; 17h ago
    Process: 14883 ExecStartPre=/nix/store/1py4ma02cnarrnx2yhz1gnjgpv4m9v06-unit-script-zabbix-server-pre-start/bin/zab>
   Main PID: 14896 (zabbix_server)
         IP: 41.4K in, 62.1K out
      Tasks: 38 (limit: 4481)
     Memory: 33.0M
...
sudo netstat  -nap | grep zabbix
[sudo] password for admin: 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      14896/zabbix_server
...

但我仍然不知道如何连接到网络界面。

我尝试启用 zabbix-web(services.zabbixWeb.enable 为真)但是 运行 出错,我不知道如何解决它:

sudo nixos-rebuild switch
building Nix...
building the system configuration...
error: The option `services.zabbixWeb.virtualHost' is used but not defined.

我查看了以下手册中关于 zabbix 的提示,但没有找到任何关于 zabbix 的提示。:

我的愿望

我想要一个最小的 configuration.nix 允许 运行 zabbix 服务器并使用浏览器连接到它的网络界面。

非常感谢

错误信息表示使用了services.zabbixWeb.virtualHost但没有定义。对此的解决方案最有可能为该选项定义一个值。您可以在此处找到 services.zabbixWeb.virtualHost 的文档:

https://github.com/NixOS/nixpkgs/blob/be1c62932fc9889f91055f13311cc3789c197565/nixos/modules/services/web-apps/zabbix.nix#L115

在该文件中,您会看到定义了许多其他选项,并且您可能还需要设置其中的许多选项。

感谢 David Grayson(我将他的回答标记为对他公平)我认为这是以 zabbix.localhost 身份登录的最小设置(使用 zabbix 默认凭据)。

  services.zabbixServer.enable = true;
  services.zabbixWeb = {
    enable = true;
    virtualHost = {
      hostName = "zabbix.localhost";
      adminAddr = "webmaster@localhost";
    };
  };

也很高兴在服务器上添加一个客户端:

  # technically not needed on the server, but good for testing.
  services.zabbixAgent = {
    enable = true;
    server = "localhost";
  };