Snmp_exporter¶
The snmp_exporter can be found here: https://github.com/prometheus/snmp_exporter
By default, the snmp_exorter runs under the port 9116.
This exporter, along with the ipmi exporter, is a little special, as it executes snmp commands on the targets. So we can get the metrics of all the targets with the exporter running locally on our management server.
To access the metrics, do:
Note
here, the request is http://<ip address of where the exporter is located>/snmp?target=<ip address of the switch that we want the metrics from>
Otherwise we can access it directly in a browser. However, using curl can be handy, because you can grep the output, and do other nice things with it.
You should get something like this:
# HELP ifAdminStatus The desired state of the interface - <IP_ADDRESS>.<IP_ADDRESS>.1.7
# TYPE ifAdminStatus gauge
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="1",ifName="Gi0/0"} 2
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="10",ifName="Gi1/0/3"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="11",ifName="Gi1/0/4"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="12",ifName="Gi1/0/5"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="13",ifName="Gi1/0/6"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="2",ifName="Nu0"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="20",ifName="Gi1/0/13"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="27",ifName="Gi1/0/20"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="29",ifName="Gi1/0/22"} 1
ifAdminStatus{ifAlias="",ifDescr="",ifIndex="3",ifName="VLAN-1"} 1
Snmp_exporter setup¶
The setup of this exporter is a little tricky.
By default, we provide a configuration file for this exporter only for cisco switches.
This is because snmp needs specific OIDS, in order to query the switches. These OIDS can vary depending on the switch you use.
You can have a look at all OIDS available here: https://cric.grenoble.cnrs.fr/Administrateurs/Outils/MIBS/
You can find this file under /etc/snmp_exporter/snmp.yml
It should look something like this:
.. code-block:: yaml
- if_mib:
- walk:
<IP_ADDRESS>.2.1.2
<IP_ADDRESS>.<IP_ADDRESS>.1
<IP_ADDRESS>.4.1.254<IP_ADDRESS>.<IP_ADDRESS>
- get:
<IP_ADDRESS>.<IP_ADDRESS>.0
- metrics:
name: sysUpTime oid: <IP_ADDRESS>.<IP_ADDRESS> type: gauge help: The time (in hundredths of a second) since the network management portion of the system was last re-initialized. - <IP_ADDRESS>.<IP_ADDRESS>
name: ifNumber oid: <IP_ADDRESS>.<IP_ADDRESS> type: gauge help: The number of network interfaces (regardless of their current state) present on this system. - <IP_ADDRESS>.<IP_ADDRESS>
name: ifIndex oid: <IP_ADDRESS>.<IP_ADDRESS>.1.1 type: gauge help: A unique value, greater than zero, for each interface - <IP_ADDRESS>.<IP_ADDRESS>.1.1 indexes:
If you have another switch you want to query, you can generate another file than the one we provide.
By installing snmp_exporter, you should have a generator installed under /usr/local/go/src/github.com/prometheus/snmp_exporter/generator
Here, you have a file, generator.yml that you have to change, according to what you want.
By default, it looks like this:
modules:
# Default IF-MIB interfaces table with ifIndex.
if_mib:
walk: [sysUpTime, interfaces,ifXTable]
version: 1
auth:
community: cluster
lookups:
- source_indexes: [ifIndex]
lookup: ifAlias
- source_indexes: [ifIndex]
lookup: ifDescr
- source_indexes: [ifIndex]
# Use OID to avoid conflict with Netscaler NS-ROOT-MIB.
lookup: <IP_ADDRESS>.<IP_ADDRESS>.1.1.1 # ifName
overrides:
ifAlias:
ignore: true # Lookup metric
ifDescr:
ignore: true # Lookup metric
ifName:
ignore: true # Lookup metric
ifType:
type: EnumAsInfo
Note
Notice the auth section, by default, we setup the switches with the cluster community with no password required. See the switch setup section for more info.
You can tune it as you want, as long as you follow this syntax:
modules:
module_name: # The module name. You can have as many modules as you want.
walk: # List of OIDs to walk. Can also be SNMP object names or specific instances.
- <IP_ADDRESS>.2.1.2 # Same as "interfaces"
- sysUpTime # Same as "<IP_ADDRESS>.<IP_ADDRESS>"
- <IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS> # Instance of "ifHCInOctets" with index "40"
version: 2 # SNMP version to use. Defaults to 2.
# 1 will use GETNEXT, 2 and 3 use GETBULK.
max_repetitions: 25 # How many objects to request with GET/GETBULK, defaults to 25.
# May need to be reduced for buggy devices.
retries: 3 # How many times to retry a failed request, defaults to 3.
timeout: 5s # Timeout for each individual SNMP request, defaults to 5s.
auth:
# Community string is used with SNMP v1 and v2. Defaults to "public".
community: public
# v3 has different and more complex settings.
# Which are required depends on the security_level.
# The equivalent options on NetSNMP commands like snmpbulkwalk
# and snmpget are also listed. See snmpcmd(1).
username: user # Required, no default. -u option to NetSNMP.
security_level: noAuthNoPriv # Defaults to noAuthNoPriv. -l option to NetSNMP.
# Can be noAuthNoPriv, authNoPriv or authPriv.
password: pass # Has no default. Also known as authKey, -A option to NetSNMP.
# Required if security_level is authNoPriv or authPriv.
auth_protocol: MD5 # MD5 or SHA, defaults to MD5. -a option to NetSNMP.
# Used if security_level is authNoPriv or authPriv.
priv_protocol: DES # DES or AES, defaults to DES. -x option to NetSNMP.
# Used if security_level is authPriv.
priv_password: otherPass # Has no default. Also known as privKey, -X option to NetSNMP.
# Required if security_level is authPriv.
context_name: context # Has no default. -n option to NetSNMP.
# Required if context is configured on the device.
lookups: # Optional list of lookups to perform.
# The default for `keep_source_indexes` is false. Indexes must be unique for this option to be used.
# If the index of a table is bsnDot11EssIndex, usually that'd be the label
# on the resulting metrics from that table. Instead, use the index to
# lookup the bsnDot11EssSsid table entry and create a bsnDot11EssSsid label
# with that value.
- source_indexes: [bsnDot11EssIndex]
lookup: bsnDot11EssSsid
drop_source_indexes: false # If true, delete source index labels for this lookup.
# This avoids label clutter when the new index is unique.
overrides: # Allows for per-module overrides of bits of MIBs
metricName:
ignore: true # Drops the metric from the output.
regex_extracts:
Temp: # A new metric will be created appending this to the metricName to become metricNameTemp.
- regex: '(.*)' # Regex to extract a value from the returned SNMP walks's value.
value: '$1' # The result will be parsed as a float64, defaults to $1.
Status:
- regex: '.*Example'
value: '1' # The first entry whose regex matches and whose value parses wins.
- regex: '.*'
value: '0'
type: DisplayString # Override the metric type, possible types are:
# gauge: An integer with type gauge.
# counter: An integer with type counter.
# OctetString: A bit string, rendered as 0xff34.
# DateAndTime: An RFC 2579 DateAndTime byte sequence. If the device has no time zone data, UTC is used.
# DisplayString: An ASCII or UTF-8 string.
# PhysAddress48: A 48 bit MAC address, rendered as 00:01:02:03:04:ff.
# Float: A 32 bit floating-point value with type gauge.
# Double: A 64 bit floating-point value with type gauge.
# InetAddressIPv4: An IPv4 address, rendered as <IP_ADDRESS>.
# InetAddressIPv6: An IPv6 address, rendered as 0102:0304:0506:0708:090A:0B0C:0D0E:0F10.
# InetAddress: An InetAddress per RFC 4001. Must be preceded by an InetAddressType.
# InetAddressMissingSize: An InetAddress that violates section 4.1 of RFC 4001 by
# not having the size in the index. Must be preceded by an InetAddressType.
# EnumAsInfo: An enum for which a single timeseries is created. Good for constant values.
# EnumAsStateSet: An enum with a time series per state. Good for variable low-cardinality enums.
# Bits: An RFC 2578 BITS construct, which produces a StateSet with a time series per bit.
Here is a list of MIBS:
You can get more info here:
And here:
Once you are done tuning the file, simply do:
$ export MIBDIRS=mibs
$ ./generator generate
>hat you will get is a snmp.yml file. Simply copy the new file:
$ cp snmp.yml /etc/snmp_exporter/
Setup targets¶
To setup the targets, simply add:
monitoring:
exporters:
snmp_exporter:
port: 9116
with_generator: false
to the /etc/ansible/inventory/group_vars/equipment_profile you desire.
Switch setup¶
To setup the community on the switch to communicate with the exporter: Go to the switch via ssh or telnet, and enter the following commands:
$ Enable
$ configure terminal
$ snmp-server community cluster RO
$ exit
$ write memory
- You can change cluster to any community name you want, that is written in the
snmp.yml file
Start service¶
To start the service, simply run:
systemctl start snmp_exporter
Note
all exporter services are under the /etc/systemd/system directory, and most binaries are under the /usr/local/bin directory
Dashboard¶
The dashboard gives the following:
Interface thoughput( in and out)
Interface in,out,total in, total out, Bandwidth
Alerts
Percentage of casts (uni,multi,etc) In and Out
Max in, Max out, number of interfaces, Total in,Uptime, Total out
Etc…


