Install Observe Agent using Ansible

Install the Observe Agent

Before you begin, install Ansible on your control node.

Install the observe-agent package. You’ll need to first add the Observe debian repository to your trusted depositories in your sources.list.d file. Create package.yaml under /etc/ansible/roles/agent/tasks/.

- name : Install Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: add observe-agent apt source
      ansible.builtin.copy:
        dest: /etc/apt/sources.list.d/observeinc.list
        mode: 0644
        content: |
          deb [trusted=yes] https://repo.observeinc.com/apt/ /
    - name: install observe-agent package
      ansible.builtin.apt:
        install_recommends: no
        name: observe-agent
        state: latest
        update_cache: yes   

Use ansible-playbook to install the Observe Agent with package.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook -i /etc/ansible/hosts/my.aws_ec2.ini --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/package.yaml

PLAY [Observe Agent Getting Started Playbook] ******************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [add observe-agent apt source] ****************************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

TASK [install observe-agent package] ***************************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

PLAY RECAP *****************************************************************************************************************************************************************************************
ansible-managed-node-1 : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansible-managed-node-2 : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Install the observe-agent package. You’ll need to first add the Observe yum repository to your trusted repositories in your yum.repos.d folder. Create package.yaml under /etc/ansible/roles/agent/tasks/.

- name : Install Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: add observe-agent yum source
      ansible.builtin.yum_repository:
        name: observe
        description: Gemfury Private Repo
        baseurl: https://yum.fury.io/observeinc/
        mode: 0644
    - name: install observe-agent package
      yum:
        name: observe-agent
        state: latest
        update_cache: yes
        disable_gpg_check: yes

Use ansible-playbook to install the Observe Agent with package.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/package.yaml

PLAY [Install Observe Agent] ************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [add observe-agent yum source] *****************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [install observe-agent package] ****************************************************************************************************************
changed: [54.202.68.91]
changed: [35.87.95.246]

PLAY RECAP ******************************************************************************************************************************************
35.87.95.246               : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
54.202.68.91               : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Configure the Observe Agent

Create config.yaml under /etc/ansible/roles/agent/tasks/.

- name : Config Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: install observe-agent.yaml
      ansible.builtin.template:
        src: ../templates/observe-agent.yaml.j2
        dest: /etc/observe-agent/observe-agent.yaml
        owner: root
        group: observe-agent
        mode: 0640

Create observe-agent.yaml.j2 under /etc/ansible/roles/agent/templates. Replace ${OBSERVE_TOKEN} (your instance’s token) and ${OBSERVE_COLLECTION_ENDPOINT} (your instance’s collection endpoint) on each host. For more information on configuring the agent, see Configuration.

Note

The ${OBSERVE_COLLECTION_ENDPOINT} is composed from https://${OBSERVE_CUSTOMER_ID}.collect.${OBSERVE_INSTANCE}. For example, if you typically login to https://123456789012.observeinc.com, your ${OBSERVE_COLLECTION_ENDPOINT} is https://123456789012.collect.observeinc.com.

Note

Some Observe instances may optionally use a name instead of Customer ID; if this is the case for your instance, contact your Observe Data Engineer to discuss implementation. A stem name will work as is, but a DNS redirect name may require client configuration.

# Observe data token (ex: a1b2c3d4e5f6g7h8i9k0:l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6)
token: "${OBSERVE_TOKEN}"

# Target Observe collection url (ex: https://123456789012.collect.observeinc.com/)
observe_url: "${OBSERVE_COLLECTION_ENDPOINT}"

# Debug mode - Sets agent log level to debug
debug: false

self_monitoring:
  enabled: true

host_monitoring:
  enabled: true
  logs: 
    enabled: true
    include:
      - /var/log/**/*.log
      - /var/log/syslog
  metrics:
    host: 
      enabled: true
    process:
      enabled: false

# otel_config_overrides:
#   exporters:
#     # This is a net new exporter
#     debug:
#       verbosity: detailed
#       sampling_initial: 5
#       sampling_thereafter: 200
#   service:
#     pipelines:
#       # This will override the existing metrics/host_monitoring pipeline and output to stdout debug instead
#       metrics/host_monitoring_host:
#         receivers: [hostmetrics/host-monitoring-host]
#         processors: [memory_limiter]
#         exporters: [debug]
#       # This is a net new pipeline
#       logs/new-pipeline:
#         receivers: [filelog/host_monitoring]
#         processors: [memory_limiter]
#         exporters: [debug]

