zabbix安装及监控网络设备
in 运维 with 0 comment
zabbix安装及监控网络设备
in 运维 with 0 comment

安装基础组件

yum -y install epel-release screen wget net-tools mariadb-server mariadb
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 
yum -y install net-snmp net-snmp-utils
wget --no-check-certificate https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm -O remi-release-7.rpm && rpm -ivh remi-release-7.rpm
yum install yum-utils
yum-config-manager --enable remi-php73
yum -y install php php-{cli,common,dba,devel,embedded,fpm,gd,imap,interbase,intl,mbstring,mysqlnd,pdo,opcache,pear,phpdbg,recode,snmp,soap,xml,xmlrpc,bcmath,ldap,pecl-memcached} curl curl-devel

安装zabbix

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-server-mysql  zabbix-web-mysql zabbix-agent

Mysql操作

systemctl enable mariadb
systemctl start mariadb
mysql_secure_installation进行Mysql初始化安装
CREATE USER 'zabbix'@'host' IDENTIFIED BY 'P@ssw0rd';

create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'P@ssw0rd';

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

修改配置文件

vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>

修改PHP.ini参数

php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai

启动httpd及php-fpm进程

systemctl enable httpd
systemctl start httpd
systemctl enable php-fpm
systemctl start php-fpm
注:任何对于httpd.conf及php.ini文件的修改,改完后都需要重启httpd及php-fpm进程使配置生效

SELinux设置

yum -y install setroubleshoot setroubleshoot-server
setsebool -P httpd_can_connect_zabbix on
setsebool -P httpd_can_network_connect_db on
ausearch -c 'zabbix_server' --raw | audit2allow -M my-zabbixserver
semodule -i my-zabbixserver.pp

SELinux的排错

必装组件:

yum -y install setroubleshoot setroubleshoot-server setools-console

webfront安装

完成上述操作后,防火墙开启对应协议并启动对应程序

firewall-cmd --add-service={http,https} --permanent
firewall-cmd --reload

开启对应的程序:

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

访问http://yourserverip/zabbix填入相关参数即可开始安装

注:/var/lib/php/session 注意权限为root apache drwxrwx---,否则安装webfront会失败

模板配置

对于不在官方支持范围内的设备,需要自己添加模板进行设备的监控,例如H3C的设备,官方默认只有Cisco等超级厂商的模板,如果你使用的是Cisco的产品那么你很幸运;如果非常不幸的你的是H3C等国产设备,那么可以参考以下步骤进行模板添加,目前我所做的模板主要检测CPU&Memory利用率、端口状态及端口实时流量,以H3C ER3200路由器为例,首先在路由器中设置SNMP的参数,默认使用 community 为pubic,版本为V2C

无论是什么厂商,大多数参数基本都遵循共有的MIB标准,比如端口流量、端口类型这些常用的参数,但是也有很多ODI为厂商的私有OID,比如H3C的CPU、内存利用率,每个厂商可能都不一样,具体自行查找官方文档或咨询厂商客服。

以下为本次监控用到的OID,均为公有标准MIB:

说明参数OID
接口描述ifDescr1.3.6.1.2.1.2.2.1.2.X
接口速率ifSpeed1.3.6.1.2.1.2.2.1.5.X
接口类型ifType1.3.6.1.2.1.2.2.1.3.X
接口接收字节数ifInOctets1.3.6.1.2.1.2.2.1.10.X
接口发送字节数ifOutOctets1.3.6.1.2.1.2.2.1.16.X
接口管理状态ifAdminStatus1.3.6.1.2.1.2.2.1.7.X
接口运行状态ifOperStatus1.3.6.1.2.1.2.2.1.8.X
OID中的X代表该OID下面还有值,需要运行对应的OID后才能知道下一个值是什么,例如1.3.6.1.2.1.2.2.1.2

一般情况是创建模板->添加主机->调用模板,但是常规模板只能是一个接口一个接口的添加,我们这个情况不一般,好几十几百台设备,难道要一台主机一台主机的添加模板?那不得累死,所以我们需要创建一个通用模板,让他可以自动发现设备接口,查看接口流量,自动绘图。

