Common issues and solutions for ColdTrack deployment and operation.
Run these commands first to check overall system health:
# Check all services
docker ps
aws iot describe-thing --thing-name CT-001
aws lambda get-function --function-name ColdTrack-Process
# Check logs
docker logs coldtrack-influxdb --tail 50
docker logs coldtrack-grafana --tail 50
aws logs tail /aws/lambda/ColdTrack-Process --follow
Symptoms:
❌ Error: AWS IoT SDK not installed
Run: pip install awsiotsdk
Solution:
cd device/simulator
pip3 install -r requirements.txt
Symptoms:
❌ Connection failed: [Errno 8] nodename nor servname provided, or not known
Possible Causes:
Solution:
cat certificates/iot_endpoint.txt
# Should be: xxxxx.iot.eu-west-2.amazonaws.com
ls -l certificates/
# Should see: device.crt, private.key, AmazonRootCA1.pem
openssl s_client \
-connect $(cat certificates/iot_endpoint.txt):8883 \
-CAfile certificates/AmazonRootCA1.pem \
-cert certificates/device.crt \
-key certificates/private.key
# Should see "Verify return code: 0 (ok)"
CERT_ARN=$(cat certificates/cert_arn.txt)
aws iot list-attached-policies –target $CERT_ARN
5. **Re-run setup if needed:**
```bash
./scripts/setup_aws.sh
Symptoms:
❌ Config file not found: config.json
📝 Using default configuration
Solution:
# Copy example config
cp device/simulator/config.json.example device/simulator/config.json
# Or let simulator create default
python3 device/simulator/simulator.py
# Edit config.json with your IoT endpoint
Symptoms:
Diagnosis:
# Check IoT Rule
aws iot get-topic-rule --rule-name ProcessData
# Check Lambda is triggered
aws logs tail /aws/lambda/ColdTrack-Process --follow
# Subscribe to IoT topic
aws iot-data publish \
--topic coldtrack/test \
--cli-binary-format raw-in-base64-out \
--payload '{"test": "message"}'
Solution:
aws lambda get-policy --function-name ColdTrack-Process
# Should show iot.amazonaws.com as principal
./scripts/deploy_lambda.sh
aws logs tail /aws/lambda/ColdTrack-Process --follow
Symptoms:
An error occurred (ResourceNotFoundException) when calling GetFunction
Solution:
# Deploy Lambda
./scripts/deploy_lambda.sh
Symptoms:
Task timed out after 30.00 seconds
REPORT Memory Size: 256 MB Max Memory Used: 256 MB
Solution:
aws lambda update-function-configuration \
--function-name ColdTrack-Process \
--timeout 60
aws lambda update-function-configuration \
--function-name ColdTrack-Process \
--memory-size 512
Symptoms:
[ERROR] AttributeError: module 'influxdb_client' has no attribute 'InfluxDBClient'
Solution:
# Re-package Lambda with correct dependencies
cd cloud/lambda/data_processor
rm -rf __pycache__/
pip3 install -r requirements.txt -t . --upgrade
Then redeploy:
./scripts/deploy_lambda.sh
Symptoms:
[ERROR] ConnectionError: HTTPConnectionPool(host='localhost', port=8086)
Possible Causes:
Solution:
curl http://localhost:8086/health
aws lambda update-function-configuration \
--function-name ColdTrack-Process \
--environment Variables="{
INFLUX_URL=http://YOUR_INFLUXDB_IP:8086,
INFLUX_TOKEN=your_token,
INFLUX_ORG=coldtrack,
INFLUX_BUCKET=sensors
}"
curl ifconfig.me
INFLUX_URL=http://YOUR_PUBLIC_IP:8086
---
## InfluxDB Issues
### Issue: InfluxDB container won't start
**Symptoms:**
Error response from daemon: Conflict. The container name “/coldtrack-influxdb” is already in use
**Solution:**
```bash
# Stop and remove existing container
docker stop coldtrack-influxdb
docker rm coldtrack-influxdb
# Restart
docker-compose -f config/docker-compose.yml up -d
Symptoms:
unauthorized: unauthorized access
Solution:
nano .env
INFLUX_TOKEN=your_new_token
./scripts/deploy_lambda.sh
---
### Issue: "No data in InfluxDB"
**Symptoms:**
- Simulator running
- Lambda processing
- But queries return empty
**Diagnosis:**
```bash
# Query InfluxDB directly
docker exec -it coldtrack-influxdb influx query '
from(bucket: "sensors")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "sensor_data")
'
Solution:
docker exec -it coldtrack-influxdb influx bucket list
# Should show: sensors
docker exec -it coldtrack-influxdb influx bucket create \
--name sensors \
--org coldtrack \
--retention 90d
docker exec -it coldtrack-influxdb influx write \
--bucket sensors \
--org coldtrack \
'sensor_data,device_id=CT-001 temperature=5.5'
Symptoms:
Error: unable to create database: permission denied
Solution:
# Fix permissions
sudo chown -R 472:472 grafana-data/
# Restart
docker-compose -f config/docker-compose.yml restart grafana
Symptoms:
Solution:
from(bucket: "sensors")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "sensor_data")
|> filter(fn: (r) => r._field == "temperature")
Symptoms:
Dashboard validation failed
Solution:
# Manually import via UI
# 1. Copy dashboard JSON content
cat visualization/dashboards/main_dashboard.json
# 2. In Grafana:
# - Click "+" → Import
# - Paste JSON
# - Click Import
Symptoms:
An error occurred (ResourceNotFoundException) when calling DescribeThing
Solution:
# Create thing
aws iot create-thing --thing-name CT-001
# Or re-run setup
./scripts/setup_aws.sh
Symptoms:
Solution:
# Get certificate ARN
CERT_ARN=$(cat certificates/cert_arn.txt)
# Attach policy
aws iot attach-policy \
--policy-name ColdTrackPolicy \
--target $CERT_ARN
Symptoms:
Diagnosis:
# Check rule exists
aws iot get-topic-rule --rule-name ProcessData
# Check Lambda permission
aws lambda get-policy --function-name ColdTrack-Process
Solution:
# Add Lambda permission for IoT
aws lambda add-permission \
--function-name ColdTrack-Process \
--statement-id IoTInvoke \
--action lambda:InvokeFunction \
--principal iot.amazonaws.com
# Re-create rule
./scripts/deploy_lambda.sh
Symptoms:
[Errno 60] Operation timed out
Possible Causes:
Solution:
ping google.com
nslookup $(cat certificates/iot_endpoint.txt)
telnet $(cat certificates/iot_endpoint.txt) 8883
# Allow port 8883
sudo ufw allow 8883/tcp # Linux
# Or configure Mac firewall settings
Symptoms:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
Solution:
# Start Docker Desktop (Mac/Windows)
open -a Docker
# Or start Docker daemon (Linux)
sudo systemctl start docker
Symptoms:
Error starting userland proxy: bind: address already in use
Solution:
lsof -i :8086 # InfluxDB
lsof -i :3000 # Grafana
Symptoms:
Solution:
# Increase publish interval
# Edit device/simulator/config.json
{
"publish_interval": 120 # Increase from 60 to 120 seconds
}
Symptoms:
InfluxDB container using 2GB+ memory
Solution:
# Set memory limits in docker-compose.yml
services:
influxdb:
...
mem_limit: 1g
mem_reservation: 512m
If you can’t resolve your issue:
aws logs tail /aws/lambda/ColdTrack-Process –follow
docker logs coldtrack-influxdb –tail 100
docker logs coldtrack-grafana –tail 100
2. **Create GitHub issue:**
- https://github.com/Adhish-Rao2405/Cold_Chain_Monitoring_System/issues
- Include error messages and logs
- Describe what you've tried
3. **Contact team:**
- Email: [your-email]
- Include your setup configuration
---
## Preventive Measures
### Regular Maintenance
```bash
# Weekly: Clear old logs
aws logs delete-log-group --log-group-name /aws/lambda/ColdTrack-Process
# Monthly: Backup InfluxDB
docker exec coldtrack-influxdb influx backup /tmp/backup
docker cp coldtrack-influxdb:/tmp/backup ./backups/
# Quarterly: Rotate certificates
# (See AWS IoT documentation)