Agent

The agent is accessible as a Docker image through the public Docker Hub.

https://hub.docker.com/repository/docker/datasentinel/datasentinel-agent/general

A single agent has the capability to monitor multiple PostgreSQL clusters

Howto

This allows the platform to communicate with the agent.

// download, install and run the agent

export DATASENTINEL_AGENT_HOST=172.16.250.199
export DATASENTINEL_AGENT_PORT=8383

docker run -d -p $DATASENTINEL_AGENT_PORT:$DATASENTINEL_AGENT_PORT -e DATASENTINEL_AGENT_HOST=$DATASENTINEL_AGENT_HOST -e DATASENTINEL_AGENT_PORT=$DATASENTINEL_AGENT_PORT datasentinel/datasentinel-agent

You can use the agent CLI by attaching a shell (docker exec -it <mycontainer> bash)

// Example agent CLI command
/agent/datasentinel/datasentinel status agent

Subsequently, you can use the API to configure the agent. For detailed information, please refer to the Agent API documentation. Configuration files are stored within the volume /agent/config

// Check agent status
curl -k https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/agent/status

Update token with valid license

export TOKEN="Valid license key"

cat <<EOF >body.json
{
    "value" : "$TOKEN"
}
EOF

curl -k --header 'Content-Type: application/json' --request PUT "https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/server/token" -d @body.json

Set Datasentinel upload platform

cat <<EOF >upload_server.json
{
  "host": "datasentinel_server",
  "port": 443
}
EOF

curl -k --header "api-token: $TOKEN" --header 'Content-Type: application/json' -X PUT https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/server -d @upload_server.json
# Check upload server
curl -k -X GET https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/server

Test the communication between the agent and the platform

curl -k --header "api-token: $TOKEN" --request POST https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/server/test-upload

Add a PostgreSQL connection

cat > body.json <<EOF
{
  "host": "172.16.250.199",
  "port": 5432,
  "user": "datasentinel",
  "password": "myPassword",
  "tags": "application=application_name,environment=docker,datacenter=datacenter"
}
EOF

curl -k --header "api-token: $TOKEN" --header 'Content-Type: application/json' --request POST "https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/connections/pg_docker_example" -d @body.json

Check connection

curl -k --header "api-token: $TOKEN" -X GET https://${DATASENTINEL_AGENT_HOST}:${DATASENTINEL_AGENT_PORT}/api/connections

Dockerfile

https://github.com/datasentinel/datasentinel_toolkit/blob/master/docker/agent/Dockerfile
FROM ubuntu:latest

ARG DATASENTINEL_AGENT_PORT=8282

ENV DATASENTINEL_DIR=/agent
ENV DOCKER_ENV=yes

ADD datasentinel-agent-debian-buster-2.7.1.tar.gz $DATASENTINEL_DIR/


RUN apt-get update \ 
    && apt-get install -y libssl-dev --no-install-recommends \
    && mkdir -p $DATASENTINEL_DIR/config \
    && chgrp -R 0 $DATASENTINEL_DIR \
    && chmod -R g+rwX $DATASENTINEL_DIR \
    && apt-get clean -y autoclean  \
    && rm -rf /var/cache/apk/* \
    && rm -rf /var/lib/apt/lists/*

VOLUME [ "${DATASENTINEL_DIR}/config"]

USER 1001

WORKDIR $DATASENTINEL_DIR

EXPOSE $DATASENTINEL_AGENT_PORT

CMD $DATASENTINEL_DIR/datasentinel/datasentinel start agent

Docker-compose

wget https://raw.githubusercontent.com/datasentinel/datasentinel_toolkit/master/docker/agent/docker-compose.yml
docker-compose up -d
https://github.com/datasentinel/datasentinel_toolkit/blob/master/docker/agent/docker-compose.yml
version: '2.2'
volumes:
  agent-config:
services:
  agent:
    image: datasentinel/datasentinel-agent
    container_name: datasentinel-agent
    restart: always
    ports:
        - 8383:8383
    environment:
      - DATASENTINEL_AGENT_HOST=$HOSTNAME
      - DATASENTINEL_AGENT_PORT=8383

Last updated