For those who might want to add SNMP to luci statistics
nano /usr/bin/stat-genconfig
function config_snmp( c )
local str = ""
for s in pairs(sections) do
for key, type in pairs({ Sdata="collectd_snmp_data", Shost="collectd_snmp_host" }) do
if sections[s][".type"] == type then
dname = sections[s].dname
Table = sections[s].Table
Type = sections[s].Type
Instance = sections[s].Instance
Values = sections[s].Values
Values2 = sections[s].Values2
Values3 = sections[s].Values3
Values4 = sections[s].Values4
hname = sections[s].hname
Address = sections[s].Address
Version = sections[s].Version
Interval = sections[s].Interval
Community = sections[s].Community
Timeout = sections[s].Timeout
Retries = sections[s].Retries
Collect = sections[s].Collect
Collect2 = sections[s].Collect2
Collect3 = sections[s].Collect3
Collect4 = sections[s].Collect4
if dname then
str = str .. "\t" .. "<Data " .."\"".. dname .."\"".." >" .. " \n"
str = str .. "\t" .. "Type" .. " " .. Type .. "\n"
str = str .. "\t" .. "Table" .. " " .. Table .. "\n"
str = str .. "\t" .. "Instance" .. " \"" .. Instance .. "\"\n"
if Vaules4 then
str = str .. "\t" .. "Values" .. " \"" .. Values .. "\" \"" .. Values2 .. "\" \"" .. Values3 .. "\" \"" .. Values4 .. "\"\n"
else
if Values3 then
str = str .. "\t" .. "Values" .. " \"" .. Values .. "\" \"" .. Values2 .. "\" \"" .. Values3 .. "\"\n"
else
if Values2 then
str = str .. "\t" .. "Values" .. " \"" .. Values .. "\" \"" .. Values2 .. "\"\n"
else
str = str .. "\t" .. "Values" .. " \"" .. Values .. "\"\n"
end
end
end
str = str .. "\t" .. "</Data>" .. " \n"
end
if hname then
str = str .. "\t" .. "<Host " .."\"".. hname .."\"".." >" .. " \n"
str = str .. "\t" .. "Address" .. " \"" .. Address .. "\"\n"
str = str .. "\t" .. "Version" .. " " .. Version .. "\n"
str = str .. "\t" .. "Community" .. " \"" .. Community .. "\"\n"
str = str .. "\t" .. "Interval" .. " " .. Interval .. "\n"
if Collect4 then
str = str .. "\t" .. "Collect" .. " \"" .. Collect .. "\" \"" .. Collect2 .. "\" \"" .. Collect3 .. "\" \"" .. Collect4 .. "\"\n"
else
if Collect3 then
str = str .. "\t" .. "Collect" .. " \"" .. Collect .. "\" \"" .. Collect2 .. "\" \"" .. Collect3 .. "\"\n"
else
if Collect2 then
str = str .. "\t" .. "Collect" .. " \"" .. Collect .. "\"\"" .. Collect2 .. "\"\n"
else
str = str .. "\t" .. "Collect" .. " \"" .. Collect .. "\"\n"
end
end
end
str = str .. "\t" .. "Timeout" .. " " .. Timeout .. "\n"
str = str .. "\t" .. "Retries" .. " " .. Retries .. "\n"
str = str .. "\t" .. "</Host>" .. " \n"
end
end
end
end
return str
end
and add this to plugin section
snmp = config_snmp,
then -- nano /usr/lib/lua/luci/model/cbi/luci_statistics/snmp.lua
-- Copyright 2008 Freifunk Leipzig / Jo-Philipp Wich <jow@openwrt.org>
-- Licensed to the shostlic under the Apache License 2.0.
m = Map("luci_statistics",
translate("SNMP Data"),
translate(
"SNMP DATA"
))
-- collectd_snmp config section
s = m:section( NamedSection, "collectd_snmp", "luci_statistics" )
-- collectd_snmp_data.enable
enable = s:option( Flag, "enable", translate("Enable this plugin") )
enable.default = 0
-- collectd_snmp_data config section (Sdata)
sdata = m:section( TypedSection, "collectd_snmp_data",
translate("SNMP Data"),
translate(
"This section defines the SNMP Data "
))
sdata.addremove = true
sdata.anonymous = true
-- collectd_snmp_data.dname
sdata_name = sdata:option( Value, "dname", translate("SNMP Data Name"))
sdata_name.default = "Data1"
-- collectd_snmp_data.Type
sdata_Type = sdata:option( Value, "Type", translate("Type"))
sdata_Type.default = "if_octets"
-- collectd_snmp_data.Table
sdata_Table = sdata:option( Value, "Table", translate("Table True/False") )
---sdata_port.isinteger = true
sdata_Table.default = "true"
-- collectd_snmp_data.Values
sdata_Values = sdata:option( Value, "Values", translate("MIBs/OIDs-1") )
---sdata_user.isinteger = true
sdata_Values.default = "IF-MIB::ifInOctets"
-- collectd_snmp_data.Values2
sdata_Values2 = sdata:option( Value, "Values2", translate("MIBs/OIDs-2") )
sdata_Values2.default = "IF-MIB::ifOutOctets"
sdata_Values2.optional = true
-- collectd_snmp_data.Values3
sdata_Values3 = sdata:option( Value, "Values3", translate("MIBs/OIDs-3") )
sdata_Values3.default = ""
sdata_Values3.optional = true
-- collectd_snmp_data.Values4
sdata_Values4 = sdata:option( Value, "Values4", translate("MIBs/OIDs-4") )
sdata_Values4.default = ""
sdata_Values4.optional = true
-- collectd_snmp_data.Instance
sdata_Instance = sdata:option( Value, "Instance", translate("Instance") )
sdata_Instance.isinteger = true
sdata_Instance.default = "IF-MIB::ifDescr"
-- collectd_snmp_host config section (Shost)
shost = m:section( TypedSection, "collectd_snmp_host",
translate("SNMP Hosts"),
translate(
"This section defines to SNMP Hosts "
))
shost.addremove = true
shost.anonymous = true
-- collectd_snmp_host.hname
shost_name = shost:option( Value, "hname", translate("SNMP Host Name"))
shost_name.default = "DATA1"
-- collectd_snmp_host.Address
shost_Address = shost:option( Value, "Address", translate("Host Address") )
shost_Address.default = "ADDRESS"
-- collectd_snmp_host.Version
shost_Version = shost:option( Value, "Version", translate("Version 1,2 or 3 ") )
shost_Version.default = "1"
shost_Version.isinteger = true
--shost_Version.optional = true
-- collectd_snmp_host.Interval
shost_Interval = shost:option( Value, "Interval", translate("Interval") )
shost_Interval.default = "60"
-- collectd_snmp_host.Collect
shost_Collect = shost:option( Value, "Collect", translate("Data Name") )
shost_Collect.default = "Data1"
-- collectd_snmp_host.Community
shost_Community = shost:option( Value, "Community", translate("Community") )
shost_Community.default = "Public"
shost_Community.optional = true
-- collectd_snmp_host.Timeout
shost_Timeout = shost:option( Value, "Timeout", translate("Timeout") )
shost_Timeout.default = "10"
shost_Timeout.optional = true
-- collectd_snmp_host.Retries
shost_Retries = shost:option( Value, "Retries", translate("Retries") )
shost_Retries.default = "1"
shost_Retries.optional = true
-- collectd_snmp_host.Collect2
shost_Collect2 = shost:option( Value, "Collect2", translate("Data Name2") )
shost_Collect2.default = ""
shost_Collect2.optional = true
-- collectd_snmp_host.Collect3
shost_Collect3 = shost:option( Value, "Collect3", translate("Data Name3") )
shost_Collect3.default = ""
shost_Collect3.optional = true
-- collectd_snmp_host.Collect4
shost_Collect4 = shost:option( Value, "Collect4", translate("Data Name4") )
shost_Collect4.default = ""
shost_Collect4.optional = true
return m
then add these to nano /usr/lib/lua/luci/controller/luci_statistics/luci_statistics.lua
snmp = _("SNMP"),
add to network section
network = { "conntrack", "dns", "interface", "iptables", "snmp",
"netlink", "olsrd", "openvpn", "ping",
"splash_leases", "tcpconns", "iwinfo" }
lastly edit nano /etc/config/luci_statistics
config statistics 'collectd_snmp'
option enable '1'
you can use cd /usr/lib/lua/luci/statistics/rrdtool/definitions/
copy and renane interface.lua to snmp.lua and edit the top line to this
module("luci.statistics.rrdtool.definitions.snmp", package.seeall) to get quick funtionallity of snmp to add in more values toy need add them
the luci statistics looks like this
okay good luck have fun.