ytti / oxidized

Oxidized is a network device configuration backup tool. It's a RANCID replacement!
Apache License 2.0
2.8k stars 925 forks source link

Versions not showing up and need to add other devices #1953

Closed usaiat closed 5 years ago

usaiat commented 5 years ago

Been running LibreNMS for a while now monitoring my network device ranging from Cisco (ios and nxos), Procurve/Aruba, Vyos, Ubiquiti Edge Router, pfSense and other devices. Just recently found out about oxidized and follow the instruction here to install on a different server with its own router.db file with some cisco, procurve and vyos device manually added to the router.db file, then I integrate it to LibreNMS.

Its working for the Procurve devices, and not the other devices. Status on Oxidized says “no connection” and they all showing Procurve as the model. Also notice that the version doesnt show the difference in configuration after I test out some changes in the configuration of my procurve switches

I use RADIUS for authentication and a common service account for this. This is my oxdized configuration and any help will be really appreciated


username: username password: password model: procurve resolve_dns: true interval: 600 use_syslog: false debug: false threads: 30 timeout: 20 retries: 3 prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/ rest: 0.0.0.0:8888 next_adds_job: false vars: {} groups: {} models: {} pid: "/home/oxidized/.config/oxidized/pid" crash: directory: "/home/oxidized/.config/oxidized/crashes" hostnames: false stats: history_size: 10 input: default: ssh, telnet debug: false ssh: secure: false ftp: passive: true utf8_encoded: true output: default: file file: directory: /home/oxidized/deviceconfig source: default: csv csv: file: /home/oxidized/.config/oxidized/router.db delimiter: !ruby/regexp /:/ map: name: 0 model: 1 username: 2 password: 3 vars_map: enable: 4 model_map: juniper: junos cisco: ios

shepherdjay commented 5 years ago

So in your config file you set the default model as procurve in your router.db file did you include the model of ios for those devices that are ios?

usaiat commented 5 years ago

Thanks @shepherdjay. My router.db file only contain host-names or ip address of the device. So what will be the format I have to use for a device in my router.db file ? Do I have to do that for all the other types of device I have ? i.e Cisco (ios and nxos), Procurve/Aruba, Vyos, Ubiquiti Edge Router, pfSense

shepherdjay commented 5 years ago

So the format of your router.db file is this section

map:
    name: 0
    model: 1
    username: 2
    password: 3
vars_map:
    enable: 4

It is a field to index map of how your router.db looks so in this case it is expecting:

name:model:username:password:enable

Since you only contain hostnames it fills in the missing data with what you set globally. In this case you set the model to globally be inferred as procurve

Do I have to do that for all the other types of device I have ? i.e Cisco (ios and nxos), Procurve/Aruba, Vyos, Ubiquiti Edge Router, pfSense

Yes. Though to be honest if you are already using Librenms you can let it do all the hard work. Librenms can provide an http source instead of having to use a router.db

This is an example of the setup I am using in production:

source:
  default: http
  http:
    url: http://librenmsfqdn/api/v0/oxidized
    map:
      name: hostname
      ip: ip
      model: os
      group: group
    headers:
      X-Auth-Token: 'librenmsxauthtoken'
model_map:
  ios: ios
  iosxe: ios
  iosxr: iosxr
  nxos: nxos
  juniper: junos
  asa: asa
  paloalto: panos
  panos: panos
  arubaos: aosw

For more information https://docs.librenms.org/Extensions/Oxidized/#feeding-oxidized

usaiat commented 5 years ago

Much appreciated @shepherdjay I tried it out and lost my connection to my Oxidized page. This is my new setup:


username: username password: password model: procurve resolve_dns: true interval: 600 use_syslog: false debug: false threads: 30 timeout: 20 retries: 3 prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/ rest: 0.0.0.0:8888 next_adds_job: false vars: {} groups: {} models: {} pid: "/home/oxidized/.config/oxidized/pid" crash: directory: "/home/oxidized/.config/oxidized/crashes" hostnames: false stats: history_size: 10 input: default: ssh, telnet debug: false ssh: secure: false ftp: passive: true utf8_encoded: true output: default: file file: directory: /home/oxidized/deviceconfig

source: default: http http: url: http://192.168.0.11/api/v0/oxidized map: name: hostname ip: ip model: os group: group headers: X-Auth-Token: '1805b5f18736280992dcbdfdfabb7ece' model_map: ios: ios iosxe: ios iosxr: iosxr nxos: nxos juniper: junos asa: asa paloalto: panos panos: panos

usaiat commented 5 years ago

Never mind. Switch back to my initial configuration and manipulate the router.db files adding in the OS of each device and now its working(connected to all the listed device) showing up the right OS and I can see the configuration. Also reflected in LibreNMS on the Config tab of each listed device

However my versioning doesn't seem to be working. Made some changes in the configuration of one of the listed device to test but nothing show up. Anything I need to add to my setup ? I've got versioning enabled on LibreNMS

shepherdjay commented 5 years ago

Your output needs to be GIT for Versioning.

usaiat commented 5 years ago

Wohoo :) Thanks @shepherdjay Versioning works now. Much appreciated. Next step is to setup alerts for changes and who made the changes. Any tips on that will be highly appreciated

shepherdjay commented 5 years ago

Any tips on that will be highly appreciated

I highly recommend starting with the Oxidized + Librenms integration documentation that Librenms puts out. It goes through a lot of what you are trying to do. Different config settings you need on both sides, etc.

https://docs.librenms.org/Extensions/Oxidized/

Read and fully understand that. Then google which has some decent integration guides.

If your all set though please go ahead and close this issue. Have a good one.

usaiat commented 5 years ago

Thanks @shepherdjay