{"id":19141582,"url":"https://github.com/reinanhs/poc-hyperf-observability","last_synced_at":"2025-09-08T21:32:28.379Z","repository":{"id":170410158,"uuid":"646180704","full_name":"ReinanHS/poc-hyperf-observability","owner":"ReinanHS","description":"Esse repositório tem o objetivo de demonstrar como funciona o processo de observabilidade dentro do ecossistema Hyperf.","archived":false,"fork":false,"pushed_at":"2023-06-02T22:48:52.000Z","size":193,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-09T07:25:06.869Z","etag":null,"topics":["grafana","hyperf","k6","metrics","opentelemetry","prometheus","zipkin"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ReinanHS.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","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-05-27T14:46:12.000Z","updated_at":"2024-06-13T11:36:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"7a194961-0008-4af6-a06d-8d5769d72387","html_url":"https://github.com/ReinanHS/poc-hyperf-observability","commit_stats":null,"previous_names":["reinanhs/poc-hyperf-observability"],"tags_count":2,"template":false,"template_full_name":"ReinanHS/hyperf-example-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReinanHS%2Fpoc-hyperf-observability","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReinanHS%2Fpoc-hyperf-observability/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReinanHS%2Fpoc-hyperf-observability/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ReinanHS%2Fpoc-hyperf-observability/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ReinanHS","download_url":"https://codeload.github.com/ReinanHS/poc-hyperf-observability/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232352931,"owners_count":18510070,"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":["grafana","hyperf","k6","metrics","opentelemetry","prometheus","zipkin"],"created_at":"2024-11-09T07:23:55.937Z","updated_at":"2025-01-03T15:15:31.981Z","avatar_url":"https://github.com/ReinanHS.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\".github/content/observability-hyperf.png\" alt=\"logo\" width=\"80%\"\u003e\n\u003c/div\u003e\n\nPOC Hyperf Observability\n=======================================\n\n[![Licence: MIT](https://img.shields.io/badge/Licence-MIT-green)](LICENCE)\n[![Team](https://img.shields.io/badge/Team-General-red)](https://gitlab.com/educa-code-labs/general)\n\n* * *\n\nEsse repositório tem o objetivo de demonstrar como funciona o processo de observabilidade dentro do ecossistema Hyperf. Nesse projeto é feito todas as configurações básicas para você conseguir iniciar e dar os primeiros passos na observabilidade dos seus serviços usando esse framework.\n\n## O que é observabilidade?\n\nObservabilidade é uma propriedade de sistemas complexos que se refere à capacidade de entender e inferir o estado interno e o comportamento de um sistema com base em informações observáveis externamente. É a capacidade de observar, medir e entender o funcionamento de um sistema, permitindo a detecção e resolução de problemas.\n\n## Benefícios da observabilidade\n\nA utilização da observabilidade nos seus serviços traz uma série de benefícios importantes. Veja os exemplos abaixo:\n\n1. **Detecção e resolução rápida de problemas**: A observabilidade permite identificar problemas e anomalias em tempo real. Com métricas, logs e traces disponíveis, você pode monitorar o desempenho e o comportamento do sistema, detectando falhas, gargalos ou comportamentos inesperados.\n2. **Melhoria da confiabilidade**: Ao ter uma visibilidade clara do estado interno do sistema, você pode tomar medidas proativas para melhorar a confiabilidade. Monitorar métricas como taxa de erros, tempo de resposta e disponibilidade ajuda a identificar áreas problemáticas e implementar ações corretivas antes que os problemas se tornem críticos. Isso resulta em um sistema mais robusto e confiável.\n3. **Depuração e diagnóstico eficientes**: A observabilidade fornece informações valiosas para depurar problemas e investigar falhas. Com logs detalhados e traces de transações, você pode rastrear o fluxo de execução do sistema e entender o contexto em que ocorreu um problema. Isso simplifica o processo de identificação da causa-raiz e acelera o tempo de resolução.\n4. **Melhoria do desempenho e otimização**: Ao analisar as métricas de desempenho, você pode identificar gargalos e pontos de melhoria no seu sistema. A observabilidade ajuda a identificar oportunidades de otimização, permitindo ajustar recursos, melhorar algoritmos ou reestruturar componentes para obter um desempenho mais eficiente e escalável.\n\nEm resumo, a observabilidade oferece uma série de benefícios, incluindo detecção e resolução rápida de problemas, melhoria da confiabilidade, depuração eficiente, otimização de desempenho, tomada de decisões informadas e melhoria da experiência do usuário.\n\n## Configuração do ambiente\n\nA seguir, apresentam-se os requisitos e etapas fundamentais para a configuração do seu ambiente a fim de executar o projeto de exemplo.\n\n### Requisitos\n\n- Docker\n- Git\n- Make\n\n### Instalação\n\nA maneira recomendada de instalar este projeto é seguindo estas etapas:\n\n1. Realize o clone do projeto para a sua máquina\n\n```shell\ngit clone https://github.com/ReinanHS/poc-hyperf-observability.git\n```\n\n2. Acessar as pastas do projeto\n\n```shell\ncd poc-hyperf-observability \ndocker compose up\n```\n\n3. Abra um novo terminal e execute os comandos abaixo:\n\n```shell\ndocker exec -it hyperf-example-app bash\ncomposer install\ncomposer start\n```\n\n4. Abra um novo terminal e execute os comandos abaixo:\n\n```shell\ncurl http://localhost:9501/ -v\ncurl http://localhost:9501/external-api -v\ncurl http://localhost:9501/redis -v\ncurl http://localhost:9501/database -v\ncurl http://localhost:9501/exception -v\n```\n\n5. Execute o comando abaixo para realizar um teste de carga:\n\n```shell\ndocker compose run k6 run /scripts/main.js\n```\n\n### Visualizar informações\n\nVeja as etapas necessárias para conseguir visualizar as informações geradas.\n\n#### Como funciona a propagação das informações?\n\nA figura abaixo ilustra o fluxo de propagação das informações em nossa aplicação. O Hyperf gera as informações necessárias e as envia para o coletor do Opentelemetry para processamento.\n\nApós o recebimento das informações pelo Opentelemetry, ele as encaminha para os provedores configurados. Para obter uma visão geral do processo em andamento, consulte a imagem abaixo.\n\n![fluxo-de-execucao](https://github.com/ReinanHS/poc-hyperf-observability/assets/28494067/888826d5-2889-419d-9deb-3e1ca43d8eb5)\n\n#### ZipKin\n\nO Zipkin é uma ferramenta de rastreamento distribuído amplamente utilizada em sistemas distribuídos. Ele permite rastrear e visualizar o fluxo de solicitações entre os diferentes componentes de um sistema, fornecendo informações valiosas para a identificação e solução de problemas de desempenho.\n\n- Acesse a URL [http://127.0.0.1:9411](http://127.0.0.1:9411) para ter acesso de informações que estão disponíveis no ZipKin.\n\nVeja um exemplo das informações que estão disponíveis nesse serviço:\n\n\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/ReinanHS/poc-hyperf-observability/assets/28494067/ef90349b-b6a3-435e-b7e1-acf45a481004\" alt=\"logo\" width=\"80%\"\u003e\n\u003c/div\u003e\n\n#### Jaeger\n\nO Jaeger é uma plataforma de rastreamento distribuído desenvolvida para ajudar a monitorar, solucionar problemas e otimizar o desempenho de sistemas distribuídos complexos.\n\nEle foi projetado para trabalhar em conjunto com o conceito de \"rastreamento de solicitações\", permitindo acompanhar o fluxo de solicitações em uma arquitetura distribuída e fornecer informações detalhadas sobre o tempo gasto em cada componente envolvido.\n\n- Acesse a URL [http://localhost:16686](http://localhost:16686) para ter acesso de informações que estão disponíveis no Jaeguer.\n\n#### Prometheus\n\nO Prometheus é um sistema de monitoramento e alerta de código aberto, amplamente utilizado para coletar, armazenar e consultar métricas de sistemas distribuídos.\n\nEle opera seguindo o modelo de coleta de métricas por meio de um agente chamado Prometheus Server. O Prometheus é projetado para ser altamente escalável e eficiente, capaz de coletar e armazenar métricas em tempo real de diversos componentes do sistema, como aplicativos, serviços e infraestrutura.\n\n- Acesse a URL [http://localhost:9090](http://localhost:9090) para ter acesso de informações que estão disponíveis no Promotheus.\n\n#### Grafana\n\nO Grafana é uma plataforma de visualização e monitoramento de código aberto amplamente utilizada para criar painéis interativos e gráficos visuais que exibem dados de métricas e logs.\n\nCom o Grafana, os usuários podem conectar uma variedade de fontes de dados, como Prometheus, InfluxDB, Elasticsearch e muitos outros, para coletar dados e criar visualizações personalizadas. Ele oferece uma ampla gama de opções de painéis e gráficos, permitindo que os usuários criem dashboards informativos e interativos para monitorar o desempenho e a saúde de sistemas, aplicativos e infraestrutura.\n\n- Acesse a URL [http://localhost:3000](http://localhost:3000) para ter acesso de informações que estão disponíveis no Grafana.\n- Utilize o usuário `admin` e a senha `secret` para acessar as informações. \n- Na dashboard substitua o valor da variável `app_name` por `otel_poc_hyperf_observability`\n\nVeja um exemplo das informações que estão disponíveis nesse serviço:\n\n\u003cdiv align=\"center\"\u003e\n   \u003cimg src=\"https://github.com/ReinanHS/poc-hyperf-observability/assets/28494067/27b0d550-151f-497d-b9e5-9f83f6849489\" alt=\"logo\" width=\"80%\"\u003e\n\u003c/div\u003e\n\n### Software stack\n\nEsse projeto roda nos seguintes softwares:\n\n- Git 2.33+\n- Hyperf\n- ZipKin\n- Jaeger\n- Prometheus\n- Grafana\n- MySQL\n- Redis\n\n### Changelog\n\nPor favor, veja [CHANGELOG](CHANGELOG.md) para obter mais informações sobre o que mudou recentemente.\n\n### Seja um dos contribuidores\n\nQuer fazer parte desse projeto? Clique AQUI e leia [como contribuir](CONTRIBUTING.md).\n\n### Licença\n\nEsse projeto está sob licença. Veja o arquivo [LICENÇA](LICENSE.md) para mais detalhes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freinanhs%2Fpoc-hyperf-observability","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freinanhs%2Fpoc-hyperf-observability","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freinanhs%2Fpoc-hyperf-observability/lists"}