【大咖讲堂178期】 | Zabbix与Python不得不说的基情

分享提要

在平时的工作中,Zabbix对于运维来说是一个非常重要的工具,在马哥的课程中也有相当的体现。Zabbix的图形界面已经相当漂亮了,今天Derek老师就会带领大家一起来定制属于自己的监控页面哦!

大咖身份

Derek

国内某小型互联网运维工程师,51CTO推荐博客博主、5年linux一线经验,擅长shell脚本、python开发、自动化运维、web应用等,曾就职过国家电网、链家、新浪等知名公司与企业,现在关注自动化运维、虚拟化技术。

分享开始

大家好,我是今天的分享老师Derek,今天给大家带来的分享是zabbix与python之间不得不说的基情,想必在平时的工作中,大家用到的监控软件还是以zabbix为主吧,咱们的课程中马哥对zabbix也是花了很大的时间来介绍它的原理,安装,配置,维护等,但是不知道大家有没有觉得,zabbix的图形界面不是很漂亮,那么我们是不是可以自己来定制专属于我们自己的zabbix的监控界面那,如果你也有这样的想法,那么希望今天我分享的内容对你有一定的帮助。

今天我们首先会对zabbix进行简单的介绍,但是这里不会涉及zabbix的原理,安装,配置与维护,这些内容马哥的视频中已经讲的很清楚了,咱们为了节省时间,就不再做过多的介绍,会对zabbix-python模块进行介绍,包括模块的安装,使用,为了后面出图的方便,我们会对python的time模块进行介绍,最后我们会给大家介绍如何用咱们通过api查到的数据绘制出漂亮的图形

首先,我们来看一下zabbix的介绍,zabbix在官网写了这样一句话:The Enterprise-class Monitoring Solution for Everyone(所有人的企业级监控解决方案),zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。

zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。

zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。

现在最新的稳定版本是3.4.3,关于它的安装,配置等可以参考咱们的课程中的相关介绍。

介绍一下我本地的环境,我本地准备了一台机器,里面分别安装了zabbix的server和zabbix的agent客户端,后面我们所有的操作都连接这台机器进行操作, 我这里是用到的版本为3.0.8

接下来我们来对zabbix的api进行简单的介绍

zabbix API请求和响应都是json,并且还提供了各种语法的lib库,http://zabbix.org/wiki/Docs/api/libraries,包含php、c#、Python、Perl、go等等语言,使用非常方便。

我们看到zabbix支持的python的模块有这么多,接下来我们开始来介绍今天的重头戏pyzabbix的使用

我们对pyzabbix的介绍,只挑选几个最基本的介绍,比如安装,获取zabbix的版本号,获取监控的主机组,获取某个主机组中主机,获取用户组,获取某个用户组中的用户,获取某台主机的item,获取某个item的hstory,由于时间关系,我们现在只对zabbix做获取操作,至于新增,更新,删除等操作,朋友们可以看官方文档来完成。

首先是安装,可以通过pip来进行安装,安装命令是:pip install pyzabbix

安装完成以后,第一步我们来获取一下我们的zabbix的版本号,看看和我说的是不是一样

我们可以看到我们的版本是3.0.8

我们来看一下我们页面上的版本号,也是3.0.8,那说明我们获取的没有问题

接下来我们来获取我们的主机组,我们可以先打开zabbix的官方文档,https://www.zabbix.com/documentation/3.0/manual/api,找到Host group

我们可以看到我们可以对主机组有这么多的操作,我们此次只演示,hostgroup.get的操作

我们可以看到我们在进行get操作的时候可以传递很多的参数,参数的含义咱们这里就不做一一说明了,有兴趣的朋友可以看一下文档的介绍,接下来我们来获取我们系统的主机组

我们也可以指输出我们需要的内容,比如只输出groupid和name

获取到主机组的信息了,那么我们来获取zabbix server组里面的主机,我们也是首先找一下官方文档,看一下我们主机可以进行的操作

我们这里还是只做get操作,我们这里来获取一下zabbix server组里面的主机看一下

这里为了操作方便,我们只需要获取主机的id和主机的name

系统的用户组和用户的获取方式与主机和主机组的获取类似,为了节省时间,我们这里就不在进行一一获取,有兴趣的小伙伴可以自己尝试一下。

接下来我们来获取监控项,然后选择一个监控项来获取这个监控项的数据,首先来获取监控项,我们还是先来看一下官方文档的介绍

