• 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

  • 相关阅读:
    Spring IOC之ApplicationContextAware
    Flink 源码解读系列 DataStream 时间服务管理器 TimeServiceManager 设计与实现
    【优秀论文解读】BoW3D: Bag of Words for Real-time Loop Closing in 3D LiDAR SLAM
    如何开发你的第一个Flutter App?
    鲜花网络专送站
    计算机考研 | 2016年 | 计算机组成原理真题
    图像处理之同态滤波实现灰度图像增强
    漏洞修复:Content-Security-Policy header missing
    学会 Arthas,让你 3 年经验掌握 5 年功力!
    图论-图的深度优先遍历-Java
  • 原文地址:https://blog.csdn.net/MichaelCoCoQ/article/details/134219721