原文:
嵌入的 SNMP 服务
uwsgi嵌入了一个小型的SNMP服务。你可以集成你的web apps到监控框架。
为了开启snmp支持,你需要运行一个UDP服务器,选择一个snmp-community名字(这是一个很不好的SNMP认证系统):./uwsgi -s :3031 -w staticfilesnmp --udp 127.0.0.1:2222 --snmp --snmp-community foo
or
./uwsgi -s :3031 -w myapp --master --processes 4 --snmp=127.0.0.1:2222 --snmp-community foo
(使用snmp选项传递udp地址更好一些;)
这里会运行TCP端口3031和UDP端口2222,snmp弃用"foo"为社区名字注意SNMP服务实在主进程中启动,如果要监听私有port,你可以使用capabilities (on Linux) 或使用root运行--master-as-root 选择。staticfilesnmp.py文件包括一个简单的分发,结果导出一个计数器。uwsgi snmp服务导出2组信息,自定义和默认的。普通信息通过uwsgi服务自己管理,自定义的来自你的apps。基本访问信息是:1.3.6.1.4.1.35156.17
that is
iso.org.dod.internet.private.enterprise.unbit.uwsgi
普通选项匹配:
1.3.6.1.4.1.35156.17.1.x
自定义:
1.3.6.1.4.1.35156.17.2.x
So to get the number of requests managed by the uWSGI server :
snmpget -v2c -c foo 127.0.0.1:2222 1.3.6.1.4.1.35156.17.1.1
1.1 is general.requests
自定义的值有三个python方法:uwsgi.snmp_set_counter32(oidnum, value)uwsgi.snmp_set_counter64(oidnum, value)uwsgi.snmp_set_gauge(oidnum,value)
所以,如果你想导出用户的当前日志,将oid作为40:
uwsgi.snmp_set_gauge(40, users_logged_in)
then
snmpget -v2c -c foo 127.0.0.1:2222 1.3.6.1.4.1.35156.17.2.40
配置系统snmp进程代理给uwsgi,将这些信息加入/etc/snmp/snmpd.conf:
proxy -v 2c -c foo 127.0.0.1:2222 .1.3.6.1.4.1.35156.17view systemview included .1.3.6.1.4.1.35156.17
开启snmpd,系统snmpd进程可以使用uwsgi的oid树。
snmpget -v2c -c public 127.0.0.1 1.3.6.1.4.1.35156.17.1.1