20171126 Zabbix(一)

  • Zabbix简要介绍
  • Zabbix的监控配置
  • Zabbix的展示接口
  • templates,模板
  • macros,宏

一、Zabbix简要介绍:

(一)监控系统的四种基本功能:

(1)采样:
  • 数据采集通道:SNMP, ssh, telnet, IPMI, agent, JMX(Java Management eXtension)
(2)存储:
  • 数据:历史数据、趋势数据
  • 存储系统:关系型数据库(MySQL),rrd(round-robin database),No-SQL数据库(时间序列存储)
(3)报警:
  • 可以通过脚本执行操作
  • 媒介:邮件,短信,即时通讯工具
(4)展示:直观的可视界面

(二)Zabbix的特征

  • 数据采样:
    数据采集通道:snmp, ssh/telnet, agent, ipmi, jmx(java Management eXtensions)
    自定义采样机制:UserPrameter(基于agent实现)

  • 报警:根据设定的条件,报警可能向更高一级的管理员上报

  • 数据存储:支持mysql/pgsql

  • 展示:
    实时绘图:graph, screen, slide show, map

  • 支持模板、网络自动发现、分布式监控

(三)Zabbix的逻辑组件

  • 主机 (host)
  • 主机组(host groups):多台主机组成,方便管理
  • 监控项(item)
    key:实现获取监控目标上的数据的命令或脚本的名称
  • 应用(application):同一类监控项的集合
  • 触发器(trigger):监控项符合某种条件的表达式
  • 事件(event):触发器条件符合时引发
  • 动作(action):分为条件(condition)和操作(operation)组件
    通知(notification):通知发生的事件
    远程命令(remote command):事件触发动作的一类,在远程主机上执行命令
    报警升级:当事件触发动作在规定时间没有发挥作用,可能会向上一级管理员报警
    媒介(media):发送通知的通道
  • 模板(template):快速定义被监控主机的各监控项的预设项目集合
  • 图形(graph):用于展示历史数据或趋势数据的图像
  • 屏幕(screen):由多个graph组成

(四)Zabbix的程序组成结构

(1)zabbix程序的组件:
  • zabbix_server:服务端守护进程
  • zabbix_agentd:agent守护进程
  • zabbix_proxy:代理服务器,可选组件
  • zabbix_get:命令行工具,手动测试向agent发起数据采集请求
  • zabbix_sender:命令行工具,运行于agent端,手动向server端发送数据
  • zabbix_java_gateway:java网关
  • zabbix_database:MySQL或PostgreSQL
  • zabbix_web:Web GUI
(2)zabbix的安装:

实验1:实现在server端和agent端的zabbix安装

本文中所有实验主机ip情况:
node0.hellopeiyang.com: 192.168.136.230, zabbix agent
node1.hellopieyang.com: 192.168.136.130, zabbix agent
node2.hellopeiyang.com: 192.168.136.131, zabbix server

步骤1-5步骤为zabbix服务器端配置,步骤6-7为zabbix客户端配置

  • 步骤1:安装并配置数据库
yum install mariadb-server
vim /etc/my.cnf.d/server.cnf    // 配置mysql服务器端参数
skip_name_resolve = ON
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M
max_connections = 2000

systemctl start mariadb.service
mysql_secure_installation
mysql -uroot -pcentos           // 创建zabbix数据库并建立专属管理员账户
MariaDB [(none)]> create database zbxdb;
MariaDB [(none)]> grant all on zbxdb.* to 'zbxuser'@'192.168.136.%' identified by 'zbxpass';
  • 步骤2:安装zabbix的server端和agent端
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm 
rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm   // 配置zabbix源的小工具
yum install zabbix-server-mysql zabbix-web zabbix-web-mysql zabbix-agent zabbix-get zabbix-sender
  • 步骤3:配置zabbix数据库,生成zabbix数据库的专属表
cp /usr/share/doc/zabbix-server-mysql-3.4.4/create.sql.gz /root/
gzip -d /root/create.sql.gz
mysql -umzbxuser -pzbxpass -h192.168.136.131
MariaDB [(none)]> USE zbxdb;
MariaDB [(zbxdb)]> source /root/create.sql
  • 步骤4:修改zabbix的server端配置
cd /etc/zabbix
cp zabbix_server.conf zabbix_server.conf.bak
vim zabbix_server.conf
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.136.131
DBName=zbxdb
DBUser=zbxuser
DBPassword=zbxpass
DBPort=3306

systemctl  start zabbix-server
  • 步骤5:修改zabbix的web端配置,时区设置