接下来我们来获取我们主机id为10084的监控项

我们可以看到我们一台主机的监控项还是有很多的,我们还是挑一个监控项来获取他的监控值,还是老办法,先看一下官方文档对于监控值的说明以及可以做的操作

监控值只能用来获取,我们这里随便选择一个item来获取一下他的监控值,我们这里选择获取机器15分钟的loa

d值,它的itemsid为23295,我们来获取最后10次的值,然后根据时间来进行一下排序

我们可以看到我们获取到的是时间戳,可以将时间戳转换成年月日的类型,可以用到time模块,time模块的具体应用咱们这里就不具体讲了,有需要的朋友可以自己看官方文档

接下来我们来介绍使用erchart来绘制我们想要的图形

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 3 中更是加入了更多丰富的交互功能以及更多的可视化效果,并且对移动端做了深度的优化。

ECharts 提供了常规的折线图,柱状图,散点图,饼图,K线图,用于统计的盒形图,用于地理数据可视化的地图,热力图,线图,用于关系数据可视化的关系图,treemap,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

你可以在下载界面下载包含所有图表的构建文件,如果只是需要其中一两个图表,又嫌包含所有图表的构建文件太大,也可以在在线构建中选择需要的图表类型后自定义构建

echart的官方网站是:http://echarts.baidu.com

接下来我们就用我们上面获取到的数据,来用echarts来绘制一个折线图,

假设我们获取到数据经过处理以后是这样的,接下来我们用django搭建一个简单的应用,至于django的应用,如果大家有兴趣,可以下次给朋友做一个简单的分享

我们来看一下前段的配置,主要看一下后端获取的变量是怎么传递到前端的

我们来接着看一下我们最后的出图

好的,今天的分享就到这里了,谢谢大家的参与!


原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-10-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小白课代表

重大更新!全新的百度网盘下载器 PanDownload v2.0.1 来了!(附全新介绍)

时隔半年,最早的最稳定的知名度最高的流传范围最广的百度网盘下载器,PanDownload 终于迎来重大更新!

4224
来自专栏云计算认知升级

小程序·云开发 项目开发经验分享

近期,小程序开放了新的能力——「小程序·云开发」,帮助开发者快速构建微信小程序的后端服务。我作为一名微信小程序的开发者,也在第一时间尝试了小程序云开发,并将我自...

4K14
来自专栏云计算-私有云

Windows Server 2019前瞻

十一假期马上就过完了,不知道各位小伙伴玩的怎么样啊,是否有遇到“人在囧途”或者是否看到了处处大海。微软于2018年9月24日-28日在美国召开了Ignite 2...

1.5K0
来自专栏java思维导图

分布式之消息队列复习精讲

庆幸的是两位朋友都很有上进心,于是博主写这篇文章,帮助他们复习一下关于消息队列中间件这块的要点

1243
来自专栏FreeBuf

扒一扒浏览器的安全机制

*本文原创作者:梅孜,本文属FreeBuf原创奖励计划,未经许可禁止转载 随着互联网深入人们的生活,浏览器的发展更加丰富多彩,其种类多样,版本更新速度也日益提...

2199
来自专栏WeTest质量开放平台团队的专栏

http性能测试点滴

在服务上线之前,性能测试必不可少。本文主要介绍性能测试的流程,需要关注的指标,性能测试工具apache bench的使用,以及常见的坑。

1953
来自专栏Java后端技术栈

分布式之消息队列复习精讲!

小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客...

783
来自专栏PhpZendo

事件驱动架构设计

这篇文章是 软件架构演进 一个有关 软件架构 系列文章中的一篇。这些文章,主要是我学习软件架构、对软件架构的思考及使用方法的记录。相比于这个系列的前几篇文章,本...

6712
来自专栏刘望舒

知乎 Android 客户端组件化实践

知乎 Android 客户端最早使用的是最常见的单工程 MVC 架构,所有业务逻辑都放在了主工程 Module 里,网络层和一些公共代码分别被抽成了一个 Mod...

4514
来自专栏Golang语言社区

系统架构-基础篇-(高性能基础建设说明与选型条件)

本文牵扯的面积可能会比较泛,或者说比较大,在这个层面很多人也有自己的见解,所以我这也仅仅是抛砖引玉,结合前面讲述的一些基础技术,从思想中阐述更为深入的架构思想基...

3565

扫码关注云+社区

领取腾讯云代金券