运维监控平台之zabbix详解2

1、Zabbix架构

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

Zabbix的运行架构如下图所示:

2、组件

zabbix由以下几个组件部分构成:

1)、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;

2)、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;

3)、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;

4)、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;

5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

3、进程

默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

zabbix_agentd

客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。

zabbix_get

zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

zabbix_sender

zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

zabbix_server

zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

zabbix_proxy

zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。

zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

4、zabbix监控环境中相关术语

主机(host):要监控的网络设备,可由IP或DNS名称指定;

主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;

监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;

触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";

事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;

动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;

报警媒介类型(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;

模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至某个主机;

前端(frontend):Zabbix的web接口

5、zabbix安装

上篇文章我们介绍过了在LNMP环境下 zabbix-server的安装,因此这里就不再说明了,这里简单说明下环境规划及zabbix-agent的安装,操作系统都是centos6.7

两台服务器都安装zabbix-agent
[[email protected] ~]# wget  
[[email protected] ~]# rpm -ivh zabbix-release-3.0-1.el6.noarch.rpm 
Preparing...                ########################################### [100%]
   1:zabbix-release         ########################################### [100%]
[[email protected] ~]# yum -y install zabbix-agent

[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf   修改配置文件

Server=172.16.80.117   #这个地址填写zabbix-server所在的ip,默认是127.0.0.1

[[email protected] ~]# /etc/init.d/zabbix-agent start

Starting Zabbix agent:                                     [  OK  ]

6、监控第一台主机(172.16.80.128)

zabbix配置流程基本如下

Host groups(主机组)→Hosts(主机)→Applications(监控项组)→Items(监控项)→Triggers(触发器)→Event(事件)→Actions(处理动作)→User groups(用户组)→Users(用户)→Medias(告警方式)→Audit(日志审计)

配置步骤是 configuration---->hosts---->create host

接下来选择templates选项卡,输入关键字linux,我们选择第一个模块

之后我们就可以看到我们刚才添加的那台主机172.16.80.128,红色方框里面是什么意思我们在上面已经说明相关概念了,这里就不再说明,过一会儿就可以出图了

7、用户参数User parameters

有时候当我们监控的项目在zabbix预定义的key中没有定义时,这时候我们可以通过编写zabbix的用户参数的方法来监控我们要求的项目item。形象一点说zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中然后zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。

7.1 用户参数的语法

UserParameter=<key>,<command>

其中UserParameter为关键字,key为用户自定义key名字可以随便起,<command>为我们要运行的命令或者脚本。

一个简单的例子:

UserParameter=ping,echo 1

代理程序程序将会永远的返回1当我们在服务器端添加item的key为 ping时候。

稍微复杂的例子

UserParameter=mysql.ping,/usr/bin/mysqladmin -uroot -p123456 ping | grep -c alive

当我们执行mysqladmin -uroot ping命令的时候如果mysq存活要返回mysqld is alive

,我们通过grep–c来计算mysqld is alive的个数,如果mysql存活着个数为1,如果不存活很明显mysqld is alive的个数为0,通过这种方法我们可以来判断mysql的存活状态。

对于zabbix代理程序程如果mysql存活状态序将当返回1,如果mysql不存活状态将返回0,当我们在服务器端添加item的key为mysql.ping时候。

7.2 让key接受参数

通过让key也接受参数的方法使item添加时更具备了灵活性,例如系统预定义key :vm.memory.size[<mode>],其中的mode模式就是用户要接受的参数,当我们填写为free时则返回的为内存的剩余大小,如果我们填入的为userd时这返回的是内存已经使用的大小。

相关语法

在/etc/zabbix/zabbix_agentd.conf中配置参数,写法如下。

UserParameter=key,command

除了上面这种写法,还支持参数传递的写法,具体如下。

UserParameter=key[*],command $1 $2 $3 ….

描述

Key:Key的值在主机系统中必须是唯一的,其中*代表命令中接受的参数

命令:客户端系统中可执行的命令

例1:

UserParameter=ping[*],echo $1

ping[0] - will always return ‘0‘

ping[aaa] - will always return ‘aaa‘

注意:

1.用户自定义参数一定要包含一个key和一个命令,也可以是一个脚本

2.key在整个系统是唯一的

3.用户自定义参数返回值,最大返回512兆

4.自定义完后,重启服务测试Key

7.3 通过用户参数测试网站的连通性

可以看到该命令执行的结果是返回状态码200  说明网站正常

[[email protected] ~]# vim /etc/zabbix/zabbix_agentd.conf  修改客户端配置文件
UnsafeUserParameters=1
UserParameter=http_check,/usr/bin/curl -o /dev/null -s -w %{http_code} $1
[[email protected] ~]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]
在zabbix-server测试
[[email protected] ~]# zabbix_get -s 172.16.80.128 -p 10050 -k "http_check[172.16.80.128]"

为监控端添加相应的item,triggers,graphs

http_check[‘172.16.80.128‘]

最后我们来看下截图情况,中间我们会模拟下httpd停掉的情况

8、通过zabbix监控nginx的状态
nginx配置
###status
   server{
      listen 80;
      server_name status.martin.org;
      location / {
      stub_status on;
      access_log off;
        }
   }

访问测试

Activeconnections:对后端发起的活动连接数;

server accepts 7:nginx总共处理了29179个连接;

handled:成功创建了29179次握手;

requests:总共处理了34952请求。

Reading:nginx读取客户端的header数;

Writing: nginx返回给客户端的header数;

Waiting: nginx请求处理完成,正在等待下一请求指令的连接。

编写检测nginx的脚本

[[email protected] tools]# vim nginx.sh 
#!/bin/bash

BKUP_DATE=`/bin/date +%Y%m%d`
LOG="/var/log/nginx.log"
HOST=status.martin.org
PORT="80"
# Functions to return nginx stats
function active {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| grep  ‘Active‘ | awk ‘{print $NF}‘
  }
function reading {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| grep ‘Reading‘ | awk ‘{print $2}‘
  }
function writing {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| grep ‘Writing‘ | awk ‘{print $4}‘
  }
function waiting {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| grep ‘Waiting‘ | awk ‘{print $6}‘
  }
function accepts {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| awk NR==3 | awk ‘{print $1}‘
  }
function handled {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| awk NR==3 | awk ‘{print $2}‘
  }
function requests {
  /usr/bin/curl "http://$HOST:$PORT" 2>/dev/null| awk NR==3 | awk ‘{print $3}‘
  }
# Run the requested function
$1
[[email protected] alertscripts]# cp /tools/nginx.sh  /application/zabbix-server/share/zabbix/alertscripts/
[[email protected] alertscripts]# chown zabbix.zabbix nginx.sh 
[[email protected] alertscripts]# chmod +x /application/zabbix-server/share/zabbix/alertscripts/nginx.sh
[[email protected] alertscripts]# vim /etc/zabbix/zabbix_agentd.conf 
UserParameter=nginx.accepts,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh accepts
UserParameter=nginx.handled,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh handled
UserParameter=nginx.requests,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh requests
UserParameter=nginx.connections.active,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh active
UserParameter=nginx.connections.reading,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh reading
UserParameter=nginx.connections.writing,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh writing
UserParameter=nginx.connections.waiting,/application/zabbix-server/share/zabbix/alertscripts/nginx.sh waiting
[[email protected] alertscripts]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent:                                [  OK  ]
Starting Zabbix agent:                                     [  OK  ]

时间: 2024-10-09 01:37:46

运维监控平台之zabbix详解2的相关文章

运维监控平台之zabbix详解1

本来是想一篇文章介绍完的,写着写着发现篇幅太长,所以决定还是分两篇来介绍,本次软件所用的版本信息如下(基于LNMP环境),操作系统centos6.7 nginx-1.6.3.tar.gz php-5.6.24.tar.gz mysql-5.5.49-linux2.6-x86_64.tar.gz zabbix-3.0.4.tar.gz (zabbix-3以上版本之支持php5.4以上环境) LNMP环境搭建不再这里说明了,如果不懂的看本人之前写的nginx+php,这里简单介绍下php编译 [[e

企业运维监控平台架构设计与实现(ganglia篇)

一.Cacti/Nagios/Zabbix/centreon/Ganglia之抉择 1.cacti Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 简单的说Cacti 就是一个PHP 程序.它通过使用SNMP 协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL 工具绘图,通过PHP 程序展现出来.我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图. 2

运维自动化之Cobbler系统安装详解

原文链接 参考文档 参考文档SA们现在都知道运维自动化的重要性,尤其是对于在服务器数量按几百台.几千台增加的公司而言,单单是装系统,如果不通过自动化来完成,根本是不可想象的. 运维自动化安装方面,早期一般使用人工配置pxe+dhcp+tftp配合kickstart,现在开源工具就多了,如cobbler,OpenQRM和Spacewalk.本文重点介绍Cobbler. Cobbler介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用p

全新SaaS运维监控平台构建书

第一部分 引言 伴随的IT服务的发展,IT服务的概念也在发生着巨大的变化.IT运维服务已经由原来局限在用户自身环境下的IT服务,延伸到覆盖公用云.私有云.外包服务商等多纬度.全天候的SaaS运维模式, 从狭义理解,IT服务仅仅是为了解决信息系统出现的故障,在系统出现停顿的时候可以快速的恢复.而目前的IT服务已经包含了更多的内容,IT服务渗透在信息系统的整个生命周期之中.本文基于该理念,对IT服务系统的实现进行分析研究.文章基于网脊运维通SaaS(Software as aService)模式理念

Zabbix运维监控平台快速搭建实录

一.Zabbix运行架构 Zabbix是一个企业级的分布式开源监控解决方案.它能够监控各种服务器的健康型.网络的稳定性以及各种应用系统的可靠性.当监控出现异常时,Zabbix通过灵活i的告警策咯,可以为任何事件配置基于邮件.短信.微信等告警机制.而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web的前端页面还提供了出色的报告和数据可视化功能.这些功能和特性使运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台. Zabbix的运行架构图如下: 从图中可以看出Zab

江西畅行高速IT运维监控平台--PIGOSS BSM

案例所属行业:高速公路行业 项目实施时间:2014年 1.1    项目背景     江西畅行高速工程(以下简称"畅行高速")与高速公路周边系统的建设基于用户的消费账户支付系统和结算系统.既包括高速公路的收费,也包括高速公路周边的连锁超市的消费,互联网业务为江西畅行高速周边服务. 目前,江西畅行高速进行网络建设和核心生产平台应用系统的建设.随着江西畅行高速信息化应用的不断推广,核心生产平台的稳定运行对项目的影响越来越大.随 着更多江西畅行高速业务系统上线运行和日常办公对业务系统的日益依

【项目动态】PIGOSS BSM IT运维监控平台 北京万兴建筑集团有限公司

案例所属行业:企业集团 项目实施时间:2016年 1 项目背景 北京万兴建筑集团有限公司成立于1985年,是一个以房建.市政.装饰.地产开发为四大支柱产业的大型综合性建筑企业集团.万兴集团注册资本金3.06亿元,现有总资产10多亿元,企业拥有一大批高素质专业技术管理人才,其中中高级职称专业技术人员300余人,国家一级.二级 注册建造师200人.年开复工面积500万平方米左右,建安产值约50亿元左右.万兴集团还积极参与社会公益事业,累计捐款1000多万元. 为保障各项业务的稳定运行,需要对IT基础

Linux运维--企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造

2、自动化运维之SaltStack远程执行详解

SaltStack远程执行详解 ●目标(Targeting) ●模块(Module) ●返回(Returnners) 混合模式-C 选项 主机名设置参照: redis-node1-redis03-idc04-soa.example.com(电商) 1.1模块介绍 [[email protected] salt]# salt '*' service.available sshd linux-node1.zhurui.com: True linux-node2.zhurui.com: True 服务