mirror of
https://github.com/TheNetworkGuy/netbox-zabbix-sync.git
synced 2025-12-13 03:49:37 -06:00
Merge pull request #143 from retigra/inherent-site-properties
Inherent site properties
This commit is contained in:
commit
d75b0c2728
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,5 +1,6 @@
|
|||||||
*.log
|
*.log
|
||||||
.venv
|
.venv
|
||||||
|
.env
|
||||||
config.py
|
config.py
|
||||||
Pipfile
|
Pipfile
|
||||||
Pipfile.lock
|
Pipfile.lock
|
||||||
|
|||||||
21
README.md
21
README.md
@ -289,6 +289,27 @@ hostgroup_format = "mycustomfieldname"
|
|||||||
NetBox-Zabbix-sync - ERROR - ESXI1 has no reliable hostgroup. This is most likely due to the use of custom fields that are empty.
|
NetBox-Zabbix-sync - ERROR - ESXI1 has no reliable hostgroup. This is most likely due to the use of custom fields that are empty.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Extended site properties
|
||||||
|
|
||||||
|
By default, NetBox will only return the following properties under the 'site' key for a device:
|
||||||
|
|
||||||
|
- site id
|
||||||
|
- (api) url
|
||||||
|
- display name
|
||||||
|
- name
|
||||||
|
- slug
|
||||||
|
- description
|
||||||
|
|
||||||
|
However, NetBox-Zabbix-Sync allows you to extend these site properties with the full site information
|
||||||
|
so you can use this data in inventory fields, tags and usermacros.
|
||||||
|
|
||||||
|
To enable this functionality, enable the following setting in your configuration file:
|
||||||
|
|
||||||
|
`extended_site_properties = True`
|
||||||
|
|
||||||
|
Keep in mind that enabling this option will increase the number of API calls to your NetBox instance,
|
||||||
|
this might impact performance on large syncs.
|
||||||
|
|
||||||
### Device status
|
### Device status
|
||||||
|
|
||||||
By setting a status on a NetBox device you determine how the host is added (or
|
By setting a status on a NetBox device you determine how the host is added (or
|
||||||
|
|||||||
@ -53,6 +53,12 @@ hostgroup_format = "site/manufacturer/role"
|
|||||||
traverse_regions = False
|
traverse_regions = False
|
||||||
traverse_site_groups = False
|
traverse_site_groups = False
|
||||||
|
|
||||||
|
## Extended site properteis
|
||||||
|
# By default, NetBox will only return basic site info for any device or VM.
|
||||||
|
# By setting `extended_site_properties` to True, the script will query NetBox for additiopnal site info.
|
||||||
|
# Be aware that this will increase the number of API queries to NetBox.
|
||||||
|
extended_site_properties = False
|
||||||
|
|
||||||
## Filtering
|
## Filtering
|
||||||
# Custom device filter, variable must be present but can be left empty with no filtering.
|
# Custom device filter, variable must be present but can be left empty with no filtering.
|
||||||
# A couple of examples:
|
# A couple of examples:
|
||||||
@ -96,6 +102,8 @@ device_inventory_map = { "asset_tag": "asset_tag",
|
|||||||
"device_type/model": "type",
|
"device_type/model": "type",
|
||||||
"device_type/manufacturer/name": "vendor",
|
"device_type/manufacturer/name": "vendor",
|
||||||
"oob_ip/address": "oob_ip" }
|
"oob_ip/address": "oob_ip" }
|
||||||
|
# Replace latitude and longitude with site/latitude and and site/longitude to use
|
||||||
|
# site geo data. Enable extended_site_properties for this to work!
|
||||||
|
|
||||||
# We also support inventory mapping on Virtual Machines.
|
# We also support inventory mapping on Virtual Machines.
|
||||||
vm_inventory_map = { "status/label": "deployment_status",
|
vm_inventory_map = { "status/label": "deployment_status",
|
||||||
@ -112,19 +120,19 @@ usermacro_sync = False
|
|||||||
# device usermacro_map to map NetBox fields to usermacros.
|
# device usermacro_map to map NetBox fields to usermacros.
|
||||||
device_usermacro_map = {"serial": "{$HW_SERIAL}",
|
device_usermacro_map = {"serial": "{$HW_SERIAL}",
|
||||||
"role/name": "{$DEV_ROLE}",
|
"role/name": "{$DEV_ROLE}",
|
||||||
"url": "{$NB_URL}",
|
"display_url": "{$NB_URL}",
|
||||||
"id": "{$NB_ID}"}
|
"id": "{$NB_ID}"}
|
||||||
|
|
||||||
# virtual machine usermacro_map to map NetBox fields to usermacros.
|
# virtual machine usermacro_map to map NetBox fields to usermacros.
|
||||||
vm_usermacro_map = {"memory": "{$TOTAL_MEMORY}",
|
vm_usermacro_map = {"memory": "{$TOTAL_MEMORY}",
|
||||||
"role/name": "{$DEV_ROLE}",
|
"role/name": "{$DEV_ROLE}",
|
||||||
"url": "{$NB_URL}",
|
"display_url": "{$NB_URL}",
|
||||||
"id": "{$NB_ID}"}
|
"id": "{$NB_ID}"}
|
||||||
|
|
||||||
# To sync host tags to Zabbix, set to True.
|
# To sync host tags to Zabbix, set to True.
|
||||||
tag_sync = False
|
tag_sync = False
|
||||||
|
|
||||||
# Setting tag_lower to True will lower capital letters ain tag names and values
|
# Setting tag_lower to True will lower capital letters in tag names and values
|
||||||
# This is more inline with the Zabbix way of working with tags.
|
# This is more inline with the Zabbix way of working with tags.
|
||||||
#
|
#
|
||||||
# You can however set this to False to ensure capital letters are synced to Zabbix tags.
|
# You can however set this to False to ensure capital letters are synced to Zabbix tags.
|
||||||
@ -132,8 +140,6 @@ tag_lower = True
|
|||||||
|
|
||||||
# We can sync NetBox device/VM tags to Zabbix, but as NetBox tags don't follow the key/value
|
# We can sync NetBox device/VM tags to Zabbix, but as NetBox tags don't follow the key/value
|
||||||
# pattern, we need to specify a tag name to register the NetBox tags in Zabbix.
|
# pattern, we need to specify a tag name to register the NetBox tags in Zabbix.
|
||||||
#
|
|
||||||
#
|
|
||||||
#
|
#
|
||||||
# If tag_name is set to False, we won't sync NetBox device/VM tags to Zabbix.
|
# If tag_name is set to False, we won't sync NetBox device/VM tags to Zabbix.
|
||||||
tag_name = 'NetBox'
|
tag_name = 'NetBox'
|
||||||
|
|||||||
@ -31,6 +31,7 @@ DEFAULT_CONFIG = {
|
|||||||
"nb_vm_filter": {"name__n": "null"},
|
"nb_vm_filter": {"name__n": "null"},
|
||||||
"inventory_mode": "disabled",
|
"inventory_mode": "disabled",
|
||||||
"inventory_sync": False,
|
"inventory_sync": False,
|
||||||
|
"extended_site_properties": False,
|
||||||
"device_inventory_map": {
|
"device_inventory_map": {
|
||||||
"asset_tag": "asset_tag",
|
"asset_tag": "asset_tag",
|
||||||
"virtual_chassis/name": "chassis",
|
"virtual_chassis/name": "chassis",
|
||||||
|
|||||||
@ -166,6 +166,9 @@ def main(arguments):
|
|||||||
# Check if a valid hostgroup has been found for this VM.
|
# Check if a valid hostgroup has been found for this VM.
|
||||||
if not vm.hostgroups:
|
if not vm.hostgroups:
|
||||||
continue
|
continue
|
||||||
|
if config["extended_site_properties"] and nb_vm.site:
|
||||||
|
logger.debug("VM %s: extending site information.", vm.name)
|
||||||
|
vm.site=(convert_recordset(netbox.dcim.sites.filter(id=nb_vm.site.id)))
|
||||||
vm.set_inventory(nb_vm)
|
vm.set_inventory(nb_vm)
|
||||||
vm.set_usermacros()
|
vm.set_usermacros()
|
||||||
vm.set_tags()
|
vm.set_tags()
|
||||||
@ -238,6 +241,9 @@ def main(arguments):
|
|||||||
device.name,
|
device.name,
|
||||||
)
|
)
|
||||||
continue
|
continue
|
||||||
|
if config["extended_site_properties"] and nb_device.site:
|
||||||
|
logger.debug("Device %s: extending site information.", device.name)
|
||||||
|
device.site=(convert_recordset(netbox.dcim.sites.filter(id=nb_device.site.id)))
|
||||||
device.set_inventory(nb_device)
|
device.set_inventory(nb_device)
|
||||||
device.set_usermacros()
|
device.set_usermacros()
|
||||||
device.set_tags()
|
device.set_tags()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user