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.
Copy 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
Copy kubectl get services datasentinel-agent -o jsonpath= "{.status.loadBalancer.ingress[0].ip}"
Download the definition file
Copy 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
Copy 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
Copy // CLI command example
/agent/datasentinel/datasentinel status agent
You can also use the API to configure the agent.
Copy // Check agent status
curl -k https:// ${DATASENTINEL_AGENT_HOST} : ${DATASENTINEL_AGENT_PORT} /api/agent/status
Update token with valid license
Copy 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
Copy 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
Copy curl -k --header "api-token: $TOKEN" --request POST https:// ${DATASENTINEL_AGENT_HOST} : ${DATASENTINEL_AGENT_PORT} /api/server/test-upload
Add a PostgreSQL connection
Copy 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
Copy curl -k --header "api-token: $TOKEN" -X GET https:// ${DATASENTINEL_AGENT_HOST} : ${DATASENTINEL_AGENT_PORT} /api/connections