Use ansible-playbook to configure the Observe Agent with config.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook -i /etc/ansible/hosts/my.aws_ec2.ini --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/config.yaml

PLAY [Config Observe Agent] ************************************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [install observe-agent.yaml] ******************************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

PLAY RECAP *****************************************************************************************************************************************************************************************
ansible-managed-node-1 : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansible-managed-node-2 : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Create config.yaml under /etc/ansible/roles/agent/tasks/.

- name : Config Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: install observe-agent.yaml
      ansible.builtin.template:
        src: ../templates/observe-agent.yaml.j2
        dest: /etc/observe-agent/observe-agent.yaml
        owner: root
        group: observe-agent
        mode: 0640

Create observe-agent.yaml.j2 under /etc/ansible/roles/agent/templates. Replace ${OBSERVE_TOKEN} (your instance’s token) and ${OBSERVE_COLLECTION_ENDPOINT} (your instance’s collection endpoint) on each host. For more information on configuring the agent, see Configuration.

# Observe data token (ex: a1b2c3d4e5f6g7h8i9k0:l1m2n3o4p5q6r7s8t9u0v1w2x3y4z5a6)
token: "${OBSERVE_TOKEN}"

# Target Observe collection url (ex: https://123456789012.collect.observeinc.com/)
observe_url: "${OBSERVE_COLLECTION_ENDPOINT}"

# Debug mode - Sets agent log level to debug
debug: false

self_monitoring:
  enabled: true

host_monitoring:
  enabled: true
  logs: 
    enabled: true
    include:
      - /var/log/**/*.log
      - /var/log/syslog
  metrics:
    host: 
      enabled: true
    process:
      enabled: false

# otel_config_overrides:
#   exporters:
#     # This is a net new exporter
#     debug:
#       verbosity: detailed
#       sampling_initial: 5
#       sampling_thereafter: 200
#   service:
#     pipelines:
#       # This will override the existing metrics/host_monitoring pipeline and output to stdout debug instead
#       metrics/host_monitoring_host:
#         receivers: [hostmetrics/host-monitoring-host]
#         processors: [memory_limiter]
#         exporters: [debug]
#       # This is a net new pipeline
#       logs/new-pipeline:
#         receivers: [filelog/host_monitoring]
#         processors: [memory_limiter]
#         exporters: [debug]

Use ansible-playbook to configure the Observe Agent with config.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/config.yaml

PLAY [Config Observe Agent] *************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [install observe-agent.yaml] *******************************************************************************************************************
changed: [54.202.68.91]
changed: [35.87.95.246]

PLAY RECAP ******************************************************************************************************************************************
35.87.95.246               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
54.202.68.91               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Start the Observe Agent

Create enable.yaml under /etc/ansible/roles/agent/tasks/.

- name : Start Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: enable observe-agent
      ansible.builtin.systemd_service:
        enabled: true
        name: observe-agent
        state: started 

Use ansible-playbook to start the Observe Agent with enable.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook -i /etc/ansible/hosts/my.aws_ec2.ini --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/enable.yaml

PLAY [Start Observe Agent] *************************************************************************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [Enable observe-agent] ************************************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

PLAY RECAP *****************************************************************************************************************************************************************************************
ansible-managed-node-1 : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansible-managed-node-2 : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Create enable.yaml under /etc/ansible/roles/agent/tasks/.

- name : Start Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: enable observe-agent
      systemd:
        enabled: true
        name: observe-agent
        state: started

Use ansible-playbook to start the Observe Agent with enable.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/enable.yaml

PLAY [Start Observe Agent] **************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [enable observe-agent] *************************************************************************************************************************
changed: [35.87.95.246]
changed: [54.202.68.91]

PLAY RECAP ******************************************************************************************************************************************
35.87.95.246               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
54.202.68.91               : ok=2    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Configure application instrumentation

Once the Observe Agent is up and running on a Linux host, you can configure your application running on the same Linux host to send telemetry data to the Observe Agent using one of the following addresses:

  • OTLP/HTTP endpoint: http://localhost:4318

  • OTLP/gRPC endpoint: http://localhost:4317

