Zabbix 是由 Alexei Vladishev 开发的一种网络监视、管理系统,基于 Server-Client 架构。可用于监视各种网络服务、 服务器和网络机器等状态。
使用各种 Database-end 如 MySQL, PostgreSQL, SQLite, Oracle 或 IBM DB2 储存资料。Server 端基于 C语言、Web 管理端 frontend 则是基于 PHP 所制作的。Zabbix 可以使用多种方式监视。可以只使用 Simple Check 不需要安装 Client 端,亦可基于 SMTP 或 HTTP ... 各种协定做死活监视。在客户端如 UNIX, Windows 中安装 Zabbix Agent 之后,可监视 CPU Load、网络使用状况、硬盘容量等各种状态。而就算没有安装 Agent 在监视对象中,Zabbix 也可以经由 SNMP、 TCP、 ICMP、利用 IPMI、 SSH、 telnet 对目标进行监视。另外,Zabbix 包含 XMPP 等各种 Item 警示功能。
Zabbix 的授权是属于 GPLv2。
zabbix server: 负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行。
zabbix database: 专用于存储所有配置信息,以及由zabbix收集的数据。
web gui: zabbix的GUI接口,通常与Server运行在同一台主机上。
zabbix proxy: 可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端。
agent: 部署在被监控主机上,负责收集本地数据并发往server端或proxy端。
zabbix常用的术语:
- 主机(host):要监控的网络设备,可由IP或DNS名称指定。
- 主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用。
- 监控项(item):一个特定监控指标的相关的数据,这些数据来自于被监控对象;item是zabbix进行数据收集的核心,没有item,将没有数据;相对某监控对象来说,每个item都由“key”进行标识。
- 触发器(trigger): 一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从“OK”转变为“Problem”,当数据量再次回归到合理范围时,其状态将从“Problem”转换回“OK”。
- 事件(event): 即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agent的自动注册等。
- 动作(action): 指对于特定事件事先定义的处理方法,通过包含操作(发发送通知)和条件(何时执行操作)。
- 报警升级(escalation): 发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。
- 媒介(media): 发磅通知的手段或通道,如Email、Jabber或SMS等。
- 通知(notification): 通过选定的媒介向用户发送的有关某事件的信息。
- 远程命令(remote command): 预定义的命令,可在被 监控主机处于某特定条件下进自动执行。
- 模板(template): 用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule。模板可以直接链接至单个主机。
- 应用(application): 一组item的集合。
- web场景(web scennario): 用于检测web站点可用性的一个或多个HTTP请求。
- 前端(frontend): zabbix的web接口。
- 图形(graph)
- 屏幕(screens)
- 幻灯(slide show)
zabbix程序组件
zabbix_server:服务端守护进程
zabbix_agentd:agent守护进程;
zabbix_proxy:代理服务器,可选;
zabbix_database:存储系统,MySQL/PGSQL
zabbix_web: Web GUI
zabbix_get:命令行工具,测试向agent端发起数据采集请求;
zabbix_sender:命令行,测试向server端发送数据;
zabbix_java_gateway:java网关;
zabbix安装(测试起间在同一台主机上安装db \ zabbix server \ zabbix web 本机IP 10.1.49.32)
- 安装数据库,ZBX DB
- 安装zabbix_web amp环境
(一)数据库安装
~]# yum -y install mariadb-server
~]# vim /etc/my.cnf 在[mysqld]项中添加skip_name_resolve=ON innodb_file_per_table=ON character-set-server = utf8
~]# systemctl start mariadb.service
~]# systemctl enable mariadb.service
~]# mysql_secure_installation
mysql> CREATE DATABASE zabbix CHARSET 'utf8';
mysql> GRANT ALL ON zabbix.* TO 'zbxuser'@'10.1.%.%' IDENTIFIED BY 'zbxpass';
mysql> FLUSH PRIVILEGES;
(二)zabbix_server安装
~]# yum install zabbix-server-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm
~]# gzip -d /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql.gz
~]# mysql -uzbxuser -h10.1.49.32 -pzbxpass zabbix < /usr/share/doc/zabbix-server-mysql-3.0.2/create.sql
注意:zabbix 2的sql脚本有三个,需要依次导入;
配置zabbix (/etc/zabbix/zabbix_server.conf),常用的如下(通用配置段):
ListenPort=10051
SourceIP= # 指定zabbix服务器端去被监控服务主机上采样数据时使用的IP
LogType={file|system|console} # 默认选file即可
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0 # 是否滚动记录日志且日志大小设置
DebugLevel=3
DBHost=localhost
DBName=zabbix
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306
DBSocket=/tmp/mysql.sock # 这项如果是连接本地数据库(即DBHost=localhost)时要保证与mysql的socket文件保持一致
~]#systemctl start zabbix-server.service # 若无法没有启动,可能是由于缺少组件“trousers-0.3.13-1.el7.x86_64”
(三)zabbix web GUI安装
1.解决依赖关系
~]# yum install httpd php php-mysql php-mbstring php-gd php-bcmath php-ldap php-xml
2.安装web GUI
~]# yum install zabbix-web-3.0.2-1.el7.noarch.rpm zabbix-web-mysql-3.0.2-1.el7.noarch.rpm
3.配置php时区参数在a或b中进行设置
(a) php.ini
(b) /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
4.启动web服务
~]# systemctl start httpd.service
5.访问web 安装zabbix3.0如下图:
http://HOST/zabbix # 默认的管理员帐号密码:admin zabbix
安装后生成的配置文件:/etc/zabbix/web/zabbix.conf.php (可修改)```
![Zabbix安装界面1](http://upload-images.jianshu.io/upload_images/2057465-c02329462875d2fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面2](http://upload-images.jianshu.io/upload_images/2057465-52828a607e38f2db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面3](http://upload-images.jianshu.io/upload_images/2057465-3384eec4452fb973.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面4](http://upload-images.jianshu.io/upload_images/2057465-07476b26643703c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面5](http://upload-images.jianshu.io/upload_images/2057465-15f0c6bbeff5ce8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面6](http://upload-images.jianshu.io/upload_images/2057465-ca7403950f85393e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(四)zabbix agent(10.1.249.134)安装配置:
安装程序包
~]# yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm程序环境:
配置文件:/etc/zabbix/zabbix_agentd.conf
Unit File:zabbix-agent.service
3.配置文件配置段
############ GENERAL PARAMETERS #################
Passive checks related 被动监控相关的配置
Active checks related 主动监控相关的配置
############ ADVANCED PARAMETERS #################
####### USER-DEFINED MONITORED PARAMETERS ####### 用户自定义的监控参数
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######
- 配置文件设置
Server=IP1,IP2,... # 主/被 动检查相关都填写上
ListenPort=10050 # zabbix agent默认监听的端口
ListenIP=0.0.0.0 # zabbix agent不只一个ip时,指定一个
StartAgents=3 # 预启动的进程数
ServerActive=IP1,IP2,...
Hostname=HOST-Id # 客户端主机的hostname - 启动服务
systemctl start zabbix-agent.service # 默认监听在10050端口
#### 配置监控
快速配置一个监控项:
```Configuration --> host groups --> host --> applications --> item --> triggers (events) --> action (condtions, operations)```
**operations:** remote command, alert # 两种操作方式
**host groups:**主机组
**host:**主机
**applications:**可以理解为保存各item(监控项)的容器
**item:** 监控项,每个item都有一个自带的graph,多个graph可以组成screen,多个screen可以组成slide show.
**triggers:**触发器,为监控项所收集的数据定义阈值。它是一个逻辑表达式。每一个触发器仅能关联至一个监控项,但可以为一个监控项同时使用多个触发器。触发器间可存在依赖关系。触发器的表达式:**`{:.()}`**
> server: 主机名称
key:主机上关联的相应监控项的key 即item key
function:评估采集到的数据是否在合理范围内时所使用的函数,其评估过程可以根据采取的数据、当前时间及其它因素进行。有avg count date last max change dayofweek delta diff iregexp nodata now sum...
parameter:函数参数,以“#”为前缀表示最近几次的取值。0代表 #1 即上一次
operator: 为操作符,如+ = * / % > < 等等
示例:{www.magedu.com:system.cpu.load[all,avg1].last(0)}>3
**items:** 将多个指标的数据放在同一个图形里
**grapps: ** 多个图形可以放在一个screen里
**screens --> slide show**
**item key** 每一个监控项(item)上必须有一个item key可以理解为采集主机具体某项数据的手段(或命令别名)如下图,可以在Server端用这个命令zabbix -s 10.1.249.163 -k "agent.hostname" 获得监控主机的hostname
![zabbix内置的item key](http://upload-images.jianshu.io/upload_images/2057465-ea17a860050cc281.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
**item key的类型**
item:item key
两类:
zabbix 内建:
zabbix agent
zabbix agent(active)
用户自定义(UserParamter)
**通信媒介**
媒介类型(Media Types):定义信息传递的方式。
报警信息的传递方式;
类型:
Email:邮件,需要定义发件人邮箱地址和SMTP服务器;
Script:自定义脚本,此脚本有发送信息至相关用户的功能;
SMS、Jabber、Ez Texting
接收通知信息者为zabbix的用户:需要为用户定义对应各种媒介通道的接收方式;
localmail:
script:
**Action操作**
Action:
conditions:触发此动作的条件,一般通过“事件”触发;
operations:触发条件满足时要采取的动作;其有两种类型如下两张图:
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-30b817d81a4097fd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-a6ee35c356237c75.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
message`与`remote command`
1.send message
功能:发报警信息给关联的用户;
(1)可用传递方式:
(a) Email
(b) script:报警脚本
位于server主机的AlertScriptsPath指令参数定义的目录下,默认为/usr/lib/zabbix/alertscripts;zabbix调用脚本时会向其传递参数;3.0之前的版本通过
$1:消息接收人;
$2:消息主题;
$3:消息正文;
3.x之后的版本,此三个参数默认不再传递,需自行定义; 可以使用宏来模拟此前的行为:
{ALTET.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
注意:每个信息接收人相对于此媒介来说,得配置相应的接收地址;
发信息的信道:
邮件
脚本
2.remote command
功能:
在agent所在的主机上运行用户指定的命令或脚本来尝试着恢复故障;例如:
重启服务;
任何由用户自定义的脚本;
类型:
IPMI
custom script
ssh
telnet
global script
![custom script类型的action](http://upload-images.jianshu.io/upload_images/2057465-80a9f15e07813a49.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
> **custom script如上图(以客户端的zabbix用户执行脚本)实现的前提**
在agent端配置:
(1) zabbix拥有执行相应脚本的权限;
编辑/etc/sudoers文件,添加:
zabbix ALL=(ALL) NOPASSWD: ALL
注释如下行:
Defaults requiretty # 不注释这项可能会因为安全问题无法执行远程脚本命令。
(2) agent进程要允许执行远程命令,编辑/etc/zabbix/zabbix-agentd.conf文件,设置:
**EnableRemoteCommands=1如下图** 重启zabbix-agent.service服务生效;
![Paste_Image.png](http://upload-images.jianshu.io/upload_images/2057465-6a3a31aaf5ca0150.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
展示接口:
graph:simple,custom;
screen:
slide show:
模板:
主机配置模板,可链接至主机,从而实现主机的快速监控配置;
模板可继承;
在模板之上link其它模板即可;
从主机上删除模板:
unlink:反链接
unlink and clear:反链接并清除数据;
模板可导出,也可以从指定文件导入;
**宏:MACRO**
预设的文本替换模式;
级别:
全局宏:Administration --> General --> Macros
模板宏:Configuration --> Templates --> TEMPLATE --> Macros
主机宏:Configuration --> Hosts --> HOST --> Macros
类型:
内建:{MACRO_NAME}
自定义:{$MARCRO_NAME}
命名方式:大写字母、数字和下划线;
**网络发现:扫描指定网段上的主机并将其添加进来管理**
zabbix server扫描指定网络范围内的主机;
发现方式:
ip地址范围:
可用服务探测(ftp, ssh, http, ...)
zabbix_agentd的响应对某个key的请求;
snmp_agent响应;
一旦发现某主机,就会产生发现事件;
事件有8类:
Host, Service
Up/Down, Discovered/Lost
发现操作分两步:
discover
actions:
conditions
operations
可采取的动作:
send message, remote command
add/remove host
enable/disable host
add host to group
link template to host
...