目录

通过API接口管理Zabbix所监控主机 

查看zabbix监控系统的api接口 

检索主机列表

删除主机

 创建主机

添加应用监控项

添加监控项nginx

Zabbix+percona插件实现数据库mysql的监控

 Java应用监控

Zabbix proxy

实验环境:

proxy安装

创建和配置数据库

导入数据库 

前端配置 

后端刷新和配置


通过API接口管理Zabbix所监控主机 

API简介

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix APl中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】。

Zabbix API提供两项主要功能:
·远程管理Zabbix配置
.远程检索配置和历史数据

Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:

  • 创建新的应用程序以使用Zabbix;
  • 将Zabbix与第三方软件集成;
  • 自动执行常规任务

Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。

大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。

查看zabbix监控系统的api接口 

访问 Zabbix 内部的任何数据之前,需要登录并获取身份验证令牌。 这可以使用 user.login 方法来完成

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控

jsonrpc- API 使用的 JSON-RPC 协议的版本; Zabbix API 实现 JSON-RPC 2.0 版;
method- 被调用的 API 方法;
params- 将传递给 API 方法的参数;
id- 请求的任意标识符;
auth- 用户认证令牌; 因为我们还没有,所以设置为 null.
API 返回的响应将包含用户身份验证令牌

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_02

响应对象又包含以下属性:

  • jsonrpc- 再次,JSON-RPC 协议的版本;
  • result- 方法返回的数据;
  • id- 相应请求的标识符。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_03


zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_04

检索主机列表

用有效的用户身份验证令牌,可用于访问 Zabbix 中的数据。 例如,使用 host.get 的 ID、主机名和接口 主机 : 

vim zabbix-api.sh

auth属性现在设置为我们通过调用获得的身份验证令牌 user.login.  

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_05

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_06

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_07

 

删除主机

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_08

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_09

  

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_10

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_11

 创建主机

 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_12

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_13

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_14

server3已经被创建

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_15

添加应用监控项

添加监控项nginx

下载nginx安装包到server2中

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_16

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_17

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_18

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_19

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_20

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_21

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_22

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_23

 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_24

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_25

 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_26

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_27

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_28

 server端安装

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_29

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_30

图形模式

主机——server2—— 监控项——创建监控项——输入名称(可随意)——输入键值(必须与文件中的键值一致)——输入更新间隔——添加

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_31

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_32

 主机——server2图像——创建图形——输入名称——监控项添加——选择监控项——添加——预览

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_33

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_34

此时有乱码 ,更改语言

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_35

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_36

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_37

添加更多nginx监控项

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_38

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_39

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_40

 按照上面的方法,以此类推添加三个监控项,然后在图像处添加监控模板,然后更新

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_41

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_42

Zabbix+percona插件实现数据库mysql的监控

按道理来说zabbix就自带的MySQL插件来监控mysql数据库,但是你会发现,自带的mysql监控项是很少的,根本满足不了公司的需求。

由于它本身自带的模板太过简单了,所以需要做更详细的监控,而percona就提供了这个详细监控的模版以及脚本,解决了监控不全面的问题。

在server1中安装percona,复制percona的监控模版userparameter_percona_mysql.conf到被监控的服务器也就是server6上的zabbix-agent的相应目录下 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_43

重启服务

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_44

执行原理:调用shell脚本通过php代码访问数据库,取出数据,存到/tmp/xx.txp纯文本。通过shell过滤【shell和php结合的过程】

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_45

由于percona的监控脚本是用php写的,所以需要准备好php运行环境,将zabbix的数据库和密码写入php脚本中  

vim ss_get_mysql_stats.php

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_46

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_47

 查找php72的位置 

 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_48

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_49

做软链接

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_50

查看监控项文件我们是用root身份得到的,zabbix没有权限

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_51

删除监控项文件,让系统自动生成

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_52

 前端设置

配置——模板——导入——选择文件——勾选聚合图形 ——导入 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_53

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_54

 配置—>主机 —>zabbix server—>模板 —>选择—>percona模板 —>更新

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_55

更新完成,查看zabbix server的监控项,可以看到导入percona模版后的监控项数量变为305个,监控项,图形,触发器数量大大增加更有利于我们在生产环境中对数据库进行全面监控 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_56

 系统自动生成 监控项文件

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_57

 禁用掉未知的触发器

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_58

 Java应用监控

JMX简单介绍:
即java管理拓展,是JAVA平台为应用程序,设备,系统等植入管理功能的框架。

优点:可以详细的监控各类JAVA程序的运行状态
缺点:监控机上需要安装zabbix-java-gateway

