运维监控平台之zabbix详解2

1、Zabbix架构

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

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



wKiom1eypwfDDoBkAAPGeO8ndD4922.png


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

wKiom1eyqTKz5qqMAAAkEqN0Txg122.png

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

[root@ansible ~]# vim /etc/zabbix/zabbix_agentd.conf   修改配置文件

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

[root@ansible ~]# /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


wKiom1eyrJqQL91QAAE24Jvv0Eg609.png

wKioL1eyrdLTivB3AADj0VNhb2o327.png


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

wKioL1eyrj-yCTV9AABqnExQsRg325.png


wKioL1eyrtjwE0sNAADrMNcrF_g567.png

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

wKioL1eyr66CquT0AADx0BgZcC0958.png


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

wKioL1eysUizEMKoAAAjBnneA74624.png


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

,我们通过grep

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

nginx代理websocket配置 - 2016-08-22 14:08:47

nginx正常只能代理http请求,如果想实现代理websocket的需求,需在请求中加入"Upgrade"字段,使请求从http升级为websocket。 配置如下: http{map$http_upgrade$connection_upgrade{defaultupgrade;''close;}server{...location/chat/{proxy_passhttp://backend;proxy_http_version1.1;#以下配置添加代理头部:proxy_set_headerUpgra
一、搭建要求 LVS+KEEPALIVED+NGINX( 反向代理)+WEB01(NGINX)+WEB02(APACHE) # 以下以keepalived的端口形式配置LVS(keepalived双实例双主模式),而不用手工配置。 # 以下机器忽略安装apache和nginx,只提供主要配置,当更新博客时会在这加上apache和nginx的安装与配置的博客地址。 #nginx 安装版本为nginx-1.6.3.tar.gz,apache安装版本为httpd-2.2.31.tar.gz。 二、前提条件 2
Linux下用于查看系统当前登录用户信息的4种方法 作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法。 1. 使用w命令查看登录用户正在使用的进程信息 w命令用于显示已经登录系统的用户的名称,以及他们正在做的事。该命令所使用的信息来源于/var/run/utmp文件。w命令输出的信息包括: ?用户名称 ?用户的机器名称或tty号 ?远程主机地址 ?用户登录系统的时间 ?空

Nagios 监控 SNMP 温度计 - 2016-08-22 14:08:41

老板给机房新买了个温度,湿度的感应器,问我能不能整合到Nagios里面。我的回答是No Problem. 首先看看他自带的界面 监控SNMP,首先得知道他的OID是啥,这个界面我可以直接下载MIB文件和对应的EXCEL文档。 下载以后,重命名MIB为txt文件,然后拷贝到我的nagios服务器的/usr/share/snmp/mibs 目录下,然后记得添加到配置文件中 [root@sydnagiosmibs]#pwd/usr/share/snmp/mibs[root@sydnagiosmibs]#lsg*

docker1.12版本的swarm集群特性 - 2016-08-22 14:08:37

docker1.12版本之后集成了swarm模块,直接使用dokcer-engin就能很方便地创建一个docker集群,不用再像以前那样第三方配置。 环境: manager/node1 : swarm_node1 node2 : swarm_node2 1:首先在各节点上安装最新版dokcer #curl-fsSLhttps://test.docker.com/|sh#docker-vDockerversion1.12.0-rc4,builde4a0dbc 2:在node1上初始化一个swarm集群 sw
什么是心脏出血漏洞? CVE-2014-0160,心脏出血漏洞,是一个非常严重的 OpenSSL 漏洞。这个漏洞使得攻击者可以从存在漏洞的服务器上读取64KB大小的内存信息。这些信息中可能包含非常敏感的信息,包括用户请求、密码甚至证书的私钥。 据称,已经有攻击者在某宝上尝试使用漏洞读取数据,在读取200次后,获取了40多个用户名和7个密码。 使用如下的命令查看服务器上的当前版本: openssl version [root@master ~]# openssl version OpenSSL 1.0.1e

Apache运维架构之Apache+PHP - 2016-08-22 14:08:37

当前互联网主流web服务器说明 1、IIS 微软的web服务器 2、apache 中小web服务器主流,web服务器中的老大哥 3、nginx 新兴的web服务器主流 4、tomcat 中小企业动态服务器,互联网java容器主流 5、resin 大型企业动态服务器,互联网java容器主流 apache的特点及应用场合 特点:功能强大,配置简单,速度快,应用广泛,性能稳定可靠,并可做代理服务器和负载均衡 应用场合: 1、使用apache来运行静态html网页,图片,处理静态小文件能力不及nginx 2、使用
shyis最近微软中国Azure更新速度似乎已经超越任何时期了,前两天刚刚更新的Azure云助理,让众多Azure用户实现在移动端灵活的管理Azure资源,相信对于云服务来讲这也是未来不可或缺的管理方式之一。说到管理方式,不得不说微软中国Azure近期更新的另一大神器预览版门户。 说到Azure预览版门户,其实已经不是什么新玩意,毕竟在国际版Azure中已经预览了非常之久了。但对于中国版Azure来说毕竟是一个非常重要的更新,今天给大家带来的就是中国版Azure的预览版介绍以及通过配置固定公网IP作为实例
首先到Github上下载Pyenv相应的一键安装脚本, $curl-Lhttps://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer|bash 安装完毕,设置环境变量,设置环境变量,可以添加到个人家目录的.bashrc或.bash_profile及系统的全 局的/etc/profile, #Loadpyenvautomaticallybyadding#thefollowingto~/.bash_profil
nginx网站被持续攻击1个月后最终防攻策略 上上个月架构全部迁移上云以后,总的来说比较稳定,业务量也上来,可爱的坏人也来了,7X24小时不停恶意攻击我的网站, 第一次收到报警是网站流入流量1分钟以内连续3次超过1000000bps,换算下1M/s秒 ,平时没那么大流量的啊,当时刚好在朋友家玩,于赶紧开本本连vpn检查,发现全是访问同一个页面的请求,而且是正常访问http 200,应该是被恶意攻击了。 发现问题 : 发现问题第一反应,赶紧将请求地址截图发给开发们看看,问问这个具体是什么? 最后得知是为短信