1. 安装epel扩展包,并升级ca证书ssl
yum install -y epel-release
yum --disablerepo=epel -y update ca-certificates
yum clean all
yum makecache
如果你想知道为什么,那么一定要参考这个文章,当然不想了解的话就算了
2. 安装LAMP环境
yum install -y httpd mysql mysql-libs php php-mysql mysql-server php-bcmath php-gd php-mbstring
3.安装zabbix服务端
yum install zabbix20 zabbix20-agent zabbix20-server zabbix20-server-mysql zabbix20-web zabbix20-web-mysql net-snmp-devel
4. 启动zabbix服务和Apache服务
service zabbix-server start
service zabbix-agent start
service httpd start
5. 修改mysql的配置文件
vim /etc/my.cnf
修改或加入以下内容
[mysql]
default-character-set = utf8
[mysqld]
character_set_server = utf8
6. 启动mysql服务
service mysqld start
7. 创建zabbix数据库并导入zabbix-mysql表
mysql -uroot -e "create database zabbix"
mysql -uroot --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/schema.sql
mysql -uroot --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/images.sql
mysql -uroot --default-character-set=utf8 zabbix < /usr/share/zabbix-mysql/data.sql
8. 创建zabbix数据库用户
mysql -uroot -e "grant all on zabbix.* to 'zabbix'@localhost identified by 'zabbix1'"
9. 通过网页来安装zabbix
在浏览器中输入ip/zabbix
对我来说,输入10.2.3.110/zabbix
但是刚进入的时候,会报如下错误:
这主要是因为我们php的时区问题,我们可以改一下时区
vim /etc/php.ini
找到
;date.timezone=
更改为
date.timezone= "Asia/Shanghai"
很多人改了之后还是出现问题,注意一下自己拼写和用的双引号
重启httpd
service httpd restart
之后再进入安装页面,问题解决
接下来我们点next,此时会出现几个php配置问题
我们更改一下php配置文件
vim /etc/php.ini
找到以下选项并更改为错误页面给出的数值即可:
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
之后我们重启httpd,回来刷新页面即可
service httpd restart
点击next,进入下一步
在这个界面我们要填上我们刚才创建的数据库名字,授权的数据库用户和对应的密码
zabbix
zabbix
zabbix1
点击test connection,出现OK即证明mysql可用,点击next进入下一步
在这我们可以看到zabbix-server的默认端口是10051,当然我们可以更改,Name自己可以随便起名字,我在这里用127.0.0.1
之后两步,点击next即可
最后我们到了登录界面,默认用户名admin密码zabbix我们登录进去后台
登录后界面如下,上方出现的警告是因为我们的zabbix无法登录我们的数据库,而不能登录的原因当然是我们没告诉zabbix我们设置的用户和密码是什么啦!所以我们告诉他用户名密码即可:
vim /etc/zabbix/zabbix_server.conf
找到并修改如下内容
DBName=zabbix #这是我们的数据库名字
DBUser=zabbix #这是我们的数据库用户名
DBPassword=zabbix1 #这是我们的数据库密码
之后我们重启zabbix-server即可
service zabbix-server restart
在这我们可以去看下监控的本机数据,点击Monitoring->Lastest data我们可以看到相应的本机数据。
如果这里看不到监控的数据或者上方一直提示Zabbix Server is not running:the information displayed may not be current,点我来看解决方案。
其实zabbix自带了很多的监控模板,监控模板就是一些监控项的集合,我们点击Configuration->Templates即可看到所有的模板列表
.当然,如果我们要定义自己的模板,也可以自己编写自己的模板,每一个模板中包含了很多你要监控的项目、对特定项目的触发器等等。编写自己模板的时候,我们也可以从其他的模板中copy过来item和trigger,也可以自己编写。
下面我们创建一个模板
依次点击Configuration->Templetes->Create templetes
填写模板名称Templates name 和Visible name
所在的group选择右侧的Templates,点击中间的双三角符,转换到左侧来
在选图所示的Linked templates选项中,我们可以选择所连接的其他某个模板,也可以将其他几个模板组合起来,在这里我们以后去选择一些模板中的监控项即可,不用选择某个模板的全部监控项
点击Save,保存模板。我会回到模板列表即可看到我们的模板
我们去的模板列表中找到其他模板的Items
我选择以下6项,大家可以看到我选择的有个特点,有的选项后面有trigger有的没有,这也证明了我们的trigger是绑定到items上的
我们选择左下角的copy selected to,单后点击Go
会跳转到下个界面,我们选择Hosts,Templates,下面就会出现我们自己创建的模板,lk-templates,我们够选,然后点击左下角的copy即可
之后我们回到Templates list界面,可以看到我们的模板中有了6个items
这就是我们自定义的模板。
但是很别人来用我们的模板,知道我们要监控的项目是items中的项目,但是我们还没有规定什么时候item是正常的呢,一直监控,不检测出错也没什么用,所以trigger就是用来规定这个东东的。trigger就是规定了什么时候监控的某个项是正常的,什么时候是不正常的,
当然,我们可以自己规定,但是我太懒了,既然我们copy的别人的监控项目,别人对自己监控项目的模板也肯定有规定,我们再去拷贝Template OS Linux的trigger吧,但是之前我们必须清楚我们拷贝到items中,那些定义了trigger,不然把triggercopy过来,却每监控项有什么用呢?我们其实拷贝的6项中只有三项有trigger
所以我们去去copy,但之前,我们先看下各个trigger的名字,鼠标移动到trigger上即可查看
之后和copy item一样,去copy我们Template OS Linux的trigger吧。
内容不再详述,看图。
回到我们的模板列表,可以看到我们的模板已经添加了触发器trigger
接下来,我们来为我们的模板创建一个自定义的item,并为之创建一个触发器。
进入我们模板的item中,点击右上角的create item
Name自定义,Type就选择zabbix agent
选择key时,点击右侧的select,我们选择下图标注项
但是我们要更改key的表达式指定我们要监控的网卡时eth0
同时我们指定监控的单位为bps,bps表示比特率,即每秒多少个bit,我们知道8bit是一个byte,我们要监控每秒多少字节,所以我们bps乘以8就是每秒多少字节了,下面的store as选择simple change,点save即可
之后我们点击save就能看到我们添加的item,至此,我们item就添加完成,下面我为这个item添加一个trigger,规定他啥时候是正常的啥时候是不正常的。
创建trigger
点击上面的trigger
再点击右上角的create trigger
关于表达式Expression我们选择Add后进入下面界面
我们点击select,选择我们的trigger要加在那个item上,之后我们进入下面的界面,按图中所示选择后,显示图中内容
然后我们选择trigger绑定到“网卡入流量”这个监控项上,然后我们指定函数为如下,表示如果流量值大于N的话就是不正常,我们设置N为500,即表示网卡瞬时流量大于500B每秒,就会触发trigger,然后我们点击Insert
我们回到trigger主界面,可以看到表达式已经有了,下面的警告级别我们选择Warning,选择Enable,证明我们要开启使用这个trigger。然后我们点击下面的Save即可
可以看到trigger添加成功!此时我们的模板制作的差不多了,我们来添加一个主机来监控玩玩
10. 监控客户端主机
10.1 在客户端安装epel扩展包,并升级ca证书ssl
yum install -y epel-release
yum --disablerepo=epel -y update ca-certificates
yum clean all
yum makecache
10.2 安装zabbix-agent
yum install -y zabbix20-agent
10.3 更改客户端的配置文件
vim /etc/zabbix_agentd.conf
更改
Server=10.2.3.110 #代表服务端主机ip
ServerActive=0.0.0.0:10050
Hostname=aming #自定义,但要唯一
启动客户端
/etc/init.d/zabbix-agent start
客户端配置完毕!
10.4 测试客户端的配置
zabbix_get -s 客户端ip -p10050 -k "system.hostname"
对我来讲是
zabbix_get -s 10.2.3.111 -p10050 -k "system.hostname"
正确的话会输出客户机的主机名
10.5 在监控后台创建监控主机
依次点击Configuration->Hosts->Create host,进入到创建主机的界面
在下面界面中自定义我们所监控主机的名字Host name 和 Visible name
我在这里用10.2.3.111即我的客户端主机ip
Grop选择右侧的Linux Servers点击向左的双箭头即可
再底下的IP Address填写客户端ip
接着我们可以点击上方的第二个选项Templates,来选择监控模板
我选择一个自己之前定义的模板lk-template,勾选后点击左下角的select
可以看到已经选择了此模板
然后我们点击Save即可,主机创建完成
回到主机列表,我们可以看到我们监控的主机,这时候我们去看一下监控的数据
我们依次点击Monitoring->Lastest data,然后选择右上方的Group为Linux servers ,host是我们之前创建的主机名字,可以看到下面有个other我们点other前面的+号,可以看到我们的监控项,其实就是我们模板中的那些监控项
如果看不到我们自定义的item网卡入流量,我们刷新几次等一下就能看到了
我们点击网卡入流量后面的graph,可以看到图形数据
11. 邮件告警
最后我们来设置邮件报警,当然邮件报警是基于trigger的基础上,一旦触发器被触发,我们执行action,所以我们要设置action,设置action之前我们还要设置媒体类型,媒体类型就是我们要通过怎么样的方式来报警,我们这里使用脚本script来报警,所以之前我们要写脚本,脚本要通过sendmail来发送邮件,所以首先我们要在server上安装sendmail
安装sendmail:
yum install -y sendmail
创建告警脚本存放的文件夹
mkdir -p /home/zabbix/bin
vim /home/zabbix/bin/baojing.sh
在脚本中加入以下内容:
#!/bin/bash
echo "$3" | /bin/mail -s "$2" $1
保存后给脚本加上执行权限
chmod +x /home/zabbix/bin/baojing.sh
定义脚本的位置
vim /etc/zabbix_server.conf
找到如下内容,改为自己脚本的存放目录
AlertScriptsPath=/home/zabbix/bin
ExternalScripts=/home/zabbix/bin
然后我们回到网页后台,首先创建一个媒体类型
依次点击Administration->Media types->Create media type来创建我们的脚本媒体类型
描述可以自己起名字,随便
Type类型要选择脚本
脚本名字要和自己之前编写的脚本的名字一致,Enable启用,点击Save
创建媒体类型完成
接着按照老师的说法我们应该创建一个用户,但是我创建用户后好像是权限的问题试了好多做法:给脚本该属组和属主,给脚本加777权限,将用户加到管理员组....但是都是不能发送邮件,应该是权限问题,我没解决,但是我用admin用户就没问题。所以接下来我就直接更改admin所绑定的媒体类型
依次点击Administrator->User更改右上角为Users,显示出我现在所有的用户,我们点击Admin
我们其他的不用更改,直接点上方的Media来绑定我们的媒体类型,点击Add
按下图进行填写,点击Add,然后点击Save即可
我们看到,增加成功
最后我们去设置Action动作
依次点击Configuration->Action->Create action
名字自己命名,第二个Default operation step duration是两次发邮件的默认时间间隔,然后我们点击Condition
这里我们只监控我们定义的trigger,其他的都不管,所以A和B先Remove
然后点击new condition选择trigger name,点击select选择trigger
我们选择自定义的trigger
然后回到下面这个页面
这一步千万注意,一定要点击底下的Add,不然不会添加 !!
然后我们选择Option点击new
在这里我们可以定义发送的次数from 1 to n,n就是定义发送多少次,默认1次,可以更改,底下的step duration代表发送时间间隔,如果这里设为0就代表使用我们在Action页面设置的默认发送时间间隔,这里设置的话,就会用这里的而不用Action中的,我这里默认0就好,下面的operation type选择send message,底下我们可以选择发送给组,也可以选择发送给个人用户,我这里选择发送给用户Admin
我选择如下选项
但是这里如果直接选择Save,会出现下面错误,这是因为你没有点击Add
这样才能点击Save了,保存成功!
所有工作都做好了,我们更改一下触发条件,让其触发发邮件
选择我们的触发器
这里我们更改表达式,让瞬时流量大于1M/s的时候报警,也就是1048576byte/s,点击保存,你也可以改小一点,更容易触发
我们现在回到监控页面,注意看我红框圈住的位置
我们回到被监控的客户机上,装一个安装包我这里随便装一个mysql
一直刷新监控页面,我可以看到已经被监控到了,Action 1也执行成功了
这时候我去查看我的邮件发现没到收件箱里,跑到垃圾箱去了,这是被qq邮箱当成垃圾邮件了
看,我们收到两封,一封是Problem的一封是Ok的,就是当流量大的时候发送一封,恢复正常的时候再来一封,自此成功!!!!
后记:
我感觉zabbix还是很重要的,所以我耗费了至少两天半(30个小时+)去研究它,为了接受邮件我做实验收了几百封,163邮箱都给我玩坏了...但是能搞明白我还是很兴奋的,很开心自己能坚持下来,谢谢冀老师和童鞋们!
大家不懂的请留言,有错的请指教!