一、什么是zabbix及优缺点(对比cacti和nagios)
Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
agent端:主机通过安装agent方式采集数据。
server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示.
zabbix = cacti + nagios
- 优点:基于两款工具优点于一身并更强大,实现企业级分布式监控。
- 缺点:2.2版本带宽占用大但是升级到2.4版本后更节省了带宽资源,其它再无发现。
二、监控功能
主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制
监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等
监控网络设备zabbix通过SNMP,ssh(不多用)
可监控对象
- 设备:服务器,路由器,交换机
- 软件:OS,网络,应用程序
- 主机性能指标监控
- 故障监控: down机,服务不可用,主机不可达
三、工作原理
一个监控系统运行的大概的流程是这样的:
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
四、zabbix的组件及进程
重要组件
zabbix由以下几个组件部分构成:
1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;界面
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上 ,负责收集本地数据并发往Server端或Proxy端;
注:zabbix node也是 zabbix server的一种 。
常见进程
五、zabbix监控环境中基本概念
1、主机(host):要监控的网络设备,可由IP或DNS名称指定;
2、主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
3、监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
4、触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
5、事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
6、动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
7、报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
8、媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
9、通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
10、远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
11、模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;
12、应用(application):一组item的集合;
13、web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
14、前端(frontend):Zabbix的web接口;
在centos7.3上安装zabbix4.0
#安装mariadb10.3数据库
vim /etc/yum.repos.d/mariadb(随意名称).repo
[mariadb] name=MariaDB baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/ gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck=1 #安装mariadb数据库
yum -y install MariaDB
#安装zabbix4.0的源 rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm yum clean all
#安装zabbix所需的组件 yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent(客户端只需要安装agent能被检测就行)
分别对应着sever端、web端、client端
创建编辑zabbix所需数据库 # mysql -uroot -p1 mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; mysql> quit;
#导入zabbix服务器所需要的表和数据 zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
#编辑文件/etc/zabbix/zabbix_server.conf DBPassword=zabbix
#编辑文件设置时区/etc/httpd/conf.d/zabbix.conf php_value date.timezone Europe/Riga(打开注释)
将时差改为中国的 Asia/shanghai
#启动服务和开机自启 systemctl restart zabbix-server zabbix-agent httpd systemctl enable zabbix-server zabbix-agent httpd
#浏览器访问 http://server_$ip/zabbix
#启动服务和开机自启 systemctl restart zabbix-server zabbix-agent httpd systemctl enable zabbix-server zabbix-agent httpd
#浏览器访问 http://server_$ip/zabbix
以上步骤在zabbix官网下载中有同样档案https://www.zabbix.com/download
注意:登录配置时确保状态OK ,有红色排查问题,不然会有后遗症
登录时用户名为Admin(超级管理员) 密码为zabbix
有乱码方块的解决办法
在windows下的C:WindowsFonts下找到宋体字文件simsun.ttc 上传到linux服务器中
cd /usr/share/zabbix/fonts
#将原来的字体备份 mv graphfont.ttf graphfont.ttf.bak
#把windows中的字体改名为graphfont.ttf mv simsun.ttc graphfont.ttf
监控其他主机,编辑被检测端文件
vim /etc/zabbix/zabbix_agentd.conf
更改sever=192.168.7.100 被动模式
ServerActive=192.168.7.100 主动模式
注释# Hostname=Zabbix server 手写主机名称
打开 HostnameItem=system.hostname 自动获取主机名称
tail -f /var/log/zabbix/zabbix_sever.log 查看日志 检测agent是否开启
配置Zabbix服务端邮件报警
一、关闭sendmail或者postfix
service sendmail stop #关闭
chkconfig sendmail off #禁止开机启动
service postfix stop
chkconfig postfix off
备注:使用外部邮箱账号时,不需要启动sendmail或者postfix
如果在sendmail或者postfix启动的同时使用外部邮箱发送报警邮件,首先会读取外部邮箱配置信息。
二、安装邮件发送工具mailx (监控端)
下载mailx:
yum -y install mailx
whereis mailx #查看安装路径
mailx -V #查看版本信息
三、配置Zabbix服务端外部邮箱
vim /etc/mail.rc #编辑,添加以下信息
set from=xxx@163.com smtp=smtp.163.com
set smtp-auth-user=xxx@163.com smtp-auth-password=passwd
set smtp-auth=login
四、测试邮箱是否配置成功
echo "zabbix test mail" |mail -s "zabbix" yyy@163.com
#测试发送邮件,标题zabbix,邮件内容:zabbix test mail,发送到的邮箱:yyy@163.com
#这时候,邮箱yyy@163.com会收到来自xxx@163.com的测试邮件。
五、添加Zabbix服务端邮件发送脚本
cd /usr/lib/zabbix/alertscripts #进入脚本存放目录编辑脚本
(zabbix_sever.conf设定会自动调用这个目录的脚本)
vim sendmail.sh #编辑,添加以下代码
#!/usr/bin/sh echo 'start' >> /tmp/zabbix.log messages=`echo $3 | tr '
' '
'` subject=`echo $2 | tr '
' '
'` echo "${messages}" | mail -s "${subject}" $1 echo "end" >> /tmp/zabbix.log
保存退出后
chown zabbix.zabbix sendmail.sh
#设置脚本所有者为zabbix用户
chmod +x sendmail.sh
#设置脚本执行权限
chown zabbix.zabbix /tmp/zabbix.log
#创建脚本里最后一行的日志文件并设置所有者
测试脚本:./sendmail.sh xxx@163.com(发送对象) subject(主题) message(信息内容)
对应着报警媒介类型上面那个界面
管理->用户->Admin->报警媒介->添加:设置Zabbix用户报警邮箱地址
六:配置->动作->创建动作:设置Zabbix触发报警的动作
将以下内容分别复制进去
七: 测试Zabbix报警
关闭Zabbix客户端服务
service zabbix_agentd stop
查看xxx@163.com邮箱,会收到报警邮件
再开启Zabbix客户端服务
service zabbix_agentd start
查看xxx@163.com邮箱,会收到恢复邮件
错误描述
"cannot send list of active checks to []: host [] not found"
解决办法
1、因为web端上被监控端的主机名和zabbix_agentd.conf中的Hostname名字不一样,改为一样的即可
2、防火墙未关闭
3、模板未添加