Agent
The agent is accessible as a Docker image through the public Docker Hub.
https://hub.docker.com/repository/docker/datasentinel/datasentinel-agent/general
Howto
Because the agent registers the server name and listening port to the platform, you need to expose them externally and pass the values when running a new agent.
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
// 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