Skip to end of metadata
Go to start of metadata

Plugin Information

View InfluxDB on the plugin site for more information.

Sends Jenkins build metrics into InfluxDB

Description

InfluxDB Plugin allows you to send various metrics to InfluxDB. The plugin gets its data from the other results published by Jenkins. For example, unit test results are received from the JUnit Plugin and Robot Framework results from the Robot Framework Plugin etc.

From version 1.13 onwards different plugins are listed as optional dependencies. In order to get rid of mandatory dependency errors, InfluxDB plugin must be re-installed.

 

Supported Metrics

MeasurementDataRelated plugin
All
  • Build number
  • Project name
  • Project path
 
jenkins_data
  • Build health
  • Build status message
  • Build time
  • Build Agent name
  • Job duration
  • Build result
  • Build result ordinal (0=Stable, 1=Unstable, 2=Failure, 3=Not built, 4=Aborted)
  • Successful build boolean
  • Last stable build number (or 0 if never)
  • Last successful build number (or 0 if never)
  • Tests failed (unit test results from JUnit Plugin)
  • Tests skipped (unit test results from JUnit Plugin)
  • Tests total (unit test results from JUnit Plugin)
  • Time in queue (from Metrics plugin)
  • Build scheduled time
  • Build start time
  • Build measured time

JUnit Plugin

Metrics Plugin

cobertura_data
  • Package coverage %
  • Class coverage %
  • Line coverage %
  • Branch coverage %
  • Amount of packages
  • Amount of source files
  • Amount of classes
Cobertura Plugin
rf_results
  • Test case name
  • Suite name
  • Duration
  • Amount of suites
  • Amount of passed tests
  • Amount of failed tests
  • Amount of total tests
  • Pass percentage of all tests
  • Amount of passed critical tests
  • Amount of failed critical tests
  • Total amount of critical tests
  • Pass percentage of critical tests
Robot Framework Plugin
suite_result

Same as rf_results except:

  • Pass percentage of all tests
  • Pass percentage of critical tests
  • Test case name
Robot Framework Plugin
tag_point

Same as rf_results except:

  • Pass percentage of all tests
  • Pass percentage of critical tests
  • Test case name
  • Suite name
  • Amount of suites

Extra data sent for this measurement:

  • Tag name
Robot Framework Plugin
testcase_point

Same as rf_results except:

  • Amount of suites
  • Amount of total tests
  • Pass percentage of critical tests
  • Total amount of critical tests
  • Pass percentage of all tests
Robot Framework Plugin
jacoco_data
  • Package coverage %
  • Class coverage %
  • Line coverage %
  • Branch coverage %
  • Method coverage %
  • Instruction coverage %
Jacoco Plugin
performance_data
  • Total amount of errors
  • Percentage of errors
  • Average sample duration
  • Max/min sample duration
  • Size of samples
  • Total count of samples
  • 90 percentile
Performance Plugin

sonarqube_data

  • Amount of major/minor/critical/blocker/info issues
  • Lines of code
  • Build display name
-
changelog_data
  • Affected files
  • Commit authors
  • Commit messages
  • Commit count
-
perfpublisher_summary
  • Number of total/executed/not-executed/passed/failed/success/true-false tests
  • Best compile time test value/name
  • Worst compile time test value/name
  • Average compile time
  • Best performance test value/name
  • Worst performance test value/name
  • Average performance
  • Best execution time test value/name
  • Worst execution time test value/name
Perfpublisher Plugin
perfpublisher_metric
  • Metric name
  • Average value for metric
  • worst value for metric
  • best value for metric
Perfpublisher Plugin
perfpublisher_test
  • Test name
  • Was test successful/executed
  • Test message
  • Compile time
  • Execution time
  • Performance
Perfpublisher Plugin
perfpublisher_test_metric
  • Test name
  • Metric name/value/relevancy
Perfpublisher Plugin

 

Configuration

Create a database in InfluxDB and a user with rights to your database. In Jenkins, go to Manage Jenkins > Configure System and click new influxdb target. Provide the database information to Jenkins. The url parameter needs the whole url of the influxDB database, including the http:// and the database port. Also, provide the retention policy you want the data to be stored in Influxdb (e.g. 15m or 2d for 15 minutes or 2 days respectively). By default, the retention policy is infinite. Exceptions generated by InfluxDB plugin can also be ignored by unselecting the exposeExceptions checkbox.