Uninstall the Observe Agent

Create uninstall.yaml under /etc/ansible/roles/agent/tasks/.

- name : Uninstall Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: stop observe-agent
      ansible.builtin.systemd_service:
        name: observe-agent
        state: stopped
    - name: purge observe-agent
      ansible.builtin.apt:
        name: observe-agent
        state: absent
        purge: true 

Use ansible-playbook to start the Observe Agent with uninstall.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook -i /etc/ansible/hosts/my.aws_ec2.ini --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/uninstall.yaml

PLAY [Uninstall Observe Agent] *****************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [stop observe-agent] **********************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [purge observe-agent] *********************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

PLAY RECAP *************************************************************************************************************************************************************************
ansible-managed-node-1 : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansible-managed-node-2 : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Create uninstall.yaml under /etc/ansible/roles/agent/tasks/.

- name : Uninstall Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: stop observe-agent
      systemd:
        name: observe-agent
        state: stopped
    - name: purge observe-agent
      yum:
        name: observe-agent
        state: absent

Use ansible-playbook to start the Observe Agent with uninstall.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/uninstall.yaml

PLAY [Uninstall Observe Agent] **********************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [stop observe-agent] ***************************************************************************************************************************
ok: [54.202.68.91]
ok: [35.87.95.246]

TASK [purge observe-agent] **************************************************************************************************************************
changed: [54.202.68.91]
changed: [35.87.95.246]

PLAY RECAP ******************************************************************************************************************************************
35.87.95.246               : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
54.202.68.91               : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

Upgrade the Observe Agent

Warning

Observe Agent v1.0.0 includes breaking changes. Learn more about these changes in Upgrade to Observe Agent v1.0.0

Create upgrade.yaml under /etc/ansible/roles/agent/tasks/.

- name : Upgrade Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: upgrade observe-agent package
      ansible.builtin.apt:
        install_recommends: no
        name: observe-agent
        update_cache: yes
        only_upgrade: true
    - name: restart observe-agent
      ansible.builtin.systemd_service:
        enabled: true
        state: restarted
        name: observe-agent

Use ansible-playbook to upgrade and restart the Observe Agent with upgrade.yaml. Your ansible-playbook could be similar to the following one.

$ ansible-playbook -i /etc/ansible/hosts/my.aws_ec2.ini --private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/upgrade.yaml

PLAY [Upgrade Observe Agent] *******************************************************************************************************************************************************

TASK [Gathering Facts] *************************************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [upgrade observe-agent package] ***********************************************************************************************************************************************
ok: [ansible-managed-node-1]
ok: [ansible-managed-node-2]

TASK [restart observe-agent] *******************************************************************************************************************************************************
changed: [ansible-managed-node-1]
changed: [ansible-managed-node-2]

PLAY RECAP *************************************************************************************************************************************************************************
ansible-managed-node-1 : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
ansible-managed-node-2 : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

Create upgrade.yaml under /etc/ansible/roles/agent/tasks/.

- name : Upgrade Observe Agent
  hosts: all
  become: yes
  tasks:
    - name: upgrade observe-agent package
      yum:
        name: observe-agent
        disable_gpg_check: yes
        state: latest
        update_cache: yes
    - name: restart observe-agent
      systemd:
        enabled: true
        name: observe-agent
        state: restarted

Use ansible-playbook to upgrade and restart the Observe Agent with upgrade.yaml. Your ansible-playbook could be similar to the following one.


$ ansible-playbook –private-key observe-agent-test.pem /etc/ansible/roles/agent/tasks/upgrade.yaml

PLAY [Upgrade Observe Agent] *****************************************************************************************************************************************************************************************************

TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************** ok: [35.87.95.246] ok: [54.202.68.91]

TASK [upgrade observe-agent package] ********************************************************************************************************************************************************************************************* ok: [54.202.68.91] ok: [35.87.95.246]

TASK [restart observe-agent] ***************************************************************************************************************************************************************************************************** changed: [54.202.68.91] changed: [35.87.95.246]

PLAY RECAP *********************************************************************************************************************************************************************************************************************** 35.87.95.246 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 54.202.68.91 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0