в ansible, debian, monitoring

Автоматическая установка newrelic-sysmond

ansible
Ранее мы рассматривали процесс настройки базового мониторинга серверов с помощью New Relic, давайте разберемся как можно автоматизировать этот процесс с помощью системы управления конфигурациями Ansible!

Считаем, что Ansible установлен и настроен. Будем использовать роль для установки необходимых пакетов и настройки базового мониторинга New Relic (подробнее о ролях можно почитать здесь).

В нашем случае файловая структура выглядит следующим образом:

roles/
   newrelic-sysmond/
     tasks/
       main.yml
     templates/
       nrsysmond.cfg.j2
     vars/
       main.yml

Содержимое файла tasks/main.yml следующее:

---
- name: Add New Relic Repository
  apt_repository:
    repo: deb http://apt.newrelic.com/debian/ newrelic non-free
    state: present

- name: Add New Relic Signing Key
  apt_key:
    url: https://download.newrelic.com/548C16BF.gpg
    state: present

- name: Update Repositories
  apt:
    name: newrelic-sysmond
    update_cache: yes
    state: present

- name: Add New Relic Config
  template:
    src: nrsysmond.cfg.j2
    dest: /etc/newrelic/nrsysmond.cfg
    owner: newrelic
    group: newrelic

- name: Restart New Relic
  service:
    name: newrelic-sysmond
    state: restarted

Содержимое шаблона templates/nrsysmond.cfg.j2 выглядит так:

#
# Option : license_key
# Value  : 40-character hexadecimal string provided by New Relic. This is
#          required in order for the server monitor to start.
# Default: none
#
license_key={{ new_relic_key }}

# ...

#
# Setting: hostname
# Type   : string
# Purpose: Sets the name of the host (max 64 characters) that you wish to use
#          for reporting. This is usually determined automatically on startup
#          but you may want to change it if, for example, you have machine
#          generated hostnames that are not visually useful (for example, the
#          names generated by Docker containers).
# Default: The system configured host name
#
hostname={{ domain }}

# ...

Значения переменных задаются в конфигурационном файле vars/main.yml и должны выглядеть примерно так:

new_relic_key: 1234567890abcdefghijklmnopqrstuvwxyz
domain: example.com

Примечание. В вашем случае значения переменных будут другие — используйте их.

Тестовый набор инструкций (playbook) для установки роли на сервер в моем случае выглядит так:

---
- hosts: test1
  sudo: true
  roles:
    - newrelic-sysmond

Результат выполнения:

ansible-playbook playbooks/test.yml

PLAY [test1] ******************************************************************

GATHERING FACTS ***************************************************************
ok: [test1]

TASK: [newrelic-sysmond | Add New Relic Repository] ***************************
changed: [test1]

TASK: [newrelic-sysmond | Add New Relic Signing Key] **************************
changed: [test1]

TASK: [newrelic-sysmond | Update Repositories] ********************************
changed: [test1]

TASK: [newrelic-sysmond | Add New Relic Config] *******************************
changed: [test1]

TASK: [newrelic-sysmond | Restart New Relic] **********************************
changed: [test1]

PLAY RECAP ********************************************************************
test1                      : ok=6    changed=5    unreachable=0    failed=0

Спустя несколько мгновений данные мониторинга уже будут доступны в вашем аккаунте New Relic.

Добавить комментарий