企业部分-----zabbix-api实现对数据的远程控制(可以查询,创建,删除主机)

什么是API

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。可以说是简化运维人员复杂操作的一个好帮手。

API在zabbix中的应用

在这里插入图片描述

学习zabbix API的必要性

1.Zabbix API开始扮演着越来越重要的角色,尤其是在集成第三方软件和自动化日常任务时。很难想象管理数千台服务器而没有自动化是多么的困难。Zabbix API为批量操作、第三方软件集成以及其他作用提供可编程接口。
2.Zabbix API是在1.8版本中开始引进并且已经被广泛应用。所有的Zabbix移动客户端都是基于API,甚至原生的WEB前端部分也是建立在它之上。Zabbix API 中间件使得架构更加模块化也避免直接对数据库进行操作。它允许你通过JSON RPC协议来创建、更新和获取Zabbix对象并且做任何你喜欢的操作【当然前提是你拥有认证账户】

关于API的几个实验

实验环境:

在server1上下载了zabbix-server,配置好了mariadb,开启了服务,可以进入到zabbix监控管理界面(详情可以见zabbix分布式监控系统的安装部署与基础配置)
因为前面我已经做过了,所以我直接开启服务

[root@server1 ~]# systemctl start zabbix-server
[root@server1 ~]# systemctl start zabbix-agent
[root@server1 ~]# systemctl start mariadb
[root@server1 ~]# systemctl start httpd

在这里插入图片描述
在sever2上下载zabbix-agent,开启zabbix-agent服务

[root@server2 ~]# systemctl start zabbix-agent
在这里插入图片描述
在server3进行和server2一样的操作
在这里插入图片描述
实验步骤:

(一)实验一:获取身份验证令牌

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

​文件中的内容如下:

curl -s -X POST -H 'Content-Type:application/json' -d '  #-s表示禁用curl命令的输出信息 (隐藏不必要的输出信息); -d 表示上传内容
{ 
    "jsonrpc": "2.0",
    "method": "user.login",    ##用户登陆
    "params": {
    "user": "Admin",           #zabbix登陆用户
    "password": "zabbix"       #用户密码
    }, 
    "id": 1,
    "auth": null
}' http://172.25.15.1/zabbix/api_jsonrpc.php | python -m json.tool#上传地址  转换输出格式

在这里插入图片描述

给脚本一个可执行权限
[root@server1 ~]# chmod +x zabbix-api
调用脚本
[root@server1 ~]# ./zabbix-api

在这里插入图片描述
在这里插入图片描述
(二)实验二:通过名称获取数据

现在有一个有效的用户身份验证令牌,可以用来访问Zabbix中的数据。例如,让我们使用 host.get 方法检索所有已配置主机的ID,主机名和接口 :
[root@server1 ~]# vim zabbix-api
文件中的内容如下:

curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.get",
    "params": {
        "output": [
            "hostid",
            "host"
        ],
        "selectInterfaces": [
            "interfaceid",
            "ip"
        ]
    },
    "id": 2,
    "auth": fcd0074feeb02f41c1b8aa5f8f42d289"#这个是上一个实验得到的身份验证令牌
}' http://172.25.66.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
运行一下查看效果
在这里插入图片描述

我们也可以在params下直接写主机名,查询所有信息 不过出于性能原因,我们建议始终列出要检索的对象属性,避免检索所有内容
其中的auth是在上一个实验中得到的用户认证令牌

(三)实验三:删除主机
object host.delete(array hosts) 该方法允许删除主机
我尝试删除的是server2
刚才那个实验结果可以查看到server2的hostid
把他写进zabbix-api里,内容如下:

curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.delete",
    "params": [
        "10271"#想要删除主机的hostid
    ],
    "id": 2,
    "auth": "d05eafbd2b11cfc6283d84abebaf2883"
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
我们可以从zabbix配置主机上看到实验效果:
删除前
在这里插入图片描述
运行zabbix-api
vim zabbix-api
./zabbix-api
在这里插入图片描述
删除后
在这里插入图片描述
(四)实验四:创建主机
创建一个具有IP接口的“Linux Server”主机,将其添加到主机组中,链接一个模板并且把MAC地址设置到主机资产清单里(注意:在实验开始之前需要将之前做的自动发现和自动注册取消,否则会报错,而且在实验开始之前需要将添加的主机进行删除,否则无法成功添加)
zabbix-api的内容如下:

curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
    "jsonrpc": "2.0",
    "method": "host.create",
    "params": {
        "host": "server2",
        "interfaces": [
            {
                "type": 1,
                "main": 1,
                "useip": 1,
                "ip": "172.25.15.2",
                "dns": "",
                "port": "10050"
            }
        ],
        "groups": [
            {
                "groupid": "2"
            }
        ],
        "templates": [
            {
                "templateid": "10001"
            }
        ]
    },
    "id": 2,
    "auth": "d05eafbd2b11cfc6283d84abebaf2883"
}' http://172.25.27.1/zabbix/api_jsonrpc.php | python -m json.tool

在这里插入图片描述
在这里插入图片描述
这里面的groupid有一个简单的获得方法,选择主机群组,找到Linux sevrer就是server2所在的组,点击查看上面会显示groupid(templateid的获取方式同理,找到对应的模板,上面就会显示)
在这里插入图片描述
在这里插入图片描述
实验效果:
vim zabbix-api
./zabbix-api
在这里插入图片描述
发现server2又添加回来了
在这里插入图片描述

内容概要:本文详细介绍了水中有限长加肋圆柱壳体振动和声辐射的近似解析解,并提供了完整的Python实现。文中首先阐述了问题背景,即加肋圆柱壳体作为水下航行器的主要结构形式,肋骨的作用被简化为只有法向力。接着,通过一系列关键方程(如模态振动速度方程、壳体机械阻抗、特征矩阵元素等),推导出加肋圆柱壳体的振动和声辐射特性。Python代码部分实现了这些理论,包括定义`CylindricalShell`类来封装所有计算功能,如初始化参数、机械阻抗、辐射阻抗、肋骨阻抗、模态速度、辐射功率和辐射效率的计算。此外,还扩展了带刚性圆柱障板的圆柱壳体类`CylindricalShellWithBaffle`,并引入了集中力激励、简支边界条件和低频段计算的内容。最后,通过具体示例展示了如何创建壳体对象、设置参数、计算频率响应以及绘制结果图表,验证了加肋对辐射声功率和声辐射效率的影响。 适合人群:具备一定编程基础和声学基础知识的研究人员、工程师,特别是从事水下声学、船舶工程和振动分析领域的专业人员。 使用场景及目标:①通过代码实现和理论推导,深入理解加肋圆柱壳体的振动和声辐射特性;②分析肋骨对壳体声学性能的影响,优化结构设计;③利用Python代码进行数值模拟,评估不同参数配置下的声辐射效率和功率;④为实际工程项目提供理论支持和技术参考。 其他说明:本文不仅提供了详细的数学推导和Python代码实现,还讨论了实际应用中的注意事项,如参数调整、高频模态考虑、肋骨模型细化和数值稳定性处理。建议读者结合实际需求,灵活运用文中提供的理论和代码,进行更深入的研究和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值