Giter Club home page Giter Club logo

signoz / signoz Goto Github PK

View Code? Open in Web Editor NEW
17.0K 17.0K 1.0K 36.57 MB

SigNoz is an open-source observability platform native to OpenTelemetry with logs, traces and metrics in a single application. An open-source alternative to DataDog, NewRelic, etc. πŸ”₯ πŸ–₯. πŸ‘‰ Open source Application Performance Monitoring (APM) & Observability tool

Home Page: https://signoz.io

License: Other

Dockerfile 0.04% JavaScript 0.26% TypeScript 57.73% Go 38.22% Python 0.02% Shell 0.44% EJS 0.13% Makefile 0.14% SCSS 3.02% HTML 0.01%
apm application-monitoring distributed-tracing go good-first-issue jaeger log logs metrics monitoring nextjs observability open-source opentelemetry prometheus react reactjs self-hosted tracing typescript

signoz's Introduction

SigNoz-logo

Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc.

Downloads GitHub issues tweet

SigNoz helps developers monitor applications and troubleshoot problems in their deployed applications. With SigNoz, you can:

πŸ‘‰ Visualise Metrics, Traces and Logs in a single pane of glass

πŸ‘‰ You can see metrics like p99 latency, error rates for your services, external API calls and individual end points.

πŸ‘‰ You can find the root cause of the problem by going to the exact traces which are causing the problem and see detailed flamegraphs of individual request traces.

πŸ‘‰ Run aggregates on trace data to get business relevant metrics

πŸ‘‰ Filter and query logs, build dashboards and alerts based on attributes in logs

πŸ‘‰ Record exceptions automatically in Python, Java, Ruby, and Javascript

πŸ‘‰ Easy to set alerts with DIY query builder

Application Metrics

application_metrics

Distributed Tracing

distributed_tracing_2 2

distributed_tracing_1

Logs Management

logs_management

Infrastructure Monitoring

infrastructure_monitoring

Exceptions Monitoring

exceptions_light

Alerts

alerts_management



Join our Slack community

Come say Hi to us on Slack πŸ‘‹



Features:

  • Unified UI for metrics, traces and logs. No need to switch from Prometheus to Jaeger to debug issues, or use a logs tool like Elastic separate from your metrics and traces stack.
  • Application overview metrics like RPS, 50th/90th/99th Percentile latencies, and Error Rate
  • Slowest endpoints in your application
  • See exact request trace to figure out issues in downstream services, slow DB queries, call to 3rd party services like payment gateways, etc
  • Filter traces by service name, operation, latency, error, tags/annotations.
  • Run aggregates on trace data (events/spans) to get business relevant metrics. e.g. You can get error rate and 99th percentile latency of customer_type: gold or deployment_version: v2 or external_call: paypal
  • Native support for OpenTelemetry Logs, advanced log query builder, and automatic log collection from k8s cluster
  • Lightning quick log analytics (Logs Perf. Benchmark)
  • End-to-End visibility into infrastructure performance, ingest metrics from all kinds of host environments
  • Easy to set alerts with DIY query builder



Why SigNoz?

Being developers, we found it annoying to rely on closed source SaaS vendors for every small feature we wanted. Closed source vendors often surprise you with huge month end bills without any transparency.

We wanted to make a self-hosted & open source version of tools like DataDog, NewRelic for companies that have privacy and security concerns about having customer data going to third party services.

Being open source also gives you complete control of your configuration, sampling, uptimes. You can also build modules over SigNoz to extend business specific capabilities

Languages supported:

We support OpenTelemetry as the library which you can use to instrument your applications. So any framework and language supported by OpenTelemetry is also supported by SigNoz. Some of the main supported languages are:

  • Java
  • Python
  • Node.js
  • Go
  • PHP
  • .NET
  • Ruby
  • Elixir
  • Rust

You can find the complete list of languages here - https://opentelemetry.io/docs/



Getting Started

Deploy using Docker

Please follow the steps listed here to install using docker

The troubleshooting instructions may be helpful if you face any issues.

Β 

Deploy in Kubernetes using Helm

Please follow the steps listed here to install using helm charts



Comparisons to Familiar Tools

SigNoz vs Prometheus

Prometheus is good if you want to do just metrics. But if you want to have a seamless experience between metrics and traces, then current experience of stitching together Prometheus & Jaeger is not great.

