zabbix 是一款开源免费的监控软件,目前广泛用于企业监控中,可以监控主机、交换机、路由器、UPS等等。
zabbix 可以采用以下方式进行监控
agent:通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
ssh/telnet:通过远程控制协议进行通讯,比如ssh或者telnet。
SNMP:通过SNMP协议与被监控对象进行通讯,一般监控网络设备例如交换机路由器防火墙等会采用这种协议。
IPMI:通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压,温度,风扇状态,电源状态等。
JMX:通过JMX进行监控,JMX(Java Management Extensions,即Java管理扩展),用这个来监控JVM虚拟机。
zabbix 组件:
zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
zabbix 安装
以centos 7 为例:
zabbix 官方软件包安装地址:http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/
在zabbix server 端:yum install zabbix-server-mysql (server-mysql 是用来连接数据库用的,web 和web-mysql是用来图形化操作用的)
zabbix 被监控端:yum install zabbix-agent zabbix-sender (sender 是用来主动发送给server端的)
管理zabbix server的客户端:yum install http php zabbix-web zabbix-web-mysql (这个也可以和zabbix server在同一台机器上,需要安装http是因为
要通过http 访问和修改zabbix server 配置,安装php 是因为zabbix 的网页呈现是通过php 写的)
远端的数据库192.168.10.33要对zabbix 进行授权:
MariaDB [(none)]> create database zbxdb character set 'utf8';
MariaDB [(none)]> grant all on zbxdb.* to zbxuser@'192.168.%' identified by 'centos';
在zabbix server端 [root@localhost ~]# rpm -ql zabbix-server-mysql 会发现 生成 /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz
文件,需要把该文件解压缩并导入到数据库中,操作如下:
uzip /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz
mysql -uzbxuser -pcentos -h192.168.10.33 -Dzbxdb <create.sql 把解压后的文件导入到远端数据库中。
至此 zabbix 的server 和agent 安装已经完成了,注意zabbix server一定要能够访问数据库,否则zabbix 会不能正常启动的!
zabbix 启动
在zabbix server 端 vim /etc/zabbix/zabbix_server.conf
ListenPort=10051 不需要改默认就是这个端口
SourceIP= 指定源ip 也可以不写
DBHost=192.168.10.33 mysql 服务器ip,如果在同一台机器上就写localhost
DBName=zbxdb 通过DBName指定zabbix数据库对应的名称
DBUser=zbxuser 通过DBUser指定zabbix数据库用户名
DBPassword=centos
DBPort=3306
配置http ,这里采用虚拟主机
vim /etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#
<virtualhost 192.168.10.34:80>
documentroot /usr/share/zabbix
Alias /zabbix /usr/share/zabbix
<IfModule mod_php5.c>
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 always_populate_raw_post_data -1
php_value date.timezone Asia/Shanghai #修改时区
........此处省略一万字
</virtualhost>
配置完成后重启zabbix-server 和httpd 服务 就可以了。确保zabbix-server 10051 存在的 如果没有的话请检查zabbix server 和mysql的连接情况。
在电脑上输入: http://192.168.10.34/zabbix/setup,会看到如下界面:
添加zabbix 监控项
2. 如下图所示: 主机名称要和zabbix-agent 配置文件中hostname 保持一致,否则在zabbix agent 主动发送的时候server端无法识别。可见的名称 填你想用来的标识的名称,配置完成后点击最下面的update。
3 。添加监控项,这里以添加接口的带宽为例,键值的选项很多,很复杂,参考 https://www.zabbix.com/documentation/3.4/zh/manual
4 添加触发器
触发器的语法也较为复杂,这里列举一些触发器的写法。
触发器表达式:
{<server>:<key>.<function>(<parameter>)}<operator><constant>
示例1
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5
它指定了服务器是“www.zabbix.com”,监控项的键值是“system.cpu.load[all,avg1]”。通过使用函数“last()”获取最近一次获取的值。最后,“>5”表示来自主机www.zabbix.com的最后一次获取的负载值大于5时触发器就会进入PROBLEM状态。
示例 2
{www.zabbix.com:system.cpu.load[all,avg1].last()}>5 or {www.zabbix.com:system.cpu.load[all,avg1].min(10m)}>2
当负载大于5或者最近10分钟内负载大于2,表达式为“TURE”,就会使触发器进入PROBLEM状态。
示例 3
{www.zabbix.com:vfs.file.cksum[/etc/passwd].diff()}=1
当文件/etc/passwd检查的checksum值与最近的值不同时,表达式为“TURE”,就会使触发器进入PROBLEM状态。 同样的表达式还可以用于监控重要的文件,比如文件/etc/passwd、/etc/inetd.conf、/kernel等等。
示例 4
{www.zabbix.com:net.if.in[eth0,bytes].min(5m)}>100K
当网络适配器“eth0”在5分钟内接收的字节大于100KB,表达式为“TURE”,就会使触发器进入PROBLEM状态。
示例 5
{smtp1.zabbix.com:net.tcp.service[smtp].last()}=0 and {smtp2.zabbix.com:net.tcp.service[smtp].last()}=0
当SMTP服务器“smtp1.zabbix.com”和“smtp2.zabbix.com”都停止,表达式为“TURE”,就会使触发器进入PROBLEM状态。
关于触发器更多的语法和说明请参考官方文档:https://www.zabbix.com/documentation/3.4/zh/manual/config/triggers/expression
5 查看告警
点击 检查中 ------> 问题 ----> 会看到有问题的告警
6 告警媒介
选择 管理------> 报警媒介类型 这里以电子邮件为例,填上你想发送的电子邮件信箱,只要邮箱服务器允许接受你的邮件的话 ,发生告警后你的邮箱就会收到告警信息啦!