feat(ext/fleet): Add example of APM Server agent

This commit is contained in:
Antoine Cotten 2022-10-24 18:13:49 +02:00
parent 74f5610f6d
commit 32bf9423ed
No known key found for this signature in database
GPG Key ID: 94637E68D4A79DD0
5 changed files with 87 additions and 7 deletions

View File

@ -29,6 +29,7 @@ jobs:
-f docker-compose.yml -f docker-compose.yml
-f extensions/logspout/logspout-compose.yml -f extensions/logspout/logspout-compose.yml
-f extensions/fleet/fleet-compose.yml -f extensions/fleet/fleet-compose.yml
-f extensions/fleet/agent-apmserver-compose.yml
-f extensions/metricbeat/metricbeat-compose.yml -f extensions/metricbeat/metricbeat-compose.yml
-f extensions/filebeat/filebeat-compose.yml -f extensions/filebeat/filebeat-compose.yml
-f extensions/heartbeat/heartbeat-compose.yml -f extensions/heartbeat/heartbeat-compose.yml
@ -122,14 +123,15 @@ jobs:
- name: Execute Fleet test suite - name: Execute Fleet test suite
run: | run: |
docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml up --remove-orphans -d fleet-server docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml -f extensions/fleet/agent-apmserver-compose.yml up --remove-orphans -d fleet-server apm-server
.github/workflows/scripts/run-tests-fleet.sh .github/workflows/scripts/run-tests-fleet.sh
- name: 'debug: Display state and logs (Fleet)' - name: 'debug: Display state and logs (Fleet)'
if: always() if: always()
run: | run: |
docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml ps docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml -f extensions/fleet/agent-apmserver-compose.yml ps
docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml logs fleet-server docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml -f extensions/fleet/agent-apmserver-compose.yml logs fleet-server
docker compose -f docker-compose.yml -f extensions/fleet/fleet-compose.yml -f extensions/fleet/agent-apmserver-compose.yml logs apm-server
# #
# Metricbeat # Metricbeat
@ -216,6 +218,7 @@ jobs:
-f docker-compose.yml -f docker-compose.yml
-f extensions/logspout/logspout-compose.yml -f extensions/logspout/logspout-compose.yml
-f extensions/fleet/fleet-compose.yml -f extensions/fleet/fleet-compose.yml
-f extensions/fleet/agent-apmserver-compose.yml
-f extensions/metricbeat/metricbeat-compose.yml -f extensions/metricbeat/metricbeat-compose.yml
-f extensions/filebeat/filebeat-compose.yml -f extensions/filebeat/filebeat-compose.yml
-f extensions/heartbeat/heartbeat-compose.yml -f extensions/heartbeat/heartbeat-compose.yml

View File

@ -9,9 +9,11 @@ source "$(dirname ${BASH_SOURCE[0]})/lib/testing.sh"
cid_es="$(container_id elasticsearch)" cid_es="$(container_id elasticsearch)"
cid_fl="$(container_id fleet-server)" cid_fl="$(container_id fleet-server)"
cid_apm="$(container_id apm-server)"
ip_es="$(service_ip elasticsearch)" ip_es="$(service_ip elasticsearch)"
ip_fl="$(service_ip fleet-server)" ip_fl="$(service_ip fleet-server)"
ip_apm="$(service_ip apm-server)"
log 'Waiting for readiness of Elasticsearch' log 'Waiting for readiness of Elasticsearch'
poll_ready "$cid_es" "http://${ip_es}:9200/" -u 'elastic:testpasswd' poll_ready "$cid_es" "http://${ip_es}:9200/" -u 'elastic:testpasswd'
@ -19,6 +21,9 @@ poll_ready "$cid_es" "http://${ip_es}:9200/" -u 'elastic:testpasswd'
log 'Waiting for readiness of Fleet Server' log 'Waiting for readiness of Fleet Server'
poll_ready "$cid_fl" "http://${ip_fl}:8220/api/status" poll_ready "$cid_fl" "http://${ip_fl}:8220/api/status"
log 'Waiting for readiness of APM Server'
poll_ready "$cid_apm" "http://${ip_apm}:8200/"
# We expect to find metrics entries using the following query: # We expect to find metrics entries using the following query:
# #
# agent.name:"fleet-server" # agent.name:"fleet-server"

