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架构
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](https://img.haomeiwen.com/i2057465/c02329462875d2fc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面2](https://img.haomeiwen.com/i2057465/52828a607e38f2db.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面3](https://img.haomeiwen.com/i2057465/3384eec4452fb973.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面4](https://img.haomeiwen.com/i2057465/07476b26643703c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面5](https://img.haomeiwen.com/i2057465/15f0c6bbeff5ce8d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![zabbix安装界面6](https://img.haomeiwen.com/i2057465/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>.<function>(<parameter>)}<operator><constant>`**
> 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](https://img.haomeiwen.com/i2057465/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](https://img.haomeiwen.com/i2057465/30b817d81a4097fd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![Paste_Image.png](https://img.haomeiwen.com/i2057465/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](https://img.haomeiwen.com/i2057465/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](https://img.haomeiwen.com/i2057465/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
...
网友评论