{"id":22325302,"url":"https://github.com/uninett/argus","last_synced_at":"2026-03-06T14:13:41.950Z","repository":{"id":37979528,"uuid":"210771236","full_name":"Uninett/Argus","owner":"Uninett","description":"Argus is an alert aggregator for monitoring systems","archived":false,"fork":false,"pushed_at":"2025-04-09T09:23:00.000Z","size":5031,"stargazers_count":19,"open_issues_count":274,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-09T15:03:35.821Z","etag":null,"topics":["api","api-rest-server","dashboard","kiss-principle","monitoring","notifications","postgresql","python","unix-philosophy","webapp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Uninett.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-09-25T06:26:37.000Z","updated_at":"2025-04-09T09:23:03.000Z","dependencies_parsed_at":"2024-02-14T13:45:58.463Z","dependency_job_id":"463595db-9a43-4bad-b82a-af6346d4c7ea","html_url":"https://github.com/Uninett/Argus","commit_stats":{"total_commits":953,"total_committers":18,"mean_commits":52.94444444444444,"dds":0.7471143756558237,"last_synced_commit":"eeaa80b757c2e3817b400c26dade3646ebe0bd44"},"previous_names":[],"tags_count":102,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uninett%2FArgus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uninett%2FArgus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uninett%2FArgus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Uninett%2FArgus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Uninett","download_url":"https://codeload.github.com/Uninett/Argus/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055276,"owners_count":21040156,"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":["api","api-rest-server","dashboard","kiss-principle","monitoring","notifications","postgresql","python","unix-philosophy","webapp"],"created_at":"2024-12-04T02:11:18.714Z","updated_at":"2026-01-06T15:14:57.748Z","avatar_url":"https://github.com/Uninett.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Argus\n[![test badge](https://github.com/Uninett/Argus/actions/workflows/python.yml/badge.svg)](https://github.com/Uninett/Argus/actions)\n[![codecov badge](https://codecov.io/gh/Uninett/Argus/branch/master/graph/badge.svg)](https://codecov.io/gh/Uninett/Argus)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![djLint](https://img.shields.io/badge/html%20style-djlint-blue.svg)](https://www.djlint.com)\n[![docs badge](https://readthedocs.org/projects/argus-server/badge/?version=latest\u0026style=flat)](http://argus-server.rtfd.io/en/latest/)\n\nArgus is a platform for aggregating incidents across network management systems, and\nsending notifications to users. Users create notification profiles that define which\nincidents they subscribe to. See [Argus docs](http://argus-server.rtfd.io/en/latest/) for more details.\n\nThis repository hosts the backend built with Django. There is also a\n[REACT SPA frontend](https://github.com/Uninett/Argus-frontend).\n\n\nSee also the the [Python client library](https://github.com/Uninett/pyargus).\n\n\u003e [!IMPORTANT]\n\u003e * API v1 has been deprecated. API v2 is the new stable. Support for API v1\n\u003e   will be dropped in version 2.0 of argus-server. Please upgrade your glue\n\u003e   services!\n\u003e * Support for the REACT frontend will be dropped in version 2.0 of\n\u003e   argus-server. Please try out the new built-in one.\n\n\n## Installation\n\nThere are several ways to install Argus.\n\n### Prerequisites\n\n#### Requirements\n\n* Python 3.10+\n* Django 4.2 or 5.1\n* pip\n* PostgreSQL 14+\n\n\u003e [!WARNING]\n\u003e The next [Django LTS](https://docs.djangoproject.com/en/5.2/releases/5.2/)\n\u003e will not support any PostgreSQL older than version 14!\n\u003e [PostgreSQL 17.4](https://www.postgresql.org/docs/17/release-17-4.html) is\n\u003e the newest version as of this writing.\n\n#### Optional requirements\n\n* Docker and Docker Compose to run Argus in Docker. This will also run\n  a PostgreSQL server for you.\n\n#### Optional: New frontend\n\nYou need to have the new frontend dependencies installed.\n\n```\npip install argus-server[htmx]\n```\n\nwill do it.\n\n#### Optional: Old frontend\n\n\u003e [!WARNING]\n\u003e Support for this backend will be dropped in version 2 of argus-server. Please\n\u003e try the new backend.\n\n\nThe old frontend needs:\n\n* **Redis**. Redis backs the websockets, in order to push realtime updates to\n  the frontend. See the included `docker compose` file for the quickest way.\n* [Argus-frontend](https://github.com/Uninett/Argus-frontend/), javascript that\n  uses the API.\n\nGet the python dependencies via:\n\n```\npip install argus-server[spa]\n\n```\n\n#### Optional: Dataporten registration\n\nDataporten authentication is supported by Argus and can be used to log into\nArgus-frontend. Refer to the\n[Dataporten](https://argus-server.rtfd.io/en/latest/authentication.html#dataporten)\nsection of the documentation to learn about Dataporten registration, and how to\nset it up with Argus.\n\n### Install Argus using pip\n\nYou can also install Argus with `pip` via PyPI. The package name is `argus-server`:\n```console\n$ pip install argus-server\n```\n\nIf you are using the PyPI package in production, please note: The file\n`requirements.txt` contains the pinned versions of dependencies that the\nrelease was tested on. The file `constraints.txt` is for controlling versions\nof sub-dependencies so as to not poison the pyproject.toml.\n\nTo update the dependency lock-files, use `tox`:\n\n```console\n$ pip install \"tox\u003e=4\"\n$ tox run -e upgrade-deps -- -U\n```\n\nTo upgrade a single dependency, replace the `-U` flag with `-P PACKAGENAME`.\n\nTo install from the lock-file use pip:\n\n```console\n$ pip install -c constraints.txt --upgrade -r requirements.txt\n```\n\nNow change and adapt [Argus' settings](#settings-in-argus) according to your needs.\n\nRun the initial Argus setup, and make note of the admin password that is generated:\n\n```console\n$ python manage.py initial_setup\n******************************************************************************\n\n  Created Argus superuser \"admin\" with password \"2S0qJbjVEew0GunL\".\n\n   Please change the password via the admin interface.\n\n******************************************************************************\n```\n\nThen run the Argus API server:\n\n```console\n$ python manage.py runserver\n```\n\n### Setup Argus using Docker Compose\n\nDownload the source code first.\n```console\n$ git clone https://github.com/Uninett/Argus.git\n$ cd Argus\n```\n\nRunning Argus with Docker Compose is as simple as\n```console\n$ docker compose up\n```\n\nRun the initial Argus setup, and make note of the admin password that is generated:\n\n```console\n$ docker compose exec api django-admin initial_setup\n******************************************************************************\n\n  Created Argus superuser \"admin\" with password \"ns6bfoKquW12koIP\".\n\n   Please change the password via the admin interface.\n\n******************************************************************************\n```\n\n\nYou will find Argus running at http://localhost:8000/.\n\n## Settings in Argus\n\nSite-specific settings can either be set using environment variables, using a\n`settings.py` file, or a combination of both.\n\nFor more information on both methods and a list of the settings, consult the\ndocumentation section on\n[site-specific settings](http://argus-server.rtfd.io/en/latest/site-specific-settings.html).\n\n\n## Running Argus in development\n\n### Step 1: Installation\n\nYou can use Docker Compose to conveniently setup a complete dev environment for Argus,\nincluding PostgreSQL. Instructions\n[are provided above](#setup-argus-using-docker-compose).\n\nTo do a manual install instead, follow these steps.\n\nDownload the source code first.\n```console\n$ git clone https://github.com/Uninett/Argus.git\n$ cd Argus\n```\n\nWe recommend using virtualenv or virtaulenvwrapper to create\na place to stash Argus' dependencies.\n\nCreate and activate a Python virtual environment.\n```console\n$ python -m venv venv\n$ source venv/bin/activate\n```\n\nInstall Argus' requirements into the virtual env.\n```console\n$ pip install -r requirements-django42.txt\n$ pip install -r requirements/dev.txt\n```\n\n### Step 2: Setting environment variables and Django settings\n\nCopy the `cmd.sh-template` to `cmd.sh` and make it executable\n```console\n$ cp cmd.sh-template cmd.sh\n$ chmod u+x cmd.sh\n```\nNow set the environment variables in the file using an editor.\n\nRequired settings in `cmd.sh` are\n\n- `DATABASE_URL`,\n- `DJANGO_SETTINGS_MODULE` and\n- `SECRET_KEY`.\n\nThe `DATAPORTEN` variables are optional. Refer to the dataporten section of\n[setting site-specific settings](http://argus-server.rtfd.io/en/latest/site-specific-settings.html) for details.\n\n`DJANGO_SETTINGS_MODULE` can be set to `argus.site.settings.dev`.\n\nIf you need more complex settings than environment variables and ``cmd.sh`` can provide,\nwe recommend having a `localsettings.py` in the same directory as `manage.py` with any\noverrides.\n\nRefer to the [development notes](http://argus-server.rtfd.io/en/latest/development.html) for further details and\nuseful hints on managing Argus in development mode.\n\n#### Settings for old frontend\n\nSee https://argus-server.erfd.io/en/latest/reference/react-frontend.html\n\n#### Settings for new frontend\n\nSee http://argus-server.rtfd.io/en/latest/reference/htmx-frontend.html\n\n### Step 3: Run Argus in development\n\nAfterwards, run the initial Argus setup and start the server.\n```console\n$ python manage.py initial_setup\n$ python manage.py runserver\n```\n\nYou will find Argus running at http://localhost:8000/.\n\n### Code style\n\nArgus uses [ruff](https://docs.astral.sh/ruff/) as a Python source code\nformatter and linter and [djLint](https://djlint.com/) as an HTML formatter and\nlinter. Ruff and djLint will automatically install with the\n[dev requirements](requirements/dev.txt).\n\nA pre-commit hook will format new code automatically before committing.\nTo enable this pre-commit hook, run\n\n```console\n$ pre-commit install\n```\n\n\n## Running tests\n\nGiven that Argus is installed and configured as described above,\nthis command is the most basic option to run the tests.\n```console\n$ python manage.py test\n```\n\nIf you have installed `tox`, the following command will\ntest Argus code against several Django versions, several Python versions, and\nautomatically compute code coverage.\n```console\n$ tox\n```\nAn [HTML coverage report](htmlcov/index.html) will be generated.\nRefer to the [tox.ini](tox.ini) file for further options.\n\n\n## How to do maintenance\n\nSee [MAINTAINING.rst](MAINTAINING.rst).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funinett%2Fargus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funinett%2Fargus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funinett%2Fargus/lists"}