``

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。在运维工作中使用广泛,这里介绍一下搭建过程,平台是centos7。

初始环境调整

关闭selinux,yum安装各种依赖

setenforce 0
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
yum install epel-release.noarch wget vim gcc gcc-c++ lsof chrony tree nmap unzip rsync -y
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

修改主机名

hostnamectl --static set-hostname zabbix-server

LAMP环境部署

安装数据库,PHP

yum install httpd mariadb mariadb-server mariadb-client php php-mysql -y
systemctl start mariadb         #启动数据库
systemctl enable mariadb        #设置开机启动

MariaDB数据库安全调整

mysql -e "DELETE FROM mysql.user WHERE User=''"
mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1')"
mysql -e "DROP DATABASE test;"
mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'"
mysql -e "FLUSH PRIVILEGES"

创建Zabbix服务端的数据库和使用的账号

创建数据库zabbix,用户名密码都是zabbix

mysql -e "CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;"
mysql -e "GRANT ALL ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';"

Zabbix应用部署

yum安装zabbix,及各组件

rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
yum install zabbix-server-mysql zabbix-web-mysql zabbix-get zabbix-agent -y

导入Zabbix服务端的表结构并修改配置项

cd /usr/share/doc/zabbix-server-mysql-3.2.7/
zcat create.sql.gz | mysql -uroot zabbix
sed -i '/^# DBPassword=/a \\nDBPassword=zabbix' /etc/zabbix/zabbix_server.conf
sed -i 's/^;date.timezone =/date.timezone = Asia\/Shanghai/' /etc/php.ini
sed -i 's@# \(php_value date.timezone \).*@\1Asia/Shanghai@' /etc/httpd/conf.d/zabbix.conf

启动服务

systemctl start httpd
systemctl start zabbix-agent
systemctl start zabbix-server
systemctl enable httpd
systemctl enable zabbix-agent
systemctl enable zabbix-server

web端设置

打开浏览器,访问http://your ip/zabbix 即可设置

设置完成后就可以登录了,默认账号密码为Admin/zabbix

修改字体

zabbix默认字体显示中文有问题,需要更换字体文件,下载ttf格式中文字体文件,上传到指定目录替换即可

[root@zabbix-server fonts]# pwd
/usr/share/zabbix/fonts
[root@zabbix-server fonts]# ls
graphfont.ttf  msyh.ttf
[root@zabbix-server fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@zabbix-server fonts]# mv msyh.ttf graphfont.ttf

PHP报错配置修改

PHP选项"post_max_size"    8M  所要求的最小PHP post大小是16M(配置项"post_max_size").
PHP选项"max_execution_time"   30  所要求的最小PHP脚本执行时间是300(配置项 "max_execution_time").
PHP选项"max_input_time"   60  所要求的PHP脚本最小解析时间是300 (配置项"max_input_time").
PHP选项"date.timezone"    未知的 PHP的时区未设置(配置参数"date.timezone").

小技巧

获取交换机数据

如果没有snmpwalk命令,请安装yum install net-snmp* -y

  • 交换机描述: snmpwalk -v 2c -c XXXXXXXX 192.168.1.1 IF-MIB::ifDescr
  • 华为交换机cpu使用率: snmpwalk -v 2c -c xxxxxx 192.168.1.8 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.5.67108873
  • 华为交换机内存使用率: snmpwalk -v 2c -c xxxxxx 192.168.1.8 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.7.67108873
  • 华为交换机温度: snmpwalk -v 2c -c ctbt@WSX 192.168.1.8 1.3.6.1.4.1.2011.5.25.31.1.1.1.1.11.67108873

S系列以太网交换机常用SNMP MIB节点

流量图断图,snmp监控网络流量不准的问题

通过snmp协议监控交换机流量,如果接口流量较大,就会出现流量不准,或流量图断图的问题。原因如下:

在MIB中,ifOutOctets和ifInOctets来分别表示接口流出数据量和接口流入数据量,单位是字节。其数据类型为counter32。其能表示最大值为2^32Byte=4GB。 ifHCOutOctets和ifHCInOctets也是分别表示接口流出数据量和接口流入数据量其数据类型为counter64,最大值为16EB这个值的概念是如果千兆口满跑4000多年才能达到。但是如果是counter32位的呢,千兆口满跑32秒即可达到此值。那么这就派生出问题了,如果接口的速率非常高那么用32位的来获取的值很有可能就不准确了。

解决方法也很简单

  • 全克隆默认模板Template SNMP Interfaces
  • 修改新模板自动发现规则的监控项原型
  • 修改Incoming traffic on interfaceOutgoing traffic on interfaceSNMP OID值,键值

    ifInOctets[{#SNMPVALUE}]  >   ifHCInOctets[{#SNMPVALUE}]
      IF-MIB::ifInOctets.{#SNMPINDEX}   >   IF-MIB::ifHCInOctets.{#SNMPINDEX}
      ifOutOctets[{#SNMPVALUE}] >   ifHCOutOctets[{#SNMPVALUE}]
      IF-MIB::ifOutOctets.{#SNMPINDEX}  >   IF-MIB::ifHCOutOctets.{#SNMPINDEX}
  • 删除主机,重新添加模板

获取agent数控

在zabbix服务器上执行以下命令,如果没有VIP,可以不加-I

zabbix_get -I zabbix服务器VIP -s 需监控的客户端IP -k agent.ping

[root@zabbix_master ~]# zabbix_get -I 172.31.101.10 -s 172.31.206.104 -k agent.ping
1

运行脚本

zabbix拓扑图上的主机可以运行三个脚本,分别为nmap,traceroute和ping

  • nmap 系统默认已经安装,但是zabbix用户没有权限,需要sudo,所以需要编辑/etc/sudoers,添加zabbix ALL=(root) NOPASSWD: /usr/bin/nmap
  • traceroute 有的系统默认没有安装yum install traceroute

zabbix3.0之后显示logo的文件在/usr/share/zabbix/img目录下的icon-sprite.svg

svg严格来说应该是一种开放标准的矢量图形语言,具备目前网络流行的jpg和png等格式无法具备的优势:可以任意放大图形显示,但绝不会以牺牲图像质量为代价;可在svg图像中保留可编辑和可搜寻的状态;平均来讲,svg文件比其它格式的图像文件要小很多,因而下载也很快。

这个文件中有一组图标,修改其中的zabbix图标就可以了。这里推荐一个SVG在线编辑工具。https://c.runoob.com/more/svgeditor/