本文内容可能会过时,且不一定会得到及时更新,仅仅是作为自己部署Zabbix的一个记录。
2022.8.21 update:
Zabbix我是部署在一台Racknerd服务器上的,配置时1Core 1G Ram。Zabbix倒是不怎么暂用空间和内存,不过这台RN的VPS自从装了Zabbix一段时间之后,我在监控里看RN的实时状态发现CPU占用率一直是满的,进SSH之后使用top查看,发现mysqld一直占据着98%以上的CPU资源,使用show processlist命令也查不出来原因,我甚至连cpulimit这招都用上了。但是这始终不是解决问题的根本之道。
刚刚登陆phpMyadmin查看Zabbix的数据库,没想到居然已经庞大到1.1GB之巨了,然后顺手点了下优化表,没想到就这一项操作,cpu资源占用率马上就下来了。
所以,定期优化MySQL的数据库是相当有必要的事情啊。
另外不得不说一句,我这么长时间占用cpu资源,RN居然没有任何微词,真是令人感动,既然这样,明年继续续费啦!
正文:
荒岛博客有两篇部署Zabbix 3.x的文章,在巨人的肩膀上,我尝试在Racknerd的机器上部署Zabbix 5.0.13 LTS成功,现在将其中一些步骤记录下来。
lala用的是CentOS部署,我这里采用的是Ubuntu20.04LTS。
首先更新系统并安装依赖:
apt update
apt install libmysqlclient-dev libsnmp-dev -y
下载源码包并解压:
我安装的时候版本是5.0.13,写这篇文章的时候5.0.14已经释出,本文仅针对5.0.13TLS版的记录。官网下载地址
wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.13.tar.gz
tar zxvf zabbix-5.0.13.tar.gz
cd zabbix-5.0.13
创建用户账户(官方不建议以root等高权限用户来运行Zabbix):
addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
配置源代码并安装:
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
make install
安装完成后配置文件位于/usr/local/etc/目录下
修改zabbix_server.conf文件,需修改的部分如下:
DBUser=$USER #改为可访问数据库的用户名
DBPassword=$PASSWORD #数据库密码
DBSocket=/tmp/mysql.sock #视实际情况改动,我这台VPS上用的是军哥的LNMP,mysql.sock的默认位置位于/tmp下,因此要在这里进行相应的改动。
StatsAllowedIP=::/0 #默认参数为StatsAllowedIP=127.0.0.1,仅允许本机连接,改为::/0即可同时接受IPv4和IPv6的地址连接。
修改zabbix_agentd.conf:
LogFile=/tmp/zabbix_agentd.log #我将日志文件的存放路径改到了这里,如果你的硬盘空间足够,也可以保持默认不做更改
Server=127.0.0.1,123.123.123.123,::1,2001:db8::/32 #看注释文件的叙述,这里除了支持本机、IPv4、IPv6之外,还同时支持域名,请根据实际情况进行改动,建议把IPv6的本机地址也填入,这样就支持纯IPv6的VPS进行连接。
ServerActive=127.0.0.1,123.123.123.123,::1,2001:db8::/32 #这里建议跟上面的Server字段处的内容保持一致。
防火墙开启TCP端口10050和TCP端口10051:
ufw allow 10050/tcp
ufw allow 10051/tcp
运行服务:
zabbix_server
zabbix_agentd
检查进程运行状况,如:
ps -rf | grep zabbix #看看有没有zabbix_server和zabbix_agentd进程
ls -l /tmp #看看有没有zabbix_server.pid、zabbix_server.log、zabbix_agentd.pid、zabbix_agentd.log这四个文件,根据配置温建中你设置的位置进行查看。
检查程序是否开始运行在相应的端口了:
netstat -antlp | grep 10050
netstat -antlp | grep 10051
在域名托管处新增子域名并解析到VPS,如zabbixtest.gotototo.com,等ip能ping通后开始新建一个虚拟主机:
/usr/local/acme.sh/acme.sh --set-default-ca --server letsencrypt #新版的acme将默认的证书提供商改为了zerossl,但我一次都没成功申请过证书,因此改为以前的letsencrypt
export CF_Key="$CLOUDFLARE API"
export CF_Email="abc@domain.com"
lnmp dnsssl cf
成功后,将zabbix-5.0.13下ui文件夹中的所有文件复制或移动到虚拟主机的目录里:
cd zabbix-5.0.13/ui
cp -a ./* /home/wwwroot/zabbixtest.gotototo.com
chown -R www.www /home/wwwroot/zabbixtest.gotototo.com
用phpMyAdmin等工具新建一个数据库,注意字符集一定要是utf8.bin,lala的教程用的是3.x版,但5.x只能用utf8.bin这个字符集,否则会在网页设置界面出错。
设置中文显示,Debian、Ubuntu执行:
dpkg-reconfigure locales
选择中文后保存退出,重新启动一下nginx。
接下来就是打开网址进行配置,配置好后,停用Guest账号、设置中文显示。
接下来,是被监控主机的设置。
在被监控的机器上下载zabbix agentd,需要别的版本请在这里下载查找。
下载、安装zabbix agentd:
wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix/zabbix-agent_5.0.13-1%2Bfocal_amd64.deb
dpkg -i zabbix-agent_5.0.13-1+focal_amd64.deb
修改zabbix agentd的配置文件:
cd /etc/zabbix/
cp -a zabbix_agentd.conf zabbix_agentd.conf.bak
nano zabbix_agentd.conf
修改字段如下:
PidFile=/tmp/zabbix_agentd.pid #根据自己的实际情况修改,也可以保持默认。
LogFileSize=1
Server=123.123.123.123 #如果被监控机器是纯IPv4机器,这里填入zabbix server的IPv4地址。如果被监控机器是纯IPv6机器,这里填入zabbix server的IPv6地址如 Server=2001:db8::2
ServerActive=123.123.123.123 #同上,根据自己的情况选择是填写IPv4还是IPv6的地址。
设置zabbix agent开机运行并运行检查其状态:
systemctl enable zabbix-agent
zabbix_agentd
ps -ef | grep zabbix
netstat -antlp | grep 10050
随后在zabbix server主机中添加被监控机器的IP,加入组,添加监控模板。
放两张图吧: