精华内容
下载资源
问答
  • Java调用zabbix API获取监控信息相关jar包,包括zabbix4j-0.1.jar、httpclient-4.3.1.jar、httpcore-4.3.jar、lombok.jar、slf4j-api-1.6.1.jar、slf4j-log4j12-1.6.1.jar、commons-codec-1.6.jar、commons-logging-...
  • java连接Zabbix

    2020-07-14 13:16:45
    import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util....

    原文地址:https://www.cnblogs.com/bcydsl/archive/2019/02/20/10407614.html

    package com.*.*.collect;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.HashMap;
    import java.util.Map;
    
    /**
    * Zabbix
    */
    public class ZabbixConnection {
    
       private String ip;
       private String account;
       private String password;
    
       private String auth;
       private String hostId;
    
       public ZabbixConnection(String ip, String account, String password, String hostId) {
           this.ip = ip;
           this.account = account;
           this.password = password;
           this.hostId = hostId;
       }
    
       /**
        * 向Zabbix发送Post请求,并返回json格式字符串
        * @param map
        * @return
        */
       public String sendPost(Map map) {
           String param = JSON.toJSONString(map);
           HttpURLConnection connection = null;
           DataOutputStream out = null;
           BufferedReader reader = null;
           StringBuffer sb = null;
           try {
               // 创建连接
               URL url = new URL("http://" + ip + "/zabbix/api_jsonrpc.php");
               connection = (HttpURLConnection) url.openConnection();
               connection.setDoOutput(true);
               connection.setDoInput(true);
               connection.setUseCaches(false);
               connection.setInstanceFollowRedirects(true);
               connection.setRequestMethod("POST");
               connection.setRequestProperty("Accept", "application/json"); // 设置接收数据的格式
               connection.setRequestProperty("Content-Type", "application/json"); // 设置发送数据的格式
               connection.connect();
               // POST请求
               out = new DataOutputStream(connection.getOutputStream());
               out.writeBytes(param);
               out.flush();
               // 读取响应
               reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
               String lines;
               sb = new StringBuffer("");
               while ((lines = reader.readLine()) != null) {
                   lines = new String(lines.getBytes(), "utf-8");
                   sb.append(lines);
               }
           } catch (Exception e) {
               e.printStackTrace();
           } finally {
               if (out != null) {
                   try {
                       out.close();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
               if (reader != null) {
                   try {
                       reader.close();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
               if (connection != null) {
                   connection.disconnect();
               }
           }
           return sb.toString();
       }
    
       /**
        * 通过用户名和密码设置auth,获得权限
        */
       public void setAuth() {
           Map<String, Object> params = new HashMap<String, Object>();
           params.put("user", account);
           params.put("password", password);
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("jsonrpc", "2.0");
           map.put("method", "user.login");
           map.put("params", params);
           map.put("auth", null);
           map.put("id", 1);
    
           String response = sendPost(map);
           JSONObject json = JSON.parseObject(response);
           auth = json.getString("result");
           System.err.println("auth: " + auth);
       }
    
       public String getAuth() {
           if (auth == null) {
               setAuth();
           }
           return auth;
       }
    
       /**
        * 根据auth,获得host列表
        */
       /*public void getHostId(){
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("jsonrpc", "2.0");
           map.put("method", "item.get");
           map.put("auth", getAuth());
           map.put("id", 1);
    
           Map<String, Object> params = new HashMap<String, Object>();
           List<String> output = new ArrayList<>();
           output.add("hostid");
           output.add("host");
           params.put("output", output);
           List<String> selectInterfaces = new ArrayList<>();
           selectInterfaces.add("interfaceid");
           selectInterfaces.add("ip");
           params.put("selectInterfaces", selectInterfaces);
    
           map.put("params", params);
    
           String response = sendPost(map);
           JSONObject json = JSON.parseObject(response);
           hostId = json.getString("result");
           System.err.println("hostId: " + hostId);
       }*/
    
       /**
        * 根据key获取lastvalue
        * @param key key
        * @return
        */
       public String getItem(String key){
    
           Map<String, Object> search = new HashMap<String, Object>();
           search.put("key_", key);
    
           Map<String, Object> params = new HashMap<String, Object>();
           params.put("output", "extend");
           params.put("hostids", hostId);
           params.put("sortfield", "name");
           params.put("search", search);
    
           Map<String, Object> map = new HashMap<String, Object>();
           map.put("jsonrpc", "2.0");
           map.put("method", "item.get");
           map.put("auth", getAuth());
           map.put("id", 0);
           map.put("params", params);
    
           String response = sendPost(map);
           JSONArray result = JSON.parseObject(response).getJSONArray("result");
    
           if (result.size() == 0) {
               System.err.println("采集指标key:<" + key + "> 失败!");
               return "";
           }
    
           // json格式的输出
           JSONObject object = JSONObject.parseObject(response);
           String pretty = JSON.toJSONString(object, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteDateUseDateFormat);
           System.out.println(key + " -- pretty:");
           System.out.println(pretty);
    
           String lastvalue = JSONObject.parseObject(result.get(0).toString()).getString("lastvalue");
           // System.err.println("lastvalue: " + lastvalue);
           return lastvalue;
       }
    }
    

    依赖:

    <dependency>
       <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.15</version>
    </dependency>
    
    <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>3.6</version>
    </dependency>
    
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.5</version>
    </dependency>
    

    原文地址:https://www.cnblogs.com/bcydsl/archive/2019/02/20/10407614.html

    展开全文
  • Java调用Zabbix api

    2021-07-13 18:38:20
    Zabbix已经搭建完毕,搭建方法见通过docker搭建zabbix5.0 查阅文档:https://www.zabbix.com/documentation/5.0/manual ,发现zabbix对外提供了很多api接口。 于是从某开源网站上面找到了一个jar包见下图 于是开始...

    Zabbix已经搭建完毕,搭建方法见通过docker搭建zabbix5.0

    查阅文档:https://www.zabbix.com/documentation/5.0/manual ,发现zabbix对外提供了很多api接口。
    在这里插入图片描述
    于是从某开源网站上面找到了一个jar包见下图
    在这里插入图片描述
    于是开始使用springboot工程去调用api。直接上代码,先是pom文件

    <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.7.RELEASE</version>
        </parent>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>1.8</java.version>
        </properties>
    
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
            </dependency>
            <dependency>
                <groupId>io.github.hengyunabc</groupId>
                <artifactId>zabbix-api</artifactId>
                <version>0.0.2</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.16</version>
            </dependency>
        </dependencies>
    

    yml配置

    server:
      port: 9003
    
    logging:
      level:
        com.cn.scott: debug
    
    zabbix:
      config:
        url: http://xxxx:8080/api_jsonrpc.php
        username: Admin
        password: zabbix
    

    zabbixConfig用于读取配置信息

    @Component
    @ConfigurationProperties(prefix = "zabbix.config")
    @Data
    public class ZabbixConfig {
    
        private String url;
        private String username;
        private String password;
    }
    
    

    工具类用于初始化zabbixApi对象,并且登录获取token值。

    @Component
    @Slf4j
    public class ZabbixUtil {
    
        private volatile ZabbixApi zabbixApi;
    
        @Autowired
        private ZabbixConfig zabbixConfig;
    
    
        public ZabbixApi getZabbixApi() {
            if (null == zabbixApi) {
                synchronized (ZabbixUtil.class) {
                    if (null == zabbixApi) {
                        zabbixApi = new DefaultZabbixApi(zabbixConfig.getUrl());
                        zabbixApi.init();
                        login();
                    }
                }
            }
            return zabbixApi;
        }
    
        private void login(){
            boolean login = zabbixApi.login(zabbixConfig.getUsername(), zabbixConfig.getPassword());
            if(!login){
                throw new RuntimeException("zabbix login failed!");
            }
            log.info("zabbix login success!");
        }
    
    }
    
    

    最后业务类负责调用接口,写了两个demo,其他大同小异

    @Service
    public class ZabbixService  extends AbstractZabbixService{
    
        @Autowired
        private ZabbixUtil zabbixUtil;
    
        //获取主机列表
        public String getHostList() throws Exception {
            ZabbixApi zabbixApi = zabbixUtil.getZabbixApi();
            Request request = RequestBuilder.newBuilder().method("host.get")
                    .paramEntry("output", new String[]{"host", "name", "description", "hostid"})
                    .paramEntry("selectGroups", "extend")
                    .build();
            JSONObject response = zabbixRequest(zabbixApi,request);
            zabbixError(response);
            JSONArray result = response.getJSONArray("result");
            return result.toJSONString();
        }
    
        //获取监控项
        public String getMonitorItems(String hostId) throws Exception {
            ZabbixApi zabbixApi = zabbixUtil.getZabbixApi();
            Request request = RequestBuilder.newBuilder().method("item.get")
                    .paramEntry("output","extend").paramEntry("hostids",hostId).build();
            JSONObject response = zabbixRequest(zabbixApi,request);
            zabbixError(response);
            JSONArray result = response.getJSONArray("result");
            return result.toJSONString();
        }
    
    
    }
    

    如需查看具体代码,请移步:https://gitee.com/ErGouGeSiBaKe/zabbixapi

    展开全文
  • java后端接受zabbix报警

    2020-07-13 21:58:01
    直接上代码 ... * zabbix传送报警数据到该接口 */ @PostMapping("/alarm_notice") @ResponseBody public Response serviceAlert(@RequestBody String string) { Map<String, String> jsonM

    直接上代码

    @Controller
    public class AlarmNoticeController {
        /**
         * zabbix传送报警数据到该接口
         */
        
        @PostMapping("/alarm_notice")
        @ResponseBody
        public Response serviceAlert(@RequestBody String string) {
            Map<String, String> jsonMap = ZabbixUtil.zabbixAlarmToMap(string);
            alarmNoticeService.alarmNotice(jsonMap);
            return Response.OK;
        }
    }
    
    
    
    //工具类
    
    public static Map<String, String> zabbixAlarmToMap(String jsonString){
            JSONObject jsonObject = JSONObject.parseObject(jsonString);
            String message = jsonObject.getString("message");
            String subject = jsonObject.getString("subject");
            String [] strings = subject.split(":");
            String jsonMessage=message.replaceAll("\\r\\n",",");
            String js = "{"+"\"subject\":"+"\""+strings[0]+"\","+jsonMessage+"}";
            Map<String,String > jsonMap = JSON.parseObject(js,Map.class);
            return jsonMap;
        }
    展开全文
  • zabbixJava API(一)

    千次阅读 2017-07-18 21:33:48
    上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。 于是我在zabbix网站各种找,... 接下来继续说Java的API,如下: 第一和第三都是连接z...

    上文说了,我是对zabbix做第二次开发的小白,既然要对zabbix做第二次开发又是小白,那么就得来研究zabbix提供的相关API了。
    于是我在zabbix网站各种找,终于在下面网址找到了:
      http://zabbix.org/wiki/Docs/api/libraries;这里面有各个开发语言的API,大家可以去看看。

      接下来继续说Java的API,如下:

    第一和第三都是连接zabbix server的api,第一个需要自己构造json格式的参数。 第二个sender 是开发向server 输送数据的api。
      第三个即是本次我研究的对象,这个api里面,进一步做了封装,也提供了一些测试代码。本次就从这里研究吧。(一起学习呀( ⊙ o ⊙ )!)
      要用这个API,可以导入zabbix4j这个包就好,相关的包都会导入进来,(我第一次就走了弯路,都是一个个的导包,后来想zabbix既然提供了API应该zabbix包啊?就试了试,果然有,吼吼吼~~)
     
      为了测试我们还要导入其他包,如下:

    下面就正式开始研究代码了:
      在zabbix的web界面中首先是从创建主机开始的,那么,这儿我们也先从创建主机开始研究吧,创建主机的代码如下:

     

    import static org.junit.Assert.*;
    
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    
    import org.junit.Test;
    
    import com.zabbix4j.host.HostCreateRequest;
    import com.zabbix4j.host.HostCreateResponse;
    import com.zabbix4j.hostinteface.HostInterfaceObject;
    import com.zabbix4j.usermacro.Macro;
    
    public class testCreateHost extends ZabbixApiTestBase{
    	public testCreateHost(){
    		super();
    	}
    	
    	@Test
    	public void createHost(){
    //		这两个变量数据库中必须存在(我第一次就在这儿捣鼓了半天,以为创建主机就什么都是新的,
    //		这是对zabbix本身的不理解导致的)
    		final Integer groupId = 4;
    		final Integer templateId = 10081;
    		
    		 try {
    	            HostCreateRequest request = new HostCreateRequest();
    	            HostCreateRequest.Params params = request.getParams();
    
    	            params.addTemplateId(templateId);
    	            params.addGroupId(groupId);
    	            //添加宏
    	            List<Macro> macros = new ArrayList<Macro>();
    	            Macro macro1 = new Macro();
    	            macro1.setMacro("{$MACRO1}");
    	            macro1.setValue("value1");
    	            macros.add(macro1);
    	            params.setMacros(macros);
    	            //添加主机接口
    	            HostInterfaceObject hostInterface = new HostInterfaceObject();
    	            hostInterface.setIp("192.168.106.133");
    	            params.addHostInterfaceObject(hostInterface);
    	            //添加主机,和主机名
    	            params.setHost("test host created1." + new Date().getTime());
    	            params.setName("test host created1 name" + new Date().getTime());
    
    	            HostCreateResponse response = zabbixApi.host().create(request);
    	            assertNotNull(response);
    	            logger.debug(getGson().toJson(response));
    
    	        } catch (Exception e) {
    	            fail(e.getMessage());
    	        }
    	    }
    
    	}
    
    

    要在zabbix里面创建主机(做其他操作也一样),就要先通过身份验证,首先你要通过你自己的zabbix接口地址:http://IP/zabbix/api_jsonrpc.php;
      我将这个前提工作放在了一个类中,代码如下:

    import static org.junit.Assert.fail;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.zabbix4j.ZabbixApi;
    import com.zabbix4j.ZabbixApiException;
    
    
    
    public class ZabbixApiTestBase {
    
        protected static Logger logger = LoggerFactory.getLogger(ZabbixApiTestBase.class);
        protected static String user = "Admin";//zabbix登录账号
        protected static String password = "zabbix";//zabbix登录密码
    
        protected ZabbixApi zabbixApi;
    
        public ZabbixApiTestBase() {
            login(user, password);
        }
    
        protected void login(String user, String password) {
            try {
                zabbixApi = new ZabbixApi("http://192.168.2.118/zabbix/api_jsonrpc.php");
                zabbixApi.login(user, password);
            } catch (ZabbixApiException e) {
                fail(e.getMessage());
            }
        }
       
    
        protected Gson getGson() {
    
            return new GsonBuilder().setPrettyPrinting().create();
        }
    
    }
    


    小白的我正在学习的路上,希望各位大佬多多指教,谢谢,谢谢!


    欢迎进群:747509472 一起交流学习!

     

     

     

    展开全文
  • 监控原始Java Zabbix Java网关 描述 这是Zabbix Java Gateway的源代码,已更新为允许 jmx.discovery项(使用Mbeans自动发现) JBoss JMX Weblogic T3协议 它是如何工作的 您必须在JMX项目中指定一个用户名,例如“ ...
  • zabbix自动发现JAVA进程,并进行自动添加监控JAVA 进程的JVM数据,统计分析告警监控。 支持多种中间件,tomcat、weblogic、微服务方式部署JAVA应用监控。 自带发现脚本和监控脚本,以及zabbix导入模板。
  • 博主之前的文章配置好了Zabbix环境,...再次基础上,基于java进行zabbix的二次开发,也就是通过api接口操作zabbix服务端监控的各项数据,拿来给自己用。 会详细写这个系列,第一篇先介绍Zabbix的Api接口。 Zabbix ...
  • 前提:本人参与到一个关于调用zabbix API实现监控主机资源的项目。故将zabbixAPI的使用简单总结一下。有什么不对的地方还 请指正。 一、zabbix相关网站 Zabbix是企业级软件,专为实时监控从数以万计的服务器,...
  • zabbix java api

    千次阅读 2017-09-21 10:49:15
    zabbix java apizabbix官方的api文档地址:https://www.zabbix.com/documentation/3.0/manual/apiZabbix功能概观 Zabbix是一个高度集成的网络监控解决方案,在单个软件包中提供了多种功能。 数据采集 可用性和性能...
  • Zabbix的功能虽然很强大,能将数据以图表形式展现在Web中,但是,一个监控系统的使用者如果不了解Zabbix,或者其非维护人员需要通过监控了解各个服务器大致运行状况时,Zabbix所提供的界面就不是很友好了。...
  • 环境 server1 172.25.75.1 zabbix-server、zabbix-agen、mysql server2 ...zabbix-agent、http ...zabbix-agent、nginx ...一、配置Zabbix监控Java 1、server1配置tomcat服务 [root@server1 ~]# l...
  • 本篇文章开始正是开始介绍基于JavaZabbix二次开发。 可以使用封装好的jar包进行开发,封装好的jar包地址如下: Jar包地址 这里选取第三个封装好的jar包,在项目中引入即可。 这个jar包到底如何使用,来获取...
  • Java使用zabbix示例

    千次阅读 2016-11-03 20:40:52
    * Do not necessary to call this method.If don not set id, ZabbixApi will auto set request auth.. * @param auth * @return */ public ZabbixRequestBuilder auth(String auth){ request....
  • JAVA访问Zabbix API

    2014-12-17 20:30:00
    Zabbix 一、Zabbix 概述 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位...
  • 因为项目保密的原因,实际代码无法贴出,但与他人博客中的代码有一定的相似度,现拷贝部分作为参考,再... Zabbix4jSampleGetHost.java package com.zabbix4j.apitest; import com.zabbix4j.ZabbixApi; ...
  • 一、安装zabbix-java-gateway zabbix@zabbix:~$ sudo apt-get install zabbix-java-gateway 二、安装JDK并配置环境变量(JDK7+TOMCAT7) 1、 查看系统版本 sudo uname –a //是64位系统,那么我们选择64位的JDK ...
  • Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用“JMXmanagementAPI”去查询特定的应用程序,...
  • java 添加主动式代理时官方文档中给的请求格式为: { "jsonrpc": "2.0", "method": "proxy.create", "params": { "host": "Active proxy&...
  • 该项目是Zabbix监视系统的数据收集器客户端。 它可以下载监视值列表,并将其发送回zabbix服务器。
  • 近日使用java访问zabbix api 在传递中文参数的时候,打死也出来结果。 通过postman等请求工具,发现传递的参数能返回结果。 那么就基本判断出是java 发送post请求时,未进行中文设置。 代码如下 ...
  • Zabbix通过JMX方式监控java中间件 Zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Java-gateway”;它是用java写的一个程序。 工作原理: zabbix_server想知道一台主机上的特定的JMX值时,它向...
  • Zabbix 监控 java 应用

    2020-05-19 15:07:38
    主机的可用性有这些,zbx代表zabbix ,snmp多用于监控windows的东西,jmx通常用于监控java 的应用,比如tomcat。 我们在server2上配置tomcat。 rpm -ivh jdk-8u121-linux-x64.rpm tar zxf apache-tomcat-8.5.24.tar....
  • 用于zabbix监控脚本-批量获取docker容器名称及容器中的java进程ID,将结果格式化为json格式,直接返回给zabbix
  • zabbix_get是zabbix获取监控项的可执行文件,通过指定监控的机器以及端口、监控key,可以获取相应的监控value。 我们可以通过java-proxy对java进行jmx监控,获取java-proxy的监控项比较特殊,所以需要具体的脚本。
  • 文章目录一、检查服务,如果有就关闭二、安装服务三、编辑配置文件四、测试配置自定义邮件脚本五、测试六、zabbix 对hadoop namenode报警6.1 创建 Items6.2 创建 Trigger6.3 关闭HDFS会出现如下警报6.4 创建 Media ...
  • 10.zabbix 监控 java 虚拟机 jmx https://www.zabbix.com/documentation/4.0/zh/manual/config/items/it emtypes/jmx_monitoring1>获取 jdk 和 tomcat [root@server2 ~]# rpm -ivh jdk-8u121-linux-x64.rpm ...
  • 2、监控原理3、监控架构二、配置Zabbix 通过JMX监控 java实例运行实验环境实验步骤1、安装tomcat+jdk2、配置zabbix-java-gateway3、在web界面添加JMX接口信息 一、相关概念 1、什么是JMX? JMX的全称是Java ...
  • zabbix中,JMX数据的获取由zabbix-java-gateway代理程序来负责数据的采集。 优点: 可以详细的监控各类Java程序的运行状态 缺点: 被监控机上需要安装zabbix-java-gateway [root@base3 ~]# ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,124
精华内容 4,849
关键字:

javazabbix

java 订阅