In your job, select Publish build data to InfluxDb target from the post-build actions.

Select the InfluxDB target you wish to publish the data.

Supporting Pipelines

The plugin can be used in pipelines, by calling the step function, e.g.

step([$class: 'InfluxDbPublisher',
        customData: null,
        customDataMap: null,
        customPrefix: null,
        target: 'local influxDB'])

customData and customDataMap are custom data generated during the build and not by the plugin. customPrefix is added to the beginning of the measurements. target takes the value of your description in your Global configuration.

 

NOTE! Up to release 1.10.3, pipeline was configured with the use the url and database.

step([$class: 'InfluxDbPublisher',
        customData: null,
        customDataMap: null,
        customPrefix: null,
        target: 'http://127.0.0.1:8086,jenkins_db'])

This form of configuration is not supported from version 1.11 onwards.

 

Pipelines don't have post-build actions, so the build result, build ordinal, and the build success boolean must be set manually. They will default to "?", 5, and false respectively unless set before calling the step. The boolean value is set according to the ordinal value and the ordinal value is fetched according to build result, so only the build result have to be set manually. Also, the build status will appear as "?" and the build duration might be a little off, because the build is not actually finished. If you want to get those pieces of information you need to configure the plugin separately on each job as a post-build action. The jobs can be run with, for example, the Build Pipeline Plugin to get data from all jobs to InfluxDB. Alternatively, you can insert the information in your build manually inside your Groovy script.

