{"id":15137233,"url":"https://github.com/fvilarinho/phonebook","last_synced_at":"2025-10-23T12:30:24.413Z","repository":{"id":231153478,"uuid":"778946542","full_name":"fvilarinho/phonebook","owner":"fvilarinho","description":"This application has the intention to demonstrate how to enable observability (collection of metrics, traces \u0026 logs) in  an application services (Frontend, Backend \u0026 Database) with OpenTelemetry and store the data in Prometheus (for metrics) and Jaeger (for traces).","archived":false,"fork":false,"pushed_at":"2024-09-08T09:48:10.000Z","size":17497,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-09-27T07:01:13.095Z","etag":null,"topics":["akamai","docker","gradle","java","linode","opentelemetry","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","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/fvilarinho.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":"2024-03-28T18:12:10.000Z","updated_at":"2024-06-07T23:21:05.000Z","dependencies_parsed_at":"2024-09-21T11:02:13.916Z","dependency_job_id":"d997322a-c9c2-472d-9ea6-1a8896926090","html_url":"https://github.com/fvilarinho/phonebook","commit_stats":null,"previous_names":["fvilarinho/phonebook"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fvilarinho%2Fphonebook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fvilarinho%2Fphonebook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fvilarinho%2Fphonebook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fvilarinho%2Fphonebook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fvilarinho","download_url":"https://codeload.github.com/fvilarinho/phonebook/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219868477,"owners_count":16555797,"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":["akamai","docker","gradle","java","linode","opentelemetry","terraform"],"created_at":"2024-09-26T07:00:32.780Z","updated_at":"2025-10-23T12:30:24.146Z","avatar_url":"https://github.com/fvilarinho.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Phonebook - An OpenTelemetry demo application\n\n## 1. Introduction\nThis application has the intention to demonstrate how to enable observability (collection of metrics, traces \u0026 logs) in \nan application services (Frontend, Backend \u0026 Database) with OpenTelemetry and store the data in Prometheus (for metrics)\nand Jaeger (for traces).\n\nIt also provides some dashboards for Data Visualization tool [Grafana](https://www.grafana.com). You just need to import them.\n\n## 2. Maintainers\n- [Felipe Vilarinho](https://www.linkedin.com/in/fvilarinho)\n\nIf you want to collaborate in this project, reach out us by e-Mail.\n\nYou can also fork and customize this project by yourself once it's opensource. Follow the requirements below to set up \nyour build environment.\n\n## 3. Requirements\n\n### To build, package and publish\n- [JDK 17 or later](https://www.oracle.com/java/technologies/downloads)\n- [Docker 24.x or later](https://www.docker.com)\n- `Any linux distribution with Kernel 5.x or later` or\n- `MacOS - Catalina or later` or\n- `MS-Windows 10 or later with WSL2`\n- `Dedicated machine with at least 4 CPU cores and 8 GB of RAM`\n\nJust execute the shell script `build.sh` to start the building process. Execute `package.sh` to start the packaging, and \nexecute`publish.sh` to publish the built packages in the repository.\n\nThe following variables must be set in your build environment file `.env` that is located in the root directory of this\nproject. Please use the file `.env.template` as template.\n\n- `DOCKER_REGISTRY_URL`: Define the Docker Registry Repository URL to build and store the container images. (For \nexample, to use [Docker HUB](https://hub.docker.com), the value will be `docker.io`. To use \n[GitHub Packages]('https://github.com'), the value will be `ghcr.io`. Please check the instructions of your Docker \nRegistry repository).\n- `DOCKER_REGISTRY_ID`: Define the Docker Registry Repository Identifier (Usually it's the username, but check the \ninstructions of your Docker Registry repository).\n- `BUILD_VERSION`: Define the version of the container images.\n- `DB_HOST`: Define the hostname of the database. By default, it uses the local container service.\n- `DB_NAME`: Define the name of the database.\n- `DB_USER`: Define the username connect in the database.\n- `DB_PASS`: Define the password to connect in the database.\n- `DB_ROOT_PASS`: Define the root password of the database.\n- `APP_USER`: Define the username to authenticate in the application.\n- `APP_PASS`: Define the password to authenticate in the application.\n  \nThe following environment variable must be set in your operating system.\n- `DOCKER_REGISTRY_PASSWORD`: Define the Docker Registry Repository Password.\n\n### To start / stop locally\nJust execute the shell script `start.sh` (after the setup) to start the stack locally, and execute `stop.sh` to stop the\nstack locally.\n\n### To deploy\nFirst, you need to define the credentials of Akamai Connected Cloud. Please check the Settings / Resources sections \nbelow.\nAfter the credentials are defined, just execute the shell script `deploy.sh` to start the provisioning, and execute \n`undeploy.sh` for de-provisioning.\n\n### To access\nTo access the stack UI, just open your browser and type the URL: `[http|https]://\u003chostname\u003e/ui` and the login prompt \nwill appear. For local access, use localhost, for remote access, use the IP/Hostname of the provisioned infrastructure.\n\nTo access the Metrics Server UI (Prometheus), just open your browser and type the URL: `[http|https]://\u003chostname\u003e:9090`. \nFor local access, use localhost, for remote access, use the IP/Hostname of the provisioned infrastructure.\n\nTo access the Traces Server UI (Jaeger), just open your browser and type the URL: `[http|https]://\u003chostname\u003e:16686`.\nFor local access, use localhost, for remote access, use the IP/Hostname of the provisioned infrastructure.\n\n## 4. Settings\nIf you want to customize the stack by yourself, just edit the following files:\n- `iac/.credentials`: Defines the Akamai Connected Cloud credentials. Please use the file `iac/.credentials.template` as\ntemplate.\n- `iac/settings.json`: Defines the Akamai Connected Cloud provisioning settings to be used. Please use the file `iac/settings.json.template` \nas template.\n- `iac/main.tf`: Defines the required provisioning providers.\n- `iac/variables.tf`: Defines the provisioning variables.\n- `iac/linode.tf`: Defines the Akamai Connected Cloud provider.\n- `iac/linode-instances.tf`: Defines the instances to be provisioned in Akamai Connected Cloud.\n- `iac/linode-certificates.tf`: Defines the TLS certificates to be provisioned.\n- `iac/linode-firewall.tf`: Defines the firewall rules to be provisioned.\n- `iac/docker-compose.yml`: Defines how the application stack is composed.\n- `etc/frontend.conf`: Defines the Frontend service configurations.\n- `etc/prometheus.conf`: Defines the Prometheus service configurations.\n- `etc/otel_*.json`: OpenTelemetry Dashboards definition.\n- `Dockerfile`: Defines the container images of the application.\n\n## 5. Other resources\n- [Akamai Connected Cloud](https://www.linode.com/)\n- [OpenTelemetry](https://opentelemetry.io/)\n- [Prometheus](https://prometheus.io/)\n- [Jaeger](https://www.jaegertracing.io/)\n- [Grafana](https://www.grafana.com/)\n\nAdditionally, you can create an Akamai Property and enable [Akamai Datastream 2](https://techdocs.akamai.com/datastream2/docs/welcome-datastream2)\nto collect the CDN traffic logs and/or [Akamai SIEM Integration](https://techdocs.akamai.com/siem-integration/docs/welcome-siem-integration)\nfor security logs. These logs can be stored in [Hydrolix](https://www.hydrolix.io). Check it out this [repo](https://www.github.com/fvilarinho/hydrolix-demo)\nto know how to provision it.\n\nAnd that's it! Have fun!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffvilarinho%2Fphonebook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffvilarinho%2Fphonebook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffvilarinho%2Fphonebook/lists"}