{"id":16327356,"url":"https://github.com/bryopsida/syslog-portal","last_synced_at":"2025-03-24T21:42:38.247Z","repository":{"id":65232965,"uuid":"582498437","full_name":"bryopsida/syslog-portal","owner":"bryopsida","description":"Ingest syslog rfc5424 data and publish it to couchdb","archived":false,"fork":false,"pushed_at":"2024-05-28T13:17:14.000Z","size":1446,"stargazers_count":1,"open_issues_count":10,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2024-05-29T01:06:03.650Z","etag":null,"topics":["docker","nodejs","rfc5424","syslog","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bryopsida.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2022-12-27T02:57:41.000Z","updated_at":"2024-05-30T03:50:53.554Z","dependencies_parsed_at":"2024-01-10T00:27:46.753Z","dependency_job_id":"ad66d1c3-f819-4abf-87e4-72c38e6bd87c","html_url":"https://github.com/bryopsida/syslog-portal","commit_stats":{"total_commits":87,"total_committers":5,"mean_commits":17.4,"dds":0.3793103448275862,"last_synced_commit":"dc833902fce9eaa9a2d709b5f0215062e066d7ca"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":"bryopsida/node-ts-starter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryopsida%2Fsyslog-portal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryopsida%2Fsyslog-portal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryopsida%2Fsyslog-portal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryopsida%2Fsyslog-portal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bryopsida","download_url":"https://codeload.github.com/bryopsida/syslog-portal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245359253,"owners_count":20602322,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","nodejs","rfc5424","syslog","typescript"],"created_at":"2024-10-10T23:11:12.068Z","updated_at":"2025-03-24T21:42:38.221Z","avatar_url":"https://github.com/bryopsida.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Syslog-Portal\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=security_rating)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=bryopsida_syslog-portal\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=bryopsida_syslog-portal)\n\n## What does this do?\n\nThis creates a server capable of receiving and parsing syslog messages in RFC 5424 format. The structured data component of RFC 5424 is not yet supported. It can create either a UDP or TCP server, the UDP server is more actively tested. Once launched you can either adjust the log level to output the information to standard IO for another log aggregation system to pick up or save the log messages to `syslog.messages` in mongodb. It can handle thousands of requests per minute with minimal resources: `128mi` and `256m`. This is provided as a container and a [helm chart](https://github.com/bryopsida/helm/tree/main/charts/syslog-portal), and a npm package `npm install syslog-portal -g`, afterwhich you can run with `syslog-portal`.\n\n## Intended Scope\n\nThis is not intended to provide more functionality than parsing syslog messages and archiving them into a data store, and/or publishing the parsed message into a message bus (kafka). Adding additional archivers and broadcasters (message busses) is in scope of this repo, doing any additional parsing of the inner log messages is not. That is intended to be done via other ETL setups or services that act on the broadcasted messages as desired by end users.\n\n## Why make this?\n\nWhy make this when system X,Y, or Z can do this? I wanted a minimal but reliable syslog receiver that would be easy for me to configure, runs well on small systems such as a raspberry pi, (both linux/amd64 and linux/arm64 support) and didn't require bringing in a bunch of other systems to use.\n\n## Supported Data Stores\n\n- PouchDB (with syncs to CouchDB)\n- MongoDB\n\n## Supported Data Busses\n\n- Kafka (Planned)\n\n## NPM Scripts\n\n- `lint`lints the source code using eslint\n- `lint:fix` automatically fixes any lint errors that can be fixed automatically\n- `test` uses jest to run test suites\n- `build` compiles the typescript into js and places it in the `dist` folder\n- `build:docs` generates the documentation pages from the code comments\n- `build:image` build the container image from the Dockerfile\n- `start` runs the compiled js in `dist`\n- `start:services` spins up mongodb in a docker-compose stack for testing\n- `start:dev` runs using nodemon and will automatically rebuild and launch whenever a change is made under the source folder\n- `stop:services` spins down the test services\n\n## How to launch\n\n### Helm\n\nFirst add the helm repo: `helm repo add bryopsida https://bryopsida.github.io/helm`, fetch updates `helm repo update`, and confirm it's available:\n\n```bash\n$ helm search repo bryopsida/syslog-portal                                                                                 [20:11:24]\nNAME                    CHART VERSION   APP VERSION     DESCRIPTION\nbryopsida/syslog-portal 0.1.0           0.1.0           A Helm chart to launch a syslog-portal for inge..\n```\n\nlaunch with logLevels low:\n\n```bash\nhelm upgrade --install syslog bryopsida/syslog-portal \\\n  --wait \\\n  --namespace=syslog \\\n  --create-namespace \\\n  --wait \\\n  --set archiver.enabled=false \\\n  --set loggerLevel='debug' \\\n  --set service.type='LoadBalancer'\n```\n\ncheck the service information `kubectl get services --all-namespaces`:\n\n```\nNAMESPACE      NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE\n\nsyslog         syslog-syslog-portal   LoadBalancer   10.101.248.37   localhost     514:31622/UDP            2d9h\n```\n\nYou can point all of your syslog sources towards that service, in this case `localhost:514`\n\n### Docker\n\nYou can also launch with docker\n\n```bash\ndocker run -p 1514:1514 --env \"SYSLOG_PORTAL_LOGGER_LEVEL=trace\" ghcr.io/bryopsida/syslog-portal:main\n```\n\nand send your syslog messages to `\u003cyour host\u003e:1514`\n\n### Direct Install\n\nIf you wish to run directly on a system, you can install with `npm install syslog-portal -g` this will provide\nthe `syslog-portal` command in your path to run the application.\n\nThe LTS version of node is actively tested/used, previous versions may work but are not tested.\n\nIt can be run directly with no setup, with defaults by running `syslog-portal`. This will bind a UDP receiver to `0.0.0.0:1514`. Messages received will be cached in a temporary pouchdb, and synced to a couchdb every 5 minutes. The default sync target is `localhost:5984`.\n\nTo customize the configuration you can set the NODE_CONFIG_DIR env variable. For example: `NODE_CONFIG_DIR=~/.syslog-portal syslog-portal` and the receiver will use the configuration provided in that directory. The underlying configuration system is using [config](https://github.com/node-config/node-config). For more information on the available configuration values see the configuration models [models](src/models/config.ts). You can also build the documentation with `npm run build:docs` and view an html doc page located [here](docs/index.html), when built.\n\n## Something isn't working right?\n\nIf you come across an issue feel free to report it as an issue, I'll address it when I have time available, pull requests are also welcome.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbryopsida%2Fsyslog-portal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbryopsida%2Fsyslog-portal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbryopsida%2Fsyslog-portal/lists"}