监控利器Zabbix之自动化监控的三种方式

3年前 (2017-08-13) gtj zabbix, 监控 0评论 已收录 282℃

一:zabbix自动化监控3种方法:

1、Zabbix agent自动去server端注册

2、server端自动发现

3、Zabbix API,server端主动

二: Zabbix agent的自动注册

1.客户端设置

修改zabbix-agent配置。
[root@zabbix_master zabbix-server-mysql-3.2.7]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.64,127.0.0.1
StartAgents=0
ServerActive=10.0.0.64
HostnameItem=system.hostname
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/*.conf

2.web端设置

自动发现必须要设置ServerActive让客户端启动主动去寻找服务端 ,所以需要在web端操作:
Configuration--》Actions--》Event source:Auto registration--》Create action--》


Name:Agent自动注册--》Conditions:Host metadata like Linux--》


Operations:Operation type:Add host--Add --》Operations type:Add to host group --Linux servers --Add,,--》Operations type:Link to template--Template OS Linux Active --Add----》Update


重启zabbix-agent

systemctl restart  zabbix-agent.service

然后等会就可以看到hosts linux-node1被添加进来了


Zabbix agent的自动注册实验成功。

三、discovery网络自动发现

1.先把agent端改为被动模式:

[root@zabbix_client zabbix-proxy-mysql-3.2.7]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf 
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=10.0.0.64
StartAgents=3
Hostname=zabbix_client
HostMetadataItem=system.uname
Include=/etc/zabbix/zabbix_agentd.d/*.conf

2.重启zabbix-agent

systemctl restart zabbix-agent

3.web端操作

Configuration--》Discovery--》Local network--》


创建Action:
Configuration--》Actions--》Event source:discovery


匹配规则:


添加主机,添加主机组,添加模板:


查看自动发现结果:


discovery网络自动发现实验成功。

四:Zabbix API,server端主动添加

1.使用zabbix API加监控

zabbix API主要有两个功能:
1、远程管理zabbix
2、远程查询一些数,比如写一个API,写成脚本,每次报警时把报警的图形一块发邮件

2.zabbix API位置

[root@zabbix_master zabbix-server-mysql-3.2.7]# ll /usr/share/zabbix/api_jsonrpc.php
-rw-r--r-- 1 root root 2327 7月 18 18:41 /usr/share/zabbix/api_jsonrpc.php
##所有的请求要发到这个php文件上面,api,传输模式是rpc的,传输格式是json。

3.zabbix api的使用

首先获取验证,不能谁都可以请求,我先给这个api发送一个用户名,密码,然后他给我返回一个token之类的东西,后面我拿着这个token就可以继续请求了,和openstack是一样的。
zabbix api是这样的,首先你给这个api_jsonrpc.php文件发送POST语句,里面附带上你的用户名,密码,然后他会给你返回一个session id,后面在请求别的时候你带上这个session id就OK了

4.验证用户

参考官方文档;
zabbix官方api文档


[root@zabbix_master zabbix-server-mysql-3.2.7]# curl -s -X POST -H 'Content-Type:application/json-rpc' -d'
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1
}' http://10.0.0.64/zabbix/api_jsonrpc.php |  python -m json.tool
返回值:
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "cfabb2f89d43145424e327421d908a56"
}
-d 请求的内容
-H 类型
id 名字,类似一个标识
user 默认Admin
password 默认是zabbix

5.通过session id获取监控的所有hosts

[root@zabbix_master zabbix-server-mysql-3.2.7]#  curl -s -X POST -H 'Content-Type:application/json-rpc' -d'
> {
>     "jsonrpc": "2.0",
>     "method": "host.get",
>     "params": {
>         "output": ["host"]
>     },
>     "auth": "cfabb2f89d43145424e327421d908a56",
>     "id": 1
> }' http://10.0.0.64/zabbix/api_jsonrpc.php|  python -m json.tool
结果如下:
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "host": "zabbix_client",
            "hostid": "10122"
        },
        {
            "host": "zabbix_master",
            "hostid": "10123"
        }
    ]
}

6.获取模板

官方参考api方法

[root@zabbix_master zabbix-server-mysql-3.2.7]# curl -s -X POST -H 'Content-Type:application/json-rpc' -d'
> {
>     "jsonrpc": "2.0",
>     "method": "template.get",
>     "params": {
>         "output": "extend"
>     },
>     "auth": "cfabb2f89d43145424e327421d908a56",
>     "id": 1
> }' http://10.0.0.64/zabbix/api_jsonrpc.php |  python -m json.tool

注:模板太多,此处不展示了。

7.过滤我们需要的主机模板

[root@zabbix_master zabbix-server-mysql-3.2.7]# curl -s -X POST -H 'Content-Type:application/json-rpc' -d'
> {
>     "jsonrpc": "2.0",
>     "method": "template.get",
>     "params": {
>         "output": "extend",
>          "filter": {
>             "host": [
>                 "Template OS Linux"
>             ]
>         }
>     },
>     "auth": "cfabb2f89d43145424e327421d908a56",
>     "id": 1
> }' http://10.0.0.64/zabbix/api_jsonrpc.php  |  python -m json.tool
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "available": "0",
            "description": "",
            "disable_until": "0",
            "error": "",
            "errors_from": "0",
            "flags": "0",
            "host": "Template OS Linux",
            "ipmi_authtype": "0",
            "ipmi_available": "0",
            "ipmi_disable_until": "0",
            "ipmi_error": "",
            "ipmi_errors_from": "0",
            "ipmi_password": "",
            "ipmi_privilege": "2",
            "ipmi_username": "",
            "jmx_available": "0",
            "jmx_disable_until": "0",
            "jmx_error": "",
            "jmx_errors_from": "0",
            "lastaccess": "0",
            "maintenance_from": "0",
            "maintenance_status": "0",
            "maintenance_type": "0",
            "maintenanceid": "0",
            "name": "Template OS Linux",
            "proxy_hostid": "0",
            "snmp_available": "0",
            "snmp_disable_until": "0",
            "snmp_error": "",
            "snmp_errors_from": "0",
            "status": "3",
            "templateid": "10001",
            "tls_accept": "1",
            "tls_connect": "1",
            "tls_issuer": "",
            "tls_psk": "",
            "tls_psk_identity": "",
            "tls_subject": ""
        }
    ]
}

8.使用API来实现自动添加监控主机

方法参考官网
我们先创建一个用户组,zabbix_api,id为12,模板id为10001,查看方法如下:


加入一个host到zabbix-web

[root@zabbix_client zabbix-proxy-mysql-3.2.7]# curl -s -X POST -H 'Content-Type:application/json-rpc' -d'
> {
>     "jsonrpc": "2.0",
>     "method": "host.create",
>     "params": {
>         "host": "zabbix_master", ##对应zabbix-agent的hostname,这里监控zabbix-server
>         "interfaces": [
>             {
>                 "type": 1,
>                 "main": 1,
>                 "useip": 1,
>                 "ip": "10.0.0.64", ##对应zabbix的ip.
>                 "dns": "",
>                 "port": "10050"
>             }
>         ],
>         "groups": [
>             {
>                 "groupid": "12"  ##hosts的组别
>             }
>         ],
>         "templates": [
>             {
>                 "templateid": "10001" ##对应的模板
>             }
>         ]
>     },
>     "auth": "cfabb2f89d43145424e327421d908a56",
>     "id": 1
> }'  http://10.0.0.64/zabbix/api_jsonrpc.php |  python -m json.tool
结果创建成功。
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "hostids": [
            "10124"
        ]
    }
}

如图:


如上图,通过zabbix提供的api,我们完成了host的加入监控系统。

五:zabbix api

zabbix官网文档提供zabbix api完全使用文档,供我们调用,通过对zabbix api的调用,我们可以完成zabbix上几乎所有的操作。发散思维,我们可以通过zabbix完全的api去做运维自动化的cmdb系统。
从而达到运维自动化的目的。
下面附上网上参考的python写的脚本,验证zabbix用户之用。

1.安装python环境

yum install python-pip -y
pip install requests

2.执行脚本:


[root@zabbix_client zabbix-proxy-mysql-3.2.7]# python  zabbix_api_user.py 
cfabb2f89d43145424e327421d908a56

3.脚本内容


[root@zabbix_client zabbix-proxy-mysql-3.2.7]# cat zabbix_api_user.py 
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import json
url = 'http://10.0.0.64/zabbix/api_jsonrpc.php'
post_data = {
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1
}
post_header = {'Content-Type': 'application/json'}
ret = requests.post(url, data=json.dumps(post_data), headers=post_header)
zabbix_ret = json.loads(ret.text)
if not zabbix_ret.has_key('result'):
    print 'login error'
else:
    print zabbix_ret.get('result')
博主

这货来去如风,什么鬼都没留下!!!

相关推荐

嗨、骚年、快来消灭0回复。

×
订阅图标按钮
Less is more!!!