zabbix中API的应用 监控nginx/mysql以及报警

https://www.zabbix.com/documentation/3.4/zh/manual/api

概述

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

  • 创建新的应用程序以使用Zabbix;

  • 将Zabbix与第三方软件集成;

  • 自动执行常规任务。

Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:

  • 该API包含一组独立的方法;

  • 客户端和API之间的请求和响应使用JSON格式进行编码。

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

 在zabbix主机中:

在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。让我们假设你想要以标准Zabbix Admin用户身份登录。然后,你的JSON请求将如下所示:

[root@server1 ~]# cat zabbix-api.sh 
curl -s -X POST -H  'Content-Type: application/json '  -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool
让我们仔细看看请求对象。它具有以下属性:
  • jsonrpc - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0;

  • method - 调用的API方法;

  • params - 将被传递给API方法的参数;

  • id - 请求的任意标识符;

  • auth -用户认证令牌; 因为我们还没有一个,它的设置null。

如果你正确提供了凭据,API返回的响应将包含用户身份验证令牌:

[root@server1 ~]# vim zabbix-api.sh
[root@server1 ~]# chmod +x zabbix-api.sh 
[root@server1 ~]# ./zabbix-api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "22ee1f9e10f7e744094cffbd6ab5d198"
}

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

  • jsonrpc - JSON-RPC协议的版本;

  • result - 方法返回的数据;

  • id - 相应请求的标识符。

[root@server1 ~]# cat zabbix-api.sh 
curl -s -X POST -H  'Content-Type: application/json '  -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
	"output": ["host"]
        },
    "id": 1,
    "auth": "22ee1f9e10f7e744094cffbd6ab5d198"
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

 

[root@server1 ~]# ./zabbix-api.sh 
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "Zabbix server",
            "hostid": "10084"
        },
        {
            "host": "server2",
            "hostid": "10261"
        }
    ]
}

zabbix中API的应用 监控nginx/mysql以及报警_第1张图片

删除hostid=10261的主机:

curl -s -X POST -H  'Content-Type: application/json '  -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
	"10261"
        ],
    "id": 1,
    "auth": "22ee1f9e10f7e744094cffbd6ab5d198"
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

web界面中显示主机已删除

zabbix中API的应用 监控nginx/mysql以及报警_第2张图片

创建主机:

[root@server1 ~]# cat zabbix-api.sh 
curl  -X POST -H  'Content-Type: application/json '  -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
	"host": "server2",
	"interfaces": [
	{
		"type": 1,
		"main": 1,
		"useip": 1,
		"ip": "172.25.254.2",
		"dns": "",
		"port": "10050"
	}
    ],
	"groups": [
	{
		"groupid": "0"
	}
	],
	"templates": [
	{
		"templateid": "10001"
	}
	]
	},
    "auth": "0424bd59b807674191e7d77572075f33",
    "id": 1
}
' http://172.25.254.1/zabbix/api_jsonrpc.php | python -m json.tool

这时在zabbix的web界面查看,server2主机已经出现

在server2里面做

rpm  -ivh   zabbix-agent-3.4.6-1.el6.x86_64.rpm

cd  /etc/zabbix/
ls
vim  zabbix_agentd.conf
server=172.25.254.1
serverActive=172.25.254.1
Hostname=server2

/etc/init.d/zabbix-agent  start

得到一个nginx的源代码,进行编译
tar  zxf   nginx-1.14.0.tar.gz
yum  install   -y  gcc  pcre-devel  zlib-devel  ##解决依赖性
cd   nginx-1.14.0
ls
./configure  --prefix=/usr/local/nginx --with-http_stub_status_module

zabbix中API的应用 监控nginx/mysql以及报警_第3张图片

make  &&  make  install

vim   /usr/local/nginx/conf/nginx.conf

在error_page  404上面加
location  /status {
          stub_status   on;
           access_log  off;
           allow  127.0.0.1;
           deny  all;
     }

zabbix中API的应用 监控nginx/mysql以及报警_第4张图片

ln  -s   /usr/local/nginx/sbin/nginx   /sbin/
nginx  -t
nginx
curl   http://127.0.0.1/status
curl -s  http://127.0.0.1/status | grep Active | awk '{print $3}'

zabbix中API的应用 监控nginx/mysql以及报警_第5张图片

cd   /etc/zabbix
cd zabbix_agentd.d
cp    userparameter_mysql.conf     userparameter_nginx.conf

zabbix中API的应用 监控nginx/mysql以及报警_第6张图片

vim  userparameter_nginx.conf
UserParameter=nginx.active,curl  -s  http://127.0.0.1/status | grep Active | awk '{print $3}'

/etc/init.d/zabbix-agent  restart

在zabbix主机中:

rpm      -ivh  zabbix-get-3.4.6-1.el7.x86_64.rpm
zabbix_get  -s   172.25.254.1 -p 10050  -k "nginx.active"

进入浏览器界面

