I am sponsoring this case for Amit Gupta. It introduces collectd into
OpenSolaris.  Timeout set to Nov.13.


Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
    1.1. Project/Component Working Name:
         Deliver collectd 4.8.x into OpenSolaris
    1.2. Name of Document Author/Supplier:
         Author:  Amit Gupta
    1.3  Date of This Document:
        06 November, 2009
4. Technical Description
Deliver collectd 4.8.x into OpenSolaris
6 November 2009

1.      Summary and motivation

        1.1. Introduction

        This project delivers collectd 4.8.x into OpenSolaris

        collectd is a daemon which collects system performance statistics 
        periodically and provides mechanisms to store the values in a variety
        of ways, for example in RRD files.     

        For more information about collectd see:

                http://collectd.org       


2.      Technical issues

        2.1. Key objects

        /usr/collectd4/lib/collectd
            From collectd's man page:
            collectd is a daemon that receives system statistics and makes
            them available in a number of ways. The main daemon itself
            doesn't have any real functionality apart from loading,
            querying and submitting to plugins.

        /etc/collectd4/collectd.conf
            The default collectd configuration file.

        Do note that this project won't deliver collectdmon. This
        wrapper will not be required since SMF will take care of
        starting and monitoring the collectd daemon.
         
        2.2. Versioning

        From collectd's FAQ:

        The version numbers in collectd consist of three numbers: 
        The major- and minor-number and the patchlevel.

        * Versions with different major-numbers are basically not compatible. 
          This means that the definitions of RRD-files or config-options have 
          been changed or, in general, that the user has to do something in 
          addition to install the new version. This is not nice and avoided 
          when possible, but sometimes necessary to prevent old mistakes to 
          become ancient mistakes.
        * Versions with differing minor-numbers are backwards compatible, 
          i. e. you can replace the lower version with the higher one and 
          everything should still work. This means that features are added, 
          but not removed or changed and that the default behavior does not 
          change.
        * Versions with different patchlevels are both, forward- and 
          backwards-compatible, because no new features have been introduced. 
          The only difference between the two versions is one or more bug 
          fixes, so you should generally install the higher version of 
          the two.


        2.3 Loadable Plugins

        collectd ships with a number of loadable plugins which are enabled
        through directives in the config file. Some of these plugins have
        library dependencies that must be satisfied through build time package
        options (supplied to the configure script). An example is mysql.so
        which has a dependency on the mysql client libraries.

        Support for loadable plugins and other features is enabled at
        build time through flags to the configure script. All the
        plugins that are delivered have sample configuration
        directives in collectd.conf.  Note that in many cases, these
        are just sample directives and will need to be modified based
        on site specific configuration. Detailed documentation about
        specific plugin configuration can be found in the collectd
        website.

        Not all the plugins are enabled by default in
        collectd.conf. The configuration directives for plugins which
        are not enabled are commented out in collectd.conf. The
        plugins which are enabled by default are: syslog, cpu,
        interface, load, memory and rrdtool

        Other plugins can be enabled in one of the following two ways:
        * By adding/uncommenting the plugin configuration directives
          in collectd.conf
        * By dropping a .conf file having the necessary plugin configuration
          directives into the /etc/collectd4/conf.d

        Similarly, plugins can be disabled as needed in the following two ways:
        * By removing/commenting out the plugin configuration directives from
          collectd.conf
        * By deleting the plugin specific .conf file from the
          /etc/collectd4/conf.d directory

        Do note that collectd.conf is read and processed in order,
        i. e. from top to bottom.  So the plugins are loaded in the
        order listed in collectd.conf.

        This project will deliver the following plugins:
        * Apache
        * CPU
        * CSV
        * cURL
        * DF
        * Disk   
        * Exec
        * FileCount    
        * GenericJMX
        * Interface
        * Java    
        * Load
        * LogFile
        * memcachec
        * memcached
        * Memory
        * MySQL       
        * Network      
        * Notify Desktop
        * NTPd
        * PostgreSQL
        * RRDtool    
        * SNMP
        * Swap
        * SysLog
        * Table
        * Tail
        * Tape
        * UnixSock
        * Uptime
        * Users
        * UUID    
        * Write HTTP
        * ZFS ARC

        2.4 Directory Naming and Structure

        The proposed directory layout for collectd is:

        /usr/collectd4
                         /lib
                         /man
                         /share

        /etc/collectd4
                         /conf.d

        /var/collectd4
                         /rrd
                         /logs
                         /run

        The detailed directory and file layout for collectd is provided in
        Appendix 1.        

        Multiple versions can coexist, and are distinguished by the naming
        scheme  (collectd4 for version 4.*.*, collectd5 for version 5.*.*).

        2.5 Configuration File

        This project will use the standard convention and deliver
        configuration files under /etc/collectd4

        The default configuration file provided with this integration
        will work out of the box.

        In addition, a directory conf.d will be created in /etc/collectd4/
        The default configuration loads any file with a .conf
        extension that is placed in this directory. Hence, plugins can
        optionally be configured by simply dropping a <plugin>.conf
        file into this directory without modifying the main
        configuration file. By default, conf.d will not contain any
        plugin configuration files.

        2.6 Log File

        The log File will be located in /var/collectd4/logs and will
        be named collectd.log. The default log level is info and can
        be changed by modifying the main configuration file.

        2.7 Build features        

        Build time package selection determines which collectd
        loadable plugins are available to the user at runtime. A
        complete list of collectd modules is available on the
        http://collectd.org. However, not all plugins can be built on
        OpenSolaris because of dependencies on external libraries and
        hence, only a subset of the plugins will be delivered.

