diff options
-rw-r--r-- | baro_tests/collectd.py | 106 | ||||
-rw-r--r-- | baro_tests/config_server.py | 3 | ||||
-rwxr-xr-x | baro_utils/get_ssh_keys.sh | 16 | ||||
-rwxr-xr-x | baro_utils/mce-inject_df | bin | 0 -> 78496 bytes | |||
-rw-r--r-- | docs/release/userguide/feature.userguide.rst | 158 | ||||
-rw-r--r-- | mibs/Intel-Bios.txt | 67 | ||||
-rw-r--r-- | mibs/Intel-Common-MIB.mib.txt | 113 | ||||
-rw-r--r-- | mibs/Intel-Mcelog.txt | 115 | ||||
-rw-r--r-- | mibs/Intel-Rdt.txt | 128 | ||||
-rw-r--r-- | mibs/Intel-SA.txt | 10 |
10 files changed, 647 insertions, 69 deletions
diff --git a/baro_tests/collectd.py b/baro_tests/collectd.py index 3f2067af..cd436df6 100644 --- a/baro_tests/collectd.py +++ b/baro_tests/collectd.py @@ -1,7 +1,7 @@ """Executing test of plugins""" # -*- coding: utf-8 -*- -#Licensed under the Apache License, Version 2.0 (the "License"); you may +# Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # @@ -20,8 +20,18 @@ import time import logging from config_server import * from tests import * +from opnfv.deployment import factory +from functest.utils import functest_utils +from functest.utils.constants import CONST CEILOMETER_NAME = 'ceilometer' +ID_RSA_SRC = '/root/.ssh/id_rsa' +ID_RSA_DST_DIR = '/home/opnfv/.ssh' +ID_RSA_DST = ID_RSA_DST_DIR + '/id_rsa' +INSTALLER_PARAMS_YAML = os.path.join(CONST.dir_repo_functest, 'functest/ci/installer_params.yaml') +FUEL_IP = functest_utils.get_parameter_from_yaml('fuel.ip', INSTALLER_PARAMS_YAML) +FUEL_USER = functest_utils.get_parameter_from_yaml('fuel.user', INSTALLER_PARAMS_YAML) +FUEL_PW = functest_utils.get_parameter_from_yaml('fuel.password', INSTALLER_PARAMS_YAML) class KeystoneException(Exception): @@ -151,7 +161,7 @@ class CSVClient(object): + "{0}.domain.tld/{1}/{2}-{3}".format( compute_node.get_id(), plugin_subdir, meter_category, date), compute_node.get_ip()) - #Storing last two values + # Storing last two values values = stdout if len(values) < 2: self._logger.error( @@ -372,8 +382,8 @@ def _exec_testcase( compute_node.get_id(), conf.get_plugin_interval(compute_node, name), logger=logger, client=CeilometerClient(logger), criteria_list=ceilometer_criteria_lists[name], - resource_id_substrings = (ceilometer_substr_lists[name] - if name in ceilometer_substr_lists else [''])) + resource_id_substrings=(ceilometer_substr_lists[name] + if name in ceilometer_substr_lists else [''])) else: res = test_csv_handles_plugin_data( compute_node, conf.get_plugin_interval(compute_node, name), name, @@ -387,6 +397,81 @@ def _exec_testcase( _process_result(compute_node.get_id(), test_labels[name], res, results) +def mcelog_install(logger): + """Install mcelog on compute nodes. + + Keyword arguments: + logger - logger instance + """ + _print_label('Enabling mcelog on compute nodes') + handler = factory.Factory.get_handler('fuel', FUEL_IP, FUEL_USER, installer_pwd='') + nodes = handler.get_nodes() + openstack_version = handler.get_openstack_version() + if openstack_version.find('14.') != 0: + logger.info('Mcelog will not be installed,' + + ' unsupported Openstack version found ({}).'.format(openstack_version)) + else: + for node in nodes: + if node.is_compute(): + ubuntu_release = node.run_cmd('lsb_release -r') + if '16.04' not in ubuntu_release: + logger.info('Mcelog will not be enabled' + + 'on node-{0}, unsupported Ubuntu release found ({1}).'.format( + node.get_dict()['id'], ubuntu_release)) + else: + logger.info('Checking if mcelog is enabled on node-{}...'.format( + node.get_dict()['id'])) + res = node.run_cmd('ls /root/') + if 'mce-inject_df' and 'corrected' in res: + logger.info('Mcelog seems to be already installed on node-{}.'.format( + node.get_dict()['id'])) + res = node.run_cmd('modprobe mce-inject') + res = node.run_cmd('/root/mce-inject_df < /root/corrected') + else: + logger.info('Mcelog will be enabled on node-{}...'.format( + node.get_dict()['id'])) + res = node.put_file('/home/opnfv/repos/barometer/baro_utils/mce-inject_df', + '/root/mce-inject_df') + res = node.run_cmd('chmod a+x /root/mce-inject_df') + res = node.run_cmd('echo "CPU 0 BANK 0" > /root/corrected') + res = node.run_cmd('echo "STATUS 0xcc00008000010090" >> /root/corrected') + res = node.run_cmd('echo "ADDR 0x0010FFFFFFF" >> /root/corrected') + res = node.run_cmd('modprobe mce-inject') + res = node.run_cmd('/root/mce-inject_df < /root/corrected') + logger.info('Mcelog is installed on all compute nodes') + + +def mcelog_delete(logger): + """Uninstall mcelog from compute nodes. + + Keyword arguments: + logger - logger instance + """ + handler = factory.Factory.get_handler('fuel', FUEL_IP, FUEL_USER, installer_pwd='') + nodes = handler.get_nodes() + for node in nodes: + if node.is_compute(): + output = node.run_cmd('ls /root/') + if 'mce-inject_df' in output: + res = node.run_cmd('rm /root/mce-inject_df') + if 'corrected' in output: + res = node.run_cmd('rm /root/corrected') + res = node.run_cmd('systemctl restart mcelog') + logger.info('Mcelog is deleted from all compute nodes') + + +def get_ssh_keys(): + if not os.path.isdir(ID_RSA_DST_DIR): + os.makedirs(ID_RSA_DST_DIR) + if not os.path.isfile(ID_RSA_DST): + logger.info("RSA key file {} doesn't exist, it will be downloaded from installer node.".format(ID_RSA_DST)) + handler = factory.Factory.get_handler('fuel', FUEL_IP, FUEL_USER, installer_pwd=FUEL_PW) + fuel = handler.get_installer_node() + fuel.get_file(ID_RSA_SRC, ID_RSA_DST) + else: + logger.info("RSA key file {} exists.".format(ID_RSA_DST)) + + def main(bt_logger=None): """Check each compute node sends ceilometer metrics. @@ -395,12 +480,14 @@ def main(bt_logger=None): """ logging.getLogger("paramiko").setLevel(logging.WARNING) logging.getLogger("stevedore").setLevel(logging.WARNING) + logging.getLogger("opnfv.deployment.manager").setLevel(logging.WARNING) if bt_logger is None: _check_logger() else: global logger logger = bt_logger - conf = ConfigServer('10.20.0.2', 'root', logger) + get_ssh_keys() + conf = ConfigServer(FUEL_IP, FUEL_USER, logger) controllers = conf.get_controllers() if len(controllers) == 0: logger.error('No controller nodes found!') @@ -416,6 +503,8 @@ def main(bt_logger=None): logger.info('computes: {}'.format([('{0}: {1} ({2})'.format( node.get_id(), node.get_name(), node.get_ip())) for node in computes])) + mcelog_install(logger) # installation of mcelog + ceilometer_running_on_con = False _print_label('Test Ceilometer on control nodes') for controller in controllers: @@ -439,7 +528,7 @@ def main(bt_logger=None): node_id = compute_node.get_id() out_plugins[node_id] = 'CSV' compute_ids.append(node_id) - #plugins_to_enable = plugin_labels.keys() + # plugins_to_enable = plugin_labels.keys() plugins_to_enable = [] _print_label('NODE {}: Test Ceilometer Plug-in'.format(node_id)) logger.info('Checking if ceilometer plug-in is included.') @@ -504,6 +593,8 @@ def main(bt_logger=None): _print_label('NODE {}: Restoring config file'.format(node_id)) conf.restore_config(compute_node) + mcelog_delete(logger) # uninstalling mcelog from compute nodes + print_overall_summary(compute_ids, plugin_labels, results, out_plugins) if ((len([res for res in results if not res[2]]) > 0) @@ -512,5 +603,6 @@ def main(bt_logger=None): return 1 return 0 + if __name__ == '__main__': - sys.exit(main()) + sys.exit(main()) diff --git a/baro_tests/config_server.py b/baro_tests/config_server.py index 4d649269..358a8ffe 100644 --- a/baro_tests/config_server.py +++ b/baro_tests/config_server.py @@ -69,8 +69,7 @@ class ConfigServer(object): self.__private_key_file = ID_RSA_PATH if not os.path.isfile(self.__private_key_file): self.__logger.error( - "Private key file '{}'".format(self.__private_key_file) - + " not found. Please try to run {} script.".format(SSH_KEYS_SCRIPT)) + "Private key file '{}' not found.".format(self.__private_key_file)) raise IOError("Private key file '{}' not found.".format(self.__private_key_file)) # get list of available nodes diff --git a/baro_utils/get_ssh_keys.sh b/baro_utils/get_ssh_keys.sh deleted file mode 100755 index f90c32c9..00000000 --- a/baro_utils/get_ssh_keys.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# -*- coding: utf-8 -*- - -#Licensed under the Apache License, Version 2.0 (the "License"); you may -# not use this file except in compliance with the License. You may obtain -# a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations -# under the License. -mkdir -p /home/opnfv/.ssh/ -scp root@"$INSTALLER_IP":/root/.ssh/* /home/opnfv/.ssh/ diff --git a/baro_utils/mce-inject_df b/baro_utils/mce-inject_df Binary files differnew file mode 100755 index 00000000..9304181f --- /dev/null +++ b/baro_utils/mce-inject_df diff --git a/docs/release/userguide/feature.userguide.rst b/docs/release/userguide/feature.userguide.rst index 2be44d33..4e9b0d01 100644 --- a/docs/release/userguide/feature.userguide.rst +++ b/docs/release/userguide/feature.userguide.rst @@ -27,6 +27,9 @@ Barometer has enabled the following collectd plugins: * *dpdkstat plugin*: A read plugin that retrieve stats from the DPDK extended NIC stats API. +* *dpdkevents plugin*: A read plugin that retrieves DPDK link status and DPDK + forwarding cores liveliness status (DPDK Keep Alive). + * `ceilometer plugin`_: A write plugin that pushes the retrieved stats to Ceilometer. It's capable of pushing any stats read through collectd to Ceilometer, not just the DPDK stats. @@ -35,26 +38,23 @@ Barometer has enabled the following collectd plugins: and free hugepages on a platform as well as what is available in terms of hugepages per socket. -* *RDT plugin*: A read plugin that provides the last level cache utilitzation and - memory bandwidth utilization - * *Open vSwitch events Plugin*: A read plugin that retrieves events from OVS. +* *Open vSwitch stats Plugin*: A read plugin that retrieve flow and interface + stats from OVS. + * *mcelog plugin*: A read plugin that uses mcelog client protocol to check for memory Machine Check Exceptions and sends the stats for reported exceptions +* *RDT plugin*: A read plugin that provides the last level cache utilitzation and + memory bandwidth utilization + All the plugins above are available on the collectd master, except for the -plugin as it's a python based plugin and only C plugins are accepted +ceilometer plugin as it's a python based plugin and only C plugins are accepted by the collectd community. The ceilometer plugin lives in the OpenStack repositories. -Other plugins under development or existing as a pull request into collectd master: - -* *dpdkevents*: A read plugin that retrieves DPDK link status and DPDK - forwarding cores liveliness status (DPDK Keep Alive). - -* *Open vSwitch stats Plugin*: A read plugin that retrieve flow and interface - stats from OVS. +Other plugins existing as a pull request into collectd master: * *SNMP Agent*: A write plugin that will act as a AgentX subagent that receives and handles queries from SNMP master agent and returns the data collected @@ -67,6 +67,7 @@ Other plugins under development or existing as a pull request into collectd mast fanspeed, current, flow, power etc. Also, the plugin monitors Intelligent Platform Management Interface (IPMI) System Event Log (SEL) and sends the + **Plugins included in the Danube release:** * Hugepages @@ -79,20 +80,22 @@ collectd capabilities and usage .. Describe the specific capabilities and usage for <XYZ> feature. .. Provide enough information that a user will be able to operate the feature on a deployed scenario. -**NOTE** Plugins included in the OPNFV D release will be built-in to the fuel -plugin and available in the /opt/opnfv directory on the fuel master. You don't -need to clone the barometer/collectd repos to use these, but you can configure -them as shown in the examples below. Please note, the collectd plugins in OPNFV -are configured with reasonable defaults, but can be overriden. +.. note:: Plugins included in the OPNFV D release will be built-in to the fuel + plugin and available in the /opt/opnfv directory on the fuel master. You don't + need to clone the barometer/collectd repos to use these, but you can configure + them as shown in the examples below. + + The collectd plugins in OPNFV are configured with reasonable defaults, but can + be overriden. Building all Barometer upstreamed plugins from scratch ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The plugins that have been merged to the collectd master branch can all be built and configured through the barometer repository. -**NOTE: sudo permissions are required to install collectd.** - -**NOTE: These are instructions for Ubuntu 16.04.** +.. note:: + * sudo permissions are required to install collectd. + * These are instructions for Ubuntu 16.04 To build and install these dependencies, clone the barometer repo: @@ -113,29 +116,37 @@ To install collectd as a service and install all it's dependencies: $ cd barometer/src && sudo make && sudo make install This will install collectd as a service and the base install directory -is /opt/collectd. +will be /opt/collectd. Sample configuration files can be found in '/opt/collectd/etc/collectd.conf.d' -**Note**: Exec plugin requires non-root user to execute scripts. By default, -`collectd_exec` user is used. Barometer scripts do *not* create this user. It -needs to be manually added or exec plugin configuration has to be changed to use -other, existing user before starting collectd service. +.. note:: + - If you plan on using the Exec plugin, the plugin requires non-root + user to execute scripts. By default, `collectd_exec` user is used. Barometer + scripts do *not* create this user. It needs to be manually added or exec plugin + configuration has to be changed to use other, existing user before starting + collectd service. -Please note if you are using any Open vSwitch plugins you need to run: + - If you don't want to use one of the Barometer plugins, simply remove the + sample config file from '/opt/collectd/etc/collectd.conf.d' + - If you are using any Open vSwitch plugins you need to run: .. code:: bash $ sudo ovs-vsctl set-manager ptcp:6640 + +Below is the per plugin installation and configuration guide, if you only want +to install some/particular plugins. + DPDK statistics plugin ^^^^^^^^^^^^^^^^^^^^^^ Repo: https://github.com/collectd/collectd Branch: master -Dependencies: DPDK (http://dpdk.org/) +Dependencies: DPDK (http://dpdk.org/) Min_Version: 16.04 To build and install DPDK to /usr please see: https://github.com/collectd/collectd/blob/master/docs/BUILD.dpdkstat.md @@ -154,41 +165,96 @@ Building and installing collectd: This will install collectd to /opt/collectd The collectd configuration file can be found at /opt/collectd/etc -To configure the hugepages plugin you need to modify the configuration file to +To configure the dpdkstats plugin you need to modify the configuration file to include: .. code:: bash LoadPlugin dpdkstat - <Plugin dpdkstat> - Coremask "0xf" - ProcessType "secondary" - FilePrefix "rte" - EnabledPortMask 0xffff + <Plugin "dpdkstat"> + <EAL> + Coremask "0x2" + MemoryChannels "4" + ProcessType "secondary" + FilePrefix "rte" + </EAL> + EnabledPortMask 0xffff + PortName "interface1" + PortName "interface2" </Plugin> For more information on the plugin parameters, please see: https://github.com/collectd/collectd/blob/master/src/collectd.conf.pod -Please note if you are configuring collectd with the **static DPDK library** -you must compile the DPDK library with the -fPIC flag: +.. note:: If you are not building and installing DPDK system-wide + you will need to specify the specific paths to the header files and libraries + using LIBDPDK_CPPFLAGS and LIBDPDK_LDFLAGS. You will also need to add the DPDK + library symbols to the shared library path using ldconfig. Note that this + update to the shared library path is not persistant (i.e. it will not survive a + reboot). + +DPDK events plugin +^^^^^^^^^^^^^^^^^^^^^^ +Repo: https://github.com/collectd/collectd + +Branch: master + +Dependencies: DPDK (http://dpdk.org/) + +To build and install DPDK to /usr please see: +https://github.com/collectd/collectd/blob/master/docs/BUILD.dpdkstat.md + +Building and installing collectd: .. code:: bash - $ make EXTRA_CFLAGS=-fPIC + $ git clone https://github.com/maryamtahhan/collectd.git + $ cd collectd + $ ./build.sh + $ ./configure --enable-syslog --enable-logfile --enable-debug + $ make + $ sudo make install -You must also modify the configuration step when building collectd: +This will install collectd to /opt/collectd +The collectd configuration file can be found at /opt/collectd/etc +To configure the dpdkevents plugin you need to modify the configuration file to +include: .. code:: bash - $ ./configure CFLAGS=" -lpthread -Wl,--whole-archive -Wl,-ldpdk -Wl,-lm -Wl,-lrt -Wl,-lpcap -Wl,-ldl -Wl,--no-whole-archive" + LoadPlugin dpdkevents + <Plugin "dpdkevents"> + Interval 1 + <EAL> + Coremask "0x1" + MemoryChannels "4" + ProcessType "secondary" + FilePrefix "rte" + </EAL> + <Event "link_status"> + SendEventsOnUpdate true + EnabledPortMask 0xffff + PortName "interface1" + PortName "interface2" + SendNotification false + </Event> + <Event "keep_alive"> + SendEventsOnUpdate true + LCoreMask "0xf" + KeepAliveShmName "/dpdk_keepalive_shm_name" + SendNotification false + </Event> + </Plugin> + +For more information on the plugin parameters, please see: +https://github.com/collectd/collectd/blob/master/src/collectd.conf.pod -Please also note that if you are not building and installing DPDK system-wide -you will need to specify the specific paths to the header files and libraries -using LIBDPDK_CPPFLAGS and LIBDPDK_LDFLAGS. You will also need to add the DPDK -library symbols to the shared library path using ldconfig. Note that this -update to the shared library path is not persistant (i.e. it will not survive a -reboot). Pending a merge of https://github.com/collectd/collectd/pull/2073. +.. note:: If you are not building and installing DPDK system-wide + you will need to specify the specific paths to the header files and libraries + using LIBDPDK_CPPFLAGS and LIBDPDK_LDFLAGS. You will also need to add the DPDK + library symbols to the shared library path using ldconfig. Note that this + update to the shared library path is not persistant (i.e. it will not survive a + reboot). .. code:: bash @@ -551,7 +617,10 @@ OvS Events Branch: master OvS Stats Branch:feat_ovs_stats -Dependencies: Open vSwitch, libyajl +OvS Events MIBs: The SNMP OVS interface link status is provided by standard +IF-MIB (http://www.net-snmp.org/docs/mibs/IF-MIB.txt) + +Dependencies: Open vSwitch, Yet Another JSON Library (https://github.com/lloyd/yajl) On Ubuntu, install the dependencies: @@ -601,6 +670,7 @@ need to modify the configuration file to include: Socket "/var/run/openvswitch/db.sock" Interfaces "br0" "veth0" SendNotification false + DispatchValues true </Plugin> To configure the OVS stats plugin you need to modify the configuration file diff --git a/mibs/Intel-Bios.txt b/mibs/Intel-Bios.txt new file mode 100644 index 00000000..824cd09f --- /dev/null +++ b/mibs/Intel-Bios.txt @@ -0,0 +1,67 @@ +INTEL-BIOS-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE + FROM SNMPv2-SMI + + hostAssist + FROM Intel-SA-MIB + + DisplayString + FROM SNMPv2-TC; + +--***************************************************************************** +-- +-- MODULE IDENTITY AND REVISION GROUP +-- +--***************************************************************************** + +intelBios MODULE-IDENTITY + LAST-UPDATED "201610241700Z" -- coordinated universal time UTC format is YYMMDDHHmmZ + ORGANIZATION "Intel, Server Management Software" + CONTACT-INFO " " + DESCRIPTION "This SNMP MIB module retrieves System Management BIOS (SMBIOS) + information from DMI table using dmidecode. + + Version: 1.0 10/24/2016 + + Intel copyright information 2016" + ::= { hostAssist 2 } + +------------------------------------------------------------------------------- +-- BIOS scalars +------------------------------------------------------------------------------- + +biosVendor OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual string describes the bios vendor." + ::= { intelBios 1 } + +biosVersion OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual string describes the bios version." + ::= { intelBios 2 } + +biosReleaseDate OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual string describes the bios release date." + ::= { intelBios 3 } + +biosRevision OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..128)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The textual string describes the bios revision." + ::= { intelBios 4 } + +END diff --git a/mibs/Intel-Common-MIB.mib.txt b/mibs/Intel-Common-MIB.mib.txt new file mode 100644 index 00000000..92c766ff --- /dev/null +++ b/mibs/Intel-Common-MIB.mib.txt @@ -0,0 +1,113 @@ +Intel-Common-MIB DEFINITIONS ::= BEGIN + +IMPORTS + enterprises FROM RFC1155-SMI; + +-- Categories + +intel OBJECT IDENTIFIER ::= { enterprises 343 } + +-- +-- Intel Private space divides into 3 branches at the top. They are +-- identifiers, products, and experimental. +-- +-- 'identifers' branch typically contains objects which are used as +-- constants. For example, if a mib contained an object identifier +-- "appliance-type", somewhere down under identifiers would be a list +-- containing OIDs for "refrigerator", "toaster", etc. Currently +-- there are 3 groups under identifiers; systems, objects and +-- comm-methods. +-- 'systems' contains objects for system type such as PCs, hubs, etc. +-- 'objects' contains identifiers for component pieces. +-- 'comm-methods' refers to the transmission medium used in +-- proxy-to-agent conversation. +-- +-- 'products' branch contains objects which are specifically Intel +-- products. Under this branch go all MIBs for Intel products. +-- +-- 'experimental' is for exactly what the name implies. +-- +-- 'information-technology' encompasses the work of the Information +-- Technology (IT) group within Intel. +-- +-- For example, an identifier for a toaster would exist under +-- 'identifiers.systems.toasters' while another identifier for an +-- Intel specific toaster MIB would live under 'products.appliances'. +-- + +identifiers OBJECT IDENTIFIER ::= { intel 1 } +products OBJECT IDENTIFIER ::= { intel 2 } +experimental OBJECT IDENTIFIER ::= { intel 3 } +information-technology OBJECT IDENTIFIER ::= { intel 4 } +sysProducts OBJECT IDENTIFIER ::= { intel 5 } +mib2ext OBJECT IDENTIFIER ::= { intel 6 } +hw OBJECT IDENTIFIER ::= { intel 7 } +wekiva OBJECT IDENTIFIER ::= { intel 111 } +-- Groups under 'identifiers' + +systems OBJECT IDENTIFIER ::= { identifiers 1 } +objects OBJECT IDENTIFIER ::= { identifiers 2 } +comm-methods OBJECT IDENTIFIER ::= { identifiers 3 } + +pc-systems OBJECT IDENTIFIER ::= { systems 1 } +proxy-systems OBJECT IDENTIFIER ::= { systems 2 } +hub-systems OBJECT IDENTIFIER ::= { systems 3 } +switch-systems OBJECT IDENTIFIER ::= { systems 4 } + +local-proxy-1 OBJECT IDENTIFIER ::= { comm-methods 1 } +pc-novell-1 OBJECT IDENTIFIER ::= { comm-methods 2 } + +-- Identifiers for 'hub-systems' +-- Note: These items match the definitions for moduleType +-- in intelhub.mib. + +express10-100Stack OBJECT IDENTIFIER ::= { hub-systems 1 } +express12TX OBJECT IDENTIFIER ::= { hub-systems 2 } +express24TX OBJECT IDENTIFIER ::= { hub-systems 3 } +expressReserved OBJECT IDENTIFIER ::= { hub-systems 4 } +expressBridge OBJECT IDENTIFIER ::= { hub-systems 6 } +express210-12 OBJECT IDENTIFIER ::= { hub-systems 7 } +express210-24 OBJECT IDENTIFIER ::= { hub-systems 8 } +express220-12 OBJECT IDENTIFIER ::= { hub-systems 9 } +express220-24 OBJECT IDENTIFIER ::= { hub-systems 10 } +express300Stack OBJECT IDENTIFIER ::= { hub-systems 11 } +express320-16 OBJECT IDENTIFIER ::= { hub-systems 12 } +express320-24 OBJECT IDENTIFIER ::= { hub-systems 13 } + +-- Groups under 'products' + +pc-products OBJECT IDENTIFIER ::= { products 1 } +hub-products OBJECT IDENTIFIER ::= { products 2 } +proxy OBJECT IDENTIFIER ::= { products 3 } +print-products OBJECT IDENTIFIER ::= { products 4 } +network-products OBJECT IDENTIFIER ::= { products 5 } +snmp-agents OBJECT IDENTIFIER ::= { products 6 } +nic-products OBJECT IDENTIFIER ::= { products 7 } +server-management OBJECT IDENTIFIER ::= { products 10 } +switch-products OBJECT IDENTIFIER ::= { products 11 } +i2o OBJECT IDENTIFIER ::= { products 120 } +-- Groups under 'hub-products' + +express110 OBJECT IDENTIFIER ::= { hub-products 1 } + +-- Groups under 'print-products' + +netport-1 OBJECT IDENTIFIER ::= { print-products 1 } +netport-2 OBJECT IDENTIFIER ::= { print-products 2 } +netport-express OBJECT IDENTIFIER ::= { print-products 3 } + +-- Groups under 'network-products' + +lanDesk OBJECT IDENTIFIER ::= { network-products 1 } +ld-alarms OBJECT IDENTIFIER ::= { lanDesk 1 } +internetServer-2 OBJECT IDENTIFIER ::= { network-products 2 } +iS-alarms OBJECT IDENTIFIER ::= { internetServer-2 1 } + +-- Groups under 'experimental' + +-- <none> + +-- + +END + diff --git a/mibs/Intel-Mcelog.txt b/mibs/Intel-Mcelog.txt new file mode 100644 index 00000000..90f4398b --- /dev/null +++ b/mibs/Intel-Mcelog.txt @@ -0,0 +1,115 @@ +INTEL-MCELOG-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32 + FROM SNMPv2-SMI + + hostAssist + FROM Intel-SA-MIB + + DisplayString + FROM SNMPv2-TC; + +--***************************************************************************** +-- +-- MODULE IDENTITY AND REVISION GROUP +-- +--***************************************************************************** + +intelMcelog MODULE-IDENTITY + LAST-UPDATED "201610241700Z" -- coordinated universal time UTC format is YYMMDDHHmmZ + ORGANIZATION "Intel, Server Management Software" + CONTACT-INFO " " + DESCRIPTION "This SNMP MIB module logs and accounts machine memory, IO, and CPU + hardware errors on modern x86 Linux systems. + + Version: 1.0 10/24/2016 + + Intel copyright information 2016" + ::= { hostAssist 3 } + +OneBasedIndex ::= Integer32(1..2147483647) + +------------------------------------------------------------------------------- +-- Intel Mcelog Table +------------------------------------------------------------------------------- + +memoryTable OBJECT-TYPE + SYNTAX SEQUENCE OF MemoryTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This Group defines the Intel RDT Groups Table." + ::= { intelMcelog 2 } + +memoryTableEntry OBJECT-TYPE + SYNTAX MemoryTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This Group defines the Mcelog Memory Table Entry." + INDEX { memoryGroupIndex } + ::= { memoryTable 1 } + +MemoryTableEntry ::= SEQUENCE { + memoryGroupIndex OneBasedIndex, + memoryGroupDescr DisplayString, + memoryCorrectedErrors Integer32, + memoryCorrectedTimedErrors Integer32, + memoryUncorrectedErrors Integer32, + memoryUncorrectedTimedErrors Integer32 +} + +memoryGroupIndex OBJECT-TYPE + SYNTAX OneBasedIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute defines the index of the Mcelog memory group." + ::= { memoryTableEntry 1 } + +memoryGroupDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the socket and + DMI name (*TODO*)." + ::= { memoryTableEntry 2 } + +memoryCorrectedErrors OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the total number of corrected errors." + ::= { memoryTableEntry 3 } + +memoryCorrectedTimedErrors OBJECT-TYPE + SYNTAX Integer32 + UNITS "in 24h" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the number of corrected errors in + last 24 hours." + ::= { memoryTableEntry 4 } + +memoryUncorrectedErrors OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the total number of uncorrected errors." + ::= { memoryTableEntry 5 } + +memoryUncorrectedTimedErrors OBJECT-TYPE + SYNTAX Integer32 + UNITS "in 24h" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the number of uncorrected errors in + last 24 hours." + ::= { memoryTableEntry 6 } + +END diff --git a/mibs/Intel-Rdt.txt b/mibs/Intel-Rdt.txt new file mode 100644 index 00000000..8eb93d0a --- /dev/null +++ b/mibs/Intel-Rdt.txt @@ -0,0 +1,128 @@ +INTEL-RDT-MIB DEFINITIONS ::= BEGIN + +IMPORTS + MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter64 + FROM SNMPv2-SMI + + hostAssist + FROM Intel-SA-MIB + + DisplayString + FROM SNMPv2-TC; + +--***************************************************************************** +-- +-- MODULE IDENTITY AND REVISION GROUP +-- +--***************************************************************************** + +intelRdt MODULE-IDENTITY + LAST-UPDATED "201610241700Z" -- coordinated universal time UTC format is YYMMDDHHmmZ + ORGANIZATION "Intel, Server Management Software" + CONTACT-INFO " " + DESCRIPTION "This SNMP MIB module supports the Intel RDT SNMP subagent for monitoring + information provided by monitoring features of Intel Resource Director + Technology (Intel(R) RDT) like Cache Monitoring Technology (CMT), + Memory Bandwidth Monitoring (MBM). These features provide information about + utilization of shared resources like last level cache occupancy, local + memory bandwidth usage, remote memory bandwidth usage, instructions per clock. + + Version: 1.0 10/24/2016 + + Intel copyright information 2016" + ::= { hostAssist 1 } + +OneBasedIndex ::= Integer32(1..2147483647) + +------------------------------------------------------------------------------- +-- Intel RDT Table +------------------------------------------------------------------------------- + +rdtGroupNumber OBJECT-TYPE + SYNTAX Integer32 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The number of network interfaces (regardless of their + current state) present on this system." + ::= { intelRdt 1 } + +rdtTable OBJECT-TYPE + SYNTAX SEQUENCE OF RdtTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION + "This Group defines the Intel RDT Groups Table." + ::= { intelRdt 2 } + +rdtTableEntry OBJECT-TYPE + SYNTAX RdtTableEntry + MAX-ACCESS not-accessible + STATUS current + DESCRIPTION "This Group defines the Intel RDT Groups Table Entry." + INDEX { rdtGroupIndex } + ::= { rdtTable 1 } + +RdtTableEntry ::= SEQUENCE { + rdtGroupIndex OneBasedIndex, + rdtGroupDescr DisplayString, + rdtLlc Counter64, + rdtIpc Counter64, + rdtMbmRemote Counter64, + rdtMbmLocal Counter64 +} + +rdtGroupIndex OBJECT-TYPE + SYNTAX OneBasedIndex + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This attribute defines the index of the Intel RDT group." + ::= { rdtTableEntry 1 } + +rdtGroupDescr OBJECT-TYPE + SYNTAX DisplayString (SIZE (0..255)) + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "A textual string containing information about the groups of cores + on which to monitor supported events." + ::= { rdtTableEntry 2 } + +rdtLlc OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the last level cache occupancy." + ::= { rdtTableEntry 3 } + +rdtIpc OBJECT-TYPE + SYNTAX DisplayString + UNITS "ipc" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the instructions per clock." + ::= { rdtTableEntry 4 } + +rdtMbmRemote OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes/sec" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the Remote (Socket) memory bandwidth usage." + ::= { rdtTableEntry 5 } + +rdtMbmLocal OBJECT-TYPE + SYNTAX Counter64 + UNITS "bytes/sec" + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "This counter defines the Local (Socket) memory bandwidth usage." + ::= { rdtTableEntry 6 } + +END diff --git a/mibs/Intel-SA.txt b/mibs/Intel-SA.txt new file mode 100644 index 00000000..6e7dd87b --- /dev/null +++ b/mibs/Intel-SA.txt @@ -0,0 +1,10 @@ +Intel-SA-MIB DEFINITIONS ::= BEGIN + +IMPORTS + server-management FROM Intel-Common-MIB; + +software OBJECT IDENTIFIER ::= { server-management 3 } +baseboardGroup OBJECT IDENTIFIER ::= { software 5 } +hostAssist OBJECT IDENTIFIER ::= { baseboardGroup 1 } + +END |