vim /etc/httpd/conf.d/zabbix.conf     // 只在zabbix中生效
php_value date.timezone Asia/Shanghai
或者
vim /etc/php.ini                      // 在所有php应用中生效
date.timezone = Asia/Shanghai
systemctl start httpd
  • 步骤6:安装zabbix的agent端
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
rpm -ivh zabbix-release-3.4-1.el7.centos.noarch.rpm
yum install zabbix-agent zabbix-sender
  • 步骤7:配置zabbix的agent端配置
vim /etc/zabbix/zabbix_agentd.conf 
##### Passive checks related       // 被动监控相关配置
Server=192.168.136.131
ListenPort=10050
ListenIP=0.0.0.0
##### Active checks related        // 主动监控相关配置,agent端主动向server周期性发送数据
ServerActive=192.168.136.131
Hostname=node1.hellopeiyang.com    // 必须与监控主机的主机名称保持一致

systemctl start zabbix-agent
  • 步骤8:此时可以登录监控主机的http服务,完成zabbix的web控制台初始化
    浏览器登录:http://192.168.136.131/zabbix,ip地址为监控主机
    在配置数据库连接步骤时,注意按照之前的设置填写,其他按照提示内容配置即可
20171126 Zabbix(一)_第1张图片

二、Zabbix的监控配置

(一)监控配置的一般顺序

host groups --> host --> application --> item --> trigger --> action (conditions, operations)

(二)items的设置: key+parameter

(1)key:分为两种
  • zabbix内建:按照数据采集通道的不同分布不同的类别,如:
    agent (server:pull)
    agent(active) (agent:push)
    snmp v1

  • 用户自定义(UserParameter)

(2)采集到的数据的类型:
  • 数值:整数,浮点数
  • 字符串:字符串,文本
(3)存储的值:
  • As is:不对数据做任何处理
  • Delta(simple change):本次采样减去前一次采样的值的结果
  • Delta(speed per second):本次采样减去前一次采样的值,再除以经过的时长

(三)trigger的配置:

  • 逻辑表达式,通常用于定义数据的不合理区间(阈值)
    OK:正常状态
    PROBLEM:非正常状态

  • 触发器表达式:
    {hostname:key[paramters].function(arguments) }

  • 触发器存在可调用的函数:
    nodata(), last(), date(), time(), now(), dayofmonth()等

  • Severity:严重等级,依次递增
    Not classified, Information, Warning, Average, High, Disaster

(四)event事件机制:

(1)四种事件源:

trigger, discovery, auto registration, internal

(2)Media:媒介,告警信息的传递通道
  • 类型:
    Email:邮件
    Script:自定义脚本
    SMS:短信

  • 接收信息的目标为zabbix用户:需要用户上定义对应各种媒介通道的接收方式

(3)Action:
  • conditions:多个条件之间存在逻辑关系
  • operations:条件满足时触发的操作
(4)send message,通知:
  • Media type:传递信息的通道

    • Email
    • Script:报警脚本
      脚本放置路径:zabbix_server.conf配置文件中AlertScriptsPath参数定义的路径下,默认/usr/lib/zabbix/alertscripts/
      zabbix服务器在调用脚本时,会向其传递三个参数,此三个变量定义为内部宏:
      {ALERT.SENDTO}
      {ALERT.SUBJECT}
      {ALERT.MESSAGE}
  • 信息接收人:
    User Groups
    Users: Admin

(5)remote command,远程命令:
  • 功能:在agent所在的主机上运行用户指定的命令或脚本

  • 前提:在agent需要完成的配置

    • zabbix用户拥有所需要的管理权限
      编辑/etc/sudoers文件,注释如下行
      Defaults requiretty
      添加如下行:
      zabbix ALL=(ALL) NOPASSWD: ALL

    • agent进程要允许执行远程命令
      编辑/etc/zabbix/zabbix_agentd.conf,设置如下配置:
      EnableRemoteCommands=1

(五)实验:实现监控远程主机

实验2:监控远程主机的nginx服务是否正常运行;若不正常,尝试重启服务;若重启服务仍旧不能使服务恢复运行,则向指定地址发送告警邮件

实验前提:按照实验1的要求,在被监控的远程主机上安装agent端并正确配置

  • 步骤1:建立host groups,名为websrvs
20171126 Zabbix(一)_第2张图片
  • 步骤2:建立hosts,监控主机node0.hellopeiyang.com
20171126 Zabbix(一)_第3张图片
  • 步骤3:建立items
    通过监听80端口确认nginx服务状态,监控间隔时间5s,返回值转换为"Service state"格式,将本item归集至名为"nginx stats"的application中
20171126 Zabbix(一)_第4张图片
  • 步骤4:建立triggers
    严重性定义为"High",当最近3次测试tcp的80端口服务均不可用时,触发本trigger
20171126 Zabbix(一)_第5张图片
  • 步骤5:建立event前先定义media媒介

本实验报警信息通过email方式发送,故需要配置Media types中email的选项卡

