{"id":49341729,"url":"https://github.com/redborder/rb_monitor","last_synced_at":"2026-04-27T04:04:51.592Z","repository":{"id":10178012,"uuid":"12264005","full_name":"redBorder/rb_monitor","owner":"redBorder","description":"C application that monitorize a remote SNMP server and send the values via kafka","archived":false,"fork":false,"pushed_at":"2026-03-30T15:18:12.000Z","size":509,"stargazers_count":8,"open_issues_count":5,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-30T17:24:07.581Z","etag":null,"topics":["autodelivery","kafka","legacy","rb-monitor","redborder-ng","snmp"],"latest_commit_sha":null,"homepage":"","language":"C","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/redBorder.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":"2013-08-21T07:25:48.000Z","updated_at":"2025-07-22T08:33:21.000Z","dependencies_parsed_at":"2025-07-22T10:27:45.914Z","dependency_job_id":null,"html_url":"https://github.com/redBorder/rb_monitor","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/redBorder/rb_monitor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redBorder%2Frb_monitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redBorder%2Frb_monitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redBorder%2Frb_monitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redBorder%2Frb_monitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/redBorder","download_url":"https://codeload.github.com/redBorder/rb_monitor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/redBorder%2Frb_monitor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32321945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["autodelivery","kafka","legacy","rb-monitor","redborder-ng","snmp"],"created_at":"2026-04-27T04:04:51.425Z","updated_at":"2026-04-27T04:04:51.554Z","avatar_url":"https://github.com/redBorder.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/redBorder/rb_monitor.svg?branch=master)](https://travis-ci.org/redBorder/rb_monitor)\n[![Coverity Scan Build Status](https://scan.coverity.com/projects/10570/badge.svg)](https://scan.coverity.com/projects/redborder-rb_monitor)\n[![Coverage Status](https://coveralls.io/repos/github/redBorder/rb_monitor/badge.svg?branch=master)](https://coveralls.io/github/redBorder/rb_monitor?branch=redborder)\n\n# rb_monitor\n\n## Introduction\n\nMonitor agent, that sends periodically any kind of stat via kafka or http.\n\nYou can monitor your system using periodical SNMP (or pure raw system commands) and send them via kafka (or HTTP POST) to a central event ingestion system.\n\n## Code Samples\n\n### Usage of rb_monitor\nTo run rb_monitor, you have to prepare the config file to monitor the parameters you want, and run it using `rb_monitor -c \u003ccommand-file\u003e`\n\nConfig file are divided in two sections:\n\n1. `conf` one is more generic, and allow to tune different parameters in kafka or the own rb_monitor.\n1. `sensors` section, that define an array of sensors you want monitor\n  1. Sensor properties, like IP, SNMP community, timeouts, etc\n  1. Sensor monitors, actual stuff that we want to monitor and send\n\n### Simple SNMP monitoring\nThe easiest way to start with rb_monitor is to monitor simple SNMP parameters, like load average, CPU and memory, and send them via kafka. This example configuration file does so:\n```json\n{\n  \"conf\": {\n    \"debug\": 2, /* See syslog error levels */\n    \"stdout\": 1,\n    \"timeout\": 1,\n    \"sleep_main_thread\": 10,\n    \"sleep_worker_thread\": 10,\n    \"kafka_broker\": \"192.168.101.201\", /* Or your own kafka broker */\n    \"kafka_topic\": \"rb_monitor\", /* Or the topic you desire */\n  },\n  \"sensors\": [\n    {\n      \"sensor_id\":1,\n      \"timeout\":2000, /* Time this sensor has to answer */\n      \"sensor_name\": \"my-sensor\", /* Name of the sensor you are monitoring*/\n      \"sensor_ip\": \"192.168.101.201\", /* Sensor IP to send SNMP requests */\n      \"snmp_version\": \"2c\",\n      \"community\" : \"redBorder\", /* SNMP community */\n      \"monitors\": [\n        /* OID extracted from http://www.debianadmin.com/linux-snmp-oids-for-cpumemory-and-disk-statistics.html */\n\n        {\"name\": \"load_5\", \"oid\": \"UCD-SNMP-MIB::laLoad.2\", \"unit\": \"%\"},\n        {\"name\": \"load_15\", \"oid\": \"UCD-SNMP-MIB::laLoad.3\", \"unit\": \"%\"},\n        {\"name\": \"cpu_idle\", \"oid\":\"UCD-SNMP-MIB::ssCpuIdle.0\", \"unit\":\"%\"},\n\n        {\"name\": \"memory_total\", \"nonzero\":1, \"oid\": \"UCD-SNMP-MIB::memTotalReal.0\"},\n        {\"name\": \"memory_free\",  \"nonzero\":1, \"oid\": \"UCD-SNMP-MIB::memAvailReal.0\"},\n\n        {\"name\": \"swap_total\", \"oid\": \"UCD-SNMP-MIB::memTotalSwap.0\", \"send\":0},\n        {\"name\": \"swap_free\",  \"oid\": \"UCD-SNMP-MIB::memAvailSwap.0\", \"send\":0 }\n      ]\n    }\n  ]\n}\n```\n\nThis way, rb_monitor will send SNMP requests to obtain this information. If you read the kafka topic, you will see:\n```json\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_5\", \"value\":\"0.100000\", \"type\":\"snmp\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_15\", \"value\":\"0.100050\", \"type\":\"snmp\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"cpu_idle\", \"value\":\"0.100000\", \"type\":\"snmp\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"memory_total\", \"value\":\"256.000000\", \"type\":\"snmp\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"memory_free\", \"value\":\"120.000000\", \"type\":\"snmp\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"swap_total\", \"value\":\"0.000000\", \"type\":\"snmp\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"swap_free\", \"value\":\"0.000000\", \"type\":\"snmp\"}\n```\n\n### Operation on monitors\nThe previous example is OK, but we can do better: What if I want the used CPU, or to know fast the % of the memory I have occupied? We can do operations on monitors (note: from now on, I will only put the monitors array, since the conf section is irrelevant):\n\n```json\n\"monitors\": [\n  {\"name\": \"load_5\", \"oid\": \"UCD-SNMP-MIB::laLoad.2\", \"unit\": \"%\"},\n  {\"name\": \"load_15\", \"oid\": \"UCD-SNMP-MIB::laLoad.3\", \"unit\": \"%\"},\n  {\"name\": \"cpu_idle\", \"oid\":\"UCD-SNMP-MIB::ssCpuIdle.0\", \"unit\":\"%\", \"send\":0},\n  {\"name\": \"cpu\", \"op\": \"100-cpu_idle\", \"unit\": \"%\"},\n\n\n  {\"name\": \"memory_total\", \"nonzero\":1, \"oid\": \"UCD-SNMP-MIB::memTotalReal.0\", \"send\":0},\n  {\"name\": \"memory_free\",  \"nonzero\":1, \"oid\": \"UCD-SNMP-MIB::memAvailReal.0\", \"send\":0},\n  {\"name\": \"memory\", \"op\": \"100*(memory_total-memory_free)/memory_total\", \"unit\": \"%\", \"kafka\": 1 },\n]\n```\n\nThis way, rb_monitor will send SNMP requests to obtain this information. If you read the kafka topic, you will see:\n```json\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_5\", \"value\":\"0.100000\", \"type\":\"snmp\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_15\", \"value\":\"0.100050\", \"type\":\"snmp\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"cpu\", \"value\":\"5.100000\", \"type\":\"op\", \"unit\":\"%\"}\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"memory\", \"value\":\"20.000000\", \"type\":\"snmp\"}\n```\n\nHere we got, we can do operations over previous monitor values, so we can get complex result from simpler values.\n\n### System requests\nYou can't monitor everything using SNMP. We could add here telnet, HTTP REST interfaces, and a lot of complex stuffs. But, for now, we have the possibility of run a console command from rb_monitor, and to get result. For example, if you want to get the latency to reach some destination, you can add this monitor:\n```json\n\"monitors\"[\n  {\"name\": \"latency\"  , \"system\": \"nice -n 19 fping -q -s managerPro2 2\u003e\u00261| grep 'avg round trip time'|awk '{print $1}'\", \"unit\": \"ms\"}\n]\n```\nAnd it will send to kafka this message:\n```json\n{\"timestamp\":1469183485,\"sensor_name\":\"my-sensor\",\"monitor\":\"latency\",\"value\":\"0.390000\",\"type\":\"system\",\"unit\":\"ms\"}\n```\nNotes:\n\n1. Command are executed in the host running rb_monitor, so you can't execute remote commands this way. However, you can use ssh or telnet inside the system parameter\n1. The shell used to run the command is the user's one, so take care if you use bash commands in dash shell, and stuffs like that.\n\n### Vectors monitors\nIf you need to monitor same property on many instances (for example, received bytes of an interface), you can use vectors. You can return many values using a split token and then mix all them. For example, using `echo` instead of a proper program:\n\n```json\n\"monitors\"[\n  {\"name\": \"packets_received\"  , \"system\": \"echo '1;2;3'\", \"unit\": \"pkts\", \"split\":\";\",\"instance_prefix\": \"interface-\", \"name_split_suffix\":\"_per_interface\"}\n]\n```\nAnd it will send to kafka this messages:\n```json\n{\"timestamp\":1469184314,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-0\",\"value\":1,\"type\":\"system\",\"unit\":\"pkts\"}\n{\"timestamp\":1469184314,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-1\",\"value\":2,\"type\":\"system\",\"unit\":\"pkts\"}\n{\"timestamp\":1469184314,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-2\",\"value\":3,\"type\":\"system\",\"unit\":\"pkts\"}\n```\n\nIf you want to calculate the sum off all packets (or the mean of another monitor), you can add `\"split_op\":\"sum\"` (or `\"split_op\":\"mean\"`) to the monitor and it will also send this last message:\n```json\n{\"timestamp\":1469184314,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received\",\"value\":6,\"type\":\"system\",\"unit\":\"pkts\"}\n```\n\n### Operations of vectors\nIf you have two vector monitors, you can operate on them as same as you do with scalar monitors.\n\nPlease note that If you do this kind of operation, it will apply for each vector element, but not to split operation result. But you can still do an split operation over the result (`sum` or `mean`) if you need that.\n\nBlanks are handled this way: If one of the vector has a blank element, it is assumed as 0, for operation result and for split operation result.\n\n### Timestamp provided on vectors\nSometimes you don't want to send the same value twice if it is a cached value. If you can get the timestamp the system obtained the value, and you can send it in executed command (or SNMP answer), `rb_monitor` can detect it.\n\nYou can specify that you want to provide timestamp with `\"timestamp_given\":1` in the monitor. For example, if we set this monitors:\n```json\n\"monitors\":[\n  {\"name\": \"packets_received\", \"system\": \"get_pkts.sh\", \"name_split_suffix\":\"_per_interface\", \"split\":\";\",\"split_op\":\"sum\", \"instance_prefix\":\"instance-\", \"timestamp_given\":1},\n]\n```\n\nIf `get_pkts.sh` returns `10:20;30:40` the first time we call it (i.e., in timestamp `10` the first interface had `20` packets, and in timestamp `30` the first interface had `40` packets. So `rb_monitor` will send to kafka:\n\n```json\n{\"timestamp\":10, \"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-0\",\"value\":20,\"type\":\"system\",\"unit\":\"pkts\"}\n{\"timestamp\":30, \"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-1\",\"value\":40,\"type\":\"system\",\"unit\":\"pkts\"}\n{\"timestamp\":50, \"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received\",\"value\":60,\"type\":\"system\",\"unit\":\"pkts\"}\n```\n\nNote that split op timestamp is the one in that split op is done.\n\nAfter it, let's suppose that `get_pkts.sh` return `10:20;60:100`. `rb_monitor` wil notice that interface 1 has not changed, so it will only send the second one, and the split op result:\n\n```json\n{\"timestamp\":60, \"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received_per_interface\",\"instance\":\"interface-1\",\"value\":100,\"type\":\"system\",\"unit\":\"pkts\"}\n{\"timestamp\":70, \"sensor_name\":\"my-sensor\",\"monitor\":\"packets_received\",\"value\":60,\"type\":\"system\",\"unit\":\"pkts\"}\n```\n\n### Monitors groups\nIf you need to separate monitors of the same sensor in different groups, you can use `group_id` monitor parameter. This way, you can use the same monitors names and do operations between them without mix variables.\n\nFor example, you can monitor the received bytes of different interfaces (rb_monitor `instances`) on different vlans (rb_monitor `groups`, assuming that all interfaces are untagged) this way:\n\n```json\n\"monitors\"[\n  {\"name\": \"packets_received\"  , \"system\": \"get_rcv_pkts.sh 1'\", \"unit\": \"pkts\", \"split\":\";\", \"group_id\":1,\"group_name\":\"VLAN-1\", \"send\":0},\n  {\"name\": \"packets_drop\"  , \"system\": \"get_drop_pkts.sh 1\", \"unit\": \"pkts\", \"split\":\",\", \"group_id\":1,\"group_name\":\"VLAN-1\", \"send\":0},\n  {\"name\": \"packets_drop_%\"  , \"op\": \"100*(packets_drop)/(packets_received+packets_drop)\", \"unit\": \"%\", \"split\":\";\",\"split-op\":\"mean\",\"instance_prefix\": \"interface-\", \"name_split_suffix\":\"_per_interface\", \"group_id\":1,\"group_name\":\"VLAN-1\"},\n\n  {\"name\": \"packets_received\"  , \"system\": \"get_rcv_pkts.sh 2\", \"unit\": \"pkts\", \"split\":\";\", \"group_id\":2,\"group_name\":\"VLAN-2\", \"send\":0},\n  {\"name\": \"packets_drop\"  , \"system\": \"get_drop_pkts.sh 2\", \"unit\": \"pkts\", \"split\":\",\", \"group_id\":2,\"group_name\":\"VLAN-2\", \"send\":0},\n  {\"name\": \"packets_drop_%\"  , \"op\": \"100*(packets_drop)/(packets_received+packets_drop)\", \"unit\": \"%\", \"split\":\";\",\"instance_prefix\": \"interface-\", \"name_split_suffix\":\"_per_interface\", \"group_id\":2,\"group_name\":\"VLAN-2\"},]\n```\n\nAssuming `get_rcv_pkts.sh` and `get_drop_pkts.sh` gets all vlan `$1` interface packets joined by `;`, and that they returns in execution this values:\n\n| Script | Vlan  | Return |\n| --- | :---: | --- |\n| get_rcv_pkts.sh | 1 | 10;20;30 |\n| get_rcv_pkts.sh | 1 | 1;1;1 |\n| get_rcv_pkts.sh | 2 | 40;50;60 |\n| get_rcv_pkts.sh | 2 | 2;2;2 |\n\nYou will get the next output:\n\n```json\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-0\",\"value\":\"10.000000\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-1\",\"value\":\"5.000000\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-2\",\"value\":\"2.500000\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%\",\"value\":\"5.833333\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-0\",\"value\":\"5.000000\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-1\",\"value\":\"4.000000\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%_per_instance\",\"instance\":\"interface-2\",\"value\":\"3.33333\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n{\"timestamp\":1469188000,\"sensor_name\":\"my-sensor\",\"monitor\":\"packets_drop_%\",\"value\":\"4.111111\",\"type\":\"system\",\"unit\":\"%\",\"group_name\":\"VLAN-1\",\"group_id\":1}\n```\n\n### Sending custom data in messages\nYou can send attach any information you want in sent monitors if you use `enrichment` keyword, and adding an object. If you add it to a sensor, all monitors will be enrichment with that information; if you add it to a monitor, only that monitor will be enriched with the new JSON object.\n\nFor example, you can do:\n\n```json\n{\n  \"conf\": {\n    \"debug\": 2, /* See syslog error levels */\n    \"stdout\": 1,\n    \"timeout\": 1,\n    \"sleep_main_thread\": 10,\n    \"sleep_worker_thread\": 10,\n    \"kafka_broker\": \"192.168.101.201\", /* Or your own kafka broker */\n    \"kafka_topic\": \"rb_monitor\", /* Or the topic you desire */\n    \"enrichment\":{ \"my custom key\":\"my custom value\" }\n  },\n  \"sensors\": [\n    {\n      \"sensor_id\":1,\n      \"timeout\":2000, /* Time this sensor has to answer */\n      \"sensor_name\": \"my-sensor\", /* Name of the sensor you are monitoring*/\n      \"sensor_ip\": \"192.168.101.201\", /* Sensor IP to send SNMP requests */\n      \"snmp_version\": \"2c\",\n      \"community\" : \"redBorder\", /* SNMP community */\n      \"monitors\": [\n        /* OID extracted from http://www.debianadmin.com/linux-snmp-oids-for-cpumemory-and-disk-statistics.html */\n\n        {\"name\": \"load_5\", \"oid\": \"UCD-SNMP-MIB::laLoad.2\", \"unit\": \"%\"},\n        {\"name\": \"load_15\", \"oid\": \"UCD-SNMP-MIB::laLoad.3\", \"unit\": \"%\"},\n        {\"name\": \"cpu_idle\", \"oid\":\"UCD-SNMP-MIB::ssCpuIdle.0\", \"unit\":\"%\", \"enrichment\": {\"my-favourite-monitor\":true}}\n      ]\n    }\n  ]\n}\n```\n\nAnd the kafka output will be:\n```json\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_5\", \"value\":\"0.100000\", \"type\":\"snmp\", \"unit\":\"%\",\"my custom key\":\"my custom value\"  }\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"load_15\", \"value\":\"0.100050\", \"type\":\"snmp\", \"unit\":\"%\",\"my custom key\":\"my custom value\" }\n{\"timestamp\":1469181339, \"sensor_name\":\"my-sensor\", \"monitor\":\"cpu_idle\", \"value\":\"0.100000\", \"type\":\"snmp\", \"unit\":\"%\",\"my custom key\":\"my custom value\", \"my-favourite-monitor\":true}\n```\n\n### HTTP output\nIf you want to send the JSON directly via HTP POST, you can use this conf properties:\n```json\n\"conf\": {\n  ...\n  \"http_endpoint\": \"http://localhost:8080/monitor\",\n  ...\n}\n```\n\nNote that you need to configure with `--enable-http`\n\n## Installation\n\nJust use the well known `./configure \u0026\u0026 make \u0026\u0026 make install`. You can see\nconfigure options with `configure --help`. The most important are:\n\n* `--enable-zookeeper`, that allows to get monitors requests using zookeeper\n* `--enable-rbhttp`, to send monitors via HTTP POST instead of kafka.\n\n## TODO\n- [ ] Vector \u003cop\u003e scalar operation (see #14 )\n- [ ] SNMP tables / array (see #15 )\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredborder%2Frb_monitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fredborder%2Frb_monitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fredborder%2Frb_monitor/lists"}