• kamailio/opensips snmp/cacti/zabbix监控


     
     
    kamailio/opensips是现在比较流行的sip proxy,有配置灵活、性能强大、支持各种RFC等优点,是杀人越货、谈情说爱是必备佳品。要保证这么好的东西稳定运行,监控是必不可少的,国外的大牛早就想到这点,所以已搞好了一个snmpstats模块可用于监控kamailio运行情况,能够输出程序中的性能数据等,像当前事务数、注册用户数、socket未读取数据字节数等,都是关乎系统性能的关键数据。
    本文以国外大牛之模块说明为原型,再次梳理如何配置kamailio snmpstats模块。虽然是以kamailio为例,但只要将kamailio替换成opensips,基本是可用的。
     
    一. 编译snmpstats 模块
    1.依赖
    内部依赖:使用snmpstats模块,必须先加载usrloc模块和dialog模块。
    外部依赖:必须安装NETSNMP 5.3从上版本,CentOS/Redhat安装方法
    #yum install net-snmp-devel net-snmp net-snmp-libs net-snmp-utils
    2.编译
    使用默认的makefile编译出来的文件会提示bnetsnmpagent.so.10: undefined symbol: boot_DynaLoader 错误,我是上刀山下火海终于找到解决方案,参见以下对Makefile的修改
    modules_k/snmpstats/Makefile从24行开始:
    [plain] view plaincopy
    1. #BUILDAGENTLIBS = $(shell net-snmp-config --netsnmp-agent-libs)  
    2. BUILDAGENTLIBS =-L$(LOCALBASE)/lib -lnetsnmpmibs -lnetsnmpagent   
    3. -Wl,-E   
    4. -Wl,-rpath,/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE   
    5. -L/usr/local/lib -L/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/auto/DynaLoader -lDynaLoader   
    6. -L/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/CORE   
    7. -lperl -lresolv -lnsl -ldl -lm -lcrypt -lutil   
    8. -lpthread -lc   
    9. -lwrap   
    10. -lsensors   
    11. -lrpmdb -lrpm   
    12. -lnetsnmphelpers -lnetsnmp  
    改完以上的问题就可以接着编译了
    #make modules modules=modules_k/snmpstats
    完成编译后把相应库复制到kamailio对应的库目录下面。
     
    二.配置 kamailio
    #vi kamailio.cfg
    在相应位置加上
    loadmodule "snmpstats.so"
     
    ..
     
    # ----- snmpstats params ----
    modparam("snmpstats", "sipEntityType", "registrarServer")
    modparam("snmpstats", "snmpgetPath", "/usr/bin/")
    然后再检测下配置是否正确
    #kamailio -c
     
    三.配置snmp
    注意以下说的配置文件都是通过RPM包装的路径,如果你是源码安装且未指定prefix那通常都是在/usr/local/share这个下面。
    1.到原来的kamailio源码目录下,把mibs文件都复制到/usr/share/snmp/mibs目录,且将原文件加上.txt后缀,命令如下:
    #cp modules_k/snmpstats/mibs/* /usr/share/snmp/mibs
    改名不用说了吧,但别忘记了照做。
    2. 配置snmpd.conf
    #vi /etc/snmp/snmpd.conf  ; 添加以下配置项,不过组织名最好改一下,整一个自己的名称,别让别人知道了。
    rocommunity public
    master agentx
    agentXSocket tcp:localhost:705
    
    3.配置 snmp.conf
    #vi /etc/snmp/snmp.conf  ;具体配置项的意思请google,这里就不一一敷述。
    defVersion       2c
    defCommunity    public
    mibdirs         /usr/share/snmp/mibs
    mibs            +ALL
    
    4.配置snmpstats.conf
    #vi /etc/snmp/snmpstats.conf ; 这个配置文件是给snmpstats模块用的,是告诉模块agentx在哪里,并且文件需要和snmpd.conf放在同一个目录下,所以这里是/etc/snmp。
     agentXSocket tcp:localhost:705
    
     
    四.见证奇迹吧
    启动snmpd
    /etc/init.d/snmpd start
    然后重启动kamailio
    如果启动得看你如何配置的,我配置了服务,就这样运行了
    /etc/init.d/kamailio restart
     
    好了,看看有没有数据吧
     snmpwalk localhost openser
    
    看到OPENSER -XXX 一大堆输出了吗?
    :)*(&#(&#
    没有看到?太正常了,第一次都是把事情做对,那以后就没事情可做了。如果输出一堆错误或没有输出那就正确了,不折腾咋能学到东西呢?
     
    五.出啥问题了
    1.我们要检测snmpd对没对
    先看下snmpd启动没有,如果启动了检测下我们要用的705端口是否正确监听,同时一定要看日志 /var/log/snmpd.log
    如果没日志 默认net-snmpd输出日志到/var/log/messes,想输出至一个独立日志文件,配置为:
    vi /etc/sysconfig/snmpd.options 
    [plain] view plaincopy
    1. # snmpd command line options  
    2. # OPTIONS="-Lsd -Lf /dev/null -p /var/run/snmpd.pid -a"  
    3. OPTIONS="-Lsd -Lf  /var/log/snmpd.log -p /var/run/snmpd.pid -a"  
    2.然后我们看下kamailio有没有干活
    重启kamailio,kamailio会去连接705端口的,如果没有,检测下snmpstats.conf文件路径及配置,kamailio配置等。
     
    如果检测完了还不行,那就再照着以上步骤做一次。
     
    到这里SNMP已经有数据输出了,接下来就是去CACTI里面创建模块,然后自定义图表,通过SNMP把数据画上去,这方面的东西与kamailio无法了,直接去网上搜下cacti自定义图表照做即可。
     
    参考文档
  • 相关阅读:
    使用rdbtools工具来解析redis rdb文件
    Python三十个常见的脚本汇总
    python字节(bytes)
    Centos7安装MySQL8.0
    shell数组等基本用法
    怎么理解分布式、高并发、多线程?
    MySql 5.7.23安装
    Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
    MySQL会发生死锁吗?
    CentOS7利用systemctl添加自定义系统服务
  • 原文地址:https://www.cnblogs.com/noobkey/p/3411077.html
Copyright © 2020-2023  润新知