Looking for the main Elastic Agent client (GoLang)?
This is a python implementation, and is a technical preview.
Agent needs a binary to run. A simple executable shell script will do.
#!/bin/bash
PYTHON_PATH=/path/to/bin/python
PY_AGENT_CLIENT_PATH=/path/to/python-elastic-agent-client
$PYTHON_PATH $PY_AGENT_CLIENT_PATH/elastic_agent_client/examples/fake/component.pyPut those contents in a elastic-agent*/data/elastic-agent*/components/python-elastic-agent-client file, and
chmod 755 elastic-agent*/data/elastic-agent*/components/python-elastic-agent-clientYou'll also need to create a specfile at elastic-agent*/data/elastic-agent*/components/python-elastic-agent-client.spec.yml
with the contents:
version: 2
inputs:
- name: fake-py
description: "Fake Py component input"
platforms: &platforms
- linux/amd64
- linux/arm64
- darwin/amd64
- darwin/arm64
- windows/amd64
- container/amd64
- container/arm64
outputs: &outputs
- elasticsearch
shippers: &shippers
- shipper
command: &command
restart_monitoring_period: 5s
maximum_restarts_per_period: 1
timeouts:
restart: 1s
args: []Then use this input in your elastic-agent.yml with:
inputs:
- type: fake-py
id: fake-py
use_output: default
You can easily tail the logs by running:
sudo ./elastic-agent 2>&1 >/dev/null | jq '.message'
To get started, run:
make clean installThe proto definitions for Elastic Agent live in the GoLang implementation repo.
To avoid duplicate code, they are not checked in here.
Instead, when make generate runs, it will:
- download the raw
*.protofiles from the GoLang repo - use
grpc_tools.protocto generate python code from those specs - store that generated code in
elastic_agent_client/generated - post-process them a bit (grpc_tools generates python2 imports, instead of python3 🤷)
- remove all inline TODOs
- write a blog
- one day...
- support "custom actions" to trigger a sync, test connection, etc
- capture diagnostic metrics. See suggested metrics
- add automation to re-generate+PR if source protos are changed. GH action on elastic-agent-client repo?