Re: performance degrades over time on CentOS 7

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 11/16/2016 um 7:24 PM schrieb Gordon Messmer:

On 11/16/2016 09:21 AM, Rich Megginson wrote:
I suggest you file a ticket at https://fedorahosted.org/389/newticket and attach this and the other information for tracking. This doesn't seem like an issue that will be easily resolved . . .


OK. Is there any other data I can gather right now? The problem takes a few months to manifest, but once it does it gets pretty bad. That gives us narrow, rare windows to get useful data.

I would monitor the system(s) OS behavior with (example) collectd at least cpu, memory, load, iowait. Additional any either query/behavior specific monitoring can be implemented using collectd plugins like perl/python and additional the generic available stats like provided through cn=snmp,cn=monitor

regards
mIke

example collectd plugin /usr/share/collectd/python-plugins/389_monitorstats.py

import collectd
import ldap

instances    = {}
config       = None
monitorattrs = ['anonymousbinds', 'unauthbinds', 'simpleauthbinds',
'strongauthbinds', 'bindsecurityerrors', 'inops', 'readops', 'compareops', 'addentryops', 'removeentryops', 'modifyentryops', 'modifyrdnops', 'listops', 'searchops', 'onelevelsearchops', 'wholesubtreesearchops', 'referrals', 'chainings', 'securityerrors',
                'errors', 'connections', 'connectionseq', 'bytesrecv',
'bytessent', 'entriesreturned', 'referralsreturned', 'masterentries',
                'copyentries', 'cacheentries', 'cachehits', 'slavehits']

class LDAPStats(object):
    def __init__(self, hostname=None, port=389, binddn=None, bindpw=None):
        self.hostname   = hostname
        self.binddn     = binddn
        self.bindpw     = bindpw
        self.port       = int(port)
        if self.hostname != None:
            self.__get_stats__()
    def __get_stats__(self):
        self.srv        = ldap.open(self.hostname, self.port)
        if self.binddn != None:
            self.srv.simple_bind_s(self.binddn, self.bindpw)
dn, attrs = self.srv.search_s('cn=snmp,cn=monitor', ldap.SCOPE_BASE, attrlist=monitorattrs)[0]
        for a in monitorattrs:
            if int(attrs[a][0]) < 0:
                attrs[a][0] = int(attrs[a][0]) * -1
            setattr(self, a, int(attrs[a][0]))
        del self.srv
    def get_stats(self, hr=False):
        stats = []
        for a in monitorattrs:
            stats.append(int(getattr(self, a)))
        if hr == False:
            return stats
        else:
            return zip(monitorattrs, stats)

def configer(config):
    global instances
    collectd.debug('Configuring Stuff')
    # children', 'key', 'parent', 'values'
    for c in config.children:
        if c.key == 'server':
            for srv in c.children:
                if srv.key == 'hostname':
                    hostname = '.'.join(srv.values)
                elif srv.key == 'port':
                    port     = int(srv.values[0])
            instances[hostname] = port

def initer():
    collectd.debug('initing stuff')

def reader(input_data=None):
    global instances
    for h in instances:
        srv = LDAPStats(hostname=h, port=instances[h])
metric = collectd.Values(host=h, type='389monitorstats', plugin='389monitorstats', type_instance=h)
        metric.values   = srv.get_stats()
        metric.dispatch()

collectd.register_config(configer)
collectd.register_init(initer)
collectd.register_read(reader)


the corresponding /usr/share/collectd/types.db entry looks as follows

389monitorstats anonymousbinds:COUNTER:0:U, unauthbinds:COUNTER:0:U, simpleauthbinds:COUNTER:0:U, strongauthbinds:COUNTER:0:U, bindsecurityerrors:COUNTER:0:U, inops:COUNTER:0:U, readops:COUNTER:0:U, compareops:COUNTER:0:U, addentryops:COUNTER:0:U, removeentryops:COUNTER:0:U, modifyentryops:COUNTER:0:U, modifyrdnops:COUNTER:0:U, listops:COUNTER:0:U, searchops:COUNTER:0:U, onelevelsearchops:COUNTER:0:U, wholesubtrsearchops:COUNTER:0:U, referrals:COUNTER:0:U, chainings:COUNTER:0:U, securityerrors:COUNTER:0:U, errors:COUNTER:0:U, connections:DERIVE:U:U, connectionseq:COUNTER:0:U, bytesrecv:COUNTER:0:U, bytessent:COUNTER:0:U, entriesreturned:COUNTER:0:U, referralsreturned:COUNTER:0:U, masterentries:COUNTER:0:U, copyentries:COUNTER:0:U, cacheentries:COUNTER:0:U, cachehits:COUNTER:0:U, slavehits:COUNTER:0:U


and collectd configuration  /etc/collectd.d/python.conf

LoadPlugin python
<Plugin python>

    ModulePath "/usr/share/collectd/python-plugins"
    LogTraces true
    Interactive false
    Import "389_monitorstats"
    <Module 389_monitorstats>
        <server>
            hostname    localhost
            port        389
        </server>
    </Module>
</Plugin>

_______________________________________________
389-users mailing list -- 389-users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to 389-users-leave@xxxxxxxxxxxxxxxxxxxxxxx

Attachment: ldap_monitor.png
Description: PNG image

_______________________________________________
389-users mailing list -- 389-users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to 389-users-leave@xxxxxxxxxxxxxxxxxxxxxxx

[Index of Archives]     [Fedora User Discussion]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [Fedora News]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Maintainers]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [Fedora Fonts]     [ATA RAID]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora QA]     [Fedora Triage]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Tux]     [Yosemite News]     [Yosemite Photos]     [Linux Apps]     [Maemo Users]     [Gnome Users]     [KDE Users]     [Fedora Tools]     [Fedora Art]     [Fedora Docs]     [Maemo Users]     [Asterisk PBX]     [Fedora Sparc]     [Fedora Universal Network Connector]     [Fedora ARM]

  Powered by Linux