zabbix的使用:简介+安装+java api

来源:互联网 发布:linux 查看caffe版本 编辑:程序博客网 时间:2024/05/16 09:40
一,简介
zabbix是一个分布式监控系统,支持多种采集方式、采集客户端、多种协议,将采集到的数据存放到数据库,然后分析整理,达到条件触发告警。
是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。

二,使用场景
在一个IT环境中,由上层应用(数据库、应用软件)、系统架构(操作系统、虚拟化、集群)、底层支持(网络、硬件)等所组成,为了保证这些应用稳定运行,则需要专业IT人员进行设计、架构、维护和调优。
在这个过程中,为了及时掌握基础环境和业务应用系统的可用性,需要获取各个组件的运行状态,及时发现问题处理问题。

三.zabbix的功能特性
(1)数据收集:支持agent、SNMP等;自定义检测和收集数据的频率。
- zabbix server可以单独监视远程服务器的服务状态,同时也可以与zabbix agent配合。
- zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
(2)灵活的触发器:自定义告警阀值和条件。
(3)实时的绘图功能:将各种监控数据分析以图形展示。
(4)web监控能力:可以模拟浏览器请求一个网站,并检查返回值和响应时间。
(5)多种可视化展示:网络拓扑图、报表、资源使用情况。
(6)历史数据的存储:历史数据存放周期可配置、可定期删除过期历史数据。
(7)配置简单:第一步,添加设备;第二步,应用模版。
(8)使用模版:模块分组,具有可继承性。
(9)API功能:可以方便和其他系统结合。
(10)使用C语言编写,其性能和内存开销非常小。
(11)远程监控:利用zabbix-proxy代理方式可轻松构建远程监控。

四,linux centos7安装zabbix server
这里以mysql作为zabbix服务端的数据库,需要提前安装好mysql。
在mysql中创建database zabbix,并分配用户权限,下面需要用到。
(1),使用root帐号正常登录mysql:mysql -uroot -padmin
(2),创建zabbix数据库实例:
mysql > create database zabbix character set utf8 collate utf8_bin;
(3),分配用户权限,这里我已经提前创建好了一个管理员用户admin
grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'admin';

1,安装zabbix的rpm源,使用root权限安装,输入以下命令:
rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm

2,安装zabbix服务端:
yum install -y zabbix-server-mysql zabbix-web-mysql

3,查询安装的版本:rpm -q zabbix-server-mysql
这里我安装的版本是:zabbix-server-mysql-3.0.9

4,导入默认的zabbix数据库信息:
zcat /usr/share/doc/zabbix-server-mysql-3.0.9/create.sql.gz | mysql -uroot -p** zabbix
注意p**填写自己的mysql登录密码,完成后可以看到新建的database zabbix 下面已经导入了很多table:

5,修改zabbix server配置文件:vi /etc/zabbix/zabbix_server.conf
DBHost=localhost //mysql数据库的ip
DBName=zabbix //连接mysql的database
DBUser=admin //连接mysql数据库的帐号
DBPassword=admin //连接mysql数据库的密码

6,修改zabbix前端的php配置:vi /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value always_populate_raw_post_data -1
php_value date.timezone Asia/Wuhan //修改时区

7,关闭防火墙,否则无法在远程浏览器端打开zabbix web页面:
(1)停止firewall:systemctl stop firewalld.service
(2)禁止firewall开机启动:systemctl disable firewalld.service
(3)查看firewall防火墙状态:firewall-cmd --state

8,关闭SELinux
(1) 查看状态:/usr/sbin/sestatus -v      
- 如果SELinux status参数为enabled即为开启状态
(2) 关闭:setenforce 0 
- 设置SELinux 成为permissive模式
(3) 修改配置:vi /etc/selinux/config
- SELINUX=disabled
(4) 重启服务:shutdown -r now

9,重启服务后,开启zabbix-server服务:
(1) 开启:systemctl start zabbix-server
(2) 允许服务:systemctl enable zabbix-server
(3) 查看状态:systemctl status zabbix-server

