centos7.4 系统服务器3台、 一台作为监控服务器, 两台台作为被监控节点, 配置好yum源、 防火墙关闭、 各节点时钟服务同步、 各节点之间可以通过主机名互相通信。 我是测试阶段 准备了 2台
步骤;所有机器关闭防火墙和selinux
systemctl stop firewalld && setenforce 0
Zabbix的安装,安装server端
更新yum仓库
我们去官网下载一个包zabbix-release-3.4-2.el7.noarch.rpm
,本地安装至我们的虚拟机,这样,我们本地就有了新的yum源,可以直接安装zabbix服务:
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
而后更新我们的yum 仓库 yum repolist
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
yum -y install zabbix-get-3.4.0-1.el7.x86_64
zabbix-server-mysql数据库是用来存放采集到的数据,而zabbix-web-mysql的作用是Zabbix的web端会通过这些数据,来展示绘图
1、安装 mariadb.repo
yum install -y mariadb mariadb-server
这里讲一下,下载好默认没有密码可以登录,但是为了安全,要设置一个密码
2、重启我们的数据库服务
systemctl start mariadb
systemctl enable mariadb
mysqladmin -u root password 'zabbix' #设置root密码
3、创建数据库并授权账号
mysql -uroot -p'zabbix'
create database zabbix character set utf8 collate utf8_bin; # 创建zabbix数据库
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; # 注意授权网段
flush privileges; # 刷新授权
exit #退出
4、导入表
我们直接把表导入至我们的数据库即可:提醒一下,因为监控数据需要传送到数据库中,这里数据库里面需要传入表,这里细节认真一点,很多时候都是这里做错
方法一;导入
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p'zabbix' zabbix
cd /usr/share/doc/zabbix-server-mysql-3.4.15
[root@zabbix-server zabbix-server-mysql-3.4.15]# gunzip create.sql.gz
[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -u zabbix -p zabbix < create.sql
导入以后,我们进去数据库查看一下:
[root@zabbix-server zabbix-server-mysql-3.4.15]# mysql -uzabbix -p
Enter password:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+--------------------+
MariaDB [(none)]> use zabbix;
Database changed
MariaDB [zabbix]> show tables;
+----------------------------+
| Tables_in_zabbix |
+----------------------------+
| acknowledges |
| actions |
.....
| proxy_dhistory |
| proxy_history |
| regexps |
| rights |
| screen_user |
+----------------------------+
140 rows in set (0.001 sec)
可以看出来,我们的数据已经导入成功了。
我们的数据库准备好了以后,我们要去修改server端的配置文件。
[root@zabbix-server ~]# cd /etc/zabbix/
[root@zabbix-server zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
#为了方便我们以后恢复,我们把配置文件备份一下
[root@zabbix-server zabbix]# cp zabbix_server.conf zabbix_server.conf.bak
[root@zabbix-server zabbix]# vim zabbix_server.conf
DBHost=localhost #数据库对外的主机
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户
DBPassword=zabbix #数据库密码
#这里的配置文件打开后:如果有的就不用添加了。如果是注释了的也不用取消注释。直接把内容复制粘贴过去就可以 了。
systemctl start zabbix-server
systemctl enable zabbix-server
开启服务以后,我们一定要去确认一下我们的端口有没有开启:
netstat -lntp | grep 10051
如果查到的端口没有开启,我们就要去检查一下配置文件有没有出问题了。
有一个/etc/httpd/conf.d/zabbix.conf
文件,这个配置文件就是帮我们做映射的文件
前面默认已经安装过了
vim /etc/httpd/conf.d/zabbix.conf #设置时区
#里面基本不用动。只需要添加一行时区即可
php_value date.timezone Asia/Shanghai ---添加如下
systemctl start httpd mariadb zabbix-server
systemctl enable httpd
我们使用浏览器访问196.196.196.44/zabbix
,第一次访问时需要进行一些初始化的设置,我们按照提示操作即可:
①
②
点击Finish以后,我们就会跳转到登录页面,使用我们的账号密码登录即可:
默认用户名为:Admin ,密码为:zabbix 登陆进来就可以看到我们的仪表盘了:
看到这个页面 就配置完server端拉
当我们把监控端配置启动以后,我们需要来设置一下我们的被监控端,我们在被监控的主机安装好agent,设置好他的server,并把他添加到server端,就能将其纳入我们的监控系统中去了。
同样的,我们先来安装zabbix。两台机器都操作
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
yum -y install zabbix-agent zabbix-sender
安装完成以后,我们去修改配置文件。
对配置文件做一个备份,然后去修改配置文件:
cd /etc/zabbix/
cp -r zabbix_agentd.conf zabbix_agentd.conf.bak
agent端配置文件 写的是server端的 ip
vim zabbix_agentd.conf ----修改如下
Server=192.168.246.228 zabbix服务端的地址
ServerActive=192.168.246.228 主动模式 zabbix-server-ip
Hostname=zabbix-agent-none1
UnsafeUserParameters=1 是否限制用户自定义 keys 使用特殊字符 1是可以启用特殊字符 0是不可以启用特殊字符
EnableRemoteCommands=0 是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
是否允许别人执行远程操作命令,默认是禁用的,打开的话会有安全风险.
修改完成之后,我们保存退出。然后就可以启动服务了:
systemctl start zabbix-agent
systemctl enable zabbix-agent
照例查看端口是否已开启
[root@zabbix-agent-none1 zabbix]# netstat -lntp | grep 10050
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 9369/zabbix_agentd
tcp6 0 0 :::10050 :::* LISTEN 9369/zabbix_agentd
已经开启成功。接着,我们就可以去server端添加了。none2也进行同样的操作,唯一不同的就是配置文件中的Hostname
要设为zabbix-agent-none2
修改密码及中文版
作为一只英语不好的运维,这里悄悄改成了中文版,如果大家英语好的话看英文版即可,英语不好就改了吧,毕竟中文版比较适合初学者更快的学习~
记得刷新!
按如上操作即可,选择中文以后,点击下面的update即可更新成功,更新过后是这样子的~
同样的,为了安全起见,我们把密码改掉:
修改完成后同样点击更新即可。
我们先来定义一个主机群组:
然后我们就可以去添加主机了:
设置完成后,点击添加。我们就可以看到,我们添加的这个主机已经出现在列表中了:
NETiBA5ZOH5ZKU5ZKU5piO6Z2S,size_20,color_FFFFFF,t_70,g_se,x_16)
我们点击上图中none1的监控项,即可创建我们的监控项,首先,我们创建三个应用集:
然后我们来定义监控项:
任何一个被监控项,如果想要能够被监控,一定要在zabbix-server端定义了能够连接至zabbix-agent端,并且能够获取命令。或者在agent端定义了能够让server端获取命令。一般都是内建的命令,都对应的有其名字,被我们称之为key
。
下面监控的是cpu的每秒中断次数
in 每秒CPU的中断次数,包括时间中断
关于key值,我们可以直接在网页上设置(服务器自动执行),也可以使用命令行命令(手动执行)来获取:
[root@zabbix-server zabbix]# zabbix_get -s 192.168.246.226 -p 10050 -k “system.cpu.intr”
在我们的agent端,也可以使用命令来查看
intr
的速率变化:
我们继续来看我们的监控项:
[zabbix]会收集历史数据(所有的数据都成为过去,O(∩_∩)O哈!),以及还会收集每小时的平均数据作为趋势数据,每小时才收集一次,所以trends(趋势)暂用的资源很小,说了这么多,我们来简单定义一个:
这里解释一下,每秒更改
设置完以后,点击更新,即可加入,并会自动跳转至下图页面:
定义完成,我们回到所有主机,等待5秒,我们可以看到,我们none1节点后面的选项已经有变成绿色的了:如果不亮记得刷新
我们也可以回到我们的仪表盘,可以看到,我们的监控项有一个处于启用状态:
那么,我们的数据在哪里呢?可以点击最新数据
,把我们的node1节点添加至主机,应用一下,就可以看到下面的状态了:
可以看到,我们还有一个图形页面,点进去则可以看图形的分布:
事实上,我们关注的指标有很多种,我们一一添加进来即可。
刚刚我们定义的监控项是很简单的,指定一个key
即可,但是有些监控项是带有参数的,这样一来,我们的监控项就有更多的灵活性。接下来,我们来简单说明一个需要带参数的监控项:
图中的[]
就是需要参数的意思,里面的值即为参数,带<>
为不可省略的。我们就以这个例子来说明:
if
表示是接口名;
表示是哪种模式,包括但不限于:packets(包)、bytes(字节)、errors(错误)、dropped(丢包)(上述内容通过ifconfig
查看)
我们来设置一下这个监控值:
同样的,我们也可以通过命令行来查看
zabbix_get -s 196.196.196.55 -p 10050 -k "net.if.in[ens33,packets]"
我们来看看网页的显示情况:检测中 —> 最新数据 —> Network Interface Stats(图形),等待一会,或者刷新一下
如果我们想要定义一个类似的指标,我们可以直接选择克隆,然后简单的修改一点点参数即可。
就以我们刚刚定义的net.if.in[ens33,packets]
为例,如果我们想要在定义一个out
的进行如下操作即可:
如果我们要以字节为单位也要定义的话,进行同样的操作:
如果有需要的话也可以把byte再克隆成out。就不一一演示了~
可以看一下,我们现在已经定义的指标:
我们来到 检测中 —> 最新数据,可以看到,我们定义的监控项都已经有值了:
如果有一个监控项,我们用不上了,就可以删除掉。但是如果你直接删除的话,默认数据是会留下的,所以我们要先清除数据,然后再删除,具体操作步骤如下:
当我们的采集的值定义完了以后,就可以来定义触发器了。
我们触发器的定义是:界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式。
一般,我们评定采样数值是否为合理区间的比较稳妥的方法是——根据最后N次的平均值来判定结果;这个最后N次通常有两种定义方式:
基本的触发器表达式格式如下所示