用zabbix实现系统监控任务

用zabbix实现系统监控任务_第1张图片
ZABBIX

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实现系统监控任务_第2张图片
zabbix架构

zabbix server: 负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行。
zabbix database: 专用于存储所有配置信息,以及由zabbix收集的数据。
web gui: zabbix的GUI接口,通常与Server运行在同一台主机上。
zabbix proxy: 可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端。
agent: 部署在被监控主机上,负责收集本地数据并发往server端或proxy端。

用zabbix实现系统监控任务_第3张图片
zabbix更详细的架构

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实现系统监控任务_第4张图片
Paste_Image.png

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)

  1. 安装数据库,ZBX DB
  2. 安装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)安装配置:
  1. 安装程序包
    ~]# yum install zabbix-agent-3.0.2-1.el7.x86_64.rpm zabbix-sender-3.0.2-1.el7.x86_64.rpm

  2. 程序环境:
    配置文件:/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 #######

  1. 配置文件设置
    Server=IP1,IP2,... # 主/被 动检查相关都填写上
    ListenPort=10050 # zabbix agent默认监听的端口
    ListenIP=0.0.0.0 # zabbix agent不只一个ip时,指定一个
    StartAgents=3 # 预启动的进程数
    ServerActive=IP1,IP2,...
    Hostname=HOST-Id # 客户端主机的hostname
  2. 启动服务

    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
...

你可能感兴趣的:(用zabbix实现系统监控任务)