Our goal is to provide an integrated UI between metrics & traces - similar to what SaaS vendors like Datadog provides - and give advanced filtering and aggregation over traces, something which Jaeger currently lack.

Β 

SigNoz vs Jaeger

Jaeger only does distributed tracing. SigNoz supports metrics, traces and logs - all the 3 pillars of observability.

Moreover, SigNoz has few more advanced features wrt Jaeger:

  • Jaegar UI doesn’t show any metrics on traces or on filtered traces
  • Jaeger can’t get aggregates on filtered traces. For example, p99 latency of requests which have tag - customer_type='premium'. This can be done easily on SigNoz

Β 

SigNoz vs Elastic

  • SigNoz Logs management are based on ClickHouse, a columnar OLAP datastore which makes aggregate log analytics queries much more efficient
  • 50% lower resource requirement compared to Elastic during ingestion

We have published benchmarks comparing Elastic with SigNoz. Check it out here

Β 

SigNoz vs Loki

  • SigNoz supports aggregations on high-cardinality data over a huge volume while loki doesn’t.
  • SigNoz supports indexes over high cardinality data and has no limitations on the number of indexes, while Loki reaches max streams with a few indexes added to it.
  • Searching over a huge volume of data is difficult and slow in Loki compared to SigNoz

We have published benchmarks comparing Loki with SigNoz. Check it out here



Contributing

We ❀️ contributions big or small. Please read CONTRIBUTING.md to get started with making contributions to SigNoz.

Not sure how to get started? Just ping us on #contributing in our slack community

Project maintainers

Backend

Frontend

DevOps



Documentation

You can find docs at https://signoz.io/docs/. If you need any clarification or find something missing, feel free to raise a GitHub issue with the label documentation or reach out to us at the community slack channel.



Community

Join the slack community to know more about distributed tracing, observability, or SigNoz and to connect with other users and contributors.

If you have any ideas, questions, or any feedback, please share on our Github Discussions

As always, thanks to our amazing contributors!

signoz's People

Contributors

ahsanbarkati avatar ankitnayan avatar calm-rock avatar cruxashu avatar dependabot[bot] avatar dhawal1248 avatar dhrubesh avatar dhrubesh-makeen avatar dnazarenkoo avatar gitstart avatar himanshu-source21 avatar jyash97 avatar makeavish avatar mindhash avatar nidhi-tandon avatar nityanandagohain avatar palashgdev avatar pranay01 avatar prashant-shahi avatar raj-k-singh avatar rajat-dabade avatar sagarrajput-7 avatar sf-pchakraborty avatar srikanthccv avatar techchintan avatar vikrant2520 avatar ybettan avatar yeshev avatar younixm avatar zriyansh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

signoz's Issues

Add Events data from OpenTelemetry spans

While flattening the data, we should also store Events data from spans to Apache Druid.
This contains exception data apart from reasons for erroneous spans like Redis timeout

Add Status field from OpenTelemetry for Error Processing

Currently Error Processing field is done by:

  • Presence of tag error:true
  • http.status_code tag with value >500

Need to add another logic:
Span contains a field Status which works for all sorts of client & server requests.

Suggesting, testing of conditions to check whether the present 2 conditions are needed or can be done alone by Status field in Span.

Add default view in dropdown service-picker in ServiceMap

Once we select a service from the dropdown in the service map, the dropdown does not give the option to show any other default view to deselect the service.

Add an option in the service-picker dropdown to choose a default view without any service selected.

Add "IS NOT NULL" operator in tag filtering in trace page

Currently, to filter spans by tags there are 2 operators:

  • EQUALS
  • CONTAINS

An operator with the capability to check for IS NOT NULL values will be useful in getting all those spans which have a value of the tag. The value of IS NOT NULL operator that is passed in the API call would be isnotnull

Skip Patterns while pushing traces

Hi team
I've tried out SigNoz with Spring boot micro-services which are already integrated with Zipkin. In the dashboard, I can see the /webjars and /swagger endpoints. It would be great to have some 'skip pattern' to avoid un-desired URLs. Thanks!

ServiceMap - Frontend

Screenshot 2021-04-17 at 7 42 36 PM

