Zabbix如何监控腾讯云NAT网关

1、NAT网关介绍

NAT 网关(NAT Gateway)是一种支持 IP 地址转换服务,提供网络地址转换能力,主要包括SNAT(Source Network Address Translation,源网络地址转换)和DNAT(Destination Network Address Translation,目的网络地址转换)能力,可为私有网络(VPC)内的资源提供安全、高性能的 Internet 访问服务。

NAT 网关分为公网 NAT 网关和私网 NAT 网关。公网 NAT 网关提供公网地址转换服务,而私网 NAT 网关提供私网地址转换服务。

NAT 网关支持高达99.99%的高可用性、5Gbps的带宽以及1000 万以上的并发连接数,其典型应用场景如下:

  1. 大带宽、高可用的公网出口服务,例如:网络爬虫,访问 Internet 公共服务等。

  2. 安全的公网出口服务,例如:云服务器需要与公网通信,但出于安全性考虑,不希望云服务器绑定公网 IP。

2、监控准备

本次监控方式通过Zabbix外部检查方式自动发现实例,监控项数据通过Zabbix采集器方式生成。将下面脚本上传至外部检查路径下。

注:部署路径有差异,根据实际环境的外部检查路径放至脚本。

复制代码
#!/usr/bin/python3
import json
from tencentcloud.common import
credential
from
tencentcloud.common.profile.client_profile import ClientProfile
from
tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception
import TencentCloudSDKException
from tencentcloud.vpc.v20170312
import vpc_client, models
import sys
from os import popen
from zbxsend import ZabbixMetric,
ZabbixSender
akey = sys.argv[1]
ckey = sys.argv[2]
region = sys.argv[3]
ZABBIX_SEND_ADDR =
'/itops/zabbix/bin/zabbix_sender'
ZABBIX_SERVER_IP = '127.0.0.1'
ZABBIX_PORT = '10051'
def get_data(offset):
   
params = {
        "Limit": 100,
        "Offset": offset
   
}
   
req.from_json_string(json.dumps(params))
   
# 返回的resp是一个DescribeNatGatewaysResponse的实例,与请求对象对应
   
resp = client.DescribeNatGateways(req)
   
# 输出json格式的字符串回包
   
res = resp.to_json_string()
   
data = json.loads(res)
   
disklist = data['NatGatewaySet']
   
# 获取记录总条目数
   
totalcount = int(data['TotalCount'])
   
return totalcount,disklist
 
try:
   
# 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey 
   
# 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
   
cred = credential.Credential(akey,ckey)
   
# 实例化一个http选项,可选的,没有特殊需求可以跳过
   
httpProfile = HttpProfile()
   
httpProfile.endpoint = "vpc.tencentcloudapi.com"
 
   
# 实例化一个client选项,可选的,没有特殊需求可以跳过
   
clientProfile = ClientProfile()
   
clientProfile.httpProfile = httpProfile
   
# 实例化要请求产品的client对象,clientProfile是可选的
   
client = vpc_client.VpcClient(cred, region, clientProfile)
 
   
# 实例化一个请求对象,每个接口都会对应一个request对象
   
req = models.DescribeNatGatewaysRequest()
 
   
totalcount,disklist = get_data(0) ## 获取100条以内的disk数据
   
if totalcount > 100: ## 如果disk记录大于100,则将100往后的数据拼接至list

if totalcount % 100 > 0:

num = totalcount // 100 + 1

else:

num = totalcount // 100

for i in range(num):

if i == 0:

continue

else:

disklist = disklist + get_data(i*100)[1]

list_disk = []

for i in disklist:

nat_id = i['NatGatewayId']

nat_name = i['NatGatewayName']

nat_name = nat_name+nat_id

list_disk.append({"{#NATID}":nat_id,"{#NATNAME}":nat_name})

keys_list = list(i.keys())

for key in keys_list:

result = ZabbixSender(ZABBIX_SERVER_IP).send([ZabbixMetric(nat_id,key,str(i[key]))])

print(json.dumps(list_disk))

except TencentCloudSDKException as err:

print(err)

注意以下三处的值根据实际环境调整

ZABBIX_SEND_ADDR:zabbix_sender路径

ZABBIX_SERVER_IP:server服务器IP地址

ZABBIX_PORT:server服务器端口

3、创建监控模板

3.1.创建NAT网关实例自动发现规则

键值解释:

tencent.NAT.py:脚本名称,可自定义脚本名称,需要与外部检查路径下的脚本名称一致

$ACCESS_KEY}: SecretId

{$SECRET_KEY}:SecretKey

可前往官网控制台 https://console.cloud.tencent.com/cam/capi 获取SecretId和SecretKey

{$REGION}:资源地域,表示操作的资源所属的地域

3.2、监控模板上创建监控项原型

监控项名称入口:

创建主机关联监控模板即可。

博主可能不能及时回答疑问,如技术问题欢迎加入交流。

博主具有丰富的模板资源和开发能力及项目落地管理经验分享欢迎加入交流

微信号:king_songax

相关推荐
盟接之桥几秒前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
会员源码网29 分钟前
理财源码开发:单语言深耕还是多语言融合?看完这篇不踩坑
网络·个人开发
米羊1211 小时前
已有安全措施确认(上)
大数据·网络
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
主机哥哥2 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
ManThink Technology2 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技3 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt3 小时前
未授权访问漏洞
网络·安全·web安全
释怀不想释怀3 小时前
Linux环境变量
linux·运维·服务器