部署Zabbix记录

/ 0评 / 0

本文内容可能会过时,且不一定会得到及时更新,仅仅是作为自己部署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,加入组,添加监控模板。

放两张图吧:

zabbixserver1

zabbixserver2

参考资料

官方文档
企业级监控系统:Zabbix详细安装配置教程
Zabbix监控VPS主机详细教程

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注