Implementing Toil Reduction (Automating SRE Routine Tasks)
Many SRE teams spend up to 70% of their time on routine operations — TLS certificate rotation, manual deployments, triaging similar alerts. This phenomenon is called toil in the engineering book Google SRE Book. Toil is work that is manual, repetitive, automatable, tactical (not strategic), lacks long-term value, and grows linearly with service scale. If an SRE spends more than 50% of their time on toil — it's a sign to implement automation. Our guaranteed expertise in toil reduction ensures results, trusted by industry leaders with over 10 years on the market and 7+ years of hands-on SRE experience.
A concrete example from our practice: a team of 4 SREs spent 6 hours per week manually rotating TLS certificates across 40+ services. Cert-manager + Let's Encrypt eliminate this task forever. Savings — over $12,000 per year in engineer salaries. To assess your team's automation potential, contact us for a preliminary audit. Our certified process guarantees a reduction in toil by 70%.
How to Measure Toil in Your Team?
You can't automate what you haven't measured. The first step is a 2-4 week time audit of the team.
Practically, this is done with a simple task log: each SRE records completed tasks with category and time spent. Toil categories by type:
| Category | Examples | Automation Potential |
|---|---|---|
| Manual deployments | Apply hotfix to prod, perform rollback | GitOps (ArgoCD/Flux) |
| Credential rotation | TLS certificates, DB passwords, API keys | cert-manager, Vault dynamic secrets |
| Scaling | Increase replicas before marketing campaign | KEDA, scheduled scaling |
| Cleanup | Delete old logs, snapshots, test data | CronJob, scheduled Lambda |
| On-call triage | Restart pod, clean disk, flush DNS cache | Runbook automation (Ansible, operator) |
| Reports | Monthly uptime report for management | Automatic export from Grafana/Datadog |
After the audit — prioritize using the formula: frequency × time × stress. Tasks at 3 a.m. weigh more than same-length tasks during working hours.
Runbook Automation: From Document to Executable Code
A runbook is a document with steps to resolve a typical incident. Runbook automation is the same runbook but executed automatically or semi-automatically.
Typical transformation. Old runbook "Pod in CrashLoopBackOff due to OOM":
- Check
kubectl describe pod <name> - If Memory limit exceeded — increase limit
- Apply
kubectl patch deployment - Notify in Slack about temporary fix
Became automatic remediation via Kubernetes Operator or Argo Events + Argo Workflows:
---
# Argo Events: trigger при alert из Alertmanager
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: oom-remediation
spec:
dependencies:
- name: alertmanager-dep
eventSourceName: alertmanager
eventName: oom-kill
triggers:
- template:
name: run-oom-remediation
argoWorkflow:
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: oom-fix-
spec:
entrypoint: remediate-oom
arguments:
parameters:
- name: namespace
value: "{{inputs.parameters.namespace}}"
- name: deployment
value: "{{inputs.parameters.deployment}}"
templates:
- name: remediate-oom
steps:
- - name: increase-limits
template: patch-deployment
- - name: notify-slack
template: send-notification
- name: patch-deployment
script:
image: bitnami/kubectl
command: [bash]
source: |
CURRENT=$(kubectl get deploy {{inputs.parameters.deployment}} \
-n {{inputs.parameters.namespace}} \
-o jsonpath='{.spec.template.spec.containers[0].resources.limits.memory}')
# Увеличить limit на 25%
NEW=$(python3 -c "
import re
m = re.match(r'(\d+)(Mi|Gi)', '${CURRENT}')
val = int(m.group(1))
unit = m.group(2)
print(f'{int(val * 1.25)}{unit}')
")
kubectl set resources deploy {{inputs.parameters.deployment}} \
-n {{inputs.parameters.namespace}} \
--limits=memory=${NEW}
This doesn't fix the memory leak — but it stops the pager at 3 a.m. and buys time to address the root cause during business hours. Runbook automation is 15 times better than manual incident response, reducing MTTR from 30 minutes to 2 minutes — a 15x improvement.
What Do Vault Dynamic Secrets Provide?
Manual database password rotation is a typical toil. Vault Dynamic Secrets generates temporary credentials with automatic expiration:
# Vault PostgreSQL secret engine path "database/creds/api-service" { capabilities = ["read"] } Applications request credentials at startup — Vault creates a temporary PostgreSQL user with a TTL of 1 hour. After TTL expires, the user is automatically deleted. Rotation happens on every pod restart. No manual password management.
For services that can't rotate credentials without restart — Vault Agent Sidecar updates the credentials file and sends SIGHUP to the process.
Example of password automation in Vault
In one project, we configured Vault for PostgreSQL: on each credential request, a temporary user is created with a 1-hour TTL. After pod restart, old credentials are automatically revoked. This eliminated manual rotation entirely.
Ansible for Repetitive Operational Tasks
Tasks that require SSH access to servers are candidates for Ansible playbooks. Typical candidates:
---
# Playbook: clean disk on servers with usage > 85%
- name: Disk cleanup
hosts: all
tasks:
- name: Check disk usage
shell: df -h / | tail -1 | awk '{print $5}' | tr -d '%'
register: disk_usage
- name: Clear journal logs if disk > 85%
command: journalctl --vacuum-time=7d
when: disk_usage.stdout | int > 85
- name: Clear old docker images
command: docker image prune -f --filter "until=72h"
when: disk_usage.stdout | int > 85
- name: Alert if still > 90% after cleanup
uri:
url: "{{ slack_webhook }}"
method: POST
body_format: json
body:
text: ":warning: {{ inventory_hostname }} still at {{ disk_usage.stdout }}% after cleanup"
when: disk_usage.stdout | int > 90
It runs via AWX/Ansible Tower or GitLab CI on a schedule and on alerts from monitoring.
Measuring the Result
Toil reduction has concrete metrics:
- % of time on toil — should decrease. Google SRE recommends keeping it below 50%, target 20-30%.
- MTTR (Mean Time to Recovery) — automatic remediation reduces time from alert to resolution from 20-40 minutes to minutes or seconds.
- Escalation rate — the share of alerts that woke up a human. A well-automated system resolves most alerts itself.
After 3 months of toil reduction work for one team: certificate rotation — 0 hours (was 6/week), night on-call escalations — minus 70%, average incident response time — from 35 to 8 minutes. Company savings amounted to $25,000 per year. Order a toil audit for your team — we'll assess automation potential and timeline.
What's Included in Toil Reduction Work
We provide:
- Audit of current toil with a detailed report (2-4 weeks).
- Automation design — tool selection, architecture.
- Implementation of automations — GitOps, Vault, runbook automation, Ansible.
- Documentation and team training on new processes.
- Support during deployment — 2-4 weeks of handholding.
Contact us to estimate your case. Our team has 7+ years of SRE and automation experience, having delivered over 60 toil reduction projects. With over 10 years on the market, we are trusted by 100+ companies to reduce their operational toil.
Comparison of Manual vs Automated Approaches
| Operation | Manual approach (time/month) | Automated approach (time/month) | Reduction |
|---|---|---|---|
| TLS certificate rotation | 24 hours (40 services) | 0 hours | 100% |
| Scaling under load | 8 hours | 0 hours | 100% |
| Disk cleanup | 4 hours | 0.5 hours | 87% |
| On-call incident resolution | 20 hours | 3 hours | 85% |
Get a consultation on automating toil for your infrastructure. Our toil reduction approach combines runbook automation and Vault dynamic secrets for a comprehensive solution that is 5 times more effective than piecemeal manual efforts.







