A python implementation of an Elastic Agent Client
Project description
Python Elastic Agent client
Looking for the main Elastic Agent client (GoLang)?
This is a python implementation, and is a technical preview.
Using an example
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.py
Put 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-client
You'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'
Developing
To get started, run:
make clean install
What's happening?
Protobuf
The 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
*.proto
files from the GoLang repo - use
grpc_tools.protoc
to 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 🤷)
TODO List
- remove all inline TODOs
- write tests
- use ECS logging
- add NOTICE file
- push to pypi
- open source
- record a demo
- 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?
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file elastic_agent_client-0.0.1.dev1.tar.gz
.
File metadata
- Download URL: elastic_agent_client-0.0.1.dev1.tar.gz
- Upload date:
- Size: 35.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1887bbeb4ff77a7090b67b036ae421474f596cdc3844f75c464f71418ebb4a08 |
|
MD5 | b6d3f103ca53fe6fda723e2d57529f4e |
|
BLAKE2b-256 | 88ce1773bfa4fbaf8bf3fc30eefc1877ae01022f0078dcab0e080cc57ac5a28f |
File details
Details for the file elastic_agent_client-0.0.1.dev1-py3-none-any.whl
.
File metadata
- Download URL: elastic_agent_client-0.0.1.dev1-py3-none-any.whl
- Upload date:
- Size: 49.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ea87186156e9e274396795022a7db1e15166a6369a6bb3a9d2fcddd724fb0ca |
|
MD5 | 40464bd1c9465d22bf233c8893a1c536 |
|
BLAKE2b-256 | 6f64d4ae6e43ccdf149c4b3729475a1fc2b920a38ff5c412b78d90a2b4e349dd |