Agent

The deployment use the image available on Docker Hub

One agent can effectively monitor multiple PostgreSQL clusters.

You can also use the Agentless approach if you donโ€™t want to install an agent

Create Load Balancer

This example use a service of type LoadBalancer to expose the agent port.

kubectl apply -f https://raw.githubusercontent.com/datasentinel/datasentinel_toolkit/master/docker/agent/kubernetes-loadbalancer.yml

Deploy Agent

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.

  • Get the external ip of the load balancer

kubectl get services datasentinel-agent  -o jsonpath="{.status.loadBalancer.ingress[0].ip}"
  • Download the definition file

wget https://raw.githubusercontent.com/datasentinel/datasentinel_toolkit/master/docker/agent/kubernetes.yml

You need to replace the DATASENTINEL_AGENT_HOST value by the Load balancer IP

  • Then create the agent

kubectl apply -f kubernetes.yml

A persistent volume datasentinel-agent-config-volume (Mount path /agent/config) is created to store agent configuration files

You can use the agent CLI by attaching a shell: kubectl exec โ€“stdin โ€“tty datasentinel-agent โ€“ /bin/bash

// CLI command example
/agent/datasentinel/datasentinel status agent

You can also use the API to configure the agent.

// 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

Last updated