目录
通过API接口管理Zabbix所监控主机
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Zabbix API允许以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。它广泛用于:
- 创建新的应用程序以使用Zabbix;
- 将Zabbix与第三方软件集成;
- 自动执行常规任务
Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议
Zabbix API由许多名义上分组的独立API方法组成。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API分组 ,用于创建新主机。历史上,API分组有时被称为“类”。
大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:
远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。
标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。
文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。
信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。
主机和主机组
一般来讲,Zabbix主机是指希望监控的那些设备,例如服务器、工作站、交换机等等。
创建主机是使用Zabbix过程中的一个首要任务。例如,如果想在一台服务器“X”上监控一些参数,你必须首先创建一个主机称之为“服务器X”,然后就可以查看添加监控项到这台“服务器X”上。
主机组是由主机组成的。
查看zabbix监控系统的api接口
访问 Zabbix 内部的任何数据之前,需要登录并获取身份验证令牌。 这可以使用 user.login 方法来完成
jsonrpc
- API 使用的 JSON-RPC 协议的版本; Zabbix API 实现 JSON-RPC 2.0 版;method
- 被调用的 API 方法;params
- 将传递给 API 方法的参数;id
- 请求的任意标识符;auth
- 用户认证令牌; 因为我们还没有,所以设置为null
.- API 返回的响应将包含用户身份验证令牌
响应对象又包含以下属性:
jsonrpc
- 再次,JSON-RPC 协议的版本;result
- 方法返回的数据;id
- 相应请求的标识符。
检索主机
用有效的用户身份验证令牌,可用于访问 Zabbix 中的数据。 例如,使用 host.get 的 ID、主机名和接口 主机 :
vim zabbix-api.sh
auth
属性现在设置为我们通过调用获得的身份验证令牌 user.login
.
删除主机
通过host.delete方法,10444是server8的hostid
在前端可以看见server8已经被删除
创建主机
看到server8已经被创建
添加监控项nginx
下载nginx安装包到server7中
测试:
在server6中可以看到
前端:
点击server7--> 监控项-->创建图形
键值一定要和配置文件一致
创建完成,点击更新
查看图形结果
添加更多nginx监控项
在图形中添加即可;跟之前的方法一样
点击更新即可
预览图形
数据库监控
在server6中percona是开源的mysql分析工具,安装
复制percona的监控模版userparameter_percona_mysql.conf
到被监控的服务器也就是server6上的zabbix-agent的相应目录下
重启服务
执行原理:调用shell脚本通过php代码访问数据库,取出数据,存到/tmp/xx.txp纯文本。通过shell过滤【shell和php结合的过程】
查看总共有多少监控项
检测percona的脚本,过滤监控项
vim get_mysql_stats_wrapper.sh 没有做改动
由于percona的监控脚本是用php写的,所以需要准备好php运行环境,将zabbix的数据库和密码写入php脚本中
vim ss_get_mysql_stats.php
查找php72的位置
做软链接
查看监控项文件,其对zabbix没有权限
删除监控项文件,让系统自动生成
浏览器中导入模版,添加监控项
点击配置 —>模版
添加mysql模板
勾选聚合图形 —>导入
配置—>主机 —>模板 —>选择percona模板 —>更新
更新完成,查看zabbix server的监控项,可以看到导入percona模版后的监控项数量变为305个,监控项,图形,触发器数量大大增加更有利于我们在生产环境中对数据库进行全面监控
系统自动生成 监控项文件
此时Mysql没有主从一致要关闭slave监听端口的触发器
java监控
zabbix server -> java-gateway:10052 -> jmx:8888 -> tomcat
Zabbix的JMX监控架构
当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。
配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等
在server8上下载tomcat和jdlk
创建软链接便于访问
向tomcat中添加JVM的参数(Java Management Extensions)
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-server通过zabbix-java-gateway 监控tomcat:8888
端口开启,可以在浏览器中访问tomcat
server6上配置,安装zabbix-java-gateway
,开启服务
编辑zabbix-server
的配置文件,添加javagateway
的相关信息,重启服务
ps ax
在web界面进行设置
配置—> 主机—> server8—> 主机—> 添加JMX接口的信息(端口要和配置文件中写的一样) —> 添加
添加模板
等几分钟,刷新,可以看到server8的JMX变绿
zabbix+proxy分布式
Zabbix proxy是在大规模分布式监控 场景中,采用的一种用以分担server端压力的分层结构,Proxy只负责一定区域内的数据采集工作,可以代替zabbix server检索客户端的数据,然后定期将数据一次性发送给server,极大的减轻了server的负载压力,使得可以支持更大规模的监控需求,非常简便的实现了集中式、分布式监控。
zabbix-server 处于外网,zabbix-agent 处于各个地方的内网,所有内网都是互通的。其中有一台内网服务器既可以和内网通信,也可以和外网进行通信。
通过zabbix proxy的搭建,zabbix server可以远程从proxy获取到数据,这里的环境相当于zabbix server具有一个公网ip地址,zabbix agent只具有内网地址,zabbix proxy具有外网地址和内网地址,搭建zabbix proxy使zabbix server能通过proxy远程获取到zabbix agent的数据.
zabbix proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可
zabbix proxy 数据库必须和 server 分开,否则数据会被破坏
proxy 收集到数据之后,首先将数据缓存在本地,然后在一定的时间之后传递给 zabbixserver,这样就不会因为服务器的任何临时通信问题而丢失数据。这个时间由 proxy配置文件中参数 ProxyLocalBuffer 和 ProxyOfflineBuffer 决定
在三台主机中给server7添加proxy解析
安装proxy,mariadb并配置mariab
对数据库进行配置
编辑配置文件,开启服务
导入数据库
在server7上查看数据库
在浏览器设置agent代理
给server8设置代理,在浏览器设置:
在浏览器刷新之后发现JMX没启用,这是因为我们的代理配置文件的没有设置这个监控,proy设置监控java模块
在server6刷新
重启过程中要接收配置数据server端
查看端口
前端:server8上的jmx又重新变绿