zoukankan      html  css  js  c++  java
  • zabbix利用SNMPTrap接收华为存储服务器主动告警

    zabbix利用SNMPTrap接收华为存储服务器主动告警

    概述

    接收SNMP trap与查询启用SNMP的设备相反。

    在这种情况下,信息发送自启用SNMP的设备并由Zabbix收集或“trapped”。

    通常在某些条件更改时发送trap,并且代理通过端口162连接到服务器(相反的,代理端的161端口是用于查询代理的)。 使用trap可以检测在查询间隔期间发生的一些可能被查询数据遗漏的短期问题。

    在Zabbix中接收SNMP trap旨在使用snmptrapd和内置机制之一来传递trap到Zabbix - 一个perl脚本或SNMPTT。

    接收trap的工作流程:

    1. snmptrapd 收到trap
    2. snmptrapd将trap传递给SNMPTT或调用Perl trap接收器
    3. SNMPTT或Perl trap接收器解析,格式化并将trap写入文件
    4. Zabbix SNMP trap读取并解析trap文件
    5. 对于每个trap,Zabbix发现主机接口与接收的trap地址匹配的所有“SNMP trap”监控项。请注意,在匹配期间只使用主机接口中选定的“IP”或“DNS”。
    6. 对于每个找到的监控项,将trap与“snmptrap[regexp]”中的regexp进行比较。 trap设置为all匹配项的值。如果没有找到匹配的监控项,并且有一个“snmptrap.fallback”监控项,则将trap设置为该监控项的值。
    7. 如果trap未设置为任何监控项的值,Zabbix默认记录未匹配的trap。(通过管理 → 常规 → 其它中的“记录未匹配的SNMP trap(Log unmatched SNMP traps)”进行配置。)

    一、在zabbix—proxy上安装配置snmptrapd

    # 安装net-snmp以及相关工具(里面包含SNMPTrapd)
    yum install -y net-snmp net-snmp-utils net-snmp-perl 
    
    # 修改配置文件
    [root@zabbix_proxy_bridging /etc/snmp]# egrep -v "^#|^$" snmptrapd.conf 
    authCommunity   log,execute,net Admin@123 # 指定团体名
    # 指定snmptt为trap接收器,此时还没安装snmptt
    traphandle default /usr/sbin/snmptthandler
    
    # 启动snmptrapd并加入开机启动项
    [root@zabbix_proxy_bridging ~]# systemctl enable --now snmptrapd.service
    
    
    
    1)存储设备进入ipmc开启snmp和snmptrap,并指定团体名和trap目标主机IP

    华为进军服务器还没几年,所以在远程管理卡(BMC)方面跟hp、dell相比相去甚远。华为RH2285 v1的远程管理平台为BMC,后续推出了iMana200、iBMC等。以下统称BMC

    华为BMC提供了以下基本功能:

    • 远程console功能
    • 开关机功能
    • 虚拟安装介质功能

    2)proxy 实时监听日志查看

    二、安装配置snmptt

    yum -y install epel-release     # 安装EPRL源 有可以不安装
    yum -y install snmptt           # 安装snmptt
    yum -y install perl-Sys-Syslog  # 安装perl-syslog
    # 修改配置snmptt配置文件
    [root@zabbix_proxy_bridging /etc/snmp]# egrep -v "^#|^$"   /etc/snmp/snmptt.ini
    [General]
    snmptt_system_name = 
    mode = standalone
    multiple_event = 1
    dns_enable = 0
    strip_domain = 0
    strip_domain_list = <<END
    domain.com
    END
    resolve_value_ip_addresses = 0
    net_snmp_perl_enable = 1 # 启用
    net_snmp_perl_cache_enable = 1
    net_snmp_perl_best_guess = 0
    translate_log_trap_oid = 2 
    # 0:数字形式显示OID,1:显示OID名称,
    # 2:显示OID所属模块名及其名称
    translate_value_oids = 1
    translate_enterprise_oid_format = 1
    translate_trap_oid_format = 1
    translate_varname_oid_format = 1
    translate_integers = 1
    wildcard_expansion_separator = " "
    allow_unsafe_regex = 0
    remove_backslash_from_quotes = 0
    dynamic_nodes = 0
    description_mode = 0
    description_clean = 1
    threads_enable = 0
    threads_max = 10
    date_time_format = %Y/%m/%d %H:%M:%S # 时间日期格式
    [DaemonMode]
    daemon_fork = 1
    daemon_uid = snmptt
    pid_file = /var/run/snmptt.pid
    spool_directory = /var/spool/snmptt/
    sleep = 5
    use_trap_time = 1
    keep_unlogged_traps = 1
    duplicate_trap_window = 0
    [Logging]
    stdout_enable = 0
    log_enable = 1
    log_file = /var/log/snmptt/snmptt.log # 默认日志文件
    log_system_enable = 0
    log_system_file = /var/log/snmptt/snmpttsystem.log
    unknown_trap_log_enable = 0
    unknown_trap_log_file = /var/log/snmptt/snmpttunknown.log
    statistics_interval = 0
    syslog_enable = 1
    syslog_facility = local0
    syslog_level_debug = <<END
    END
    syslog_level_info = <<END
    END
    syslog_level_notice = <<END
    END
    syslog_level_warning = <<END
    END
    syslog_level_err = <<END
    END
    syslog_level_crit = <<END
    END
    syslog_level_alert = <<END
    END
    syslog_level = warning
    syslog_system_enable = 1
    syslog_system_facility = local0
    syslog_system_level = warning
    [SQL]
    db_translate_enterprise = 0
    db_unknown_trap_format = '$-*'
    sql_custom_columns = <<END
    END
    sql_custom_columns_unknown = <<END
    END
    mysql_dbi_enable = 0
    mysql_dbi_host = localhost
    mysql_dbi_port = 3306
    mysql_dbi_database = snmptt
    mysql_dbi_table = snmptt
    mysql_dbi_table_unknown = snmptt_unknown
    mysql_dbi_table_statistics = 
    mysql_dbi_username = snmpttuser
    mysql_dbi_password = password
    mysql_ping_on_insert = 1
    mysql_ping_interval = 300
    postgresql_dbi_enable = 0
    postgresql_dbi_module = 0
    postgresql_dbi_hostport_enable = 0
    postgresql_dbi_host = localhost
    postgresql_dbi_port = 5432
    postgresql_dbi_database = snmptt
    postgresql_dbi_table_unknown = snmptt_unknown
    postgresql_dbi_table_statistics = 
    postgresql_dbi_table = snmptt
    postgresql_dbi_username = snmpttuser
    postgresql_dbi_password = password
    postgresql_ping_on_insert = 1
    postgresql_ping_interval = 300
    dbd_odbc_enable = 0
    dbd_odbc_dsn = snmptt
    dbd_odbc_table = snmptt
    dbd_odbc_table_unknown = snmptt_unknown
    dbd_odbc_table_statistics = 
    dbd_odbc_username = snmptt
    dbd_odbc_password = password
    dbd_odbc_ping_on_insert = 1
    dbd_odbc_ping_interval = 300
    [Exec]
    exec_enable = 1
    pre_exec_enable = 1
    unknown_trap_exec = 
    unknown_trap_exec_format = 
    exec_escape = 1
    [Debugging]
    DEBUGGING = 0
    DEBUGGING_FILE = 
    DEBUGGING_FILE_HANDLER = 
    [TrapFiles]
    snmptt_conf_files = <<END
    /etc/snmp/snmptt.conf
    END
    
    
    
    1)备份规则文件
    mv /etc/snmp/snmptt.conf /etc/snmp/snmptt.conf.bak
    
    2)自定义trap格式化规则
    #匹配Linkdown的规则
    EVENT LinkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Warning
    FORMAT ZBXTRAP $aA LinkDown on interface $4.  Admin state: $2.  Operational state: $3
    
    #匹配Linkup的规则
    EVENT LinkUp .1.3.6.1.6.3.1.1.5.4 "Status Events" Normal
    FORMAT ZBXTRAP $aA Linkup on interface $4.  Admin state: $2.  Operational state: $3
    
    # 默认规则,没有其他规则匹配上时,所有trap信息都按此规则处理
    EVENT general .* "General event" Normal
    FORMAT ZBXTRAP $aA $1
    
    3) 启动snmtt
    systemctl enable --now snmptt
    tail -F /var/log/snmptt/snmptt.log   #打开并跟踪snmptt日志
    

    三、配置zabbix-proxy

    [root@zabbix_proxy_bridging /etc/zabbix]# egrep -v "^#|^$" zabbix_proxy.conf
    ProxyMode=0 # 主动模式
    Server=192.168.60.243 # server地址
    ServerPort=10051 # 监听端口
    Hostname=zabbix_proxy_241 # 主动模式跟web配置一样
    LogFile=/var/log/zabbix/zabbix_proxy.log # 日志文件
    LogFileSize=0 # 不启用日志切割
    DebugLevel=3 # 调试等级
    EnableRemoteCommands=0 # 允许zabbix-server在本机远程执行命令
    LogRemoteCommands=1 # 远程执行命令后吧记录日志为警告
    PidFile=/var/run/zabbix/zabbix_proxy.pid
    SocketDir=/var/run/zabbix
    DBName=zabbix_proxy
    DBUser=zabbix_proxy
    DBPassword=zabbix_proxy
    DBPort=3306
    ConfigFrequency=60 # 多久主动向server索要一次配置数据
    DataSenderFrequency=1 # proxy采集到的数据多久向server发送一次 秒
    StartPollers=5 # 轮询进程的初始实例数量。
    StartIPMIPollers=5 # IPMI 轮询进程的初始实例数量。
    StartPreprocessors=3 
    # pre-forked实例的预处理线程数量 
    # 预处理器工作进程启动时,预处理管理器进程将自动启动
    
    StartPollersUnreachable=1 
    # 不可达主机 (包括IPMI 和 Java)的轮询进程的初始实例数量
    StartTrappers=5
    trapper进程的初始实例数量。
    Trapper接收来自Zabbix发送者、主动agent的数据。
    至少要运行一个trapper进程用于在web前端展示服务器可用性和队列视图
    StartPingers=1 # ICMP pingers进程的初始实例数量
    StartDiscoverers=1 # 发现进程的初始实例数量。
    StartHTTPPollers=1 # HTTP 轮询进程的初始实例数量。
    SNMPTrapperFile=/var/log/snmptt/snmptt.log 
    临时文件, 用于传递 SNMP trap守护进程的数据给server.
    必须和 zabbix_trap_receiver.pl或 SNMPTT 配置文件中的配置保持一致。
    StartSNMPTrapper=1 # 设置为1, SNMP trapper进程将启动。
    StartDBSyncers=4 # 数据库进程的初始实例数量。
    Timeout=4 # agent、SNMP设备或外部检查的超时时长
    TrapperTimeout=300 # 定义trapper处理数据的超时时间
    ExternalScripts=/usr/lib/zabbix/externalscripts 
    # 外部脚本位置 (依赖编译安装时的环境变量datadir)。
    LogSlowQueries=3000
    数据库查询消耗时间,大于该时间将会记入日志 (毫秒)。
    0 - 不记录慢查询日志。
    DebugLevel=3时该选项可用。
    
    StatsAllowedIP=127.0.0.1
    ip地址列表以”,”分割,也可以使用CIDR、或者DNS. 
    只接受ip里表中的请求. 如果未设置此参数,则不接受请求.
    
    # 更改配置后重启zabbix-proxy
    systtemctl restart zab
    

    四、配置zabbix-server

    [root@zabbix-server /etc/zabbix]# egrep -v "^#|^$" zabbix_server.conf
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    PidFile=/var/run/zabbix/zabbix_server.pid
    SocketDir=/var/run/zabbix
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    DBPort=3306
    StartPollers=5
    StartIPMIPollers=5
    StartPreprocessors=3
    StartPollersUnreachable=1
    StartTrappers=5
    StartPingers=1
    StartDiscoverers=1
    StartHTTPPollers=1
    SNMPTrapperFile=/tmp/zabbix_traps.tmp # 指定snmptt日志文件
    StartSNMPTrapper=1 # 开启SNMPTrapper功能
    StartDBSyncers=4
    Timeout=4
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
    

    五,配置zabbix-web页面

    在Key字段中使用一个SNMP trap Key:
    Key
    描述 返回值 注释
    snmptrap[regexp]
    捕获与regexp中指定的正则表达式匹配的所有SNMP trap。如果regexp未指定,则捕获任何trap。 SNMP trap 该监控项只能用于SNMP接口 此监控项从Zabbix 2.0.0.开始支持 注意: 从Zabbix 2.0.5开始,该监控项的参数支持用户宏和全局正则表达式。
    snmptrap.fallback
    捕获未被该接口的任何snmptrap[]监控项捕获的所有SNMP trap。 SNMP trap 该监控项只能用于SNMP接口。 该监控项从Zabbix 2.0.0.以后支持

    目前不支持多行正则表达式匹配。

    将要解析的时间戳的信息类型设置为'Log'。 请注意,其它格式(如“数字”)也是可以接受的,但可能需要自定义trap处理程序。

    要使SNMP trap监控工作,必须首先正确设置。

  • 相关阅读:
    Memcached使用与纠错(附代码和相关dll)
    python函数
    python操作文件
    python基础2
    SpringMVC中使用@ResponseBody注解将任意POJO对象返回值转换成json进行返回
    利用aspose-words 实现 java中word转pdf文件
    POI各Jar包的作用(转)
    java利用poi 把ppt转化为图片,
    SpringMVC中 解决@ResponseBody注解返回中文乱码
    springMVC 使用注解注入接口实现类
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/15215075.html
Copyright © 2011-2022 走看看