使用API接口,自动化巡检F5负载均衡设备

使用API接口,自动化巡检F5负载均衡设备

    • 前言
    • F5 的API接口
    • 关于认证
    • 利用python实现自动化巡检
    • 成果

前言

目前公司的监控系统监控项比较粗略,无法监控如F5设备集群状态、主备机配置同步状态等信息。

利用F5设备自带的API,通过python程序,可获取相关信息,从而实现自动化巡检、监控等需求。

用到的python库:request、json、time

实现功能:自动化巡检F5设备上一次主备切换时间、主备机配置同步状态、HA状态等信息

F5 的API接口

F5 (以LTM设备为例)的API全名叫做 iControl REST API。

通俗点说,就是向F5设备发送一个http请求,通过认证后,F5会返回json格式数据。数据中可以包括VS、POOL名称、VS、POOL状态等等信息。除查询类操作外,也可以通过API接口完成新建VS、POOL等变更类操作。

利用API接口,可以很方便的对F5进行自动化操作。

  1. restful设计风格;
  2. 认证;
  3. 查询类操作,可实现监控、自动化巡检等需求;
  4. 变更类操作,可实现自动化部署;

关于认证

目前公司使用的Cisco ACS认证系统,经过本人实验,使用AAA用户无法完成认证。

使用F5中的local用户,可通过认证。 原因暂时未知。
在这里插入图片描述

利用python实现自动化巡检

设计思路:

使用python requrest库,模拟http get 、post等请求,获取F5设备相关信息。将获取的json格式数据转换为dict数据结构,取相应的键值,整理并写入到文本文件中。

如下代码供参考:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import requests
import json
import time

auth, ip = ('admin', 'epi@66585006'), '192.168.100.246'
timestamp= time.strftime("%Y-%m-%d %H-%M-%S", time.localtime())

url= 'https://' + ip + '/mgmt/tm/cm/sync-status'
#获取F5设备配置同步状态
url2= 'https://' + ip + '/mgmt/tm/cm/device'
#获取F5设备型号、可用模块、failover主备状态
url3= 'https://' + ip + '/mgmt/tm/sys/failover'
#获取F5设备上一次failover切换时间

result_failover= requests.get(url3, verify= False, auth= auth)
resp_failover= result_failover.text
failover_dict= json.loads(resp_failover)

result_sync= requests.get(url, verify= False, auth= auth)
resp_sync= result_sync.text
sync_dict= json.loads(resp_sync)

resp_hastatus= requests.get(url2, verify= False, auth= auth)
hastatus_dict= json.loads(resp_hastatus.text)

filename= 'f5/'+ timestamp + '.txt'
with open(filename, 'a') as f:
    f.write(ip+ ' last failover time: '+ failover_dict['apiRawValues']['apiAnonymous'])
    f.write(ip+ ' sync status is :'+ sync_dict['entries']['https://localhost/mgmt/tm/cm/sync-status/0']['nestedStats']['entries']['color']['description']+ '\n')
    f.write('HA status:'+ '\n'+ hastatus_dict['items'][0]['hostname']+ ','+ hastatus_dict['items'][0]['failoverState']+ '\n'+ hastatus_dict['items'][1]['hostname']+ \
    ','+ hastatus_dict['items'][1]['failoverState']+ '\n\n')

成果

巡检完成后,根据巡检时间生成文本文件。

文件中包括设备上一次主备切换时间、主备机配置同步状态、HA状态等信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述