try {
    // Build things here
    if(currentBuild.result == null) {
        currentBuild.result = "SUCCESS"	// sets the ordinal as 0 and boolean to true
    }
} catch (err) {
    if(currentBuild.result == null) {
        currentBuild.result = "FAILURE"	// sets the ordinal as 4 and boolean to false
    }
    throw err
} finally {
    step([$class: 'InfluxDbPublisher', ...
}

 

 

Release catalogue

1.17 (29.6.2018)

  • Fixed an issue with Jenkins log being cluttered with warning messages (JENKINS-49105)
  • Changed minimum required Cobertura Plugin to get rid of warnings when creating a maven package
  • Enable the use of environment variables as fields or tags for jenkins_data (Pull Request 32)
  • Add build_scheduled_time, build_exec_time, and build_measured_time as fields in JenkinsPointGenerator (Pull Request 38)

1.16 (4.6.2018)

1.15 (11.5.2018)

1.14 (13.2.2018)

1.13.2 (23.1.2018)

1.13.1 (20.12.2017)

  • Fix for running pipelines without all optional plugins installed (Pull request 25)

1.13 (20.12.2017)

1.12.3 (30.6.2017)

1.12.2 (21.6.2017)

  • Changed consistency level from ALL to ANY (Issue 44840)
  • Changed default retention policy to "autogen" (Pull request 16)
  • Temporarily disabled SonarQube integration due to multiple errors

1.12.1 (26.5.2017)

  • Fixed Performance Plugin support for latest version (Issue 43539)

1.12 (15.5.2017)

1.11 (22.3.2017)

1.10.3 (10.2.2017)

  • rf_tag_name added to tag_point

1.10.2 (17.1.2017)

  • Fixed an issue with pipelines causing a NullPointerException for several metrics (JENKINS-41067)

1.10.1 (30.12.2016)

  • Changed performance measurement name from <unit test file> to performance_data

1.10 (23.12.2016)

  • Exceptions are now ignorable (Pull request 3)
  • New fields for jenkins_data: build_result, build_result_ordinal, build_successful, last_stable_build, last_successful_build(Pull request 10)

1.9 (8.11.2016)

  • Added support for custom data maps (Pull request 8)
  • Added support for custom data(Pull request 7)
  • Removed build_<job_name_with_dashes_changed_to_underscores> measurement as obsolete
  • Added support for Performance plugin (JENKINS-38298\)

1.8.1 (28.9.2016)

1.8 (13.9.2016)

1.7 (1.9.2016)

  • Added JaCoCo support
  • Retention Policy is now configurable in global settings
  • Metrics are now sent as a bulk, instead of sent separately (Pull request 2)

1.6 (10.8.2016)

  • Fixed issue with Cobertura report files on slave nodes were not found.

1.5 (5.8.2016)

  • Fixed issue with selected target not stored correctly in configuration

1.4 (4.8.2016)

  • Support for pipelines
  • Fixed issue with multiple targets with same url, but different database
  • Fixed issue with Cobertura reports in other than default location

1.3 (26.7.2016)

  • First release available from the update center.

17 Comments

  1. The v2.2 commit to Performance Plugin breaks the latest version of this plugin: https://github.com/jenkinsci/performance-plugin/commit/3e20466366c4f81a49d636c4f4cf9a513b0834c4

    1. Please use the issue tracker rather than wiki comments if you've found a problem.

  2. Any snippet to add influx-db target (e.g: url,desc,user,pwd,db,rentention) on Jenkins configuration  using groovy script? 

    1. I believe this is not possible !?

      Usually there is a setter method in DescriptorImpl but there is none for this plugin

      I created issue  JENKINS-50962 - Getting issue details... STATUS

  3. Would be nice for the "Custom Prefix" field to allow token replacement.

  4. I'm not able to see any of the metrics beyond "project_name" in my database. Are there more requirements that aren't listed? I am running Jenkins 2.89.2, InfluxDB v1.2, the latest version of the plugin, and the latest version of the JUnit plugin. I thought I would be able to see at least build_health, build_status, etc.

    1. All requirements are listed in here. All mandatory dependencies installed when the plugin is installed and all metrics should be available immediately when criteria are met (i.e. the corresponding plugin is executed in a job).

      1. It turns out my default retention period was set to 0s so it was never storing the data. Once I changed the retention period, everything worked perfectly. 

  5. Hi,

    Kindly request if is possible or you plan to +add an extra field in order to have the "Build Release not the existing Build Number" this means that if we tag a build with a version to be possible to collect that metric regarding that build version from Jenkins and to send in InfluxDB.

    Let me know what do you think.

    Kind Regards,

  6. Can we have the pipeline build result for influxdb in jenkins_data?

    We now have 0-4, and o got a "5" for "Build result ordinal" and a "?" for "Build result"

    1. This is explained in the Wiki: 

      Pipelines don't have post-build actions, so the build result, build ordinal, and the build success boolean must be set manually. They will default to "?"5, and false respectively unless set before calling the step.

      You need to set the build result before calling the influx plugin in order to get the correct messages.

  7. Hi,

    Kindly could you:

    1\. Explain the metrics that you add as new ones like: Project path, Build Agent name.

    2\. Any new metrics will be available like: Pipeline build result → 0 - 4.., build time and all the aspects.

    3\. The road map and if you plan to put there more metrics?

    Kind Regards,

    Florian

    1. Hi,

      Yes, explaining metrics is actually a good idea. I will add those to Wiki in due time.

      A road map is quite difficult to create, because almost all changes come from pull requests and I don't know what people will request.

      1. Yes I could understand this aspect.

        But I have a kindly request for you, I've noticed that you detailed some aspects regarding pipeline: 0 - 4 build result in the previous comment.

        If possible kindly put a detailed Example how to configure best practices those build codes for a piepline, it will be great to have a relevant working example there.

        There was an old example from previous version but for me is not clear or relevant.

         

        Kind Regards,

        Florian

  8. Hi,

     

    For jenkins itself do you plan to have some metrics like for parallel tasks, resources, version, plugins, etc?

    Kindly do you plan other release and what will contain?

    You will do also something for pipeline like to have the same things like a normal job not the current format?

     

    Have a great day.

    Kind Regards,

    1. Hi,

      What do you mean with "parallel tasks, resources, version, plugins, etc"?

      Yes, I am always planning to do another release, but the scope nor the schedule isn't set beforehand. I have my own change tracking file (based on merged pull requests and completed tickets in issue tracker). I can start doing a TBD next release scope listing on top of the release catalogue to help see what changes are coming.

      Yes, implementing a more intuitive pipeline syntax has been on my task list for quite some time already.

        • Jenkins version (nice to have it I could say);
        • Jenkins: service/ process check/ PID;
        • Jenkins stuck Jobs and dependencies check;
        • Plugins from Jenkins: available, installed, total, etc as a number not who they are;
        • Jenkins resources used for example/ workload (CPU/ MEM/ etc) and also it will be nice to have: time that was idle Jenkins and time when he has activity for example.
        • Parallel tasks: when there a pipeline is running if possible to have more details or metrics not only build status from 0 to 4.
Write a comment…