10,开启Apache web server前端服务:
(1) 开启:systemctl start httpd
(2) 查看状态:systemctl status httpd


检查所有服务开启都是开启状态:


11,在浏览器输入http://192.168.230.130,查看是否成功跳转apache web页面。


12,在浏览器输入http://192.168.230.130/zabbix , 根据界面提示安装前端。
- 这里ip请改为自己服务器的ip

填写mysql连接信息:

填写安装zabbix的服务器地址:

完成后显示填写的完整信息,检查无误后点击Next step完成安装:

13,安装完成后,使用默认帐号密码:Admin/zabbix 登录,就可以查看zabbix监控的数据了。



五,在java中,调用zabbix api获取数据。
1,zabbix提供了两套api。
- zabbix-sender 主要用于向zabbix发送数据,修改zabbix配置。
- zabbix-api 和 zabbix4j,前者只提供了简单的接口,一般我们使用后者。

2,添加依赖包到项目中。

<!-- zabbix api --><dependency>  <groupId>com.github.0312birdzhang</groupId>  <artifactId>zabbix4j</artifactId>  <version>0.1.6</version></dependency>

3,查看jar包结构,这里我们打算根据源码学习使用。

4,重点来看下ZabbixApi.class中包含的方法。后面我们主要是使用ZabbixApi进行各种查询操作。

5,新建测试类,第一步当然是需要登录,查看源码可以看到,登录成功后会返回一个auth(令牌),其他接口都需要用的该令牌。


6,测试,使用api获取host:

