Hide Forgot
Description of problem: After upgrade from Fedora 15 to Fedora 16 mrtg will not start. In /var/log/mrtg.log the following messages are found Starting mrtg: 2011-12-17 17:12:15 -- Started mrtg with config '/etc/mrtg/mrtg.cfg' 2011-12-17 17:12:16 -- Subroutine SNMP_Session::pack_sockaddr_in6 redefined at /usr/share/perl5/Exporter.pm line 67. 2011-12-17 17:12:16 -- Subroutine SNMPv1_Session::pack_sockaddr_in6 redefined at /usr/share/perl5/Exporter.pm line 67. Version-Release number of selected component (if applicable): [root@nazgul ~]# rpm -qf /usr/share/perl5/Exporter.pm perl-5.14.2-191.fc16.x86_64 [root@nazgul ~]# rpm -qa|grep -i mrtg-2 mrtg-2.17.2-5.fc16.x86_64 [root@nazgul ~]# rpm -qa| grep -i snmp net-snmp-5.7.1-2.fc16.x86_64 collectd-snmp-4.10.3-8.fc16.x86_64 net-snmp-agent-libs-5.7.1-2.fc16.x86_64 net-snmp-devel-5.7.1-2.fc16.x86_64 net-snmp-libs-5.7.1-2.fc16.x86_64 nagios-plugins-snmp-1.4.15-4.fc16.x86_64 net-snmp-utils-5.7.1-2.fc16.x86_64 perl-Net-SNMP-6.0.1-3.fc16.noarch nagios-plugins-snmp-disk-proc-1.2-9.fc16.x86_64 perl-SNMP_Session-1.12-8.fc16.noarch How reproducible: Alway when staring mrtg Steps to Reproduce: 1. Upgrade F15 - F16 using DVD 2. systemctl enable mrtg.service systemctl start mrtg.service [root@nazgul ~]# systemctl status mrtg.service mrtg.service - Multi-router Traffic Grapher Loaded: loaded (/lib/systemd/system/mrtg.service; enabled) Active: inactive (dead) since Sat, 17 Dec 2011 22:14:31 +0100; 32min ago Process: 15708 ExecStart=/usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/mrtg.service Actual results: mrtg failed to start Expected results: mrtg should start Additional info: Similar to https://bugzilla.redhat.com/show_bug.cgi?id=732587 but fingerprint a bit different
Kjell, redefinition of SNMP_Session::pack_sockaddr_in6 subroutine should be completely fixed in mrtg-2.17.2-5.fc16.x86_64. You can check the fix: # grep -n 'Socket6->import' /usr/lib/mrtg2/SNMP_Session.pm If you have fixed version, the output should be: 149: Socket6->import(qw(inet_pton getaddrinfo)); 604: Socket6->import(qw(inet_pton getaddrinfo)); But I think there's another issue. Please run mrtg manually: # env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok Does it fail? And the error message is: Undefined subroutine &main::AF_UNSPEC called at /usr/bin/mrtg line 2247.
I only have the 64c bit version of mrtg installed and libs are in /usr/lib64 [root@nazgul ~]# grep -n 'Socket6->import' /usr/lib64/mrtg2/SNMP_Session.pm 149: Socket6->import(qw(inet_pton getaddrinfo)); 604: Socket6->import(qw(inet_pton getaddrinfo)); Starting mrtg manually make it run successfully [root@nazgul ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok Daemonizing MRTG ... [root@nazgul ~]# ps -ef| grep mrtg|grep -v grep root 22211 1 0 00:18 ? 00:00:00 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok My problem must somehow be related to the start-up script, but I have an unmodified start-up script from the mrtg package containing the following: [root@nazgul ~]# cat /lib/systemd/system/mrtg.service # To customize, copy this file to /etc/systemd/system and edit there # # This unit facilitates starting of MRTG. There are 2 options of # how to run MRTG: # - as a daemon (preferred); in this case please put # RunAsDaemon: yes in mrtg.conf (or use --daemon switch) # - periodically - please see and enable mrtg.timer # Periodic settings need Type=oneshot set here # # Other recommended settings in mrtg.cfg for daemon mode: # NoDetach: yes # If you set this, change below Type=simple # # Please disable /etc/crond.d/mrtg job when using this unit! # # do not enable both mrtg-as-a-daemon and timer at the same time [Unit] Description=Multi-router Traffic Grapher After=syslog.target [Service] Environment=LANG=C ExecStart=/usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok # Type= settings cheatsheet: # - RunAsDaemon: yes; NoDetach: yes : #Type=simple # - RunAsDaemon: yes; NoDetach: no : #Type=forking # - RunAsDaemon: no; (periodic invocation) : #Type=oneshot Type=simple StandardOutput=syslog [Install] WantedBy=multi-user.target
(In reply to comment #2) > I only have the 64c bit version of mrtg installed and libs are in /usr/lib64 > > [root@nazgul ~]# grep -n 'Socket6->import' /usr/lib64/mrtg2/SNMP_Session.pm > 149: Socket6->import(qw(inet_pton getaddrinfo)); > 604: Socket6->import(qw(inet_pton getaddrinfo)); > > Starting mrtg manually make it run successfully > [root@nazgul ~]# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file > /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok > Daemonizing MRTG ... > > > [root@nazgul ~]# ps -ef| grep mrtg|grep -v grep > root 22211 1 0 00:18 ? 00:00:00 /usr/bin/perl -w /usr/bin/mrtg > /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file > /var/lib/mrtg/mrtg.ok > > > My problem must somehow be related to the start-up script, but I have an > unmodified start-up script from the mrtg package containing the following: > [root@nazgul ~]# cat /lib/systemd/system/mrtg.service > # To customize, copy this file to /etc/systemd/system and edit there > # > # This unit facilitates starting of MRTG. There are 2 options of > # how to run MRTG: > # - as a daemon (preferred); in this case please put > # RunAsDaemon: yes in mrtg.conf (or use --daemon switch) > # - periodically - please see and enable mrtg.timer > # Periodic settings need Type=oneshot set here > # > # Other recommended settings in mrtg.cfg for daemon mode: > # NoDetach: yes > # If you set this, change below Type=simple > # > # Please disable /etc/crond.d/mrtg job when using this unit! > # > # do not enable both mrtg-as-a-daemon and timer at the same time > > [Unit] > Description=Multi-router Traffic Grapher > After=syslog.target > > [Service] > Environment=LANG=C > ExecStart=/usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l > --confcache-file /var/lib/mrtg/mrtg.ok > # Type= settings cheatsheet: > # - RunAsDaemon: yes; NoDetach: yes : > #Type=simple > # - RunAsDaemon: yes; NoDetach: no : > #Type=forking > # - RunAsDaemon: no; (periodic invocation) : > #Type=oneshot > Type=simple > StandardOutput=syslog > > [Install] > WantedBy=multi-user.target All above looks fine... One more thing - do you have RunAsDaemon: yes NoDetach: yes in your /etc/mrtg/mrtg.cfg file, as suggested in .service file? There will be mrtg-2.17.2-7.fc16 in the testing repository soon. It fixes different problems, but please try it.
I had RunAsDaemon: yes and adding NoDetach: yes to /etc/mrtg/mrtg.cfg solved the problem. This was with mrtg-2.17.2-6.fc16.x86_64 and not mrtg-2.17.2-5.fc16.x86_64 as the problem originally was reported with. I was also able to put back my old set-up in mrtg.service and mrtg is now running as: root@nazgul system]# systemctl status mrtg.service mrtg.service - Multi-router Traffic Grapher Loaded: loaded (/lib/systemd/system/mrtg.service; enabled) Active: active (running) since Mon, 09 Jan 2012 23:32:53 +0100; 9min ago Main PID: 12032 (mrtg) CGroup: name=systemd:/system/mrtg.service └ 12032 /usr/bin/perl -w /usr/bin/mrtg /etc/mrtg/mrtg.cfg --user=apache --group=apache --logging=/var/log/mrtg.log --pid-file=/var/lock/mrtg/mrtg.pid --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/... Thanks a lot for your suggestion.
Happy to help!