• 第十三章 监控系统zabbixAPI及性能优化


    一、zabbix API 概述

    1.概述

    #1.Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。
    它广泛用于:
    1.创建新的应用程序以使用Zabbix;
    2.将Zabbix与第三方软件集成;
    3.自动执行常规任务。
    
    #2.Zabbix API是基于Web的API,作为Web前端的一部分提供。它使用JSON-RPC 2.0协议,这意味着两件事:
    1.该API包含一组独立的方法;
    2.客户端和API之间的请求和响应使用JSON格式进行编码
    

    2.结构

    Zabbix API包含许多方法,这些方法都名义上分组为单组的API。每个方法执行一个特定任务。例如,方法 host.create 隶属于 host 这个API ,用于创建新主机。历史上,API有时被称为“类”。
    
    大多数API至少包含四种方法: get, create, update 和 delete ,分别是检索,创建,更新和删除数据,但是某些API提供一套完全不同的一组方法。
    

    3.执行请求

    设置前端后,你就可以使用远程HTTP请求来调用API。为此,需要向 api_jsonrpc.php 位于前端目录中的文件发送HTTP POST请求。例如,如果你的Zabbix前端安装在 http://company.com/zabbix, 那么用HTTP请求来调用 apiinfo.version 方法就如下面这样:
    
    POST http://company.com/zabbix/api_jsonrpc.php HTTP/1.1
    Content-Type: application/json-rpc
     
    {"jsonrpc":"2.0","method":"apiinfo.version","id":1,"auth":null,"params":{}}
    
    请求的 `Content-Type` 头部必须设置为以下值之一: `application/json-rpc`, `application/json` 或 `application/jsonrequest`.
    
    应用场景:
    二次开发`jumpserver`结合`zabbix`自动推送主机。[TP](https://www.cnblogs.com/goodcook/p/7390463.html)
    

    4.调用API

    在访问Zabbix中的任何数据之前,你需要登录并获取身份验证令牌。这可以使用该 user.login 方法完成。让我们假设你想要以标准Zabbix Admin用户身份登录。然后,你的JSON请求将如下所示:
    
    [root@web02 ~]# 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://10.0.0.8/zabbix/api_jsonrpc.php
    
    {"jsonrpc":"2.0","result":"4e8d7412babe19c856a2dfe57c6c64ab","id":1}
    
    让我们仔细看看请求对象。它具有以下属性:
    
    `jsonrpc` - API使用的JSON-RPC协议的版本; Zabbix API实现JSON-RPC版本2.0;
    `method` - 调用的API方法;
    `params` - 将被传递给API方法的参数;
    `id` - 请求的任意标识符;
    `auth` -用户认证令牌; 因为我们还没有一个,它的设置null。
    

    5.添加主机

    [root@web02 ~]# curl -s -X POST -H 'Content-Type:application/json-rpc ' -d '
    {
        "jsonrpc": "2.0",
        "method": "host.create",
        "params": {
            "host": "zls_web01",
            "interfaces": [
                {
                    "type": 1,
                    "main": 1,
                    "useip": 1,
                    "ip": "192.168.3.1",
                    "dns": "",
                    "port": "10050"
                }
            ],
            "groups": [
                {
                    "groupid": "2"
                }
            ],
            "templates": [
                {
                    "templateid": "10255"
                }
            ],
            "inventory_mode": 0,
            "inventory": {
                "macaddress_a": "01234",
                "macaddress_b": "56768"
            }
        },
        "auth": "4e8d7412babe19c856a2dfe57c6c64ab",
        "id": 1
    }' http://10.0.0.8/zabbix/api_jsonrpc.php
    

    二、zabbix性能调优

    1) Zabbix属于写多读少的业务, 所以需要针对zabbix的MySQL进行拆分。MySQL一定要使用SSD固态盘
    
    2) 将Zabbix-Agent被动监控模式, 调整为主动监控模式。
    
    3) 使用zabbix-proxy分布式监控, 在大规模监控时用于缓解Zabbix-Server压力
    
    4) 去掉无用监控项, 增加监控项的取值间隔, 减少历史数据保存周期(由housekeeper进程定时清理)
    
    5)针对于Zabbix-server进程调优, 谁忙就加大谁的进程数量, 具体取决实际情况, 不是越大越好
    

    [root@web02 ~]# vim /etc/zabbix/zabbix_server.conf
    StartPollers=20
    StartPollersUnreachable=20
    ...
    
    6)针对于Zabbix-server缓存调优, 谁的剩余内存少, 就加大它的缓存值(zabbix cache usage图表)
    

    [root@web02 ~]# vim /etc/zabbix/zabbix_server.conf
    CacheSize=8M
    HistoryCacheSize=16M
    HistoryIndexCacheSize=4M
    
    7) 关注管理->队列, 是否有被延迟执行的监控项
    

  • 相关阅读:
    chrome浏览器中安装以及使用Elasticsearch head 插件
    windows10 升级并安装配置 jmeter5.3
    linux下部署Elasticsearch6.8.1版本的集群
    【Rollo的Python之路】Python 爬虫系统学习 (八) logging模块的使用
    【Rollo的Python之路】Python 爬虫系统学习 (七) Scrapy初识
    【Rollo的Python之路】Python 爬虫系统学习 (六) Selenium 模拟登录
    【Rollo的Python之路】Python 爬虫系统学习 (五) Selenium
    【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习
    【Rollo的Python之路】Python 爬虫系统学习 (三)
    【Rollo的Python之路】Python sys argv[] 函数用法笔记
  • 原文地址:https://www.cnblogs.com/jhno1/p/15716134.html
Copyright © 2020-2023  润新知