{"id":50066635,"url":"https://github.com/lsparey/simple-logging","last_synced_at":"2026-06-05T16:00:51.815Z","repository":{"id":359437266,"uuid":"1246086741","full_name":"lsparey/simple-logging","owner":"lsparey","description":"Simple, lightweight log aggregation for Kubernetes","archived":false,"fork":false,"pushed_at":"2026-05-30T14:27:01.000Z","size":241,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T15:15:17.880Z","etag":null,"topics":["k8s","kubernetes","logging"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lsparey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-21T21:28:31.000Z","updated_at":"2026-05-30T14:27:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lsparey/simple-logging","commit_stats":null,"previous_names":["lsparey/simple-logging"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/lsparey/simple-logging","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsparey%2Fsimple-logging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsparey%2Fsimple-logging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsparey%2Fsimple-logging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsparey%2Fsimple-logging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lsparey","download_url":"https://codeload.github.com/lsparey/simple-logging/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsparey%2Fsimple-logging/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33949039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["k8s","kubernetes","logging"],"created_at":"2026-05-22T00:01:01.168Z","updated_at":"2026-06-05T16:00:51.792Z","avatar_url":"https://github.com/lsparey.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"frontend/public/logo.svg\" alt=\"simple-logging logo\" width=\"180\" /\u003e\n\u003c/p\u003e\n\n# simple-logging\n\nSimple, lightweight log aggregation for Kubernetes. simple-logging automatically collects logs from every pod across all namespaces, persists them to disk, and surfaces them in a clean web UI — no external dependencies, no complex configuration.\n\n## Features\n\n- **Live log streaming** — real-time log tailing from all pods across all namespaces via a gRPC-Web API\n- **Persisted log storage** — logs are written to a PersistentVolumeClaim (one file per pod) and retained for 30 days\n- **Automatic pod discovery** — new pods are detected and streamed as soon as they start\n- **Single helm install** — deploy the full stack with one `helm install` command\n- **Very low resource requirements** — requests only 150m CPU / 160Mi memory\n\n## Installation\n\n### Prerequisites\n\n- Kubernetes cluster (1.24+)\n- Helm 3\n- A default StorageClass (or specify one explicitly)\n- An Ingress controller (e.g. Traefik, nginx) if you want the UI exposed externally\n\n### 1. Add the Helm repository\n\n```bash\nhelm repo add simple-logging https://lsparey.github.io/simple-logging\nhelm repo update\n```\n\n### 2. Install\n\n```bash\nhelm install simple-logging simple-logging/simple-logging \\\n  --namespace simple-logging \\\n  --create-namespace \\\n  --set ingress.enabled=true \\\n  --set ingress.host=logs.example.com \\\n  --set ingress.className=traefik\n```\n\nReplace `logs.example.com` with your desired hostname and `traefik` with your Ingress controller class.\n\nOnce the pod is running, open `http://logs.example.com` in your browser to view logs.\n\n### Key values\n\n| Value | Default | Description |\n|---|---|---|\n| `ingress.enabled` | `false` | Expose the UI via an Ingress |\n| `ingress.host` | `\"\"` | Hostname for the Ingress rule |\n| `ingress.className` | `\"\"` | Ingress controller class (e.g. `traefik`, `nginx`) |\n| `config.logCollectionMode` | `fileTail` | Log collection mode: `fileTail` or `api` (see above) |\n| `config.nodeLogsRoot` | `/var/log/pods` | Host path for CRI pod logs (fileTail mode only) |\n| `config.dockerLogsRoot` | `/var/lib/docker/containers` | Host path for Docker log content (fileTail + Docker only) |\n| `config.retentionDays` | `30` | Days to keep log files after last write |\n| `persistence.size` | `20Gi` | PVC size for log storage |\n| `persistence.storageClass` | `\"\"` | StorageClass name (empty = cluster default) |\n\n### Full example with custom values\n\n```bash\nhelm install simple-logging simple-logging/simple-logging \\\n  --namespace simple-logging \\\n  --create-namespace \\\n  --set ingress.enabled=true \\\n  --set ingress.host=logs.example.com \\\n  --set ingress.className=nginx \\\n  --set persistence.size=50Gi \\\n  --set config.retentionDays=60\n```\n\n## Log collection modes\n\nsimple-logging supports two ways to collect pod logs, controlled by `config.logCollectionMode` in the Helm values.\n\n### `fileTail` (default)\n\nThe collector mounts the node's CRI log directory (`/var/log/pods`) as a `hostPath` volume and tails log files directly on the node filesystem using filesystem events (`inotify`). No persistent HTTP connections are opened to kube-apiserver, kubelet, or containerd.\n\n**Recommended for:** single-node clusters, k3s, Docker Desktop, or any setup where the simple-logging pod always runs on the same node as the pods it monitors.\n\n**Not suitable for:** multi-node clusters — simple-logging is a single Deployment replica and cannot see the log files of pods scheduled on other nodes.\n\nTo use this mode you must also set:\n\n| Value | Default | Description |\n|---|---|---|\n| `config.nodeLogsRoot` | `/var/log/pods` | Host path where the runtime writes pod log symlinks |\n| `config.dockerLogsRoot` | `/var/lib/docker/containers` | Only needed when the runtime is Docker; leave empty for containerd |\n\n### `api`\n\nThe collector opens one persistent HTTP streaming connection per pod via the Kubernetes log API (`client-go` `GetLogs` with `follow=true`). A shared Informer watches for pod add/delete events so new pods are picked up automatically.\n\n**Recommended for:** multi-node clusters where simple-logging cannot access host filesystems of other nodes.\n\n**Trade-off:** on busy clusters with many pods this can cause elevated CPU usage in kubelet and containerd due to the number of open log-streaming connections.\n\n```bash\nhelm install simple-logging simple-logging/simple-logging \\\n  --namespace simple-logging \\\n  --create-namespace \\\n  --set config.logCollectionMode=api\n```\n\n## Upgrading\n\n```bash\nhelm repo update\nhelm upgrade simple-logging simple-logging/simple-logging --namespace simple-logging\n```\n\n## Uninstalling\n\n```bash\nhelm uninstall simple-logging --namespace simple-logging\n```\n\n\u003e **Note:** Uninstalling does not delete the PVC. To remove persisted logs, delete the PVC manually: `kubectl delete pvc -n simple-logging -l app.kubernetes.io/instance=simple-logging`\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsparey%2Fsimple-logging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flsparey%2Fsimple-logging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsparey%2Fsimple-logging/lists"}