The backend API has all parent-child relationships with numCounts assigned to each edge which is not needed now. Maybe we can add that info later to any relevant UI component. Below are functionalities to be met:

  • Size of Nodes according to the RPS being handled by the application

  • Choosing a service from dropdown should bring that node to the center of the page

  • On hover/select on node show popup with info from API /api/v1/services?start=xxx&end=xxx

  • RPS, error percent, and p99 latency should be displayed on hover/select

  • Color logic of node -> if errors then Red, if 4xx then Yellow else Green

Checkout lib https://github.com/crubier/react-graph-vis, which uses parent lib https://github.com/visjs/vis-network and examples at https://visjs.github.io/vis-network/examples/

https://github.com/Netflix/vizceral β†’ another library that has dots on the arrow between nodes. Though this library does not seem to be maintained anymore.

This product also has moving data lines β†’ https://app.lightstep.com/play/explorer?snapshot_id=HrPQVHjZX0&active_tab=service-diagram&selected_node_id=krakend-api-gateway

We need to show some type of movement in lines to depict the direction of data movement between nodes like an arrow. Makes the chart feel dynamic rather than static.

Independent time range for Span Aggregation section

Currently, the SpanAggregation has startTime and endTime equal to the traces page which might be less relevant if the period is short. For now, we can keep a default 30 mins window for SpanAggregation API call

Move docs to this repo

Currently, the website and documentation of SigNoz are hosted in private repos. We should plan to shift documentation to this public repo so that other contributors building and testing different integrations, deployment methods, and changes to docs can be democratically and publically updated.

We use Docusaurus for documentation and will post the steps to shift soon.

Change time range in api call of Service Map to 1 min from latest

Currently, it works based on the time range chosen from the DateTime picker widget at the top-right of the page. We need to make Service Map just show the last 1 min data from the API even for the API call to the /services endpoint.

This will make ServiceMap work like a snapshot of architecture at the current moment.

Requirements:

  • Remove the custom DateTime picker option
  • Keep the Refresh button at the top-right as it is. It should just update the data and chart
  • Change the services API call to fetch just the last 1-minute data.

Make clicking on chart datapoints to see traces more intuitive

It works by single clicking at the datapoints in the chart. It won't work for full plotted lines but only where the timestamp has data. Currently, the resolution of data is 1 min in the chart. Also, you would see small circles on hovering at presence of datapoint as shown in image attached.

image

Add "Span Kind" filter in top panel of span filtering

Suggesting to add "Span Kind" filter in top panel of span filtering aside of Latency Filter in the below screenshot.
Screenshot 2021-05-06 at 6 09 45 PM

The permissible values of Span Kind would be:

  1. SERVER which shall internally transform to kind=2 in the API call
  2. CLIENT which shall internally transform to kind=3 in the API call

All In One Dashboard

Hi team
We've many Spring boot micro-services and under metrics tab all those micro-services are visible. On click of it a service (name), we can see various dashboards like latency, request per sec, errors etc., for the 'selected' service.

Is there any feature by which we can view an 'All In One' Dashboard where all the micro-services are viewable may be with specific type of dashboard (req/s or latency). Would love to have it :D

Thanks!

Try to deploy SigNoz in your infrastructure & report any issues

As we are trying to make SigNoz deployment to work in common infra setups, a good first issue could be just trying installing SigNoz in their local setup and sharing if they face any issue.

Please share your infra details and did you face any issue in running SigNoz

Single click Heroku deploy option

Providing a single click Heroku deploy option may be a good idea to make it easy to test SigNoz for developers.

Tasks

  • Check if current SigNoz docker can run in Heroku free tier and the compute requirements are served in the free tier of Heroku. Goal is not to test with high load but to get the application up and running with sample Hot ROD application

Database calls tab shown even when there are no database calls

Screenshot 2021-05-03 at 12 35 56 AM
Current Behaviour

  • Database calls tab is shown even when there is no data in the graphs ( i.e. no database calls were made)
  • The graphs in the database tab are empty

Expected Behavior

  • Database tab shouldn't be shown for a service for which there are no DB calls made

Update signup page and logo

Current Behaviour
SignUp page after install shows old logo

Expected Behaviour:
Signup page should show the updated logo

Screenshot 2021-05-01 at 10 34 36 AM

Fix add instrumentation page in light mode

Steps to reproduce

  1. Install the application
  2. Switch to light mode using the toggle at the top
  3. Got to Add instrumentation page by navigating through the left panel
  4. The page shows dark background

Expected Behavior

Dark background in this page shouldn't be shown

Screenshot 2021-04-20 at 12 58 00 AM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.