3.      collectd documentation                                

        collectd 4.* provides a full and complete documentation set, in
        UNIX manual format. This project will deliver the complete
        documentation set.

4.      Packaging and Delivery

        We propose to package collectd under the following packages:

        SUNWcollectd4u - [usr] Server package (including collectd 
                        daemon, loadable plugins, man pages)
        SUNWcollectd4r - [root] (config files, smf files) 
        

5.      collectd Interfaces

        5.1. Interface Stability
        collectd has no obvious history of any interface instability and the
        expectation is that dot releases of collectd will be compatible.
        This is not completely guaranteed by the community and it is possible
        that interfaces may change due to the fixing of bugs.

        5.2. Imported Interfaces

        libcurl                                Volatile         PSARC/2007/165
        Output format of Apache's mod_status   N/A              PSARC/2007/586
        Output format of Lighhtpd's mod_status N/A              LSARC/2008/191
        libmysqlclient                         Committed        LSARC 2009/062
        libnetsnmp                             Uncommitted      LSARC/2008/355 
        librrd                                 Uncommitted      LSARC/2008/129
        libpq                                  Uncommitted      LSARC/2009/349
        Java SE 6                              Committed        PSARC/2006/430
        libkstat                               Uncommitted      PSARC/1992/085
        kstat_read                             Stable           PSARC/1992/085
        getmntent                              Evolving         PSARC/1999/131
        getloadavg                             Standard         PSARC/1996/196
        libmemcached                           Uncommitted      LSARC/2008/126
        libgcrypt                              Volatile         LSARC/2008/354
        libnotify                              Volatile         LSARC/2007/137
        swapctl                                Stable           PSARC/1997/099
        libhal                                 Volatile         PSARC/2005/399
        getutxent                              N/A              N/A
        syslog                                 Standard         N/A
        statvfs                                Stable           N/A

        5.3. Exported Interfaces

        NAME                                STABILITY        NOTES
        -----------------------------------------------------------------------
        SUNWcollectd4r                      Committed        package
        SUNWcollectd4u                      Committed        package

        collectd config file                Uncommitted      config file syntax
        collectd log file                   Not An Interface log file syntax
        collectd pid file                   Project Private  daemon pid file 
        
        /var/collectd4/logs                 Uncommitted      log file dir
        /etc/collectd4/collectd.conf        Uncommitted      default conf file
        /usr/collectd4/lib/*.so             Project Private  plugins

        /lib/svc/method/collectd4-svc       Project Private  SMF svc method
        svc:/application/monitoring/collectd4:default 
                                            Committed        FMRI
        /var/svc/manifest/application/monitoring/collectd4.xml    
                                            Project Private  SMF Manifest


6. References

        [1] http://collectd.org


================================================================
Appendix 1: collectd Integration Directory and File Structure.

1. The following files are included in the collectd integration:

/usr/collectd4
                 /share
                       /man
                           /man1
                                /collectd.1
                           /man5
                                /collectd.conf.5
                                /collectd-exec.conf
                                /collectd-unixsock.5
                                /collectd-java.5
                                /collectd-snmp.5
                                /types.db.5
                        /collectd
                                 /types.db
                                 /postgresql_default.conf
                                 /java
                                      /java-plugin.jar
                                      /jmx.jar
/var/collectd4                 
                 /logs
                      /collectd.log
                 /rrd               
/etc/collectd4
                 /conf.d
                 /collectd.conf
/usr/collectd4
                 /lib
                     /collectd
                     /apache.so
                     /bind.so
                     /cpu.so
                     /csv.so
                     /curl.so
                     /df.so
                     /disk.so
                     /exec.so
                     /filecount.so
                     /interface.so
                     /java.so
                     /load.so
                     /logfile.so
                     /match_regex.so
                     /match_timediff.so
                     /match_value.so
                     /memcached.so
                     /memory.so
                     /mysql.so
                     /network.so
                     /ntpd.so
                     /postgresql.so
                     /rrdtool.so
                     /snmp.so
                     /syslog.so
                     /swap.so
                     /table.so
                     /tail.so
                     /tape.so
                     /target_notification.so
                     /target_replace.so
                     /target_set.so
                     /ted.so
                     /types.db
                     /unixsock.so
                     /uptime.so
                     /users.so
                     /uuid.so
                     /libcollectdclient.so.0.0.0
                     /libcollectdclient.so.0 -> libcollectdclient.so.0.0.0
                     /libcollectdclient.so -> libcollectdclient.so.0.0.0        
             

/lib/svc/method/collectd4-svc
/var/svc/manifest/application/monitoring/collectd4.xml


6. Resources and Schedule
    6.4. Steering Committee requested information
        6.4.1. Consolidation C-team Name:
                sfw
    6.5. ARC review type: FastTrack
    6.6. ARC Exposure: open

Reply via email to