当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序(被监控端)会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
————————————————
版权声明:本文为CSDN博主「啾咪嘻啾咪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:

在server3上下载jdk

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_59

在server3上下载tomcat,创建软链接便于访问 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_60

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_61

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_62

CATALINA_OPTS='-Dcom.sun.management.jmxremote    #开启远程监控
  -Dcom.sun.management.jmxremote.port=8888      #远程监控端口
  -Dcom.sun.management.jmxremote.ssl=false    #远程ssl验证为false
  -Dcom.sun.management.jmxremote.authenticate=false'

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_63

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_64

 在server1上安装zabbix-java-gateway

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_65

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_66

 更改zabbix_server配置文件添加javagateway的相关信息,重启服务

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_67

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_68

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_69

在web界面进行设置 

配置—> 主机—> server3—> 主机—> 添加JMX接口的信息(端口要和配置文件中写的一样) —> 添加

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_70

 添加模板——更新

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_71

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_72

 等待刷新后可以看到server3的JMX变绿

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_73

访问,增加访问量,然后图形查看。 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_74

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_75

 

 zabbix server -> java-gateway:10052 -> jmx:8888 -> tomcat

Zabbix proxy

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_76

Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据,承担一些收集数据的负担,分担了 Zabbix server 的负荷。

此外,使用proxy是实现集中式和分布式监控的最简单方法,所有 agents 和 proxies 发送给一个 Zabbix server,从而集中收集所有数据。

Zabbix proxy 使用场景:

  • 监控远程区域设备
  • 监控本地网络不稳定区域
  • 监控上千设备时,减轻 zabbix server 的负荷
  • 简化分布式监控的维护

Zabbix proxy到 Zabbix server 只需要一条 tcp 连接,仅在防火墙上配置一条规则即可。

Zabbix proxy 数据库必须和 server 数据库分开,否则 Zabbix server 数据库会被破坏。

proxy 收集到数据都先存储在本地,然后在一定时间后传给 Zabbix server,这样就不会因为暂时无法连接zabbix server而丢失数据。本地保留时间由 proxy配置文件中参数 ProxyLocalBuffer 和 ProxyOfflineBuffer 决定。

注意从 zabbix server 数据库直接更新最新配置的 proxy 可能会比 Zabbix server 更快生效。当 Zabbix server 由于设置 缓存更新周期 的原因而无法快速更新时,proxy 收集发送到 Zabbix server 的数据可能会被忽略。

Zabbix proxy 与 Zabbix server 的角色基本一致,不过功能少一些,Zabbix proxy 只是一个数据收集器,不运行触发器、不处理事件、不发送报警。

实验环境:

server1——>Zabbix server    server2——>Zabbix proxy    server3——>agent

介于之前的实验,先把server2主机从前端删除。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_77

方便区分,做一下主机名称更改

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_78

 

由于server2之前做agent所以先关闭agent的启动项,如果是新机子就不用了

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_79

 记得给所有节点进行域名解析。 

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_80

proxy安装

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_81

创建和配置数据库

为Zabbix proxy创建一个单独的数据库

Zabbix server和Zabbix proxy不能使用相同的数据库。 如果它们安装在同一主机上,则proxy数据库必须具有不同的名称。

Zabbix数据库必须在Zabbix server或proxy安装的时候创建。

先查看DB名称用于在server端创建数据库。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_82

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_83

server端创建数据库,并授权,刷新。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_84

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_85

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_86

 

编辑配置文件

注意配置要和之前数据库的配置相同。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_82

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_88

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_89

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_90

导入数据库 

在proxy端

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_91

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_92

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_93

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_94

 在server端数据库查看。

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_95

 然后server2就可以启动proxy

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_96

前端配置 

管理——agent代理程序——创建代理——名称(和主机名保持一致)——主动式——代理地址(172.25.0.2)——描述(可以不写)——添加

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_97

 主机——server3——由agent代理程序监测(选择proxy)——更新

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_98

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_运维_99

后端刷新和配置

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_100

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_101

 agent端更改配置文件,指向proxy

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix 简单检查端口udp监控_102

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_103

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_104

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix_105

浏览器刷新之后发现JMX没启用,这是因为我们的代理配置文件的没有设置这个监控,proy设置监控java模块 

此时的监控过程为

server<——proxy——>java-gatway ——>jmx:8888

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_106

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_监控_107

 刷新,server3的jmx重新亮起

zabbix 简单检查端口udp监控 zabbix如何监控接口服务_zabbix proxy_108

 设置完成,查看图像。