View File

@ -0,0 +1,45 @@
version: '3.7'
# Example of Fleet-enrolled Elastic Agent pre-configured with an agent policy
# for running the APM Server integration (see kibana.yml).
#
# Run with
# docker-compose \
# -f docker-compose.yml \
# -f extensions/fleet/fleet-compose.yml \
# -f extensions/fleet/agent-apmserver-compose.yml \
# up
services:
apm-server:
build:
context: extensions/fleet/
args:
ELASTIC_VERSION: ${ELASTIC_VERSION}
volumes:
- apm-server:/usr/share/elastic-agent/state:z
environment:
FLEET_ENROLL: '1'
FLEET_TOKEN_POLICY_NAME: Agent Policy APM Server
FLEET_INSECURE: '1'
FLEET_URL: http://fleet-server:8220
# Enrollment.
# (a) Auto-enroll using basic authentication
ELASTICSEARCH_USERNAME: elastic
ELASTICSEARCH_PASSWORD: ${ELASTIC_PASSWORD:-}
# (b) Enroll using a pre-generated enrollment token
#FLEET_ENROLLMENT_TOKEN: <enrollment_token>
ports:
- 8200:8200
hostname: apm-server
# Elastic Agent does not retry failed connections to Kibana upon the initial enrollment phase.
restart: on-failure
networks:
- elk
depends_on:
- elasticsearch
- kibana
- fleet-server
volumes:
apm-server:

View File

@ -10,7 +10,7 @@ services:
- fleet-server:/usr/share/elastic-agent/state:z - fleet-server:/usr/share/elastic-agent/state:z
environment: environment:
FLEET_SERVER_ENABLE: '1' FLEET_SERVER_ENABLE: '1'
FLEET_SERVER_INSECURE_HTTP: 'true' FLEET_SERVER_INSECURE_HTTP: '1'
FLEET_SERVER_POLICY_ID: fleet-server-policy FLEET_SERVER_POLICY_ID: fleet-server-policy
# Fleet plugin in Kibana # Fleet plugin in Kibana
KIBANA_FLEET_SETUP: '1' KIBANA_FLEET_SETUP: '1'
@ -21,7 +21,7 @@ services:
# (b) Enroll using a pre-generated service token # (b) Enroll using a pre-generated service token
#FLEET_SERVER_SERVICE_TOKEN: <service_token> #FLEET_SERVER_SERVICE_TOKEN: <service_token>
ports: ports:
- '8220:8220' - 8220:8220
hostname: fleet-server hostname: fleet-server
# Elastic Agent does not retry failed connections to Kibana upon the initial enrollment phase. # Elastic Agent does not retry failed connections to Kibana upon the initial enrollment phase.
restart: on-failure restart: on-failure

View File

@ -32,11 +32,13 @@ xpack.fleet.packages:
version: latest version: latest
- name: elastic_agent - name: elastic_agent
version: latest version: latest
- name: apm
version: latest
xpack.fleet.agentPolicies: xpack.fleet.agentPolicies:
- name: Fleet Server policy - name: Fleet Server Policy
id: fleet-server-policy id: fleet-server-policy
description: Fleet Server policy description: Static agent policy for Fleet Server
monitoring_enabled: monitoring_enabled:
- logs - logs
- metrics - metrics
@ -50,3 +52,28 @@ xpack.fleet.agentPolicies:
- name: elastic_agent-1 - name: elastic_agent-1
package: package:
name: elastic_agent name: elastic_agent
- name: Agent Policy APM Server
id: agent-policy-apm-server
description: Static agent policy for the APM Server integration
monitoring_enabled:
- logs
- metrics
package_policies:
- name: system-1
package:
name: system
- name: elastic_agent-1
package:
name: elastic_agent
- name: apm-1
package:
name: apm
# See the APM package manifest for a list of possible inputs.
# https://github.com/elastic/apm-server/blob/v8.5.0/apmpackage/apm/manifest.yml#L41-L168
inputs:
- type: apm
vars:
- name: host
value: 0.0.0.0:8200
- name: url
value: http://apm-server:8200