### Interface Description Examples (Unix/Linux) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Interface-Description-Parsing/index.html Shows how interface descriptions can be formatted on Unix/Linux systems, requiring an additional script setup. ```text # eth3: Cust: Example Customer [10Mbit] (T1 Telco Y CCID129031) {EXAMP0001} # eth0: Transit: Example Provider (AS65000) # eth1: Core: core.router01 FastEthernet0/0 (Telco X CCID023141) # eth2: Peering: Peering Exchange ``` -------------------------------- ### Enable and start fcgiwrap service Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Smokeping/index.html Enable the fcgiwrap service to start on boot and start it immediately. ```bash systemctl enable --now fcgiwrap ``` -------------------------------- ### Get Device Details Example Source: https://github.com/librenms/docs.librenms.org/blob/main/API/index.html Example of how to retrieve details for a specific device by providing its hostname in the API route. ```APIDOC ## Get Device Details ### Description Retrieves detailed information about a specific device. ### Method GET ### Endpoint `/api/v0/devices/:hostname` ### Parameters #### Path Parameters - **hostname** (string) - Required - The hostname of the device to retrieve details for. #### Headers - **X-Auth-Token** (string) - Required - Your API access token. ### Response #### Success Response (200) (Response details not explicitly provided in source, typically returns a JSON object with device information.) ``` -------------------------------- ### Configure snmpd (v2c) Source: https://github.com/librenms/docs.librenms.org/blob/main/Installation/Install-LibreNMS/index.html Copy the example snmpd.conf, edit it to set your community string, and then install and enable the distro script. ```bash cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf ``` ```bash vi /etc/snmp/snmpd.conf ``` ```bash curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro chmod +x /usr/bin/distro systemctl enable snmpd systemctl restart snmpd ``` -------------------------------- ### Install Development Dependencies Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Getting-Started/index.html Run this command to install the necessary dependencies for development. Ensure you have composer installed. ```bash ./scripts/composer_wrapper.php install ``` -------------------------------- ### Install SMART prerequisites on FreeBSD Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/SMART/index.html Installs necessary packages for SMART monitoring on FreeBSD. ```bash pkg install p5-JSON p5-MIME-Base64 smartmontools ``` -------------------------------- ### Install wiringpi Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Raspberry Pi GPIO Monitor/index.html Install the wiringpi utility on Debian-based systems using apt-get. ```bash sudo apt-get install wiringpi ``` -------------------------------- ### Install Composer Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Validating-Code/index.html Run this command to install composer if it is not already installed. Composer will be installed into /opt/librenms/composer.phar. ```bash curl -sS https://getcomposer.org/installer | php ``` -------------------------------- ### Install librenms_return_optimizer on FreeBSD Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/index.html Install necessary packages and download/install the librenms_return_optimizer script on FreeBSD. ```bash pkg install p5-MIME-Base64 p5-Gzip-Faster wget wget https://raw.githubusercontent.com/librenms/librenms-agent/master/utils/librenms_return_optimizer -O /usr/local/bin/librenms_return_optimizer chmod +x /usr/local/bin/librenms_return_optimizer ``` -------------------------------- ### Install SMART prerequisites on Debian/Ubuntu Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/SMART/index.html Installs necessary packages for SMART monitoring on Debian-based systems. ```bash apt-get install smartmontools libjson-perl libmime-base64-perl ``` -------------------------------- ### Install SMART prerequisites on RedHat/CentOS Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/SMART/index.html Installs necessary packages for SMART monitoring on RedHat-based systems. ```bash dnf install smartmontools perl-JSON perl-MIME-Base64 ``` -------------------------------- ### Install Sagan Prerequisites (Generic) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Sagan/index.html Installs the Sagan::Monitoring Perl module using cpanm. ```bash cpanm Sagan::Monitoring ``` -------------------------------- ### Download Example Configuration Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Raspberry Pi GPIO Monitor/index.html Optionally, download the example configuration file for the GPIO monitor script. ```bash wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/rpigpiomonitor.ini -O /etc/snmp/rpigpiomonitor.ini ``` -------------------------------- ### Add New OS Script Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Support-New-OS/index.html Use this script to automate the initial setup for a new OS. It prompts for device ID, OS name, type, and vendor. Note: This script is pre-beta and may have issues. ```bash ./scripts/new-os.php -h 101 -o test-os -t network -v cisco ``` -------------------------------- ### Install Python urllib3 Package Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Apache/index.html Install the 'python3-urllib3' package, which is a dependency for the apache-stats.py script. This example is for Debian-based systems. ```bash apt-get install python3-urllib3 ``` -------------------------------- ### Example varnish.params Configuration Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Varnish/index.html A comprehensive example of the varnish.params file, illustrating various configuration options including VCL location, listening addresses and ports, admin interface settings, storage configuration, default TTL, user/group, and other daemon options. ```bash # Set this to 1 to make systemd reload try to switch vcl without restart. RELOAD_VCL=1 # Main configuration file. You probably want to change it. VARNISH_VCL_CONF=/etc/varnish/librenms.vcl # Default address and port to bind to. Blank address means all IPv4 # and IPv6 interfaces, otherwise specify a host name, an IPv4 dotted # quad, or an IPv6 address in brackets. VARNISH_LISTEN_ADDRESS=192.168.1.10 VARNISH_LISTEN_PORT=80 # Admin interface listen address and port VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 VARNISH_ADMIN_LISTEN_PORT=6082 # Shared secret file for admin interface VARNISH_SECRET_FILE=/etc/varnish/secret # Backend storage specification, see Storage Types in the varnishd(5) # man page for details. VARNISH_STORAGE="malloc,512M" # Default TTL used when the backend does not specify one VARNISH_TTL=120 # User and group for the varnishd worker processes VARNISH_USER=varnish VARNISH_GROUP=varnish # Other options, see the man page varnishd(1) DAEMON_OPTS="-p thread_pool_min=5 -p thread_pool_max=500 -p thread_pool_timeout=300" ``` -------------------------------- ### SNMP Trap Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Alerting/Transports/Snmptrap/index.html Example configuration values for sending SNMP traps. Ensure these match your trap receiver's setup. ```text Destination Host: noc.example.com Destination Port: 162 Transport: UDP Community: monitoring Trap OID: LIBRENMS-NOTIFICATIONS-MIB::defaultAlertEvent PDU Type: TRAPv2 MIB Directory: /opt/librenms/mibs/librenms ``` -------------------------------- ### PlaySMS Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Alerting/Transports/Play-SMS/index.html This example shows the configuration parameters required for PlaySMS. Ensure your User, Token, From name, and Mobile numbers are correctly set. ```text Config Example PlaySMS https://localhost/index.php User user1 Token MYFANCYACCESSTOKEN From My Name Mobiles +1234567892,+1234567890,+1234567891 ``` -------------------------------- ### Send Alert Title via GET Request Source: https://github.com/librenms/docs.librenms.org/blob/main/Alerting/Transports/Api/index.html Example of sending an alert title to an SMS API using an HTTP GET request. Ensure the API endpoint supports GET and consider URL length limitations. ```text API Method GET API URL [http://my.example.com/sms-api](http://my.example.com/sms-api) API Options rcpt=0123456789 key=0987654321abcdef msg=(LNMS) {{ $title }} API Username myUsername API Password myPassword ``` -------------------------------- ### Get Device Transceivers Source: https://github.com/librenms/docs.librenms.org/blob/main/API/Devices/index.html Retrieves information about the optical transceivers installed in a device. ```APIDOC ## GET /api/v0/devices/{device_id}/transceivers ### Description Fetches details about the optical transceivers connected to a device. ### Method GET ### Endpoint /api/v0/devices/{device_id}/transceivers ### Parameters #### Path Parameters - **device_id** (integer) - Required - The unique identifier of the device. ``` -------------------------------- ### Install Prerequisites (FreeBSD) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/OS Level Virtualization Monitoring/index.html Installs the OSLV::Monitor package on FreeBSD systems using pkg. ```bash pkg install p5-OSLV-Monitor ``` -------------------------------- ### Galera Saved State Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Galera-Cluster/index.html An example output from `grastate.dat` showing the saved state of a Galera node. The `safe_to_bootstrap` flag indicates if the node can be used to start the cluster. ```text # GALERA saved state version: 2.1 uuid: e71582f3-cf14-11eb-bcf6-a23029e16405 seqno: -1 safe_to_bootstrap: 1 ``` -------------------------------- ### Serve LibreNMS Documentation Locally Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Creating-Documentation/index.html Use the mkdocs serve command to build and host the documentation on a local webserver. The server automatically rebuilds when changes are detected. Access the documentation at http://127.0.0.1:8000. ```bash $ mkdocs serve INFO - Building documentation... <..> INFO - Documentation built in 12.54 seconds <..> INFO - Serving on http://127.0.0.1:8000 <..> INFO - Start watching changes ``` -------------------------------- ### Start Development Webserver Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Getting-Started/index.html This command starts a local development webserver for LibreNMS. Access the UI at http://localhost:8000. ```bash ./lnms serve ``` -------------------------------- ### Install LibreNMS Agent for Munin Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Munin/index.html Installs the Munin script to the agent's local directory and makes it executable. Ensure the script is placed in the correct location for your agent setup. ```bash wget https://raw.githubusercontent.com/librenms/librenms-agent/master/agent-local/munin -O /usr/lib/check_mk_agent/local/munin ``` ```bash chmod +x /usr/lib/check_mk_agent/local/munin ``` -------------------------------- ### List Devices by MAC Address Source: https://github.com/librenms/docs.librenms.org/blob/main/API/Devices/index.html This example shows how to query the API for devices matching a specific MAC address. Replace YOURAPITOKENHERE and foo.example with your credentials and LibreNMS instance URL. ```bash curl -H 'X-Auth-Token: YOURAPITOKENHERE' https://foo.example/api/v0/devices?type=mac&query=00000c9ff013 ``` -------------------------------- ### Install Agent and Copy Script Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Unbound/index.html Install the LibreNMS agent on the device and copy the unbound.sh script to the agent's local check directory. This is an alternative setup step if auto-discovery fails. ```bash install the agent](../../Agent-Setup/) on this device if it isn't already and copy the `unbound.sh` script to `/usr/lib/check_mk_agent/local/` ``` -------------------------------- ### Telegram Bot API getUpdates Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Alerting/Transports/Telegram/index.html This JSON output is an example of what you might see when using the Telegram Bot API to get updates. It shows a message sent to a bot, from which you can extract the chat ID. ```json {"ok":true,"result":[{"update_id":123456789, "message":{"message_id":7,"from":{"id":656556,"first_name":"Joo","last_name":"Doo","username":"JohnDoo"},"chat":{"id":-9787468,"title":"Telegram Group"},"date":1435216924,"text":"Hi"}}]} ``` -------------------------------- ### Manual Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/HTTP Access Log Combined/index.html Example of a manual configuration specifying access and error log paths. ```json { "auto": 0, "access":{ "foo":"/var/log/www/foo.log", "bar:80":"/var/log/www/bar:80.log" "bar:443":"/var/log/www/bar:443.log" }, "error":{ "foo":"/var/log/www/foo-error.log" } } ``` -------------------------------- ### Set Location into Maintenance Mode with Start Time (curl) Source: https://github.com/librenms/docs.librenms.org/blob/main/API/Locations/index.html Use this example to schedule a maintenance period for a specific location with a defined start time. Ensure you replace 'YOURAPITOKENHERE' with your actual API token. ```bash curl -H 'X-Auth-Token: YOURAPITOKENHERE' \ -X POST https://librenms.org/api/v0/locations/Mcewen/maintenance/ \ --data-raw ' { "title":"Location Mcewen Maintenance", "notes":"A 2 hour Maintenance triggered via API with start time", "start":"2022-08-01 08:00:00", "duration":"2:00" } ' ``` -------------------------------- ### Device Discovery Output Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/os/Health-Information/index.html Example output from running LibreNMS device discovery for sensors, showing module loading, runtime, SNMP, and MySQL statistics. ```text [librenms@nms-test ~]$ lnms device:discover 2 -m sensors LibreNMS Discovery 164.113.194.250 2 adva_fsp150 #### Load disco module core #### >> Runtime for discovery module 'core': 0.0240 seconds with 66536 bytes >> SNMP: [2/0.06s] MySQL: [3/0.00s] RRD: [0/0.00s] #### Unload disco module core #### #### Load disco module sensors #### Pre-cache adva_fsp150: ENTITY-SENSOR: Caching OIDs: entPhysicalDescr entPhysicalName entPhySensorType entPhySensorScale entPhySensorPrecision entPhySensorValue entPhySensorOperStatus Airflow: Current: . Charge: Dbm: Adva FSP-150 dBm.. Fanspeed: Frequency: Humidity: Load: Power: Power_consumed: Power_factor: Runtime: Signal: State: Count: Temperature: .. Tv_signal: Bitrate: Voltage: . Snr: Pressure: Cooling: Delay: Quality_factor: Chromatic_dispersion: Ber: Eer: Waterflow: Percent: Signal_loss: >> Runtime for discovery module 'sensors': 3.9340 seconds with 190024 bytes >> SNMP: [16/3.89s] MySQL: [36/0.03s] RRD: [0/0.00s] #### Unload disco module sensors #### Discovered in 5.521 seconds SNMP [18/3.96s]: Get[8/0.81s] Getnext[0/0.00s] Walk[10/3.15s] MySQL [41/0.03s]: Cell[10/0.01s] Row[-4/-0.00s] Rows[31/0.02s] Column[0/0.00s] Update[2/0.00s] Insert[2/0.00s] Delete[0/0.00s] RRD [0/0.00s]: Update[0/0.00s] Create [0/0.00s] Other[0/0.00s] ``` -------------------------------- ### Set Device into Maintenance Mode with Start Time Source: https://github.com/librenms/docs.librenms.org/blob/main/API/Devices/index.html This example demonstrates how to schedule a device to enter maintenance mode at a specific future time. It includes a title, notes, the start time, and the duration. Remember to replace placeholders with your actual token and instance URL. ```bash curl -H 'X-Auth-Token: YOURAPITOKENHERE' \ -X POST https://foo.example/api/v0/devices/localhost/maintenance/ \ --data-raw ' { "title":"Device Maintenance", "notes":"A 2 hour Maintenance triggered via API with start time", "start":"2022-08-01 08:00:00", "duration":"2:00" } ' ``` -------------------------------- ### Map Oxidized Group by Notes Regex Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Set a group for Oxidized based on a regex match of the device's notes. This example assigns devices with notes starting with 'lon-sw' to the 'london-network' group. ```bash lnms config:set oxidized.maps.group.notes.+ '{"regex": "/^lon-sw/", "value": "london-network"}' ``` -------------------------------- ### Complete SSO Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Authentication/index.html A comprehensive example of SSO configuration for a Shibboleth relying party, including user creation/update settings, attribute mapping for real name and email, group strategy, and logout handler. ```bash lnms config:set auth_mechanism sso lnms config:set sso.auth_logout_handler '/Shibboleth.sso/Logout' lnms config:set sso.mode env lnms config:set sso.create_users true lnms config:set sso.update_users true lnms config:set sso.realname_attr displayName lnms config:set sso.email_attr mail lnms config:set sso.group_strategy map lnms config:set sso.group_attr member lnms config:set sso.group_filter '/(librenms-.*)/i' lnms config:set sso.group_delimiter ';' lnms config:set sso.group_level_map '{"librenms-admins": 10, "librenms-readers": 1, "librenms-billingcontacts": 5}' ``` -------------------------------- ### Install Prerequisites (Generic) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/OS Level Virtualization Monitoring/index.html Installs necessary Perl modules and the OSLV::Monitor package using cpanm. ```bash cpanm JSON Clone Mime::Base64 File::Slurp IO::Interface cpanm OSLV::Monitor ``` -------------------------------- ### Map Oxidized Group by Purpose Regex Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Set a group for Oxidized based on a regex match of the device's purpose. This example assigns devices with purposes starting with 'lon-sw' to the 'london-network' group. ```bash lnms config:set oxidized.maps.group.purpose.+ '{"regex": "/^lon-sw/", "value": "london-network"}' ``` -------------------------------- ### Map Oxidized Group by SysName Regex Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Set a group for Oxidized based on a regex match of the device's sysName. This example assigns devices with sysNames starting with 'lon-sw' to the 'london-switches' group. ```bash lnms config:set oxidized.maps.group.sysName.+ '{"regex": "/^lon-sw/", "value": "london-switches"}' ``` -------------------------------- ### SMART script configuration example Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/SMART/index.html Example configuration for the SMART script, specifying cache path, smartctl location, serial number usage, and disk devices with arguments. ```ini #This is a comment cache=/var/cache/smart smartctl=/usr/bin/env smartctl useSN=1 ada0 ada1 da5 /dev/da5 -d sat twl0,0 /dev/twl0 -d 3ware,0 twl0,1 /dev/twl0 -d 3ware,1 twl0,2 /dev/twl0 -d 3ware,2 ``` -------------------------------- ### Map Oxidized Group by Hostname Regex Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Set a group for Oxidized based on a regex match of the device's hostname. This example assigns devices with hostnames starting with 'lon-sw' to the 'london-switches' group. ```bash lnms config:set oxidized.maps.group.hostname.+ '{"regex": "/^lon-sw/", "value": "london-switches"}' ``` -------------------------------- ### Download and Install Script Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/HTTP Access Log Combined/index.html Download the script to the desired host and make it executable. ```bash wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/http_access_log_combined -O /etc/snmp/http_access_log_combined ``` ```bash chmod +x /etc/snmp/http_access_log_combined ``` -------------------------------- ### Add SSH Proxy Host in Oxidized Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Configure an SSH proxy host for Oxidized based on a regex match of the device's sysName. This example sets a custom SSH gateway for hostnames starting with 'my.node'. ```bash lnms config:set oxidized.maps.ssh_proxy.sysName.+ '{"regex": "/^my.node/", "value": "my-ssh-gateway.node"}' ``` -------------------------------- ### Install Prerequisites (FreeBSD) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/ISC DHCP Stats/index.html Installs necessary Perl modules and the Net::ISC::DHCPd::Leases package on FreeBSD systems. ```bash pkg install p5-JSON p5-MIME-Base64 p5-App-cpanminus p5-File-Slurp cpanm Net::ISC::DHCPd::Leases ``` -------------------------------- ### Override Oxidized Polling IP by Hostname Regex Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Oxidized/index.html Override the IP address Oxidized uses to poll a device based on a regex match of its hostname. This example sets a specific IP for hostnames starting with 'my.node'. ```bash lnms config:set oxidized.maps.ip.sysName.+ '{"regex": "/^my.node/", "value": "192.168.1.10"}' ``` -------------------------------- ### Enable and Start Apache and PHP-FPM Source: https://github.com/librenms/docs.librenms.org/blob/main/Installation/Install-LibreNMS/index.html Commands to enable and start the Apache web server and PHP-FPM services. ```bash systemctl enable --now httpd systemctl enable --now php-fpm ``` -------------------------------- ### Set Location into Maintenance Mode without Start Time (curl) Source: https://github.com/librenms/docs.librenms.org/blob/main/API/Locations/index.html This example demonstrates how to immediately place a location into maintenance mode using its ID and a specified duration. The 'behavior' parameter can be used to control alert handling during maintenance. ```bash curl -H 'X-Auth-Token: YOURAPITOKENHERE' \ -X POST https://librenms.org/api/v0/locations/37101/maintenance/ \ --data-raw ' { "title":"Location Mcewen Maintenance", "notes":"A 2 hour Maintenance triggered via API with no start time", "duration":"2:00", "behavior": 3 } ' ``` -------------------------------- ### Logsize Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Applications/Logsize/index.html Example configuration for the logsize script, defining different sets of logs to monitor. ```ini # monitor log sizes of logs directly under /var/log [sets.var_log] dir="/var/log/" # monitor remote logs from network devices [sets.remote_network] dir="/var/log/remote/network/" # monitor remote logs from windows sources [sets.remote_windows] dir="/var/log/remote/windows/" # monitor suricata flows logs sizes [sets.suricata_flows] dir="/var/log/suricata/flows/current" ``` -------------------------------- ### Install Composer Dependencies Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Validating-Code/index.html After composer is installed, run this command to install the required dependencies. ```bash ./composer.phar install ``` -------------------------------- ### Create and Activate Virtual Environment Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Creating-Documentation/index.html Before installing packages, create a virtual environment to manage dependencies. Activate it using the provided command. ```bash python -m venv .python_venvs/docs source .python_venvs/docs/bin/activate ``` -------------------------------- ### Install Rancid on Ubuntu Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/Rancid/index.html Install Rancid and Subversion on Ubuntu 16.04. This command installs the necessary packages. ```bash sudo apt-get install rancid subversion ``` -------------------------------- ### Signal CLI Configuration Example Source: https://github.com/librenms/docs.librenms.org/blob/main/Alerting/Transports/Signal-CLI/index.html This example shows the basic configuration parameters for using Signal CLI as an alert transport. Ensure the path to the signal-cli executable is correct. ```text Path: /opt/signal-cli/bin/signal-cli Recipient type: Group Recipient: dfgjsdkgljior4345== ``` -------------------------------- ### Install mkdocs and Dependencies Source: https://github.com/librenms/docs.librenms.org/blob/main/Developing/Creating-Documentation/index.html Install all necessary Python packages for building LibreNMS documentation. Ensure your virtual environment is active. If permission issues arise, consider using the user option with pip. ```bash pip install \ markdown-exec \ markdown-include \ mkdocs \ mkdocs-awesome-pages-plugin \ mkdocs-exclude \ mkdocs-git-revision-date-localized-plugin \ mkdocs-include-dir-to-nav \ mkdocs-macros-plugin \ mkdocs-material \ mkdocs-minify-plugin \ mkdocs-redirects \ pymdown-extensions ``` -------------------------------- ### Install RPMforge Release Package Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/RRDCached/index.html Installs the RPMforge release package to enable the Repoforge repository for installing rrdtool. ```bash rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm ``` -------------------------------- ### Enable and Start rrdcached Service (CentOS 6) Source: https://github.com/librenms/docs.librenms.org/blob/main/Extensions/RRDCached/index.html Configures the rrdcached service to start on boot and then starts the service. ```bash chkconfig rrdcached on service rrdcached start ```