package com.maven.web.zabbix;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import com.zabbix4j.ZabbixApi;import com.zabbix4j.ZabbixApiException;import com.zabbix4j.host.Host;import com.zabbix4j.host.HostGetRequest;import com.zabbix4j.host.HostGetResponse;import com.zabbix4j.host.HostGetResponse.Result;/** * 测试连接zabbix,调用api获取监控数据 * @author Administrator * */public class ZabbixTest {public static final Logger logger = LoggerFactory.getLogger(ZabbixTest.class);public static final String USER_NAME = "Admin";public static final String PASSWORD = "zabbix";public static final String URL = "http://192.168.230.130/zabbix/api_jsonrpc.php";public static void main(String[] args) throws ZabbixApiException {logger.info("--> 第一步,获取ZabbixApi实例");ZabbixApi zabbixApi = new ZabbixApi(URL);logger.info("--> 第二步,用户名密码登录,获取auth");zabbixApi.login(USER_NAME, PASSWORD);logger.info("--> 第三步,调用zabbixApi,获取监控服务的host");Host host = zabbixApi.host();HostGetRequest request = new HostGetRequest();HostGetResponse response = host.get(request);List<Result> list = response.getResult();logger.info("--> 第四步,打印host结果:");for (Result result : list) {logger.info("--> host:{}",result.getHost());}}}
7,查看日志:
2017-07-22 09:58:30.164 [main] INFO  com.maven.web.zabbix.ZabbixTest - --> 第一步,获取ZabbixApi实例2017-07-22 09:58:30.177 [main] INFO  com.maven.web.zabbix.ZabbixTest - --> 第二步,用户名密码登录,获取auth2017-07-22 09:58:36.879 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Get connection for route {}->http://192.168.230.1302017-07-22 09:58:36.933 [main] DEBUG o.a.h.i.c.DefaultClientConnectionOperator - Connecting to 192.168.230.130:802017-07-22 09:58:36.973 [main] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: best-match2017-07-22 09:58:36.992 [main] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context2017-07-22 09:58:36.994 [main] DEBUG o.a.h.c.p.RequestTargetAuthentication - Target auth state: UNCHALLENGED2017-07-22 09:58:36.995 [main] DEBUG o.a.h.c.p.RequestProxyAuthentication - Proxy auth state: UNCHALLENGED2017-07-22 09:58:36.996 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Attempt 1 to execute request2017-07-22 09:58:36.997 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Sending request: POST /zabbix/api_jsonrpc.php HTTP/1.12017-07-22 09:58:37.012 [main] DEBUG org.apache.http.wire -  >> "POST /zabbix/api_jsonrpc.php HTTP/1.1[\r][\n]"2017-07-22 09:58:37.015 [main] DEBUG org.apache.http.wire -  >> "Content-Type: application/json-rpc[\r][\n]"2017-07-22 09:58:37.016 [main] DEBUG org.apache.http.wire -  >> "Content-Length: 132[\r][\n]"2017-07-22 09:58:37.018 [main] DEBUG org.apache.http.wire -  >> "Host: 192.168.230.130[\r][\n]"2017-07-22 09:58:37.018 [main] DEBUG org.apache.http.wire -  >> "Connection: Keep-Alive[\r][\n]"2017-07-22 09:58:37.019 [main] DEBUG org.apache.http.wire -  >> "User-Agent: Apache-HttpClient/4.3.3 (java 1.5)[\r][\n]"2017-07-22 09:58:37.019 [main] DEBUG org.apache.http.wire -  >> "[\r][\n]"2017-07-22 09:58:37.019 [main] DEBUG org.apache.http.headers - >> POST /zabbix/api_jsonrpc.php HTTP/1.12017-07-22 09:58:37.019 [main] DEBUG org.apache.http.headers - >> Content-Type: application/json-rpc2017-07-22 09:58:37.021 [main] DEBUG org.apache.http.headers - >> Content-Length: 1322017-07-22 09:58:37.021 [main] DEBUG org.apache.http.headers - >> Host: 192.168.230.1302017-07-22 09:58:37.021 [main] DEBUG org.apache.http.headers - >> Connection: Keep-Alive2017-07-22 09:58:37.021 [main] DEBUG org.apache.http.headers - >> User-Agent: Apache-HttpClient/4.3.3 (java 1.5)2017-07-22 09:58:37.022 [main] DEBUG org.apache.http.wire -  >> "{[\n]"2017-07-22 09:58:37.022 [main] DEBUG org.apache.http.wire -  >> "  "params": {[\n]"2017-07-22 09:58:37.023 [main] DEBUG org.apache.http.wire -  >> "    "user": "Admin",[\n]"2017-07-22 09:58:37.023 [main] DEBUG org.apache.http.wire -  >> "    "password": "zabbix"[\n]"2017-07-22 09:58:37.023 [main] DEBUG org.apache.http.wire -  >> "  },[\n]"2017-07-22 09:58:37.023 [main] DEBUG org.apache.http.wire -  >> "  "id": 904511963,[\n]"2017-07-22 09:58:37.024 [main] DEBUG org.apache.http.wire -  >> "  "jsonrpc": "2.0",[\n]"2017-07-22 09:58:37.024 [main] DEBUG org.apache.http.wire -  >> "  "method": "user.login"[\n]"2017-07-22 09:58:37.025 [main] DEBUG org.apache.http.wire -  >> "}"2017-07-22 09:58:37.104 [main] DEBUG org.apache.http.wire -  << "HTTP/1.1 200 OK[\r][\n]"2017-07-22 09:58:37.108 [main] DEBUG org.apache.http.wire -  << "Date: Sat, 22 Jul 2017 09:58:37 GMT[\r][\n]"2017-07-22 09:58:37.108 [main] DEBUG org.apache.http.wire -  << "Server: Apache/2.4.6 (CentOS) PHP/5.4.16[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "X-Powered-By: PHP/5.4.16[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Origin: *[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Headers: Content-Type[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Methods: POST[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "Access-Control-Max-Age: 1000[\r][\n]"2017-07-22 09:58:37.109 [main] DEBUG org.apache.http.wire -  << "Content-Length: 76[\r][\n]"2017-07-22 09:58:37.110 [main] DEBUG org.apache.http.wire -  << "Keep-Alive: timeout=5, max=100[\r][\n]"2017-07-22 09:58:37.110 [main] DEBUG org.apache.http.wire -  << "Connection: Keep-Alive[\r][\n]"2017-07-22 09:58:37.110 [main] DEBUG org.apache.http.wire -  << "Content-Type: application/json[\r][\n]"2017-07-22 09:58:37.110 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"2017-07-22 09:58:37.112 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Receiving response: HTTP/1.1 200 OK2017-07-22 09:58:37.112 [main] DEBUG org.apache.http.headers - << HTTP/1.1 200 OK2017-07-22 09:58:37.112 [main] DEBUG org.apache.http.headers - << Date: Sat, 22 Jul 2017 09:58:37 GMT2017-07-22 09:58:37.112 [main] DEBUG org.apache.http.headers - << Server: Apache/2.4.6 (CentOS) PHP/5.4.162017-07-22 09:58:37.112 [main] DEBUG org.apache.http.headers - << X-Powered-By: PHP/5.4.162017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Origin: *2017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Headers: Content-Type2017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Methods: POST2017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Access-Control-Max-Age: 10002017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Content-Length: 762017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Keep-Alive: timeout=5, max=1002017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Connection: Keep-Alive2017-07-22 09:58:37.113 [main] DEBUG org.apache.http.headers - << Content-Type: application/json2017-07-22 09:58:37.123 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Connection can be kept alive for 5000 MILLISECONDS2017-07-22 09:58:37.140 [main] DEBUG org.apache.http.wire -  << "{"jsonrpc":"2.0","result":"5a416657b36d047c987ea2e7212ee3f7","id":904511963}"2017-07-22 09:58:37.140 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Releasing connection org.apache.http.impl.conn.ManagedClientConnectionImpl@f99f5e02017-07-22 09:58:37.140 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Connection can be kept alive for 5000 MILLISECONDS2017-07-22 09:58:37.153 [main] INFO  com.maven.web.zabbix.ZabbixTest - --> 第三步,调用zabbixApi,获取监控服务的host2017-07-22 09:58:37.175 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Get connection for route {}->http://192.168.230.1302017-07-22 09:58:37.179 [main] DEBUG o.a.h.i.c.DefaultClientConnectionOperator - Connecting to 192.168.230.130:802017-07-22 09:58:37.182 [main] DEBUG o.a.h.c.protocol.RequestAddCookies - CookieSpec selected: best-match2017-07-22 09:58:37.182 [main] DEBUG o.a.h.c.protocol.RequestAuthCache - Auth cache not set in the context2017-07-22 09:58:37.183 [main] DEBUG o.a.h.c.p.RequestTargetAuthentication - Target auth state: UNCHALLENGED2017-07-22 09:58:37.184 [main] DEBUG o.a.h.c.p.RequestProxyAuthentication - Proxy auth state: UNCHALLENGED2017-07-22 09:58:37.184 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Attempt 1 to execute request2017-07-22 09:58:37.184 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Sending request: POST /zabbix/api_jsonrpc.php HTTP/1.12017-07-22 09:58:37.185 [main] DEBUG org.apache.http.wire -  >> "POST /zabbix/api_jsonrpc.php HTTP/1.1[\r][\n]"2017-07-22 09:58:37.185 [main] DEBUG org.apache.http.wire -  >> "Content-Type: application/json-rpc[\r][\n]"2017-07-22 09:58:37.185 [main] DEBUG org.apache.http.wire -  >> "Content-Length: 240[\r][\n]"2017-07-22 09:58:37.185 [main] DEBUG org.apache.http.wire -  >> "Host: 192.168.230.130[\r][\n]"2017-07-22 09:58:37.185 [main] DEBUG org.apache.http.wire -  >> "Connection: Keep-Alive[\r][\n]"2017-07-22 09:58:37.186 [main] DEBUG org.apache.http.wire -  >> "User-Agent: Apache-HttpClient/4.3.3 (java 1.5)[\r][\n]"2017-07-22 09:58:37.187 [main] DEBUG org.apache.http.wire -  >> "[\r][\n]"2017-07-22 09:58:37.188 [main] DEBUG org.apache.http.headers - >> POST /zabbix/api_jsonrpc.php HTTP/1.12017-07-22 09:58:37.188 [main] DEBUG org.apache.http.headers - >> Content-Type: application/json-rpc2017-07-22 09:58:37.189 [main] DEBUG org.apache.http.headers - >> Content-Length: 2402017-07-22 09:58:37.189 [main] DEBUG org.apache.http.headers - >> Host: 192.168.230.1302017-07-22 09:58:37.189 [main] DEBUG org.apache.http.headers - >> Connection: Keep-Alive2017-07-22 09:58:37.189 [main] DEBUG org.apache.http.headers - >> User-Agent: Apache-HttpClient/4.3.3 (java 1.5)2017-07-22 09:58:37.189 [main] DEBUG org.apache.http.wire -  >> "{[\n]"2017-07-22 09:58:37.190 [main] DEBUG org.apache.http.wire -  >> "  "params": {[\n]"2017-07-22 09:58:37.190 [main] DEBUG org.apache.http.wire -  >> "    "monitored_hosts": false,[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "    "proxy_hosts": false,[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "    "templated_hosts": false,[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "    "output": "extend"[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "  },[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "  "id": 1338109395,[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "  "jsonrpc": "2.0",[\n]"2017-07-22 09:58:37.191 [main] DEBUG org.apache.http.wire -  >> "  "method": "host.get",[\n]"2017-07-22 09:58:37.192 [main] DEBUG org.apache.http.wire -  >> "  "auth": "5a416657b36d047c987ea2e7212ee3f7"[\n]"2017-07-22 09:58:37.193 [main] DEBUG org.apache.http.wire -  >> "}"2017-07-22 09:58:37.300 [main] DEBUG org.apache.http.wire -  << "HTTP/1.1 200 OK[\r][\n]"2017-07-22 09:58:37.300 [main] DEBUG org.apache.http.wire -  << "Date: Sat, 22 Jul 2017 09:58:37 GMT[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "Server: Apache/2.4.6 (CentOS) PHP/5.4.16[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "X-Powered-By: PHP/5.4.16[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Origin: *[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Headers: Content-Type[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "Access-Control-Allow-Methods: POST[\r][\n]"2017-07-22 09:58:37.301 [main] DEBUG org.apache.http.wire -  << "Access-Control-Max-Age: 1000[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.wire -  << "Content-Length: 45[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.wire -  << "Keep-Alive: timeout=5, max=100[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.wire -  << "Connection: Keep-Alive[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.wire -  << "Content-Type: application/json[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.wire -  << "[\r][\n]"2017-07-22 09:58:37.302 [main] DEBUG o.a.h.i.conn.DefaultClientConnection - Receiving response: HTTP/1.1 200 OK2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.headers - << HTTP/1.1 200 OK2017-07-22 09:58:37.302 [main] DEBUG org.apache.http.headers - << Date: Sat, 22 Jul 2017 09:58:37 GMT2017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Server: Apache/2.4.6 (CentOS) PHP/5.4.162017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << X-Powered-By: PHP/5.4.162017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Origin: *2017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Headers: Content-Type2017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Access-Control-Allow-Methods: POST2017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Access-Control-Max-Age: 10002017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Content-Length: 452017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Keep-Alive: timeout=5, max=1002017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Connection: Keep-Alive2017-07-22 09:58:37.303 [main] DEBUG org.apache.http.headers - << Content-Type: application/json2017-07-22 09:58:37.304 [main] DEBUG o.a.h.impl.client.DefaultHttpClient - Connection can be kept alive for 5000 MILLISECONDS2017-07-22 09:58:37.304 [main] DEBUG org.apache.http.wire -  << "{"jsonrpc":"2.0","result":[],"id":1338109395}"2017-07-22 09:58:37.304 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Releasing connection org.apache.http.impl.conn.ManagedClientConnectionImpl@6853425f2017-07-22 09:58:37.304 [main] DEBUG o.a.h.i.c.BasicClientConnectionManager - Connection can be kept alive for 5000 MILLISECONDS2017-07-22 09:58:37.327 [main] INFO  com.maven.web.zabbix.ZabbixTest - --> 第四步,打印host结果:
其他方法的调用都是差不多的,具体看业务需求获取数据即可。



原创粉丝点击