{"id":15013850,"url":"https://github.com/alainpham/app-archetypes","last_synced_at":"2025-04-12T05:50:27.408Z","repository":{"id":50602468,"uuid":"276602495","full_name":"alainpham/app-archetypes","owner":"alainpham","description":"Archetypes for Java/Apache Camel Developers \u0026 Monitoring Tools","archived":false,"fork":false,"pushed_at":"2025-01-08T13:34:05.000Z","size":7783,"stargazers_count":22,"open_issues_count":2,"forks_count":14,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T01:12:45.089Z","etag":null,"topics":["apache-camel","grafana","grafana-dashboard","monitoring","prometheus","quarkus","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"CSS","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/alainpham.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}},"created_at":"2020-07-02T09:18:45.000Z","updated_at":"2025-03-14T17:49:08.000Z","dependencies_parsed_at":"2024-03-24T03:19:07.864Z","dependency_job_id":"9d708516-60f5-44f2-b885-e39f492354c1","html_url":"https://github.com/alainpham/app-archetypes","commit_stats":{"total_commits":211,"total_committers":5,"mean_commits":42.2,"dds":"0.11848341232227488","last_synced_commit":"d4baf4a62f4b8df3fe387dfd8bd911e8b8fd4c58"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alainpham%2Fapp-archetypes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alainpham%2Fapp-archetypes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alainpham%2Fapp-archetypes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alainpham%2Fapp-archetypes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alainpham","download_url":"https://codeload.github.com/alainpham/app-archetypes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248525153,"owners_count":21118616,"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":["apache-camel","grafana","grafana-dashboard","monitoring","prometheus","quarkus","spring-boot"],"created_at":"2024-09-24T19:44:51.191Z","updated_at":"2025-04-12T05:50:27.379Z","avatar_url":"https://github.com/alainpham.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Archetypes \u0026 Monitoring Tools for Java/Apache Camel developers\n\n- [Archetypes \\\u0026 Monitoring Tools for Java/Apache Camel developers](#archetypes--monitoring-tools-for-javaapache-camel-developers)\n  - [Install archetypes](#install-archetypes)\n  - [Create a Spring Boot Camel Project](#create-a-spring-boot-camel-project)\n  - [Create a Spring Boot Project](#create-a-spring-boot-project)\n  - [Create a Quarkus Camel Project](#create-a-quarkus-camel-project)\n  - [Create a Plain Java Project](#create-a-plain-java-project)\n  - [Observability Stack : Grafana Dashboard For Apache Camel](#observability-stack--grafana-dashboard-for-apache-camel)\n  - [Install Prometheus \\\u0026 Grafana on local docker engine for testing](#install-prometheus--grafana-on-local-docker-engine-for-testing)\n    - [Create docker network for internal dns resolution](#create-docker-network-for-internal-dns-resolution)\n    - [Run a smoke-test-app written with quarkus](#run-a-smoke-test-app-written-with-quarkus)\n    - [Run Prometheus](#run-prometheus)\n    - [Run Grafana](#run-grafana)\n    - [Delete everything](#delete-everything)\n  - [Install Prometheus \\\u0026 Grafana on kubernetes](#install-prometheus--grafana-on-kubernetes)\n  - [Current versions for plain java pojects](#current-versions-for-plain-java-pojects)\n  - [Current versions for spring boot used](#current-versions-for-spring-boot-used)\n  - [Current versions for quarkus used](#current-versions-for-quarkus-used)\n  - [Next steps for this small project](#next-steps-for-this-small-project)\n\nThis repo contains archetypes that should be useful to camel developers that don't want to start with common things already included in their projects such as \n* Monitoring with Micrometer / Prometheus / Grafana\n* HTTP Rest with OpenAPI / SwaggerUI\n* Websockets\n* Soap with CXF (Optional) -\u003e not supported yet in the latest versions as we transition from javax to jakarta\n\nIt also contains the a comprehensive Grafana Dashboard for performance monitoring on metrics collected through Prometheus.\n\n\n## Install archetypes\n\n```\nmvn -f quarkus-camel/pom.xml install\nmvn -f spring-boot-camel/pom.xml install\nmvn -f spring-boot/pom.xml install\nmvn -f plain-java/pom.xml install\n```\n\n## Create a Spring Boot Camel Project\n\nThe following is a Spring Boot archetype\n\n```\nmvn archetype:generate \\\n    -DarchetypeGroupId=net.alainpham \\\n    -DarchetypeArtifactId=spring-boot-camel \\\n    -DarchetypeCatalog=local \\\n    -DarchetypeVersion=1.0.0\n```\n\n## Create a Spring Boot Project\n\nThe following is a Spring Boot archetype\n\n```\nmvn archetype:generate \\\n    -DarchetypeGroupId=net.alainpham \\\n    -DarchetypeArtifactId=spring-boot \\\n    -DarchetypeCatalog=local \\\n    -DarchetypeVersion=1.0.0\n```\n\n## Create a Quarkus Camel Project\n\nThe following is a Quarkus archetype\n\n```\nmvn archetype:generate \\\n    -DarchetypeGroupId=net.alainpham \\\n    -DarchetypeArtifactId=quarkus-camel \\\n    -DarchetypeCatalog=local \\\n    -DarchetypeVersion=1.0.0\n```\n\n## Create a Plain Java Project\n\n```\nmvn archetype:generate \\\n    -DarchetypeGroupId=net.alainpham \\\n    -DarchetypeArtifactId=plain-java \\\n    -DarchetypeCatalog=local \\\n    -DarchetypeVersion=1.0.0\n```\n\n## Observability Stack : Grafana Dashboard For Apache Camel\n\nThe dashboard that you can import can be found [here](camel-monitoring/camel-dashboards-for-import/apache-camel-micrometer.json)\n\nIn camel 2 we relied on JMX exporter. For Camel 3 \u0026 4, the dashboard now uses metrics exposed by the micrometer library. This offers the same dashboard accross all flavors like Camel Spring, Camel Quarkus and Camel K.\n\nMinimal Apache Camel version required with the changes to micrometer naming convention\n\n- Apache Camel 3.21+\n- Apache Camel 4.0.0-M3\n\nref : [https://issues.apache.org/jira/browse/CAMEL-19193](https://issues.apache.org/jira/browse/CAMEL-19193)\n\nIt gives comprehensive metrics for performance monitoring. It focuses on monitoring route execution rate and average executions times that is broken down to processors \u0026 routes. You can use it to find your bottlenecks and detect degradations in quality of service.\n\nVideos based on the JMX exporter version (micrometer version to come) : \nHere : http://www.youtube.com/watch?v=0LDgv1nIk-Y\nor here : https://odysee.com/@alainpham:8/apache-camel-monitoring-prometheus-grafana:c \n\n[![Grafana](assets/grafana-dash-sample.png)](http://www.youtube.com/watch?v=0LDgv1nIk-Y)\n\n## Install Prometheus \u0026 Grafana on local docker engine for testing\n\n### Create docker network for internal dns resolution\n\n```\ndocker network create --driver=bridge --subnet=172.22.0.0/16 --gateway=172.22.0.1 camelnet\n```\n\n### Run a smoke-test-app written with quarkus\n\n```\ndocker run -d \\\n    --name=smoke-test-app-quarkus \\\n    --net camelnet \\\n    -p 7080:8080 \\\n    alainpham/smoke-test-app:2.0.1\n```\n\n### Run Prometheus\n\n```\ndocker run -d \\\n    --name=camel-prometheus \\\n    --net camelnet \\\n    -p 9090:9090 \\\n    -v $(pwd)/camel-monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro \\\n    prom/prometheus:v2.45.0\n```\n\n### Run Grafana\n\n```\ndocker run -d \\\n    --name=camel-grafana \\\n    --net camelnet \\\n    -p 3000:3000 \\\n    -e GF_SECURITY_ADMIN_PASSWORD=password \\\n    -v $(pwd)/camel-monitoring/grafana-datasources.yml:/etc/grafana/provisioning/datasources/grafana-datasources.yml:ro \\\n    -v $(pwd)/camel-monitoring/camel-dashboards/:/etc/grafana/provisioning/dashboards:ro \\\n    grafana/grafana:10.0.1\n\n```\n\n### Delete everything\n\n```\ndocker stop camel-grafana camel-prometheus smoke-test-app-quarkus\n\ndocker rm camel-grafana camel-prometheus smoke-test-app-quarkus\n\ndocker network rm camelnet\n```\n\n## Install Prometheus \u0026 Grafana on kubernetes\n\nUse these commands if you want to quickly test the archetype out including some monitoring\n\n```\nWIP\n```\n\n\n## Current versions for plain java pojects\n\n| Components                 | Version          |\n|----------------------------|------------------|\n| java                       | 17               |\n| camel-version              | 4.0.1            |\n| maven-compiler-plugin      | 3.11.0           |\n| maven-dependency-plugin    | 3.6.0            |\n| maven-jar-plugin           | 3.3.0            |\n| logback-version            | 1.4.11           |\n\n\n## Current versions for spring boot used\n\n| Components                   | Version          |\n|------------------------------|------------------|\n| java                         | 17               |\n| maven-compiler-plugin        | 3.11.0           |\n| camel-version                | 4.0.1            |\n| spring-boot-version          | 3.1.4            |\n| swagger-ui-version           | 3.52.5           |\n| swagger-codegen-version      | 3.0.46\t          |\n| (cxf-codegen-plugin-version) | (4.0.3) WIP      |\n| logstash-encoder-version     | 7.4              |\n| webjars-locator-version      | 0.47             |\n| jmx_prometheus_javaagent     | 0.20.0           | \n| run-java-version             | 1.3.8            |\n| temurin-image-version        | 17.0.8.1_1-jre   |\n\n\n## Current versions for quarkus used\n\n| Components                 | Version          |\n|----------------------------|------------------|\n| java                       | 17               |\n| camel-version              | 4.0.0            |\n| quarkus-version            | 3.4.1    \t    |\n| maven-compiler-plugin      | 3.11.0\t        |\n| surefire-plugin-version    | 3.1.2            |\n| temurin-image-version      | 17.0.8.1_1-jre   |\n\n## Next steps for this small project\n\n* Add opentelemetry tracing and send data to Grafana Tempo.\n* Link metrics to traces.\n* Make a video on Grafana dashboard and the newer micrometer prometheus metrics","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falainpham%2Fapp-archetypes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falainpham%2Fapp-archetypes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falainpham%2Fapp-archetypes/lists"}