点进server2里面-->监控项-->创建监控--->名称:nginx_active,类型zabbix
的客户端,键值nginx.active,必须和server3里面写的保持一致,主机接口172.25.254.2:10050  -->图形 -->创建图形-->名称nginx_status-->图形类别为层积-->添加监控-->nginx_active--->预览-->便可以看见图形了

监控nginx的其他项

在server2里面做

curl  -s http://127.0.0.1/status  |  awk  NR==3 | awk '{print $1}'
curl  -s http://127.0.0.1/status  |  awk  NR==3 | awk '{print $2}'
curl  -s http://127.0.0.1/status  |  awk  NR==3 | awk '{print $3}'

vim    /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.accepts,curl  -s  http://127.0.0.1/status | awk  NR==3 | awk '{print $1}'
UserParameter=nginx.handled,curl  -s  http://127.0.0.1/status | awk  NR==3 | awk '{print $2}'
UserParameter=nginx.requests,curl  -s  http://127.0.0.1/status | awk  NR==3 | awk '{print $3}'

/etc/init.d/zabbix-agent  restart

在zabbix主机中

zabbix_get  -s   172.25.254.2  -p 10050  -k "nginx.accepts"
zabbix_get  -s   172.25.254.2  -p 10050  -k "nginx.handled"
zabbix_get  -s   172.25.254.2 -p 10050  -k "nginx.requests"

进入浏览器界面

点进server2里面--监控项--创建监控---名称:nginx_accepts,类型zabbix的客户端,键值 nginx.accepts,必须和server3里面写的保持一致,主机接口172.25.254.2:10050-->名 称:nginx_handled,类型zabbix的客户端,键值nginx.handled-->名称:nginx_requests,类型 zabbix的客户端,键值nginx.requests(将三个值都添加进去)-->图形 --创建图形-- 名称nginx_status-->图形类别为层积--添加监控-- nginx_accepts,nginx.handled,nginx.requests--->预览-便可以看见图形了

给zabbix  server添加mysql的监控

mkdir  /var/lib/zabbix
cd  /avr/lib/zabbix/
vim  .my.cnf  ##隐藏文件
[mysql]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock
[mysqladmin]
host = localhost
user = zabbix
password = westos
socket = /var/lib/mysql/mysql.sock

systemctl   restart  zabbix-agent
cd   /etc/zabbix/zabbix_agentd.d/
ls
cat  userparameter_mysql.conf  |  wc -l  ##查看监控多少行,只有19行,所以我们要下载别的

得到一个percona-zabbix-templates-1.1.8-1.noarch.rpm包
rpm  -ivh   percona-zabbix-templates-1.1.8-1.noarch.rpm
cd  /var/lib/zabbix/percona/templates
ls
cp userparameter_percona_mysql.conf   /etc/zabbix/zabbix_agentd.d/
cat  userparameter_percona_mysql.conf   |  wc  -l  ##监控项有190行

systemctl  restart  zabbix-agent
cd  /var/lib/zabbix/percona/scripts/
mysql_secure_installation
vim  ss_get_mysql_stats.php.cnf
$mysql_user = 'root';
$mysql_pass = 'westos';

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh  gg

cd  /tmp
cat  localhost-mysql_cacti_stats.txt##有所显示

ll  localhost-mysql_cacti_stats.txt
chown zabbix.zabbix  localhost-mysql_cacti_stats.txt

进入浏览器
配置--模版--群组为templates/Databases ----倒入文件(zab_percona_mysql_template.xml)-->添加聚合图形--导入-- 群组percona  templates  --->配置--主机--zabbixserver--模版--链接指示器选择mysql server--.>添加----主机里面看,就多了190 个监控项 

给zabbixserver配置

报警设置,先注册110云

免费注册
配置应用,添加zabbix的应用,获得到一个应用key
在zabbix的主机里面做
cd  /usr/lib/zabbix/alertscriptds/
得到一个包  oneitsm_zabbix_release-1.2.0.tar.gz
tar zxf  oneitsm_zabbix_release-1.2.0.tar.gz  -C  /usr/lib/zabbix/
alertscriptds/
cd  /usr/lib/zabbix/alertscriptds/
cd  oneitsm/bin

yum  install -y   net-tools  ##下载网关工具
route  -n
route  add  default  gw  172.25.254.56
vim  /etc/resolv.conf
nameserver  114.114.114.114
ping  baidu.com
cd   /usr/lib/zabbix/alertscripts/oneitsm/bin
./install.sh  应用key

管理地址:http://172.25.17.111/zabbix
管理员帐号:Admin
管理员密码:zabbix

浏览器
管理--》报警媒介类型--》 创建媒介类型(oneitsm  media)
管理--》用户--》创建用户--》用户(填写--》报警媒介(添加全写)
配置--》动作--》事件源(触发器)--》选择oneitsm action 启用  -->创建动作--》名称 oneitsm  action 触发器名称--》

在真机里面做
iptables  -t   nat  -nL
iptables  -t  nat  -I POSTROUTING  -s  172.25.0.0/24  -j MASQUERADE
iptables  -t   nat  -nL

测试
让server2里面的/etc/init.d/zabbix-agent   stop
##观看会不会发送报警

你可能感兴趣的:(linux运维)