20171126 Zabbix(一)_第6张图片
  • 步骤6:定义actions

设定执行action的条件是“不处于维护状态,并且触发了nginx服务不可用为真的trigger”

20171126 Zabbix(一)_第7张图片

设定支持action的动作:1. 在远程主机重启nginx服务;2. 若执行动作1的60s后仍旧无法恢复正常,则向指定用户发送邮件

20171126 Zabbix(一)_第8张图片

定义动作1的具体配置,为了能够成功执行远程命令,还需要在被监控主机上做如下配置

visudo
zabbix  ALL=(ALL)       NOPASSWD: ALL     // 配置sudo权限

vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1                    // 允许执行远程命令

systemctl restart zabbix-agent
20171126 Zabbix(一)_第9张图片

定义动作2的具体配置,注意按照步骤5定义选择媒介

20171126 Zabbix(一)_第10张图片

定义异常成功恢复时的操作,此处定义为发邮件

20171126 Zabbix(一)_第11张图片
  • 步骤7:测试

关闭被监控主机,同时确保不能重启nginx服务。可以在dashboard中看到监控到nginx服务不可用,触发了设置的trigger,同时执行了actions

20171126 Zabbix(一)_第12张图片

执行actions的详细情况:先执行重启服务的远程命令失败,60s后发送邮件成功

20171126 Zabbix(一)_第13张图片

确认成功接收到了邮件

20171126 Zabbix(一)_第14张图片

手动启动nginx服务,dashboard中的监控已经恢复正常,同时acitons数增加1

20171126 Zabbix(一)_第15张图片

查看actions具体情况,增加的action为恢复服务发送邮件

20171126 Zabbix(一)_第16张图片

确认成功接收到了服务恢复通知邮件

20171126 Zabbix(一)_第17张图片

此次确保在nginx服务不可用时远程执行命令重启服务成功;当nginx服务不可用时,自动恢复服务成功,只执行了2个actions

20171126 Zabbix(一)_第18张图片

查看actions具体情况,分别是成功执行远程命令重启nginx服务和发送服务恢复通知邮件

20171126 Zabbix(一)_第19张图片

三、Zabbix的展示接口

(一)graph:图形

(1)graph的分类:

  • simple:默认生成,一张图展示一个item
  • custom:自定义,可以将多个item的指标展示在一张图中

(2)实验:实现自定义graph

实验3:自定义一张图,实现在一张图中显示rate of packets(in) 和 rate of packets(out)两个item

  • 步骤1:自定义图,Y轴最大值120,rate of packets(in)的绘制风格为渐进色
20171126 Zabbix(一)_第20张图片
  • 步骤2:在Monitoring=>Graphs中,可以看到自定义的graph
20171126 Zabbix(一)_第21张图片

(二)screen:

  • 把多个graph整合于同一屏幕进行展示

  • 实验4:实现将多个graph整合在一个screen中

    • 步骤1:定义screen的名称"node1 status",2行×2列排布
    20171126 Zabbix(一)_第22张图片
    • 步骤2:分别编辑每个“格子”链接的graph
    20171126 Zabbix(一)_第23张图片
    • 步骤3:最终效果如下
    20171126 Zabbix(一)_第24张图片

(三)slide show:幻灯片

  • 把多个screen以slide show的方式进行展示

  • 实验5:实现多个screen幻灯片方式循环展示

    • 步骤1:首先准备好两个以上的screen
20171126 Zabbix(一)_第25张图片
  • 步骤2:创建slide_shows,包含之前定义的screen,切换间隔5s
20171126 Zabbix(一)_第26张图片

(四)map:

  • 用于展示网络连接拓扑,直观查看连接状态

四、templates,模板:

  • 主机配置模板:用于链接至目标主机实现快速监控管理

  • 实现:通过在主机选项中链接模板,快速添加items, triggers, graphs等

20171126 Zabbix(一)_第27张图片
  • 模板可继承:一个模板可以链接至其他模板

五、macros,宏:

  • 定义:预设的文本替换模式

  • 用途:当需要重复使用某个值,且此值需要统一变动时,此时适用宏的使用

  • 级别:
    全局:Administration --> General --> Macros
    模板:编辑模板 --> Macros
    主机:编辑主机 --> Macros

  • 类型:
    内建:{MACRO_NAME}
    自定义:{$MACRO_NAME},命名方式:大写字母、数字和下划线

  • 实验6:使用宏定义redis的监听端口,在定义item过程中使用宏

    • 步骤1:定义主机宏{$REDIS_PORT}
    20171126 Zabbix(一)_第28张图片
    • 步骤2:定义items,端口号可以直接用定义的宏{$REDIS_PORT}代替
    20171126 Zabbix(一)_第29张图片

你可能感兴趣的:(20171126 Zabbix(一))