Written by Jeremy Love, ReSearcher is a tool for searching through course materials using regular expressions. It is the subject of my final year project for module TM470-20B through my study with the Open University.
See Browsing, for more information about browsing and organising your library.
See Configuring, for more information on how to configure ReSearcher.
See Downloading, for more information on how to download new content to browse and search using ReSearcher.
See Searching, for more information on how to perform searches with ReSearcher.
For more up-to-date information and for further reading, check out the following links:
Online help for ReSearcher
Source code documentation (generated with Doxygen)
Source code repository (on GitHub)
My personal website


public class RenderQueue
extends java.lang.Object
RenderQueue
is used to queue up and sort
geometries
for rendering.| Modifier and Type | Class and Description |
|---|---|
static class |
RenderQueue.Bucket
The render queue
Bucket specifies the bucket
to which the spatial will be placed when rendered. |
static class |
RenderQueue.ShadowMode
ShadowMode is a marker used to specify how shadow
effects should treat the spatial. |
| Constructor and Description |
|---|
RenderQueue()
Creates a new RenderQueue, the default
comparators
are used for all geometry lists . |
| Modifier and Type | Method and Description |
|---|---|
void |
addToQueue(Geometry g,
RenderQueue.Bucket bucket)
Adds a geometry to the given bucket.
|
void |
clear() |
GeometryComparator |
getGeometryComparator(RenderQueue.Bucket bucket)
Returns the current GeometryComparator used by the specified bucket,
one of Gui, Opaque, Sky, Transparent, or Translucent.
|
boolean |
isQueueEmpty(RenderQueue.Bucket bucket) |
void |
renderQueue(RenderQueue.Bucket bucket,
RenderManager rm,
Camera cam) |
void |
renderQueue(RenderQueue.Bucket bucket,
RenderManager rm,
Camera cam,
boolean clear) |
void |
renderShadowQueue(GeometryList list,
RenderManager rm,
Camera cam,
boolean clear) |
void |
setGeometryComparator(RenderQueue.Bucket bucket,
GeometryComparator c)
Sets a different geometry comparator for the specified bucket, one
of Gui, Opaque, Sky, Transparent, or Translucent.
|
public RenderQueue()
comparators
are used for all geometry lists
.public void setGeometryComparator(RenderQueue.Bucket bucket, GeometryComparator c)
The most significant comparator is the one for the transparent bucket since there is no correct way to sort the transparent bucket that will handle all geometry all the time. In certain cases, the application may know the best way to sort and now has the option of configuring a specific implementation.
The default comparators are:
OpaqueComparator
which sorts
by material first and front to back within the same material.
TransparentComparator
which
sorts purely back to front by leading bounding edge with no material sort.
TransparentComparator
which
sorts purely back to front by leading bounding edge with no material sort. this bucket is rendered after post processors.
NullComparator
which does no sorting
at all.
GuiComparator
sorts geometries back to
front based on their Z values.public GeometryComparator getGeometryComparator(RenderQueue.Bucket bucket)
public void addToQueue(Geometry g, RenderQueue.Bucket bucket)
RenderManager
automatically handles this task
when flattening the scene graph. The bucket to add
the geometry is determined by Spatial.getQueueBucket()
.g
- The geometry to addbucket
- The bucket to add to, usually
Spatial.getQueueBucket()
.public void renderShadowQueue(GeometryList list, RenderManager rm, Camera cam, boolean clear)
public boolean isQueueEmpty(RenderQueue.Bucket bucket)
public void renderQueue(RenderQueue.Bucket bucket, RenderManager rm, Camera cam)
public void renderQueue(RenderQueue.Bucket bucket, RenderManager rm, Camera cam, boolean clear)
public void clear()


