During the conversion of pnp4nagios files to the rrd format, you may face this errors:
'NoneType' object has no attribute 'text'
OMD[mysite]:~$ cmk -v --convert-rrds --delete-rrds RRD8040 RRD8040: HOST: RRD8040 ERROR: 'NoneType' object has no attribute 'text'
How to debug
Let's modify the command to receive more debug output:
It looks like we have some xml files without "NAGIOS_AUTH_HOSTNAME"
To find the corrupted files, you can grep for "NAGIOS_AUTH_HOSTNAME" , save the result to a list and compare this list with all xml files
If I check each of these files, the files are looking really different. So either the files are corrupt, or they are not in the right format:
Probably, the filesystem ran full during the conversion. The only solution is to delete these files and run the conversion again!
'ascii' codec can't decode characters
OMD[mysite]:~$ cmk --convert-rrds localhost Traceback (most recent call last): File "/omd/sites/rrd/bin/cmk", line 94, in <module> exit_status = modes.call(mode_name, mode_args, opts, args) File "/omd/sites/rrd/lib/python/cmk_base/modes/__init__.py", line 72, in call return mode.handler_function(*handler_args) File "/omd/sites/rrd/lib/python/cmk_base/modes/cee.py", line 147, in mode_convert_rrds rrd.do_convert_rrds(*args) File "/omd/sites/rrd/lib/python/cmk_base/cee/rrd.py", line 413, in do_convert_rrds convert_rrds_of_host(hostname) File "/omd/sites/rrd/lib/python/cmk_base/cee/rrd.py", line 428, in convert_rrds_of_host console.error(" %sERROR: %s%s\n" % (tty.red + tty.bold, e, tty.normal)) UnicodeEncodeError: 'ascii' codec can't encode characters in position 70-75: ordinal not in range(128)
How to debug
Let's modify the command to receive more debug output:
And here we go: The issue are the "ü" characters in the service name. This only affects Checkmk 1.6. With Checkmk >2.0 we changed the behavior of non-ASCII Services names (Werk #13711)
Solutions:
- If it's related to a builtin Check → please open a ticket via the customer portal
- If it's a customization → You need to change the service description of the service, do a rediscovery and move the old pnp4nagios files to the new ones
- The easiest way is to con
'NoneType' object has no attribute 'replace'
OMD[cmk]:~$ cmk -v --convert-rrds RRD-a fr010-n001: ... ... ... STP Topology Changes (PNP)... HOST: RRD-a ERROR: 'NoneType' object has no attribute 'replace'
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 5, column 91
OMD[cmk]:~$ cmk --debug -vv --convert-rrds RRD-a RRD-a: Traceback (most recent call last): File "/omd/sites/cmk/bin/cmk", line 94, in <module> exit_status = modes.call(mode_name, mode_args, opts, args) File "/omd/sites/cmk/lib/python/cmk_base/modes/__init__.py", line 72, in call return mode.handler_function(*handler_args) File "/omd/sites/cmk/lib/python/cmk_base/modes/cee.py", line 147, in mode_convert_rrds rrd.do_convert_rrds(*args) File "/omd/sites/cmk/lib/python/cmk_base/cee/rrd.py", line 413, in do_convert_rrds convert_rrds_of_host(hostname) File "/omd/sites/cmk/lib/python/cmk_base/cee/rrd.py", line 420, in convert_rrds_of_host existing_rrds = find_host_rrd_services(hostname) File "/omd/sites/cmk/lib/python/cmk_base/cee/rrd.py", line 711, in find_host_rrd_services for service in find_pnp_rrds(hostname): File "/omd/sites/cmk/lib/python/cmk_base/cee/rrd.py", line 729, in find_pnp_rrds xmlinfo = parse_pnp_xml_file(host_dir + "/" + xml_file) File "/omd/sites/cmk/lib/python/cmk_base/cee/rrd.py", line 760, in parse_pnp_xml_file root = ET.parse(xml_path).getroot() File "/omd/sites/cmk/lib/python2.7/xml/etree/ElementTree.py", line 1182, in parse tree.parse(source, parser) File "/omd/sites/cmk/lib/python2.7/xml/etree/ElementTree.py", line 656, in parse parser.feed(data) File "/omd/sites/cmk/lib/python2.7/xml/etree/ElementTree.py", line 1659, in feed self._raiseerror(v) File "/omd/sites/cmk/lib/python2.7/xml/etree/ElementTree.py", line 1523, in _raiseerror raise err xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 5, column 91
How to debug
vi /omd/sites/cmk/lib/python/cmk_base/cee/rrd.py
xml.etree.ElementTree.ParseError: no element found: line 1, column 0
After a checkmk update or during the execution of cmk-update-config, you may see this error:
To get a more detailed log, please run cmk-update-config -vv --debug:
How to debug
In the first line of the cmk-update-config -vv --debug output there is already a hint to the corresponding host:
Loading autochecks from /omd/sites/mysite/var/check_mk/autochecks/MYHOST.mk
Please fetch that name and remove the .mk suffix. Now you have the Hostname. In my case it's MYHOST.
Now you can use xmllint to debug that:
OMD[mysite]:~$ xmllint -noout --format var/pnp4nagios/perfdata/MYHOST/*xml var/pnp4nagios/perfdata/MYHOST/Filesystem_E__.xml:1: parser error : Document is empty ^
It seems that there is one xml file with no correpsonding rrd file and this xml file is also empty. Please remove that file and run cmk-update-config -vv --debug again
xml.etree.ElementTree.ParseError: unclosed token: line 114, column 0
After a checkmk update or during the execution of cmk-update-config, you may see this error:
To get a more detailed log, please run cmk-update-config -vv --debug:
How to debug
In the first line of the cmk-update-config -vv --debug output there is already a hint to the corresponding host:
Loading autochecks from /omd/sites/mysite/var/check_mk/autochecks/MYHOST.mk
Please fetch that name and remove the .mk suffix. Now you have the Hostname. In my case it's MYHOST.
Now you can use xmllint to debug that:
OMD[mysite]:~$ xmllint -noout --format var/pnp4nagios/perfdata/MYHOST/*xml var/pnp4nagios/perfdata/MYHOST/Filesystem_F__.xml:114: parser error : expected '>' </N ^
It seems like the problem is in row 114 with a missing '>'. Lets check the xml file
OMD[mysite]:sed -n '2p; 114p' var/pnp4nagios/perfdata/MYHOST/Filesystem_F__.xml <NAGIOS> </N
And here we go. Row 114 seems to be uncomplete.
Please add "</NAGIOS>" and save the file.
The file should now look like this:
OMD[mysite]:~$ sed -n '2p; 114p' var/pnp4nagios/perfdata/MYHOST/Filesystem_F__.xml <NAGIOS> </NAGIOS>
If you now run cmk-update-config -vv --debug again, there should be no error