模板创建

configuration->Templates->create template创建一个模板,建议不同型号的设备都创建一个模板,如果OID都一样也可以共用一个模板。

自动发现接口

在新建的模板上点到Application,创建一个Application;然后点击Discovery创建一个发现规则,Type选择SNMPv2 Agent,名称就写Interface Discovery,key填写ifDescr,SNMP OID填写discovery[{#SNMPVALUE},.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable.ifEntry.ifDescr]

SNMP community根据自己的设置填写,默认是public; update Interval这个时间不宜设置频繁,我设置为1d,一天发现一次,太过频繁影响设备性能,而且接口板卡也不是一会增加一会减少的。

创建号以后在模板界面就可以看到Discovery标记为1,代表有一个规则,点进去,我们需要在Discovery中去创建items和Graphs以及Triggers,以便所有设备可以调用;

创建项目

点击item prototypes,新建一个item,这里需要监控的有三个,接口出站流量、入栈流量、状态;

监控接口状态

Name填写Interface $1 status; type还是snmp,key填ifOperStatus[{#SNMPVALUE}];SNMP OID填IF-MIB::ifOperStatus.{#SNMPINDEX},这里的SNMPINDEX是zabbix的一个内置Macro参数,指可以生成一个索引值不断的去获取数据,因为你的接口不会只有一个,主OID下面都会有一个子值和每一个接口对应,也就是上面表中的X。community还是根据自己设置填写,后面不再多赘述;更新时间建议为60S,一分钟更新一次,基本算是很频繁了。Application 那里选择我们之前创建的Application的名称,提交即可。

监控接口入站流量

还是创建item prototypes,名称填Inbound Traffice on interface $1,key填ifHCInOctets[{#SNMPVALUE}],OID填IF-MIB::ifHCInOctets.{#SNMPINDEX},单位填bps,更新周期为1S,因为我要实时监控流量,Aplication选之前建立的Application名称。因为默认获取到的是接口上额总流量,所以我们需要换算一下单位,并且让zabbix自动计算每秒的流量(取最后一秒的值与上一秒的值相减为实际值)。点击上方Preprocessing,然后在Preprocessing steps下点击两次add,其中一个选择Change per second,另一个选择Custom multiplier,值填8,然后update即可。

监控接口出站流量

方法和上面一样,只是参数填的不一样,说一下不同的参数值即可;name填Outbound Traffic on interface $1,key填ifHCOutOctets[{#SNMPVALUE}],OID填IF-MIB::ifHCOutOctets.{#SNMPINDEX}

端口状态预警

判断标准:接口有两个状态,管理状态和运行状态,当管理状态和运行状态不一致时认为端口down掉,进行报警;在SNMP中管理状态为up获取的值为1,管理状态为down,获取值为0;接口运行状态为up,获取值也为1,如果运行状态为down,获取值为2;

在Discovery下面点击Trigger prototypes,创建一个预警,名称 为Port {#SNMPVALUE} Down,报警级别自己定,表达式为{MP8900:ifAdminStatus[{#SNMPVALUE}].last(#1)}=1 and {MP8900:ifOperStatus[{#SNMPVALUE}].last(#1)}>1

然后直接update即可

上面的8900为我的模板名称,这个可以手动选择,让系统自动生成条件,模板名称不同会被替换掉

绘制流量监控图

点击Graph prototypes,新进一个图表,名称为Interface Traffic on {#SNMPVALUE},其他默认值即可,在items中点add prototype,选择之前创建的 Inbound Traffice on interface {#SNMPVALUE}Outbound Traffic on interface {#SNMPVALUE}然后update即可;这样就可以在图表中同时看到下载和上传流量。
下图为效果图,以做参考
2019-10-31_155517.png

流量峰值监控报警

比如百兆带宽的WAN口,当下载峰值达到90Mbit/S的时候进行报警,需要添加一个Tigger,在里面选择对应的的条件,峰值计算方式为90M乘以1024的次方除以8,即为接口峰值流量值
2019-12-24_171801.png

The article has been posted for too long and comments have been automatically closed.