---
title: "Atlassian collector"
canonical: "https://docs.devo.com/space/latest/395903165/Atlassian%20collector"
format: markdown
---
> Macro (toc)

## Overview

The Atlassian collector queries the Atlassian cloud and returns audit data from Confluence and Jira.

## Devo collector features

| **Feature** | **Details** |
| --- | --- |
| Allow parallel downloading (`multipod`) | `not allowed` |
| Running environments | - `collector server`
- `on-premise` |
| Populated Devo events | `table` |

## Data sources

| **Data source** | **Description** | **Collector service name** | **Related remote endpoint** | **Devo table** |
| --- | --- | --- | --- | --- |
| Jira | Pulls audit logs from the Jira API | `audit` | [https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-audit-records/#api-group-audit-records](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-audit-records/#api-group-audit-records) | `app.atlassian.jira.audit` |
| Confluence | Pulls audit logs from the Confluence API | `audit` | [https://developer.atlassian.com/cloud/confluence/rest/v1/api-group-audit/#api-group-audit](https://developer.atlassian.com/cloud/confluence/rest/v1/api-group-audit/#api-group-audit) | `app.atlassian.confluence.audit` |

For more information on how the events are parsed, [visit our page](https://devodocs.atlassian.net/wiki/spaces/latest/pages/182550529).

## Vendor setup

The Atlassian collector works over the Atlassian API. We need to enable API access and ensure its permissions in your Atlassian account to allow the collector to get the data correctly.

1. Log in to [https://id.atlassian.com/manage-profile/secuirty/api-tokens](https://id.atlassian.com/manage-profile/secuirty/api-tokens)
2. Create the required API token.
3. From the dialog that appears, enter a label for your token and click **Create**.
4. Click **Copy to clipboard** then paste the token to the `config.yaml`.

## Minimum configuration required for basic pulling

Although this collector supports advanced configuration, the fields required to retrieve data with basic configuration are defined below.

> ℹ️ This minimum configuration refers exclusively to those specific parameters of this integration. There are more required parameters related to the generic behavior of the collector. Check setting sections for details.

| **Setting** | **Details** |
| --- | --- |
| `username` | - |
| `api-key` | - |
| `verify-ssl` | `true` or `false` |
| `url` | [https://domain.atlassian.net](https://domain.atlassian.net) |

> ℹ️ See the **Accepted authentication methods** section to verify what settings are required based on the desired authentication method.

## Accepted authentication methods

Depending on how you obtained your credentials, you will have to either fill or delete the following properties on the JSON `credentials` configuration block.

## Run the collector

Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (<u>Cloud collector</u>), or deploy and host the collector in your own machine using a Docker image (<u>On-premise collector</u>).

> Macro (rw-ui-tabs-macro)
> 
> > Macro (rw-tab)
> 
> We use a piece of software called Collector Server to host and manage all our available collectors.
> 
> To enable the collector for a customer:
> 
> 1. In the **Collector Server** **GUI**, access the **domain** in which you want this instance to be created
> 2. Click **Add Collector** and find the one you wish to add.
> 3. In the **Version** field, select the latest value.
> 4. In the **Collector Name** field, set the value you prefer (this name must be unique inside the same Collector Server domain).
> 5. In the sending method select **Direct Send. Direct Send** configuration is optional for collectors that create `Table` events, but mandatory for those that create `Lookups`.
> 6. In the **Parameters** section, establish the **Collector Parameters** as follows below:
> 
> ### Editing the JSON configuration
> 
> ```
> {
>   "global_overrides": {
>     "debug": false
>   },
>   "inputs": {
>     "atlassian": {
>       "id": "jira_1",
>       "enabled": true,
>       "requests_per_second": 5,
>       "credentials": {
>         "username": "<username>",
>         "api_key": "<api_key>"
>       },
>       "commons": {
>         "verify_ssl": true,
>         "url": "https://<domain>.atlassian.net"
>       },
>       "services": {
>         "jira_audit": {
>           "initial_start_time_in_utc": "YYYY-MM-DDTHH:mm:ssZ"
>         },
>         "confluence_audit": {
>           "initial_start_time_in_utc": "YYYY-MM-DDTHH:mm:ssZ"
>         }
>       }
>     }
>   }
> }
> ```
> 
> > ℹ️ All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the `services` object.
> 
> Please replace the placeholders with real world values following the description table below:
> 
> |  |  |  |  |  |
> | --- | --- | --- | --- | --- |
> | **Parameter** | **Data Type** | **Type** | **Value Range / Format** | **Details** |
> | `<short_unique_id>` | `int` | `Mandatory` | Minimum length: 1  
> Maximum length: 5 | Use this param to give an unique id to this input service.<br>> ⚠️ This parameter is used to build the persistence address, do not use the same value for multiple collectors. It could cause a collision. |
> | `<input_status>` | `bool` | `Mandatory` | `false` / `true` | Use this param to enable or disable the given input logic when running the collector. If the value is `true`, the input will be run. If the value is `false`, it will be ignored. |
> | `<username>` | `str` | `Mandatory` | Any | Username to authenticate the service. |
> | `<api-key>` | `str` | `Mandatory` | Any | Api Key to authenticate the service. |
> | `<verify_ssl>` | `boolean` | `Mandatory` | `false` / `true` | Verify SSL to authenticate the service. |
> | `<url>` | `str` | `Mandatory` | Any | URL to authenticate the service. |
> | `<initial_start_time_in_utc>` | `timestamp` | `Optional`<sup>1</sup> | 0000-00-00T00:00:00Z | Client Secret to authenticate the service. |
> | `<username>` | `str` | `Mandatory` | Any | Username to authenticate the service. |
> 
> > Macro (rw-tab)
> 
> This data collector can be run in any machine that has the Docker service available because it should be executed as a docker container. The following sections explain how to prepare all the required setup for having the data collector running.
> 
> ### Structure
> 
> The following directory structure should be created for being used when running the collector:
> 
> ```
> <any_directory>
> └── devo-collectors/
>     └── <product_name>/
>         ├── certs/
>         │   ├── chain.crt
>         │   ├── <your_domain>.key
>         │   └── <your_domain>.crt
>         ├── state/
>         └── config/ 
>             └── config.yaml 
> ```
> 
> > ⚠️ Replace `<product_name>` with the proper value.
> 
> ### Devo credentials
> 
> In Devo, go to **Administration → Credentials → X.509 Certificates**, download the **Certificate**, **Private key** and **Chain CA** and save them in `<product_name>/certs/`. Learn more about security credentials in Devo [here](#).
> 
> ![image](media://625be61e-c324-4691-a174-5ad068553f48)
> 
> > ⚠️ Replace `<product_name>` with the proper value.
> 
> ### Editing the config.yaml file
> 
> ```
> globals:
>   debug: false
>   id: not_used
>   name: salesfoce_collector
>   persistence:
>     type: filesystem
>     config:
>       directory_name: state
> outputs:
>   devo_1:
>     type: devo_platform
>     config:
>       address: collector-us.devo.io
>       port: 443
>       type: SSL
>       chain: <chain_filename>
>       cert: <cert_filename>
>       key: <key_filename> 
> inputs:
>   atlassian:
>     id: 12345
>     enabled: true
>     requests_per_second: 5
>     credentials:
>       username: <username>
>       api_key: <api_key>
>     commons:
>       verify_ssl: true
>       url: https://<domain>.atlassian.net
>     services:
>       jira_audit:
>         initial_start_time_in_utc: 2000-00-00T00:00:00Z
>       confluence_audit:
>         initial_start_time_in_utc: 2000-00-00T00:00:00Z
> ```
> 
> Replace the placeholders with your required values following the description table below:
> 
> |  |  |  |  |  |
> | --- | --- | --- | --- | --- |
> | **Parameter** | **Data Type** | **Type** | **Value Range / Format** | **Details** |
> | `<devo_address>` | `str` | `Mandatory` | `collector-us.devo.io`  
> `collector-eu.devo.io` | Use this param to identify the Devo Cloud where the events will be sent. |
> | `<chain_filename>` | `str` | `Mandatory` | Minimum length: 4  
> Maximum length: 20 | Use this param to identify the chain.cert  file downloaded from your Devo domain. Usually this file's name is: `chain.crt` |
> | `<cert_filename>` | `str` | `Mandatory` | Minimum length: 4  
> Maximum length: 20 | Use this param to identify the `file.cert` downloaded from your Devo domain. |
> | `<key_filename>` | `str` | `Mandatory` | Minimum length: 4  
> Maximum length: 20 | Use this param to identify the `file.key` downloaded from your Devo domain. |
> | `<short_unique_id>` | `int` | `Mandatory` | Minimum length: 1  
> Maximum length: 5 | Use this param to give an unique id to this input service.<br>> ⚠️ This parameter is used to build the persistence address, do not use the same value for multiple collectors. It could cause a collision. |
> | `<input_status>` | `bool` | `Mandatory` | `false` / `true` | Use this param to enable or disable the given input logic when running the collector. If the value is `true`, the input will be run. If the value is `false`, it will be ignored. |
> | `<username>` | `str` | `Mandatory` | Any | Username to authenticate the service. |
> | `<api-key>` | `str` | `Mandatory` | Any | Api Key to authenticate the service. |
> | `<verify_ssl>` | `boolean` | `Mandatory` | `false` / `true` | Verify SSL to authenticate the service. |
> | `<url>` | `str` | `Mandatory` | Any | URL to authenticate the service. |
> | `<initial_start_time_in_utc>` | `timestamp` | `Optional`<sup>1</sup> | 0000-00-00T00:00:00Z | Client Secret to authenticate the service. |
> 
> ### Download the Docker image
> 
> The collector should be deployed as a Docker container. Download the Docker image of the collector as a .tgz file by clicking the link in the following table:
> 
> | **Collector Docker image** | **SHA-256 hash** |
> | --- | --- |
> | [collector-atlassian-docker-image-1.0.1.tgz](https://drive.google.com/file/d/1XobboZ83M1YDTq8jdtYiLuEEfRWVS9Ar/view?usp=drive_link) | `9891a64d2391f9ba2f10a3469759f6d6858caa6fa42b649b18f73519cc6126a9` |
> 
> Use the following command to add the Docker image to the system:
> 
> ```
> gunzip -c <image_file>-<version>.tgz | docker load
> ```
> 
> > ⚠️ Once the Docker image is imported, it will show the real name of the Docker image (including version info). Replace `<image_file>` and `<version>` with a proper value.
> 
> The Docker image can be deployed on the following services:
> 
> #### Docker
> 
> Execute the following command on the root directory `<any_directory>/devo-collectors/<product_name>/`
> 
> ```
> docker run 
> --name collector-<product_name> 
> --volume $PWD/certs:/devo-collector/certs 
> --volume $PWD/config:/devo-collector/config 
> --volume $PWD/state:/devo-collector/state 
> --env CONFIG_FILE=config.yaml 
> --rm 
> --interactive 
> --tty 
> <image_name>:<version>
> ```
> 
> > ⚠️ Replace `<product_name>`, `<image_name>` and `<version>` with the proper values.
> 
> #### Docker Compose
> 
> The following Docker Compose file can be used to execute the Docker container. It must be created in the `<any_directory>/devo-collectors/<product_name>/` directory.
> 
> ```
> version: '3'
> services:
>   collector-<product_name>:
>     image: <image_name>:${IMAGE_VERSION:-latest}
>     container_name: collector-<product_name>
>     volumes:
>       - ./certs:/devo-collector/certs
>       - ./config:/devo-collector/config
>       - ./credentials:/devo-collector/credentials
>       - ./state:/devo-collector/state
>     environment:
>       - CONFIG_FILE=${CONFIG_FILE:-config.yaml}
> ```
> 
> To run the container using docker-compose, execute the following command from the `<any_directory>/devo-collectors/<product_name>/` directory:
> 
> ```
> IMAGE_VERSION=<version> docker-compose up -d
> ```
> 
> > ⚠️ Replace `<product_name>`, `<image_name>` and `<version>` with the proper values.

## Change log

| **Release** | **Released on** | **Release type** | **Details** | **Recommendations** |
| --- | --- | --- | --- | --- |
| `v1.0.1` | 10/4/2023 | [BUG FIX] | Updated dependencies in the `requirments.txt` file. | `Recommended version` |
| `v1.0.0` | 9/29/2023 | [INITIAL RELEASE] | Initial Release with Collector SDK 1.9.2 | `-` |