Elastic Cloud
The following instructions explain how to Install the Pulse Agent for Elastic Cloud clusters.
For a smooth and efficient setup, we recommended using the Integration Wizard available in the Pulse platform. It will lead you step by step, making it easy to get up and running quickly.
If you'd like to explore Deployment options or dive deeper into installation details, continue with the detailed guide below.
Authentication methods
For optimal security and functionality, it is highly recommended to provide the Pulse Agent with credentials for a dedicated user with only the required permissions. You can create the user via the Kibana Dev Tools or the API. The syntax provided here is for the Kibana Dev Tools.
You may also not use any authentication method and skip to deployment.
Note: Operating clusters without authentication is strongly discouraged. Pulse is not held responsible for the possible consequences of doing so.
Username and Password
The guide below shows a step-by-step authentication setup via the API for the username and password method.
1. Create a role
PUT _security/role/pulse-additional-priviliges
{
"cluster" : [
"monitor_snapshot"
],
"applications": [
{
"application": "kibana-.kibana",
"privileges": [
"feature_stackAlerts.read"
],
"resources": [
"*"
]
}
]
}
2. Create the user
PUT _security/user/pulse-monitoring-collector
{
"password" : "PASSWORD",
"roles" : [ "remote_monitoring_collector","pulse-additional-priviliges"],
"full_name" : "Cluster metrics collector for Pulse",
"email" : "support@pulse.support"
}
Replace the following as needed:
pulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous stepPASSWORD
– The password for the dedicated monitoring user set up in the previous step
Deployment Options
Deploying the Pulse Agent for Elastic Cloud clusters is simple and quick. You can choose from various deployment configurations.
Click on the deployment environment option to learn more:
Kubernetes
To deploy the Pulse Agent on Kubernetes, create the deployment spec in a file called pulse-deployment.yaml
.
apiVersion: v1
kind: Secret
metadata:
name: pulse-config
type: Opaque
stringData:
PULSE_TOKEN: PULSE_TOKEN
ELASTICSEARCH_USER: pulse-monitoring-collector
ELASTICSEARCH_PASSWORD: PASSWORD
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: pulse-agent
name: pulse-agent
namespace: default
spec:
replicas: 1
revisionHistoryLimit: 2
selector:
matchLabels:
app: pulse-agent
template:
metadata:
labels:
app: pulse-agent
spec:
automountServiceAccountToken: false
containers:
- image: r.bigdataboutique.com/pulse-agent
imagePullPolicy: Always
name: pulse-agent
env:
- name: PULSE_AGENT_HEAP_SIZE
value: 4G
- name: PULSE_TOKEN
valueFrom:
secretKeyRef:
name: pulse-config
key: PULSE_TOKEN
- name: ELASTIC_CLOUD_ID
value: ELASTIC_CLOUD_ID
- name: ELASTICSEARCH_USER
valueFrom:
secretKeyRef:
name: pulse-config
key: ELASTICSEARCH_USER
- name: ELASTICSEARCH_PASSWORD
valueFrom:
secretKeyRef:
name: pulse-config
key: ELASTICSEARCH_PASSWORD
resources:
limits:
cpu: "1"
memory: 16Gi
requests:
cpu: 100m
memory: 4Gi
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 1
dnsPolicy: ClusterFirst
restartPolicy: Always
Next, replace the following values with:
PULSE_TOKEN
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform)pulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous stepPASSWORD
– The password for the dedicated monitoring user set up in the previous stepdefault
– The namespace in Kubernetes for the deploymentELASTIC_CLOUD_ID
– Your Cloud ID
Finally, apply the spec:
kubectl apply -f pulse-deployment.yaml
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.
Kubernetes via Helm
Create a values.yaml
file using the command below:
image:
repository: r.bigdataboutique.com/pulse-agent
pullPolicy: Always
tag: latest
env:
- name: PULSE_AGENT_HEAP_SIZE
value: 4G
- name: ELASTIC_CLOUD_ID
value: ELASTIC_CLOUD_ID
secretEnv:
PULSE_TOKEN: PULSE_TOKEN
ELASTICSEARCH_USER: pulse-monitoring-collector
ELASTICSEARCH_PASSWORD: PASSWORD
Replace the following as needed:
ELASTIC_CLOUD_ID
– Your Cloud IDPULSE_TOKEN
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform)pulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous stepPASSWORD
– The password for the dedicated monitoring user set up in the previous step
Finally, apply the spec:
helm upgrade -i pulse-agent oci://europe-west1-docker.pkg.dev/bdbq-pulse/pulse-helm/pulse-agent --create-namespace
--namespace YOUR_NAMESPACE -f values.yaml
For a full list of values, run the following command:
helm show values oci://europe-west1-docker.pkg.dev/bdbq-pulse/pulse-helm/pulse-agent
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.
Docker
Use the following command to deploy the Pulse Agent on Docker:
docker run -d --name pulse-agent \
--restart=always \
--net=host \
--env PULSE_AGENT_HEAP_SIZE='4G' \
--env PULSE_TOKEN='PULSE_TOKEN' \
--env ELASTIC_CLOUD_ID='ELASTIC_CLOUD_ID' \
--env ELASTICSEARCH_USER='pulse-monitoring-collector' \
--env ELASTICSEARCH_PASSWORD='PASSWORD' \
r.bigdataboutique.com/pulse-agent
Replace the following as needed:
PULSE_TOKEN
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform) ELASTIC_CLOUD_ID – Your Cloud IDpulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous stepPASSWORD
– The password for the dedicated monitoring user set up in the previous step
Confirm that the Agent is running and no errors are logged in the Agent.
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.
Amazon Elastic Container Service (ECS)
To deploy the Pulse Agent on ECS, you must first register the task definition and then create a service in your lastic Cloud cluster.
Register the task definition
Before deploying the Pulse Agent on ECS, make sure that the task specification is registered with your AWS account. Note that this is not specific to a single ECS cluster.
To create the task definition, create a file called pulse-agent.json
:
{
"family": "pulse-agent",
"containerDefinitions": [
{
"name": "pulse-agent",
"image": "r.bigdataboutique.com/pulse-agent",
"cpu": 1024,
"memory": 5120,
"portMappings": [],
"essential": true,
"environment": [
{
"name": "PULSE_AGENT_HEAP_SIZE",
"value": "4G"
},
{
"name": "PULSE_TOKEN",
"value": "PULSE_TOKEN"
},
{
"name": "ELASTIC_CLOUD_ID",
"value": "ELASTIC_CLOUD_ID"
},
{
"name": "ELASTICSEARCH_USER",
"value": "pulse-monitoring-collector"
},
{
"name": "ELASTICSEARCH_PASSWORD",
"value": "PASSWORD"
}
],
"environmentFiles": []
}
],
"networkMode": "awsvpc",
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "1024",
"memory": "5120",
"runtimePlatform": {
"cpuArchitecture": "X86_64",
"operatingSystemFamily": "LINUX"
}
}
Replace the following as needed:
PULSE_TOKEN
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform) ELASTIC_CLOUD_ID – Your Cloud IDpulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous stepPASSWORD
– The password for the dedicated monitoring user set up in the previous step
Next, register the task definition using this command:
aws ecs register-task-definition --cli-input-json file://pulse-agent.json
Create a service
After registering the task definition, create a service in the desired cluster. The Pulse Agent needs to be able to connect to both the monitored services and to https://incoming.pulse.support.
Make sure to select a subnet and security group that meets these requirements.
Use the following command to create a service:
aws ecs create-service --cluster ECS_CLUSTER_NAME \
--service-name pulse-agent \
--task-definition pulse-agent \
--desired-count 1 \
--launch-type "FARGATE" \
--network-configuration "awsvpcConfiguration={subnets=[subnet-abcd1234],securityGroups=[sg-abcd1234]}"
Replace the following as needed:
ECS_CLUSTER_NAME
– The name of the ECS cluster to run the task onsubnet-abcd1234
– Subnets to use for the tasksg-abcd1234
– Security groups to use for the task
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.
Nomad
Deploying Pulse Agent on a Nomad cluster is simple. Here’s a sample job spec that will deploy just the Pulse Agent:
job "pulse_agent" {
datacenters = ["dc1"]
type = "service"
priority = 50
update {
canary = 1
auto_promote = true
}
group "main" {
network {
port "agent_healthz" {
to = 8080
}
}
task "agent" {
driver = "docker"
config {
image = "r.bigdataboutique.com/pulse-agent"
ports = ["agent_healthz"]
volumes = [
"secrets/config.yml:/etc/pulse-agent/config.yml",
]
}
template {
destination = "secrets/config.yml"
data = <<-EOF
pulseToken: <PULSE_TOKEN_VALUE>
clusters:
- type: elastic-cloud
cloud_id: <ELASTIC_CLOUD_ID>
username: pulse-monitoring-collector
password: <PASSWORD>
EOF
}
resources {
cpu = 100
memory = 16384
}
service {
name = "pulse-agent"
port = "agent_healthz"
provider = "nomad"
check {
type = "http"
path = "/healthz"
interval = "30s"
timeout = "2s"
}
}
}
}
}
Replace the following as needed:
<PULSE_TOKEN_VALUE>
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform)pulse-monitoring-collector
– The name of the dedicated monitoring user set up in the previous step<PASSWORD>
– The password for the dedicated monitoring user set up in the previous step<ELASTIC_CLOUD_ID>
– Your Cloud ID
Note: You can also place the task in your existing cluster job.
Assuming you use this job spec and save it as pulse_agent.nomad
, upload the job spec to your Nomad cluster using this command:
nomad job run pulse_agent.nomad
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.
Cloud Run
Before deploying the Pulse Agent on Cloud Run, please refer to Direct VPC Access Limitations to see if Cloud Run works for you.
Create a file named cloudrun.yaml
with the following content and replace the values <YOUR_REGION>
, <YOUR_NETWORK>
, <YOUR_SUBNET>
and <PULSE_TOKEN>
as explained below.
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: pulse-agent
annotations:
run.googleapis.com/launch-stage: BETA
labels:
cloud.googleapis.com/location: <YOUR_REGION>
spec:
template:
metadata:
annotations:
run.googleapis.com/network-interfaces: '[{"network":<YOUR_NETWORK>,"subnetwork":<YOUR_SUBNET>}]'
run.googleapis.com/vpc-access-egress: "private-ranges-only"
spec:
serviceAccountName: "cloudrun-pulse-agent"
containers:
- image: "r.bigdataboutique.com/pulse-agent:latest"
env:
- name: PULSE_AGENT_HEAP_SIZE
value: 4G
- name: PULSE_TOKEN
value: <PULSE_TOKEN_VALUE>
resources:
limits:
cpu: "1"
memory: 4Gi
requests:
cpu: 100m
memory: 4Gi
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 1
Replace the following as needed:
<YOUR_REGION>
– Your Cloud Run region<YOUR_NETWORK>
– Your Cloud Run network<YOUR_SUBNET>
– Your Cloud Run subnet, make sure that it’s within YOUR_REGION.<PULSE_TOKEN_VALUE>
– The Pulse token for your organization (you can find it in the Account Settings of the Pulse Platform)
Run this command to deploy:
gcloud run services replace cloudrun.yaml --region <YOUR_REGION>
Replace the following as needed:
<YOUR_REGION>
– Your Cloud Run region
After successfully running the deployment command, the new cluster should appear on your Pulse homepage within a few minutes. You will receive an email notification once the cluster is available.
If the cluster doesn’t appear on the Pulse homepage or you encounter an error, please contact our support team via the Pulse system. Make sure to include your logs (including the error message) and deployment configuration.