Jenkins
Logs
Shipping Jenkins logs with Filebeat
Before you begin, you'll need:
- Filebeat installed
- Root access
- Port 5015 open
Download the Logz.io public certificate
For HTTPS shipping, download the Logz.io public certificate to your certificate authority folder.
sudo curl https://raw.githubusercontent.com/logzio/public-certificates/master/AAACertificateServices.crt --create-dirs -o /etc/pki/tls/certs/COMODORSADomainValidationSecureServerCA.crt
Add Jenkins as an input
In the Filebeat configuration file (/etc/filebeat/filebeat.yml), add Jenkins to the filebeat.inputs section.
Replace <<LOG-SHIPPING-TOKEN>>
with the token of the account you want to ship to.
Replace "JENKINS-HOME" with home location of your Jenkins installation
Filebeat requires a file extension specified for the log input.
# ...
filebeat.inputs:
- type: filestream
paths:
- /var/log/jenkins/jenkins.log
- /var/<<JENKINS-HOME>>/jobs/*/builds/lastFailedBuild/log
fields:
logzio_codec: plain
# You can manage your tokens at
# https://app.logz.io/#/dashboard/settings/manage-tokens/log-shipping
token: <<LOG-SHIPPING-TOKEN>>
type: jenkins
fields_under_root: true
encoding: utf-8
ignore_older: 3h
multiline:
pattern: '^[A-Z]{1}[a-z]{2} {1,2}[0-9]{1,2}, [0-9]{4} {1,2}[0-9]{1,2}:[0-9]{2}:[0-9]{2}'
negate: true
match: after
If you're running Filebeat 7 to 8.1, paste the code block below instead:
# ...
filebeat.inputs:
- type: log
paths:
- /var/log/jenkins/jenkins.log
- /var/<<JENKINS-HOME>>/jobs/*/builds/lastFailedBuild/log
fields:
logzio_codec: plain
# You can manage your tokens at
# https://app.logz.io/#/dashboard/settings/manage-tokens/log-shipping
token: <<LOG-SHIPPING-TOKEN>>
type: jenkins
fields_under_root: true
encoding: utf-8
ignore_older: 3h
multiline:
pattern: '^[A-Z]{1}[a-z]{2} {1,2}[0-9]{1,2}, [0-9]{4} {1,2}[0-9]{1,2}:[0-9]{2}:[0-9]{2}'
negate: true
match: after
The above configuration assumes the following defaults:
- Log location -
/var/log/jenkins/jenkins.log
- Log type -
jenkins
Set Logz.io as the output
If Logz.io is not an output, add it now. Remove all other outputs.
Replace <<LISTENER-HOST>>
with the host for your region.
# ...
output.logstash:
hosts: ["<<LISTENER-HOST>>:5015"]
ssl:
certificate_authorities: ['/etc/pki/tls/certs/COMODORSADomainValidationSecureServerCA.crt']
Start Filebeat
Start or restart Filebeat for the changes to take effect.
Check Logz.io for your logs
Give your logs some time to get from your system to ours, and then open Open Search Dashboards. You can search for type:jenkins
to filter for your Jenkins logs. Your logs should be already parsed thanks to the Logz.io preconfigured parsing pipeline.
If you still don't see your logs, see Filebeat troubleshooting.
Metrics
- Telegraf
- OpenTelemetry Collector
Configure Telegraf to send your metrics data to Logz.io
Set up Telegraf v1.17 or higher
For Windows
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.27.3_windows_amd64.zip
After downloading the archive, extract its content into C:\Program Files\Logzio\telegraf\
.
The configuration file is located at C:\Program Files\Logzio\telegraf\
.
For MacOS
brew install telegraf
The configuration file is located at /usr/local/etc/telegraf.conf
.
For Linux
Ubuntu & Debian
sudo apt-get update && sudo apt-get install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
RedHat and CentOS
sudo yum install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
SLES & openSUSE
# add go repository
zypper ar -f obs://devel:languages:go/ go
# install latest telegraf
zypper in telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
FreeBSD/PC-BSD
sudo pkg install telegraf
The configuration file is located at /etc/telegraf/telegraf.conf
.
Enable the metrics plugin from the Jenkins Web UI
First you need to add the metrics plug-in to your Jenkins configuration. To do this:
- Login to the Jenkins Web UI and navigate to Manage Jenkins > Manage Plugins > Available.
- Select Prometheus metrics and click Install without restart.
Add the inputs.prometheus plug-in
Now you need to configure the input plug-in to enable Telegraf to scrape the Jenkins data from your hosts. To do this, add the following code to the configuration file:
[[inputs.prometheus]]
# An array of urls to scrape metrics from.
urls = ["http://localhost:8080/prometheus/"]
metric_version = 2
Add the outputs.http plug-in
After you create the configuration file, configure the output plug-in to enable Telegraf to send your data to Logz.io in Prometheus-format. To do this, add the following code to the configuration file:
[[outputs.http]]
url = "https://<<LISTENER-HOST>>:8053"
data_format = "prometheusremotewrite"
[outputs.http.headers]
Content-Type = "application/x-protobuf"
Content-Encoding = "snappy"
X-Prometheus-Remote-Write-Version = "0.1.0"
Authorization = "Bearer <<PROMETHEUS-METRICS-SHIPPING-TOKEN>>"
Replace the placeholders to match your specifics. (They are indicated by the double angle brackets << >>
):
- Replace
<<LISTENER-HOST>>
with the Logz.io Listener URL for your region, configured to use port 8052 for http traffic, or port 8053 for https traffic. - Replace
<<PROMETHEUS-METRICS-SHIPPING-TOKEN>>
with a token for the Metrics account you want to ship to. Look up your Metrics token.
This guide provides step-by-step instructions for configuring a Jenkins server to send metrics to your Logz.io account using the official Jenkins OpenTelemetry plugin and an OpenTelemetry Collector.
We cover two common setup methods: using Docker for a containerized environment and a Local/Native installation for running directly on a host machine.
Prerequisites
Before you begin, make sure you have:
- A Logz.io account with access to the Metrics tab.
- Your Logz.io Metrics Shipping Token.
- Your account's Logz.io Listener Host. You can find the correct host for your region in the Logz.io documentation.
- Docker installed and running (for the Docker setup).
- Java 11 or 17 installed on your system (for the Local/Native setup).
Step 1: Configure the OpenTelemetry Collector
Create a file named config.yaml
with the following content (applies to both setup methods):
receivers:
otlp:
protocols:
grpc:
# The collector listens on gRPC port 4317 on all available network interfaces.
endpoint: '0.0.0.0:4317'
exporters:
prometheusremotewrite:
endpoint: 'https://<<YOUR-LOGZIO-LISTENER-HOST>>:8053'
headers:
Authorization: 'Bearer <<YOUR-LOGZIO-METRICS-TOKEN>>'
processors:
batch:
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [prometheusremotewrite]
Replace the placeholders:
<<YOUR-LOGZIO-LISTENER-HOST>>
– your account's listener host (for examplelistener.logz.io
orlistener-eu.logz.io
).<<YOUR-LOGZIO-METRICS-TOKEN>>
– your Logz.io Metrics Shipping Token.
Step 2: Install and Run Jenkins & the Collector
Choose the installation method that matches your environment.
Method A: Docker Setup
Create a Docker network
docker network create jenkins-net
Run the OpenTelemetry Collector container
docker run --name otel-collector -d --network jenkins-net -p 4317:4317 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest
Run the Jenkins container
docker run --name jenkins-server -d --network jenkins-net -p 8080:8080 jenkins/jenkins:lts-jdk11
Method B: Local/Native Setup
If you haven't already set up Jenkins, follow the official Jenkins installation guide for your operating system before proceeding with the steps below.
Download and run the Collector
# Make the binary executable (macOS/Linux)
chmod +x ./otelcol-contrib
# Run the collector
./otelcol-contrib --config ./config.yamlDownload and run Jenkins
java -jar jenkins.war
Step 3: Configure the Jenkins OpenTelemetry Plugin
- Open
http://localhost:8080
in your browser and finish the Jenkins setup wizard. - Go to Manage Jenkins › Plugins › Available and install the OpenTelemetry plugin (restart if prompted).
- Go to Manage Jenkins › Configure System › OpenTelemetry and set:
- OTLP Endpoint
- Docker setup:
http://otel-collector:4317
- Local setup:
http://localhost:4317
- Docker setup:
- Authentication: No authentication
- OTLP Endpoint
- Click Save.
Step 4: Verify the Integration
- Run a Pipeline job a few times to generate metrics.
- In Logz.io, open Metrics › Metrics Explorer.
- Search for metrics starting with
jenkins_
(for examplejenkins_queue_waiting
,jenkins_agents_total
). Seeing these metrics confirms the integration is working.
Troubleshooting
Symptom | Possible Cause & Fix |
---|---|
UnknownHostException (Docker) | Jenkins and Collector containers are not on the same Docker network. Ensure both docker run commands include --network jenkins-net . |
permission denied or “malware” warning (Local) | Make the Collector executable (chmod +x ) and, on macOS, remove the quarantine attribute (xattr -d com.apple.quarantine <file> ). |
Connection refused | Ensure the Collector is running and that the OTLP endpoint value matches your setup (otel-collector for Docker, localhost for Local). |
No metrics in Logz.io | Check the listener host and token in config.yaml and review Collector logs (docker logs otel-collector or terminal output) for exporter errors. |
Check Logz.io for your metrics
Install the pre-built dashboards to enhance the observability of your metrics.
To view the metrics on the main dashboard, log in to your Logz.io Metrics account, and open the Logz.io Metrics tab.