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地址为监控主机
    在配置数据库连接步骤时,注意按照之前的设置填写,其他按照提示内容配置即可

二、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
  • 步骤2:建立hosts,监控主机node0.hellopeiyang.com
  • 步骤3:建立items
    通过监听80端口确认nginx服务状态,监控间隔时间5s,返回值转换为"Service state"格式,将本item归集至名为"nginx stats"的application中
  • 步骤4:建立triggers
    严重性定义为"High",当最近3次测试tcp的80端口服务均不可用时,触发本trigger
  • 步骤5:建立event前先定义media媒介

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

  • 步骤6:定义actions

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

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

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

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

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

systemctl restart zabbix-agent

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

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

  • 步骤7:测试

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

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

确认成功接收到了邮件

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

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

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

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

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

三、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)的绘制风格为渐进色
  • 步骤2:在Monitoring=>Graphs中,可以看到自定义的graph

(二)screen:

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

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

    • 步骤1:定义screen的名称"node1 status",2行×2列排布
    • 步骤2:分别编辑每个“格子”链接的graph
    • 步骤3:最终效果如下

(三)slide show:幻灯片

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

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

    • 步骤1:首先准备好两个以上的screen
  • 步骤2:创建slide_shows,包含之前定义的screen,切换间隔5s

(四)map:

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

四、templates,模板:

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

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

  • 模板可继承:一个模板可以链接至其他模板

五、macros,宏:

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

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

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

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

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

    • 步骤1:定义主机宏{$REDIS_PORT}
    • 步骤2:定义items,端口号可以直接用定义的宏{$REDIS_PORT}代替
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 143,048评论 1 300
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 61,330评论 1 256
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 94,541评论 0 213
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 41,042评论 0 176
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 48,821评论 1 255
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 38,795评论 1 176
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 30,413评论 2 271
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,173评论 0 167
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 28,994评论 6 229
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 32,525评论 0 213
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,327评论 2 215
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 30,648评论 1 230
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 24,248评论 0 31
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,142评论 2 214
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 31,521评论 3 204
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,622评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,025评论 0 166
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 33,543评论 2 230
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 33,636评论 2 231

推荐阅读更多精彩内容

  • Zabbix简介 Zabbix官方网站Zabbix中文文档 本文系统环境是CentOS7x86_64, Zabbi...
    Zhang21阅读 7,802评论 0 38
  • 1.写在前面 本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的...
    天之蓝色阅读 2,434评论 0 17
  • 一、准备搭建环境 1.系统:CentOS 7.3 2.软件:Zabbix 3.2 二、安装前的准备 最小化安装Ce...
    尘世不扰阅读 4,056评论 8 31
  • 作者:樊荣强 “钻石法则”是我口才课程的核心技术。我的一个基本观点是,讲话是一门艺术,但它首先是一门技术。因此,既...
    樊荣强阅读 1,021评论 2 14
  • L0范数和L1范数 L0范数是指向量中非零元素的个数,如果用L0规则化一个参数矩阵W,就是希望W中大部分元素为0,...
    程序猿爱打DOTA阅读 10,601评论 0 4