Salmon Cookies are a local Seattle delacatessen. With minute amounts of ground salmon in each cookie, the flavor stays delicious while supplementing your daily protein intake!
Salmon Cookies currently has four operating locations around the globe!
For investment opportunities inqueries, please contact our home Seattle office or view or current sales!
Above you can view some finished Salmon Cookies!


Kyber Network Progress Update (February 16, 2018)
Kyber Network has taken some big steps in the last two weeks, and we are proud to say it has been an overwhelming success. The Kyber...
Read moreKyber Network
Kyber Network is a new system which allows the exchange and conversion of digital assets.
We provide rich payment APIs and a new contract wallet that allow anyone to seamlessly receive payments
from any tokens.
White Paper
Features
a robust platform where you can get the most out of your crypto-assets
Exchange
Convert and exchange your tokens securely, instantly.
Proxy Payment
Pay anyone in one currency, and they can receive it in another currency type
Why Exchange with Kyber?
Secure
Every operation happens on the smart contract. We never hold users' funds.
Versatile
Compatible with existing smart contracts. No changes are needed to integrate with Kyber Network.
Liquid
We maintain a reserve of tokens to guarantee liquidity.
Instant
No waiting for confirmations, no deposit required.
ROADMAP
Our Team
CEO & CoFounder
Loi Luu is a researcher working on cryptocurrencies, smart contract security and distributed consensus algorithms. He is also a regular invited speaker at Bitcoin and Ethereum workshops such
as DevCon2, EDCON
Loi believes in the force of the Ethereum and Blockchain technology. Much of his work revolves around this community. He developed Oyente, the first open-source security analyzer for Ethereum smart contracts. Loi also cofounded SmartPool, another open source project which embraces decentralization of mining pools in existing cryptocurrency. He continues to champion decentralisation and trustless properties of the Blockchain with KyberNetwork, taking inspiration and developing value for the community.
See more
CTO & CoFounder
Velner holds a PhD in computer science from Tel Aviv University. His research is focused on game theory incentives in blockchain protocols and formal verification of smart contracts.
Yaron is one of the global top contributors to the Ethereum Bug Bounty Program.
Yaron is also an experienced software developer with over 10 years as a senior software engineer and a technical leader at EZchip semi-conductors. He was a member in the data structure and algorithm team, which developed novel data structures for IP routing.
See more
Lead Engineer & CoFounder
Victor Tran is a senior backend engineer and Linux system administrator. He is experienced in building high performance multi-platform applications. Victor has been involved in blockchain
and cryptocurrency development since early 2016 and is a lead engineer at the SmartPool project.
See more
CFO
Head Of Business Development
Trading Analyst / Developer
Our Advisors
Executive Advisor
Wong Lee Hong career spans across various industries over 3 decades. He has extensive distribution and business development experience in consumer electronic, multimedia,
computer gaming, Internet and the banking sectors. The second half of his career was spent developing the Internet Banking capability of a major financial institution, venture capital activities in strategic startups and regulatory management role, dealing with banking regulators in Asia in matters relating to banking technology and operations. At present, he is a Blockchain enthusiast and investor.
See more
Advisor
Vitalik is the Founder and Chief Scientist of Ethereum. He is also both the Founder and a writer for Bitcoin Magazine, a venture that marked the beginning of his career in cryptocurrency in 2011.
He is interested in creating secure, efficient, and trustworthy systems and advises a number of projects in the cryptocurrency space.
See more
Executive Advisor
Leng Hoe Lon co-founded Shentilium with National University of Singapore, with the aim of using the latest data-driven technology to drive business decisions and gain competitive
edge. He also co-founded TrackRecord Asia, with the vision that anyone can learn to trade in the financial markets profitably within a professional risk management framework. Prior to this, he held various positions in the financial industry including Deutsche bank (London and Singapore), JPMorgan (Singapore), ABN Amro (Singapore). He was a Managing Director in Goldman Sachs’ Asia Macro Trading group in HK and Asian FX trader in London. He was also CEO of Tudor Capital Singapore, a global macro hedge fund.
See more
Advisor
Chye Kit is the co-founder and Managing Director of Cynopsis Solutions, a Software-as-a-Service (Saas) company that specializes in regulatory, control and governance, anti-money
laundering (AML) and counter terrorism financing (CTF) solutions to customers. To date, Cynopsis Solutions has served over 250 clients worldwide, including Kyber Network. Prior to being an entrepreneur, Chye Kit spent about 15 years in the financial sector, notably as a Managing Director and Joint Regional Head of Compliance at Macquarie Group for Asia.
See more
Advisor
Kenneth is a practising lawyer and Senior Partner with Dentons Rodyk & Davidson’s Corporate Practice, and China/Indonesia
Practices. Kenneth specializes in corporate finance, with almost two decades worth of experience in venture capital, private equity, IPOs/ICOs and post-IPO/ICO funding, as well as mergers and acquisitions. Kenneth is admired for his quickness of mind and has been widely regarded as one of the most creative lawyers in his area of interest.
See more
Advisor
Prateek Saxena is a research professor in computer science at National University of Singapore. He works on blockchains and
computer security. His research has influenced the design of browser platforms, web standards and app stores widely used today. He has received several premier awards such as the MIT TR35 Asia.
See more
Advisor
Founder of LinkTime, Organizer of several Ethereum workshops. Community Relations, Crypto-Business Advisor in China.
Our Partners
Supported by
Stay Updated
Kyber Network has taken some big steps in the last two weeks, and we are proud to say it has been an overwhelming success. The Kyber...
Read moreKyber Network is excited to announce its newest partnership with Wanchain, the universal cross-chain protocol that will power the new...
Read moreKyber Network is pleased to report that SelfKey, the blockchain digital identity foundation, has recently announced plans to integrate the
Read more