--- - name: Install Metricsbeat hosts: all become: true vars: haproxy_ssl: false environment: "{{ deployment_environment_variables | default({}) }}" vars_files: - vars/variables.yml pre_tasks: - include_tasks: common_task_data_node_hosts.yml tasks: - include_tasks: common_task_install_elk_repo.yml - name: Ensure Metricsbeat is installed apt: name: metricbeat state: "{{ elk_package_state | default('present') }}" update_cache: true tags: - package_install - name: exit playbook after uninstall meta: end_play when: - elk_package_state | default('present') == 'absent' - name: Check for apache stat: path: /etc/apache2/sites-available register: apache2 - name: Check for ceph stat: path: /etc/ceph register: ceph - name: Check for haproxy stat: path: /etc/haproxy register: haproxy - name: Check for docker stat: path: /var/run/docker.sock register: docker - name: Check for httpd stat: path: /etc/httpd register: httpd - name: Check for memcached stat: path: /etc/memcached.conf register: memcached - name: Check for mysql stat: path: /var/lib/mysql register: mysql - name: Check for nginx stat: path: /etc/nginx/nginx.conf register: nginx - name: Check for rabbitmq stat: path: /var/lib/rabbitmq register: rabbitmq - name: Check for uwsgi stat: path: /etc/uwsgi register: uwsgi - name: Check for uwsgi stats sockets find: paths: /tmp file_type: any patterns: '*uwsgi-stats.sock' register: uwsgi_find_sockets - name: Set discovery facts set_fact: apache_enabled: "{{ (apache2.stat.exists | bool) or (httpd.stat.exists | bool) }}" ceph_enabled: "{{ ceph.stat.exists | bool }}" docker_enabled: "{{ docker.stat.exists | bool }}" haproxy_enabled: "{{ haproxy.stat.exists | bool }}" memcached_enabled: "{{ memcached.stat.exists | bool }}" mysql_enabled: "{{ mysql.stat.exists | bool }}" nginx_enabled: "{{ nginx.stat.exists | bool }}" rabbitmq_enabled: "{{ rabbitmq.stat.exists | bool }}" uwsgi_enabled: "{{ uwsgi.stat.exists | bool }}" uwsgi_sockets: "{{ uwsgi_find_sockets }}" # Apache 2 stats enablement - name: Drop apache2 stats site config template: src: apache-status.conf.j2 dest: /etc/apache2/sites-available/apache-status.conf when: apache_enabled - name: Enable apache2 stats site file: src: /etc/apache2/sites-available/apache-status.conf dest: /etc/apache2/sites-enabled/apache-status.conf state: link when: apache_enabled - name: Ensure apache2 stats mode is enabled apache2_module: name: status state: present when: apache_enabled - name: Reload apache2 service: name: apache2 state: reloaded when: apache_enabled # NGINX stats enablement - name: Drop nginx stats site config template: src: nginx-status.conf.j2 dest: /etc/nginx/sites-available/nginx-status.conf when: nginx_enabled - name: Enable nginx stats site file: src: /etc/nginx/sites-available/nginx-status.conf dest: /etc/nginx/sites-enabled/nginx-status.conf state: link when: nginx_enabled - name: Reload nginx service: name: nginx state: reloaded when: nginx_enabled post_tasks: - name: Drop metricbeat conf file template: src: templates/metricbeat.yml.j2 dest: /etc/metricbeat/metricbeat.yml - name: Enable and restart metricbeat systemd: name: "metricbeat" enabled: true state: restarted - name: Load Metricsbeat Dashboards hosts: all[0] become: true vars_files: - vars/variables.yml tasks: - name: Load templates shell: >- metricbeat setup {{ item }} -E 'output.logstash.enabled=false' -E 'output.elasticsearch.hosts={{ coordination_nodes | to_json }}' -e -v with_items: - "--template" - "--dashboards" register: templates until: templates is success retries: 3 delay: 2 tags: - beat-setup