Zabbix 6.0&时序数据库部署及常见问题
操作系统: Ubuntu Server LTS 20.04.3
软件版本: Zabbix 6.0 LTS
数据库: PostgreSQL 14.2
时序插件: TimesacleDB 2
流程
- 配置系统与软件
- 安装PostgreSQL数据库和TimescaleDB插件
- 安装配置Zabbix
- 其他问题及解决办法
详细步骤
一、 配置系统与软件
- 打开时区选择工具,依次选择Asia – China – Beijing Time – Yes。
sudo tzselect
- 复制时区文件到当前系统设置。
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 检查时间是否正确。<可选>
date
- 安装相关软件
sudo apt -y install language-pack-zh-hans snmp snmp-mibs-downloader net-tools nmap
language-pack-zh-hans:中文语言包安装后,Zabbix才可以设置为中文。
snmp:安装后可以使用snmpwalk等工具。
snmp-mibs-downloader:可以看作是SNMP的数据库,没有它的话,监控SNMP设备可能会无法解析部分信息。
net-tools:可选工具,ifconfig就在其中。
nmap:可选工具,扫描设备端口时要用到。
二、 安装数据库与时序插件
A. 安装PostgreSQL数据库
PostgreSQL官网安装步骤:https://www.postgresql.org/download/linux/ubuntu/
- 添加PostgreSQL官方资源库。
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
- 导入Key。
sudo wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
- 更新软件列表。
sudo apt update
- 安装最新版本的PostgreSQL数据库。
sudo apt -y install postgresql
也可以将末尾替换为 postgresql-13 来指定要安装的版本。
B. 安装TimescaleDB插件
TimescaleDB官网安装步骤:https://docs.timescale.com/install/latest/self-hosted/installation-debian/
这里切换为root账户,就不必在每条命令前加sudo了。
sudo su
- 安装前置工具。
apt -y install gnupg postgresql-common apt-transport-https lsb-release wget
- 运行脚本。
/usr/share/postgresql-common/pgdg/apt.postgresql.org.sh
- 添加Key。
curl -L https://packagecloud.io/timescale/timescaledb/gpgkey | sudo apt-key add -
- 添加TimesacleDB资源库。
sh -c "echo 'deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main' > /etc/apt/sources.list.d/timescaledb.list"
- 安装Key。
wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | apt-key add -
- 更新软件列表。
apt update
- 安装TimescaleDB。
apt -y install timescaledb-2-postgresql-14
- 安装完成后,启动设置程序,一路Yes到底即可。
timescaledb-tune
此设置是将PostgreSQL数据库的默认数值更新为适应TimescaleDB所需求的合适值。
至此,时序数据库安装完成,重启服务器。
三、 安装Zabbix
参考Zabbix官网安装步骤:https://www.zabbix.com/cn/download?zabbix=6.0&os_distribution=ubuntu&os_version=20.04_focal&db=postgresql&ws=apache
切换回普通账户
exit
1. 下载Zabbix资源库文件。
sudo wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-1+ubuntu20.04_all.deb
添加Zabbix资源库。
sudo dpkg -i zabbix-release_6.0-1+ubuntu20.04_all.deb
更新软件列表。
sudo apt update
2. 安装Zabbix软件。
sudo apt -y install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent2
zabbix-server-pgsql:是Zabbix监控软件服务器端的PostgreSQL数据库版本。
zabbix-agent2:是Zabbix监控用的客户端。
3. 创建用户和数据库。
sudo -u postgres createuser --pwprompt zabbix
提示输入2次要设置的数据库密码,举例:输入2次321。
sudo -u postgres createdb -O zabbix zabbix
导入初始架构和数据。
sudo zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
会提示要求输入密码,此时输入刚才设置的321。
4. 配置数据库密码。
打开配置文件。
sudo vi /etc/zabbix/zabbix_server.conf
定位到# DBPassword=这一行,在下面写入DBPassword=321,保存退出。
5. 重启Zabbix软件。
systemctl restart zabbix-server zabbix-agent2 apache2
设置为自启动,其间会要求输入账户密码多次。
systemctl enable zabbix-server zabbix-agent2 apache2
6. 启用TimescaleDB。
sudo echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix
cd /usr/share/doc/zabbix-sql-scripts/postgresql/
sudo cat timescaledb.sql | sudo -u zabbix psql zabbix
至此,Zabbix与数据库安装完成,重启。
重启后,打开浏览器,输入http://ip/zabbix,进入Zabbix前端页面进行设置。
这里的ip就是Ubuntu服务器的IP地址
设置过程中必选的一项为:配置DB连接,在密码处输入之前设置的321。
Zabbix使用时序数据库与MySQL数据库的明显不同之处在于:
登录Zabbix前端页面后,在管理(Administration) 一般(General) 管家(Housekeeping)中
最末尾多出了一个压缩选项,默认Enable compression是开启的。
四、 其他
- 解决Zabbix Web前端图形中文乱码
-
从任意一台Windows主机上复制出一个“楷体 常规”字体文件,放到Ubuntu服务器的/usr/share/zabbix/assets/fonts/路径下。
-
然后在Ubuntu服务器上,打开Zabbix前端的配置文件
sudo vi /usr/share/zabbix/include/defines.inc.php
将define(‘ZBX_GRAPH_FONT_NAME’, ‘graphfont’)
修改为define(‘ZBX_GRAPH_FONT_NAME’, ‘simkai’)
simkai就是刚才复制的字体文件名(不带后缀)
修改完成后,保存退出,刷新浏览器即可。
- 提高系统ARP缓存量
Ubuntu Server系统默认的ARP缓存量不高,导致系统在与大量节点通信时,ARP表不稳定,系统syslog里会不停的报“arp_cache: neighbor table overflow!”,更严重的是,还会导致Zabbix server进程时断时续,无法正常工作。
- 要解决这个问题也不难,登录Ubuntu服务器,打开sysctl文件进行设置即可。
sudo vi /etc/sysctl.conf
在文件最末尾处,添加3行如下内容
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 4096
net.ipv4.neigh.default.gc_thresh3 = 8192
数值可以根据实际情况修改,gc_thresh2的数值要大于节点数,笔者的监控环境为3000个节点,这个数值非常稳定。
- 添加虚拟磁盘黑名单
如果Ubuntu Server是一台ESXi中的虚拟机,那么系统syslog会一直报“sda: add missing path”这样的日志,可以通过设置黑名单来解决这个问题。
- 打开设置文件。
sudo vi /etc/multipath.conf
在文件末尾添加如下内容,保存退出。
blacklist {
device {
vendor "VMware"
product "Virtual disk"
}
}
- 重启服务即可。
systemctl restart multipath-tools.service