Skip to main content

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:

  1. download the raw *.proto files from the GoLang repo
  2. use grpc_tools.protoc to generate python code from those specs
  3. store that generated code in elastic_agent_client/generated
  4. post-process them a bit (grpc_tools generates python2 imports, instead of python3 🤷)

TODO List

  • 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?

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elastic_agent_client-0.0.2.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

elastic_agent_client-0.0.2-py3-none-any.whl (50.3 kB view details)

Uploaded Python 3

File details

Details for the file elastic_agent_client-0.0.2.tar.gz.

File metadata

  • Download URL: elastic_agent_client-0.0.2.tar.gz
  • Upload date:
  • Size: 36.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.16

File hashes

Hashes for elastic_agent_client-0.0.2.tar.gz
Algorithm Hash digest
SHA256 c538b07246531f00fd9455d43d78a30aeec5bc3489fa974a1305a013f55abe62
MD5 82d89e45573005e3edf980c7de5b4784
BLAKE2b-256 8d846729889d63d293ae1476c16a9e2a847e919c79ccdab066b2c62e421d4d64

See more details on using hashes here.

File details

Details for the file elastic_agent_client-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for elastic_agent_client-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 362a7ad563d47779fe86baa2869801dae0c719e3cd28f284fabae96eb4419c07
MD5 dc2a232aa8e1fcffbd5aad269ff2b6ac
BLAKE2b-256 7d18e3144ddcc988c3f239d975d39ed8bc46a452077dba62eefa1f7e284d104b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page