{"id":15508564,"url":"https://github.com/vincejv/gpon-parser","last_synced_at":"2025-04-23T02:24:18.704Z","repository":{"id":189881512,"uuid":"681486431","full_name":"vincejv/gpon-parser","owner":"vincejv","description":"Parses and exports GPON Stats from ONT and exports them in JSON format","archived":false,"fork":false,"pushed_at":"2025-03-26T07:22:04.000Z","size":7007,"stargazers_count":4,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T08:28:00.608Z","etag":null,"topics":["exporter","fiber","fiberhome","golang","gpon","json","ont","rest","skyworth","telegraf","telegraf-exporter","zlt","zte"],"latest_commit_sha":null,"homepage":"https://github.com/vincejv/gpon-parser","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vincejv.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":"2023-08-22T06:01:37.000Z","updated_at":"2025-03-26T07:22:08.000Z","dependencies_parsed_at":"2023-08-22T07:27:49.775Z","dependency_job_id":"768b2c36-db44-45c2-b08c-4aa66026c039","html_url":"https://github.com/vincejv/gpon-parser","commit_stats":null,"previous_names":["vincejv/gpon-parser"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincejv%2Fgpon-parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincejv%2Fgpon-parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincejv%2Fgpon-parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vincejv%2Fgpon-parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vincejv","download_url":"https://codeload.github.com/vincejv/gpon-parser/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250355610,"owners_count":21416940,"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":["exporter","fiber","fiberhome","golang","gpon","json","ont","rest","skyworth","telegraf","telegraf-exporter","zlt","zte"],"created_at":"2024-10-02T09:39:09.149Z","updated_at":"2025-04-23T02:24:18.689Z","avatar_url":"https://github.com/vincejv.png","language":"Go","readme":"# GPON Parser (GPON Stats Exporter)\n\nGPON Parser is a Telegraf exporter written in Go that parses and exports GPON ONT/ONU statistics via REST API (JSON format). It is designed for seamless integration with Telegraf, InfluxDB, and Grafana for monitoring and visualization of key performance metrics such as CPU usage, RAM usage, optical RX/TX power, bias current, voltage, and temperature.\n\n## Features\n\n- Fetches GPON ONT/ONU statistics via REST API\n- Monitors CPU usage, RAM usage, optical RX/TX power, bias current, voltage, and temperature\n- Outputs data in JSON format for easy processing\n- Compatible with Telegraf for InfluxDB ingestion\n- Supports visualization in Grafana\n\n## Installation\n\n1. Clone the repository:\n   ```sh\n   git clone https://github.com/vincejv/gpon-parser\n   cd gpon-parser\n   ```\n2. Build the binary (see in [detail](#building-from-source))\n   ```sh\n   go build -ldflags \"-s -w\" -o gpon-parser\n   ```\n3. Configure the [environment variables](#environment-variables) for a specific ONT model or config.\n\n## Usage\n\nRun the exporter with:\n\n```sh\n./gpon-parser\n```\n\n## Integration with Telegraf\n\nConfigure Telegraf to scrape the exported JSON data using the `inputs.http` plugin.\n`telegraf/telegraf.d/gpon-monitoring.conf`\n```\n[[inputs.http]]\n  name_override=\"gpon_monitoring\"\n\n  urls = [\n    \"http://gpon-monitoring.docker.internal:8092/gpon/deviceInfo\",\n    \"http://gpon-monitoring.docker.internal:8092/gpon/opticalInfo\",\n  ]\n\n  data_format = \"json\"\n\n  json_string_fields = [\n    \"deviceModel\",\n    \"modelSerial\",\n    \"softwareVersion\",\n  ]\n\n  [inputs.http.tags]\n    area = \"home\"\n```\n\n## ONT Model supported\n\n* FiberHome HG6245D (Globe Telecom Philippines firmware)\n  * `ONT_MODEL: hg6245d_globe`\n* FiberHome AN5506_04F1A (Globe Telecom Philippines firmware) and other generic FH ONT with generic firmware\n  * `ONT_MODEL: an5506_stock`\n* ZTE F660 and F670\n  * `ONT_MODEL: zte_f670`\n* ZLT G3000A (Globe Telecom Philippines firmware)\n  * `ONT_MODEL: zlt_g3000a`\n* ZLT G202 (Globe Telecom Philippines firmware)\n  * `ONT_MODEL: zlt_g202`\n* Skyworth GN630V (Stock firmware)\n  * `ONT_MODEL: skyworth_gn630v`\n\n## Environment variables\n* `ONT_WEB_HOST`\n  * IP address of ONT\n  * Default: depends on modem\n* `ONT_WEB_PORT`\n  * Port on which ONT Web UI is listening to\n  * Default: depends on modem\n* `ONT_WEB_PROTOCOL`\n  * Web protocol which the ONT web gui uses, typically set as `http` or `https`\n  * Default: `http`\n* `ONT_WEB_USER`\n  * ONT Web UI username\n  * Default: depends on modem\n* `ONT_WEB_PASS`\n  * ONT Web UI password\n  * Default: depends on modem\n* `ONT_TELNET_PORT`\n  * ONT Web UI password\n  * Default: `23`\n* `ONT_POLL_SEC`\n  * Specifies the frequency on how often the GPON stats are pulled from the ONT\n  * Default: `60`\n* `LISTEN_PORT`\n  * Port on which the exporter listens to\n  * Default: `8092`\n* `LISTEN_IP`\n  * Ip address on which the exporter listens to\n  * Default: `0.0.0.0`\n\n## Running\nDocker Pull\n```sh\ndocker pull vincejv/gpon-parser:latest\n```\nDocker Run\n```sh\ndocker run -d \\\n  --name gpon-parser \\\n  --restart unless-stopped \\\n  vincejv/gpon-parser:latest\n```\nDocker Compose\n```yaml\nversion: '3'\n\nservices:\n  gpon-parser:\n    image: vincejv/gpon-parser:latest\n    container_name: gpon-parser\n    restart: unless-stopped\n    environment:\n      ONT_MODEL: \"zte_f670\"\n```\n\n## REST API Paths\n`/gpon/allInfo`\n```json\n{\n  \"deviceStats\": {\n    \"memoryUsage\": 54.885117384596136,\n    \"cpuUsage\": 1.31,\n    \"cpuDtlUsage\": [\n      0.1,\n      2.52\n    ],\n    \"deviceModel\": \"F660\",\n    \"modelSerial\": \"FHTTXXXXXX\",\n    \"softwareVersion\": \"V1.1.20P3N6B\",\n    \"uptime\": 86673\n  },\n  \"opticalStats\": {\n    \"rxPower\": -26.5757,\n    \"txPower\": 2.7781,\n    \"temperature\": 44,\n    \"supplyVoltage\": 3.229,\n    \"biasCurrent\": 13.5\n  }\n}\n```\n`/gpon/deviceInfo`\n```json\n{\n  \"memoryUsage\": 54.880947416704885,\n  \"cpuUsage\": 2.4749999999999996,\n  \"cpuDtlUsage\": [\n    0.1,\n    4.85\n  ],\n  \"deviceModel\": \"F660\",\n  \"modelSerial\": \"FHTTXXXXXX\",\n  \"softwareVersion\": \"V1.1.20P3N6B\",\n  \"uptime\": 86748\n}\n```\n`/gpon/opticalInfo`\n```json\n{\n  \"rxPower\": -26.5757,\n  \"txPower\": 2.7781,\n  \"temperature\": 44,\n  \"supplyVoltage\": 3.229,\n  \"biasCurrent\": 13.55\n}\n```\n\n## Building from source\n\n### Building the package\n```sh\ngo build -ldflags \"-s -w\"\n```\n\n### Running\n```sh\ngo run .\n```\n\n### ARM Build on Windows\n```powershell\n$env:GOARCH='arm'\n$env:GOOS='linux'\n```\n\n### ARM Build on Linux\n```sh\nexport GOARCH='arm'\nexport GOOS='linux'\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvincejv%2Fgpon-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvincejv%2Fgpon-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvincejv%2Fgpon-parser/lists"}