We had that crazy situation where a Zabbix Proxy was down (VM stopped) and we had no idea about it.
That was quite the surprise because "Well, we should have had a crapload of 'No data' alerts from every host that report to that proxy". Spoiler alert: No, we didn't. We lost monitoring over hundreds of hosts for 24+ hours and everything was fine in Zabbix UI. In fact I realized that situation when the network engineer asked me why his Zabbix dashboards were empty.
Lire la suite de Monitor your Zabbix proxies!
If you need to install Zabbix-Agent2 on Ubuntu 16.04, you will find out that there is no available packages in Zabbix repository (unlinke Zabbix-Agent). You can try to use packages for other Linux systems, even RPMs, but you will always end up with library or ABI issues. The only way to make it work is compilation.
Install requirements:
apt install -y libpcre++-dev build-essential zlib1g-dev libssl-dev
Get Zabbix source code:
wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.4.tar.gz
tar xf zabbix-6.2.4.tar.gz
You need at least Go 1.17 (for Zabbix 6.2.4):
wget https://go.dev/dl/go1.19.3.linux-amd64.tar.gz
tar xf go1.19.3.linux-amd64.tar.gz
export PATH=$PATH:/root/go/bin
You should now be able to build Zabbix-Agent 2. I took these options from Zabbix documentation and made some ajustements from what I found in packages in Zabbix repository:
cd zabbix-6.2.4
./configure \
--enable-agent2 \
--enable-static \
--prefix=/usr \
--sysconfdir=/etc/zabbix \
--libdir=/usr/lib/zabbix \
--with-curl \
--with-openssl
Note: According Zabbix documentation, the --enable-static flag is useful if you want to create your own package and use it on other systems.
You can now build and install:
make install
You can now remove Go if you don't need it. A few steps are required to make Zabbix-Agent 2 work:
addgroup --system --quiet zabbix
adduser --quiet --system \
--disabled-login \
--ingroup zabbix \
--home /var/lib/zabbix \
--no-create-home zabbix
mkdir -p /etc/zabbix/zabbix_agent2.d/plugins.d
mkdir /run/zabbix/
chown -R zabbix:zabbix /run/zabbix
mkdir /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix
Create /etc/logrotate.d/zabbix_agent2:
/var/log/zabbix/zabbix_agent2.log {
weekly
rotate 12
compress
delaycompress
missingok
notifempty
create 0640 zabbix zabbix
}
In the packages from Zabbix repository we have /usr/lib/tmpfiles.d/zabbix-agent2.conf:
d /run/zabbix 0755 zabbix zabbix - -
Don't forget to create a /etc/zabbix/zabbix_agent2.conf file. Here is a sample.
Finally, create a systemd unit file in /lib/systemd/system/zabbix-agent2.service:
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/etc/zabbix/zabbix_agent2.conf"
EnvironmentFile=-/etc/default/zabbix-agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/sh -c '[ -n "$1" ] && kill -s TERM "$1"' -- "$MAINPID"
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
Reload, enable and start this new service:
systemctl daemon-reload
sytemctl enable --now zabbix-agent2
Check that everything works:
systemctl status zabbix-agent2
tail /var/log/zabbix/zabbix_agent2.log
Profit!