{"id":44386032,"url":"https://github.com/nuodb/nuodb-collector","last_synced_at":"2026-02-12T00:44:03.960Z","repository":{"id":41847794,"uuid":"298595325","full_name":"nuodb/nuodb-collector","owner":"nuodb","description":"NuoDB metrics collector","archived":false,"fork":false,"pushed_at":"2024-09-16T15:08:41.000Z","size":126,"stargazers_count":0,"open_issues_count":2,"forks_count":2,"subscribers_count":15,"default_branch":"master","last_synced_at":"2024-09-16T18:05:15.498Z","etag":null,"topics":["docker","docker-compose","metrics-gathering","nuodb","telegraf"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nuodb.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2020-09-25T14:25:26.000Z","updated_at":"2024-09-16T15:08:45.000Z","dependencies_parsed_at":"2024-06-27T20:45:44.697Z","dependency_job_id":"aa453adc-5e62-46b8-a20b-2050c0823a36","html_url":"https://github.com/nuodb/nuodb-collector","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nuodb/nuodb-collector","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuodb%2Fnuodb-collector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuodb%2Fnuodb-collector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuodb%2Fnuodb-collector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuodb%2Fnuodb-collector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nuodb","download_url":"https://codeload.github.com/nuodb/nuodb-collector/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nuodb%2Fnuodb-collector/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29351058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T20:11:40.865Z","status":"ssl_error","status_checked_at":"2026-02-11T20:10:41.637Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["docker","docker-compose","metrics-gathering","nuodb","telegraf"],"created_at":"2026-02-12T00:44:03.225Z","updated_at":"2026-02-12T00:44:03.951Z","avatar_url":"https://github.com/nuodb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"images/nuodb.svg\" width=\"200\" height=\"200\" /\u003e\n\n# NuoDB Collector\n\n[![nuodb](https://circleci.com/gh/nuodb/nuodb-collector.svg?style=svg)](https://circleci.com/gh/nuodb/nuodb-collector)\n\n# Introduction\n\nMost modern application monitoring systems consist of the following 3\ncore components:\n\n- Collector — daemon(s) to gather metrics such as this repository\n- Time Series database — for storage of real-time, high volume metrics (e.g. InfluxDB, Prometheus, LogStash)\n- Query \u0026 Visualization — that enables visual monitoring and root cause analysis (e.g. Grafana)\n\nNuoDB Collector utilizes a popular open-source collector - `telegraf`.\nIt's designed to be used alongside a NuoDB engine process to collect metrics from the engine and publish those metrics to a time series database.\n\nBuilt into this container are 4 input plugins to collect metrics from the NuoDB engine:\n\n1.  `metrics` - collects the [Engine Metrics](https://doc.nuodb.com/nuodb/latest/reference-information/metrics-published-by-database-processes) on a\n    regular 10s interval.\n2.  `msgtrace` - collects internal NuoDB message tracing data on a regular 30s interval.\n3.  `synctrace` - collects internal NuoDB lock tracing data on a regular 30s interval.\n4.  `threads` - extends the [Telegraf ProcStat Input plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/procstat) with per-thread data.\n    Collects host machine resource consumption statistics on a regular 10s interval.\n\nTo setup NuoDB Insights visual monitoring which uses the NuoDB Collector, follow the instructions on the [NuoDB Insights](https://github.com/nuodb/nuodb-insights) github page.\n\nTo setup NuoDB Performance metric collection using NuoDB Collector when not using NuoDB Insights, follow the instruction on this page.\n\n# NuoDB Collector Page Outline\n\n[Quick Start with Docker Compose](#Quick-start-with-docker-compose)\n\n[Setup Manually in Docker](#Setup-manually-in-docker)\n\n[Setup in Kubernetes](#Setup-in-Kubernetes)\n\n[Setup on Bare Metal Linux](#Setup-on-bare-metal-linux)\n\n[Check Collection Status](#Check-collection-status)\n\n# Quick Start with Docker Compose\n\nFor a complete example on how to set up the NuoDB domain with NuoDB collector, you can use `docker compose`.\nThis repository contains a Docker Compose file (`docker-compose.yml`) which will start:\n\n- 2 Admin Processes (AP)\n- 1 Storage Manager (SM)\n- 2 Transaction Engines (TE)\n- 3 NuoDB Collector containers (1 for SM, 1 for TE, 1 for AP)\n- InfluxDB database\n\nClone the NuoDB Collector repository and `cd` into it:\n\n```\ngit clone git@github.com:nuodb/nuodb-collector.git\ncd nuodb-collector\n```\n\nModify .env file in root folder by changing\n\n```\nDOCKER_INFLUXDB_INIT_USERNAME=[your_username]\nDOCKER_INFLUXDB_INIT_PASSWORD=[your_password]\nDOCKER_INFLUXDB_INIT_ORG=[name_of_organization]\nDOCKER_INFLUXDB_INIT_RETENTION=[retention_time]\nDOCKER_INFLUXDB_INIT_BUCKET=[your_database_name]\nDOCKER_INFLUXDB_INIT_ADMIN_TOKEN=[your_secret_key]\n```\n\nTo know more about these env variables checkout [docs](https://hub.docker.com/_/influxdb#Automated%20Setup:~:text=to%20the%20host.-,Automated%20Setup,-The%20InfluxDB%20image)\n\nThen run `docker compose up` to start the processes specified in the Docker Compose file:\n\n```\ndocker compose up -d\n```\n\nStop processes started with `docker compose up` by running the following command:\n\n```\ndocker compose down\n```\n\n# Setup Manually in Docker\n\n## Download the NuoDB Collector Docker Image\n\n```\ndocker pull nuodb/nuodb-collector:latest\n```\n\n## Building docker image from source (Optional)\n\nInstead of pulling a pre-built Docker image, you can build it yourself from source.\n\n```\ngit clone git@github.com:nuodb/nuodb-collector.git\ncd nuodb-collector\ndocker build .\ndocker tag \u003cSHA\u003e \u003cTAG\u003e\n```\n\n## Prerequisites\n\n### NuoDB Database\n\nAs a prerequisite you must have a running NuoDB Admin domain and database.\nTo start NuoDB in Docker, follow the [NuoDB Docker Blog Part I](https://nuodb.com/blog/deploy-nuodb-database-docker-containers-part-i).\nFollowing this tutorial will also create the Docker network `nuodb-net`.\n\nAfter following the [NuoDB Docker Blog Part I](https://nuodb.com/blog/deploy-nuodb-database-docker-containers-part-i) tutorial, verify your domain by running `nuocmd`:\n\n```\n$ docker exec -it nuoadmin1 nuocmd show domain\nserver version: 4.1.1-3-2203dab8dd, server license: Community\nserver time: 2020-10-20T19:20:35.915, client token: 2003aa06ce0444b2152b543beff9e95312b47e84\nServers:\n  [nuoadmin1] nuoadmin1:48005 [last_ack = 1.02] [member = ADDED] [raft_state = ACTIVE] (LEADER, Leader=nuoadmin1, log=0/19/19) Connected *\n  [nuoadmin2] nuoadmin2:48005 [last_ack = 1.02] [member = ADDED] [raft_state = ACTIVE] (FOLLOWER, Leader=nuoadmin1, log=0/18/18) Connected\n  [nuoadmin3] nuoadmin3:48005 [last_ack = 1.01] [member = ADDED] [raft_state = ACTIVE] (FOLLOWER, Leader=nuoadmin1, log=0/19/19) Connected\nDatabases:\n  test [state = RUNNING]\n    [SM] test-sm-1/172.20.0.5:48006 [start_id = 0] [server_id = nuoadmin1] [pid = 39] [node_id = 1] [last_ack =  7.14] MONITORED:RUNNING\n    [TE] test-te-1/172.20.0.6:48006 [start_id = 1] [server_id = nuoadmin1] [pid = 39] [node_id = 2] [last_ack =  0.14] MONITORED:RUNNING\n```\n\n### NuoDB Insights\n\nIf you haven't already, [start InfluxDB and Grafana for NuoDB Insights](https://github.com/nuodb/nuodb-insights#starting-nuodb-insights).\n\n## Running NuoDB Collector\n\nEach NuoDB Collector runs colocated with a NuoDB engine in the same process namespace.\nAs such, you must start a NuoDB collector docker container for every running NuoDB engine you want to monitor.\n\nThe following value replacement must be done to start a NuoDB Collector container:\n\n- Replace the `\u003chostname\u003e` with the hostname of the monitored engine container. The hostnames must match. In our example it will be `test-sm-1`\n- Replace the `\u003chostinflux\u003e` placeholder with the URL of a running InfluxDB container. In our example, it will be `influxdb`.\n- Replace the `\u003cnuoadmin\u003e` placeholder with the URL of a running NuoDB admin container. In our example, it will be `nuoadmin1`.\n- Replace the `\u003cenginecontainer\u003e` placeholder with the URL of a running NuoDB Engine container. In our example, it will be `test-sm-1`.\n- Replace the `\u003cinfluxdb_token\u003e` placeholder with influx api token. To know more about it go to this [link](https://docs.influxdata.com/influxdb/cloud/security/tokens)\n- Replace the `\u003cinfluxdb_bucket_name\u003e` placeholder with initial bucket name. To know more about the bucket visit [link](https://docs.influxdata.com/influxdb/v2.0/organizations/buckets/)\n- Replace the `\u003cname_of_organization\u003e` placeholder with the name of organization. To know more about the organization visit [link](https://docs.influxdata.com/influxdb/v2.0/organizations/)\n\n```\ndocker run -d --name nuocd-sm \\\n      --hostname \u003chostname\u003e \\\n      --network nuodb-net \\\n      --env INFLUXURL=http://\u003chostinflux\u003e:8086 \\\n      --env NUOCMD_API_SERVER=\u003cnuoadmin\u003e:8888 \\\n      --env INFLUXDB_TOKEN=\u003cinfluxdb_token\u003e \\\n      --env INFLUXDB_BUCKET=\u003cinfluxdb_bucket_name\u003e \\\n      --env INFLUXDB_ORG=\u003cname_of_organization\u003e\n      --pid container:\u003cenginecontainer\u003e \\\n      nuodb/nuodb-collector:latest\n```\n\nRepeat the steps above for all running NuoDB engine containers you want to monitor.\n\n# Setup in Kubernetes\n\n## Software Release requirements\n\n| Software   | Release Requirements                                                           |\n| ---------- | ------------------------------------------------------------------------------ |\n| NuoDB Helm | NuoDB Helm Charts [3.0.0](https://github.com/nuodb/nuodb-helm-charts) or newer |\n\n## Deploying NuoDB Collector using NuoDB Helm Charts\n\nFollow the instructions on the [NuoDB Helm charts](https://github.com/nuodb/nuodb-helm-charts/blob/master/README.md#nuodb-helm-chart-installation) installation page.\nNuoDB Collector can be enabled separately for [Admin](https://github.com/nuodb/nuodb-helm-charts/tree/master/stable/admin) and [Database](https://github.com/nuodb/nuodb-helm-charts/tree/master/stable/database) charts. To enable it set the `nuocollector.enabled` variable to `true`. For example:\n\n```bash\nhelm install admin nuodb/admin --set nuocollector.enabled=true --namespace nuodb\nhelm install database nuodb/database --set nuocollector.enabled=true --namespace nuodb\n```\n\n## Deploying custom plugins\n\nAdditional Telegraf plugins can be deployed online without restarting NuoDB services. Plugins are created as Kubernetes configMap resources which are labeled with `nuodb.com/nuocollector-plugin` and the admin or database full name as a label value.\n\nThe plugins are specified in `nuocollector.plugins.admin` or `nuocollector.plugins.database` by using the plugin name and plugin text as multiline string. Following example Helm values snippet is adding `outputs.file` plugin with name `file` for database resources:\n\n```\nnuocollector:\n  plugins:\n    database:\n      file: |-\n        [[outputs.file]]\n        files = [\"/var/log/nuodb/metrics.log\"]\n        data_format = \"influx\"\n```\n\n# Setup on Bare Metal Linux\n\n## Installation\n\nThese steps are for Red Hat or CentOS bare-metal hosts or VMs. For other platforms, see [Telegraf Documentation](https://portal.influxdata.com/downloads/).\n\n### 1) Install dependencies\n\nNuoDB Collector requires Python \u003e=3.6, which comes installed on most distributions.\n\nThe instructions below use `pip` to install Python dependencies. `pip` can be installed on RedHat or CentOS as follows:\n\n```\nsudo yum install -y epel-release\nsudo yum install -y python-pip\n```\n\n### 2) Download and install `telegraf`\n\n```\n# influxdb.key GPG Fingerprint: 05CE15085FC09D18E99EFB22684A14CF2582E0C5\ncat \u003c\u003c 'EOF' | sudo tee /etc/yum.repos.d/influxdata.repo\n[influxdata]\nname = InfluxData Repository - Stable\nbaseurl = https://repos.influxdata.com/stable/$basearch/main\nenabled = 1\ngpgcheck = 1\ngpgkey = https://repos.influxdata.com/influxdb.key\nEOF\nsudo yum install telegraf\n```\n\n### 3) Download and install NuoDB Collector\n\n```\ngit clone https://github.com/nuodb/nuodb-collector.git\ncd nuodb-collector\npython -m pip install -r requirements.txt -t nuocd/pylib --no-cache\nsudo cp -r nuocd /opt/\nsudo cp bin/nuocd /usr/local/bin/nuocd\n```\n\n## Configuration\n\nThe `conf/nuodb.conf` file in this repository configures all four input plugins for NuoDB running on localhost as described in the section above.\nThe `conf/outputs.conf` file configures an output plugin to a InfluxDB instance defined by the `$INFLUXURL` environment variable.\nThe `bin/nuocd` file is a convenience wrapper for python.\nReplace the `\u003chostinflux\u003e` placeholder in the `INFLUXURL` line below with the hostname of the machine running the InfluxDB instance, and then run the commands.\n\n```\nsudo cp conf/nuodb.conf /etc/telegraf/telegraf.d\nsudo cp conf/outputs.conf /etc/telegraf/telegraf.d\nsudo cp bin/nuocd /usr/local/bin/nuocd\nsudo chown -R telegraf.telegraf /etc/telegraf\ncat \u003c\u003cEOF \u003e/etc/default/telegraf\nINFLUXURL=http://\u003chostinflux\u003e:8086\nPYTHONPATH=/opt/nuocd/pylib:/opt/nuodb/etc/python/site-packages\nEOF\n```\n\n## Start NuoDB Collector\n\n```\nsudo systemctl daemon-reload\nsudo systemctl restart telegraf\n```\n\n**NOTE:** If not starting telegraf via `systemd` then the variables set in `/etc/default/telegraf` are not picked up automatically.\nInstead you can start telegraf with the following command:\n\n```\nsh -c \"$(cat /etc/default/telegraf | tr '\\n' ' ') telegraf --config /etc/telegraf/telegraf.conf --config-directory /etc/telegraf/telegraf.d\"\n```\n\n# Check Collection Status\n\nAfter starting collection, your InfluxDB instance should contain the `nuodb_internal` and `nuodb` databases.\nYou can check if `nuodb_internal` and `nuodb` exist by launching the InfluxDB CLI:\n\n```\ninflux\n```\n\nThen, from the InfluxDB CLI, run the `SHOW DATABASES` command and check that `nuodb_internal` exists (it may take a minute for the database to be created):\n\n```\n$ influx\nConnected to http://localhost:8086 version 1.8.3\nInfluxDB shell version: 1.8.3\n\u003e show databases\nname: databases\nname\n----\n_internal\ntelegraf\nnuodb_internal\nnuodb\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuodb%2Fnuodb-collector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnuodb%2Fnuodb-collector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnuodb%2Fnuodb-collector/lists"}