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

相关推荐
我的青春不太冷2 小时前
【实战篇章】深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据
运维·服务器·前端·学习
Bulestar_xx3 小时前
vulnhub DC-4 walkthrough (含非预期)
linux·网络·安全
Tassel_YUE4 小时前
Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)
机器人·钉钉·zabbix
曾经的三心草4 小时前
小程序项目-购物-首页与准备
运维·服务器·小程序·项目·购物
5xidixi6 小时前
HTTP(1)
网络·网络协议·http
doubt。8 小时前
2.[网鼎杯 2020 朱雀组]phpweb
网络·安全·web安全·网络安全·php·代码复审
对你无可奈何8 小时前
从Proxmox VE开始:安装与配置指南
运维·服务器·devops
lingllllove8 小时前
使用 HTTP::Server::Simple 实现轻量级 HTTP 服务器
服务器·网络协议·http
Linux运维老纪8 小时前
K8s之Service详解(Detailed Explanation of K8s Service)
服务器·网络·云原生·容器·kubernetes·云计算·运维开发
一只码代码的章鱼9 小时前
计算机网络 笔记 传输层
网络·网络协议·tcp/ip·计算机网络