https://signoz.io logo
Join the conversationJoin Slack
Channels
contributing
contributing-frontend
general
github-activities
incidents
k8s_operator_helm
reactjs-config
signoz-alert-testing
support
testsupport
watercooler
webhook-dev
write-for-signoz
Powered by Linen
support
  • g

    George

    11/03/2022, 6:21 PM
    Hello I follow this https://signoz.io/blog/opentelemetry-php/#instrument-your-php-app-with-opentelemetry tutorial and not see any data in http://localhost:3301/trace?
  • a

    Alexei Zenin

    11/03/2022, 9:01 PM
    Any tips or guides on what the capacity requirements are per million traces/hour for SigNoz. I am starting to enable it in our PROD env and have moved a few services and am generating tens of millions of traces per hour at the moment. Want to understand how I should calculate how much capacity i need for clickhouse and the collectors. Thanks!
    a
    • 2
    • 19
  • j

    Jose Almir

    11/04/2022, 11:36 AM
    Hi team! I downloaded signoz and installed it on my machine but I can't create an admin account as an invite is required How to get this invite? It's very weird becouse how get invite using environment in localhost.
    a
    p
    • 3
    • 7
  • m

    Mallesh Kannan

    11/04/2022, 12:41 PM
    Hi team, I have deployed signoz in gcp cluster and configure with ingress and it is up and running. Configured my backend application with loadbalancer:4317 also done. In signoz UI I'm getting response code 500 and response as :
    {
      "data": null,
      "total": 0,
      "limit": 0,
      "offset": 0,
      "errors": [
        {
          "code": 500,
          "msg": "Error in processing sql query: code: 516, message: admin: Authentication failed: password is incorrect or there is no user with such name"
        }
      ]
    }
    can any one help me on this please
  • m

    Mallesh Kannan

    11/04/2022, 12:45 PM
    FYKI
  • a

    Alexei Zenin

    11/04/2022, 5:48 PM
    I setup S3 config for clickhouse and a move factor of 0.1 so i thought it would automatically move to S3 when disk is almost full but that didn’t seem to work. I then tried changing retention via SigNoz UI and got this exception, any ideas what this means?:
    [31mERROR[0m	clickhouseReader/reader.go:2275	error while setting storage policy. Err=code: 36, message: New storage policy `default` shall contain volumes of old one
    <http://go.signoz.io/signoz/pkg/query-service/app/clickhouseReader.(*ClickHouseReader).setColdStorage|go.signoz.io/signoz/pkg/query-service/app/clickhouseReader.(*ClickHouseReader).setColdStorage>
    	/go/src/github.com/signoz/signoz/pkg/query-service/app/clickhouseReader/reader.go:2275
    <http://go.signoz.io/signoz/pkg/query-service/app/clickhouseReader.(*ClickHouseReader).SetTTL.func2|go.signoz.io/signoz/pkg/query-service/app/clickhouseReader.(*ClickHouseReader).SetTTL.func2>
    	/go/src/github.com/signoz/signoz/pkg/query-service/app/clickhouseReader/reader.go:2119
    s
    • 2
    • 1
  • a

    Alexei Zenin

    11/04/2022, 6:10 PM
    Wondering if there is some kind of config where we can have clickhouse just delete data if disk is close to full instead of needing to oversize the disk to fit some number of days which can fluctuate based on service usage. This way you can then tell how many days you start to store (as it would be less and less days if load increases) and can increase size of disk after to accommodate (usually easier to increase a size of the disk than reduce).
    s
    a
    • 3
    • 5
  • s

    Sibaprasad Tripathy

    11/07/2022, 6:46 AM
    Hello Team, I am trying to instrument a sample go program and send it to Signoz as per https://signoz.io/docs/instrumentation/golang/. But the service does not show up on signoz dashboard. Can I get some help on figuring out the issue. Here is my code...
    package main
    
    import (
    	"context"
    	"encoding/json"
    	"io"
    	"net/http"
    	"os"
    	"strconv"
    
    	"<http://github.com/gin-gonic/gin|github.com/gin-gonic/gin>"
    	_ "<http://github.com/go-sql-driver/mysql|github.com/go-sql-driver/mysql>"
    	"<http://github.com/gorilla/mux|github.com/gorilla/mux>"
    	"<http://github.com/jinzhu/gorm|github.com/jinzhu/gorm>"
    	_ "<http://github.com/jinzhu/gorm/dialects/mysql|github.com/jinzhu/gorm/dialects/mysql>"
    	"<http://github.com/rs/cors|github.com/rs/cors>"
    	log "<http://github.com/sirupsen/logrus|github.com/sirupsen/logrus>"
    	"<http://go.opentelemetry.io/otel|go.opentelemetry.io/otel>"
    	"<http://go.opentelemetry.io/otel/attribute|go.opentelemetry.io/otel/attribute>"
    	"<http://go.opentelemetry.io/otel/exporters/otlp/otlptrace|go.opentelemetry.io/otel/exporters/otlp/otlptrace>"
    	"<http://go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc|go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc>"
    	"<http://google.golang.org/grpc/credentials|google.golang.org/grpc/credentials>"
    
    	"<http://go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin|go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin>"
    	"<http://go.opentelemetry.io/otel/sdk/resource|go.opentelemetry.io/otel/sdk/resource>"
    	sdktrace "<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>"
    )
    
    var db, _ = gorm.Open("mysql", "root:root@/todolist?charset=utf8&parseTime=True&loc=Local")
    
    var (
    	serviceName  = os.Getenv("SERVICE_NAME")
    	collectorURL = os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
    	insecure     = os.Getenv("INSECURE_MODE")
    )
    
    func initTracer() func(context.Context) error {
    
    	secureOption := otlptracegrpc.WithTLSCredentials(credentials.NewClientTLSFromCert(nil, ""))
    	if len(insecure) > 0 {
    		secureOption = otlptracegrpc.WithInsecure()
    	}
    
    	log.Printf("entering init trace", collectorURL)
    	exporter, err := otlptrace.New(
    		context.Background(),
    		otlptracegrpc.NewClient(
    			secureOption,
    			otlptracegrpc.WithEndpoint(collectorURL),
    		),
    	)
    
    	if err != nil {
    		log.Fatal(err)
    	}
    	resources, err := resource.New(
    		context.Background(),
    		resource.WithAttributes(
    			attribute.String("service.name", serviceName),
    			attribute.String("library.language", "go"),
    		),
    	)
    	if err != nil {
    		log.Printf("Could not set resources: ", err)
    	}
    	otel.SetTracerProvider(
    		sdktrace.NewTracerProvider(
    			sdktrace.WithSampler(sdktrace.AlwaysSample()),
    			sdktrace.WithBatcher(exporter),
    			sdktrace.WithResource(resources),
    		),
    	)
    	return exporter.Shutdown
    }
    
    type TodoItemModel struct {
    	Id          int `gorm:"primary_key"`
    	Description string
    	Completed   bool
    }
    
    func CreateItem(w http.ResponseWriter, r *http.Request) {
    	description := r.FormValue("description")
    	log.WithFields(log.Fields{"description": description}).Info("Add new TodoItem. Saving to database.")
    	todo := &TodoItemModel{Description: description, Completed: false}
    	db.Create(&todo)
    	result := db.Last(&todo)
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(result.Value)
    
    }
    
    func UpdateItem(w http.ResponseWriter, r *http.Request) {
    	// Get URL parameter from mux
    	vars := mux.Vars(r)
    	id, _ := strconv.Atoi(vars["id"])
    
    	// Test if the TodoItem exist in DB
    	err := GetItemByID(id)
    	if err == false {
    		w.Header().Set("Content-Type", "application/json")
    		io.WriteString(w, `{"updated": false, "error": "Record Not Found"}`)
    	} else {
    		completed, _ := strconv.ParseBool(r.FormValue("completed"))
    		log.WithFields(log.Fields{"Id": id, "Completed": completed}).Info("Updating TodoItem")
    		todo := &TodoItemModel{}
    		db.First(&todo, id)
    		todo.Completed = completed
    		db.Save(&todo)
    		w.Header().Set("Content-Type", "application/json")
    		io.WriteString(w, `{"updated": true}`)
    	}
    }
    
    func DeleteItem(w http.ResponseWriter, r *http.Request) {
    	// Get URL parameter from mux
    	vars := mux.Vars(r)
    	id, _ := strconv.Atoi(vars["id"])
    
    	// Test if the TodoItem exist in DB
    	err := GetItemByID(id)
    	if err == false {
    		w.Header().Set("Content-Type", "application/json")
    		io.WriteString(w, `{"deleted": false, "error": "Record Not Found"}`)
    	} else {
    		log.WithFields(log.Fields{"Id": id}).Info("Deleting TodoItem")
    		todo := &TodoItemModel{}
    		db.First(&todo, id)
    		db.Delete(&todo)
    		w.Header().Set("Content-Type", "application/json")
    		io.WriteString(w, `{"deleted": true}`)
    	}
    }
    
    func GetItemByID(Id int) bool {
    	todo := &TodoItemModel{}
    	result := db.First(&todo, Id)
    	if result.Error != nil {
    		log.Warn("TodoItem not found in database")
    		return false
    	}
    	return true
    }
    
    func GetCompletedItems(w http.ResponseWriter, r *http.Request) {
    	<http://log.Info|log.Info>("Get completed TodoItems")
    	completedTodoItems := GetTodoItems(true)
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(completedTodoItems)
    }
    
    func GetIncompleteItems(w http.ResponseWriter, r *http.Request) {
    	<http://log.Info|log.Info>("Get Incomplete TodoItems")
    	IncompleteTodoItems := GetTodoItems(false)
    	w.Header().Set("Content-Type", "application/json")
    	json.NewEncoder(w).Encode(IncompleteTodoItems)
    }
    
    func GetTodoItems(completed bool) interface{} {
    	var todos []TodoItemModel
    	TodoItems := db.Where("completed = ?", completed).Find(&todos).Value
    	return TodoItems
    }
    
    func Healthz(w http.ResponseWriter, r *http.Request) {
    	<http://log.Info|log.Info>("API Health is OK")
    	w.Header().Set("Content-Type", "application/json")
    	io.WriteString(w, `{"alive": true}`)
    }
    
    func init() {
    	log.SetFormatter(&log.TextFormatter{})
    	log.SetReportCaller(true)
    }
    
    func main() {
    	cleanup := initTracer()
    	defer cleanup(context.Background())
    	r := gin.Default()
    	r.Use(otelgin.Middleware(serviceName))
    	log.Println(serviceName, "serviceName")
    	defer db.Close()
    	db.Debug().DropTableIfExists(&TodoItemModel{})
    	db.Debug().AutoMigrate(&TodoItemModel{})
    	<http://log.Info|log.Info>("Starting Todolist API server")
    	router := mux.NewRouter()
    	router.HandleFunc("/healthz", Healthz).Methods("GET")
    	router.HandleFunc("/todo-completed", GetCompletedItems).Methods("GET")
    	router.HandleFunc("/todo-incomplete", GetIncompleteItems).Methods("GET")
    	router.HandleFunc("/todo", CreateItem).Methods("POST")
    	router.HandleFunc("/todo/{id}", UpdateItem).Methods("POST")
    	router.HandleFunc("/todo/{id}", DeleteItem).Methods("DELETE")
    	http.ListenAndServe(":8000", router)
    	handler := cors.New(cors.Options{
    		AllowedMethods: []string{"GET", "POST", "DELETE", "PATCH", "OPTIONS"},
    	}).Handler(router)
    
    	http.ListenAndServe(":8000", handler)
    }
    p
    a
    • 3
    • 4
  • s

    Shivvinay Kanswal

    11/07/2022, 11:36 AM
    Hi Team, we had to create dashboards to configure metrics. Is there a way to see all host metrics in a single pane.
    s
    • 2
    • 4
  • m

    Mariano Mirabelli

    11/07/2022, 7:10 PM
    Hi there 👋 I have a question related to the alerts behaviour. Even though I have configured alerts without any trouble, when the alert state should go back from Firing to Ok, it tends to suffer much delay in comparison with the actual application state. I have developed the following example in my localhost to manage a controlled environment: • I have coded a little kotlin application with two fake endpoints: one that always returns HTTP 200 and another always returns HTTP 500. • I configured an alert based on the PromQL query that SigNoz executes to retrieve the error percentage in the application dashboard. In my example, I was interested in measuring the error percentage in the last five minutes. • I started a load test for 25 minutes against the 200 ok HTTP endpoint. At the same time, I ran a load test for 40 seconds against the 500 error HTTP endpoint. • With that scenario, I achieve an error rate of around the 18%. • Under these conditions, I observed that the alert state went from Ok to firing as I expected. In the same way, I received a slack notification notifying me that the alert was triggered. • However, even though my application error percentage returned to 0 again and more than five minutes elapsed, the alert state kept on firing. The alert state returned to Ok after 30 minutes approximately. Could you help me to understand what is happening? I copy here the query that I’m running to trigger the alert:
    max(sum(rate(signoz_calls_total{service_name="ktor-test", operation=~`HTTP GET|HTTP POST`, status_code="STATUS_CODE_ERROR"}[5m]) OR rate(signoz_calls_total{service_name="ktor-test", operation=~`HTTP GET|HTTP POST`, http_status_code=~"5.."}[5m]))*100/sum(rate(signoz_calls_total{service_name="ktor-test", operation=~`HTTP GET|HTTP POST`}[5m]))) < 1000 OR vector(0)
    And my condition on the Alert are the following: • Send a notification when the metric is: above • the threshold: at least once • Alert Threshold: 5 Thanks in advance!
    a
    a
    • 3
    • 7
  • h

    Himanshu Jain

    11/08/2022, 7:27 AM
    Hi Team, need some help on how to integrate the DB and external calls tracing.
    a
    s
    • 3
    • 28
  • l

    Lars von trier pung

    11/08/2022, 7:42 AM
    Hi! I have some general questions. I just found out about SigNoz and i have worked with monitoring/observ for a while now. I'm looking for a more easy way of setting up surveillance for hybrid solutions. "opensource". I have worked with tools such as Zabbix/Datadog/op5"nagios"/prometheus"grafana stack",loki,tempo,mimir. Tools like newrelic/Datadog/logicmonitor is easier to start with, but cost a lot. And the most opensource-tools takes to much time to instrument and get to work as you want. and "sometimes hard to understand documentation". For example. To just to get monitor a jvm with jmx scraper in prometheus you need to do too many steps. Zabbix is opensource and they are trying to become more like DataDog with APM monitoring, logs, Distributed Tracing.. but they are not mature for APM yet. Do you guys think the same as me? For now i will try out SigNoz together with odigos.io see if it's easy to setup. So you will get logs,metrics,traces in same place without a headache. And does SigNoz use's a agent like other tooling? Is SigNoz mainly focusing on APM or is it also monitor server's etc? Thanks! 🙂
    a
    • 2
    • 6
  • s

    Shivvinay Kanswal

    11/08/2022, 12:28 PM
    Hi Team, can someone guide me on how to send AWS Cloudwatch Metrics to SigNoz
    a
    s
    • 3
    • 8
  • d

    Devops Netapp

    11/08/2022, 4:34 PM
    Hello, I see that in the built in signoz logs there are trace_id and span_id fields but they are always empty. How can I enrich my log with the actual trace ids and connect log to trace and vice versa. Thanks!
    p
    n
    v
    • 4
    • 13
  • n

    Nestor René Juárez Montes de Oca

    11/09/2022, 2:25 AM
    hi my friends, we try to instrument a webapp angular app, I was active the cors configuration but I get this, help me please and thank you!
    p
    • 2
    • 1
  • j

    Jose Almir

    11/09/2022, 8:20 PM
    Hi team! I have a doubt, at this moment the SigNoz not available with service in cluoud how o CloudAMQP ?
    p
    • 2
    • 1
  • j

    Jason Schmidt

    11/09/2022, 9:31 PM
    Hi There; apologies if this has been answered elsewhere, but is there a howto/example/guide to show how to easily integrate SigNoz into an existing K8 deployment with an existing OTEL collector / agents?
    p
    • 2
    • 2
  • w

    Wejdan

    11/10/2022, 11:49 AM
    1 warnings.go:70] autoscaling/v2beta2 HorizontalPodAutoscaler is deprecated in v1.23+, unavailable in v1.26+; use autoscaling/v2 HorizontalPodAutoscaler can anyone help me? i'm trying to connect the logs
    p
    a
    • 3
    • 10
  • i

    Itay Baror

    11/11/2022, 3:28 PM
    We just set up signoz on an eks cluster, traces are being sent with no errors from a different AWS account, but they do not appear in signoz. Any ideas?
    v
    p
    a
    • 4
    • 7
  • j

    Jose Almir

    11/12/2022, 4:16 PM
    Hi team! I'm having a problem sending log from my application to SigNoz, signoz received my logs but the information is not readable. Can someone help me ?
    a
    c
    • 3
    • 3
  • j

    Jose Almir

    11/12/2022, 4:18 PM
    My app is written in C#, it's a web api.
  • a

    Apoorva

    11/13/2022, 6:46 AM
    Hi, Is there a way to write alerts/notifications on 1. p99 latencies 2. rate of errors thrown 3. rate of logs being thrown based on specific keys, like container name, log level etc Apart from promql, Raw clickhouse queries from your own codebase will also work for me
    p
    a
    • 3
    • 3
  • g

    Gladium 25

    11/13/2022, 11:48 AM
    Hey is it possible to send application logs to signoz using golang sdk ?
    n
    • 2
    • 1
  • a

    Anant Vashishtha

    11/14/2022, 5:10 AM
    Hi. Does instrumenting services with OpenTelemetry affect the latency? I've observed an increase in latencies in a range of 5-15% in my services. Is there some way to optimize it? I'm using it in nodejs.
    a
    • 2
    • 1
  • n

    NicoGnaw

    11/14/2022, 9:31 AM
    Hi, I'm following the instructions in this article and am experiencing this issue. Open-telemetry released their experimental SDK 0.34.0 (with metrics GA); with this version of node-sdk, the program described in the article will not work (it requires a metrics configuration). By using the 0.33.0 SDK, the program worked as well as in the article, but I wonder if there may be a better solution.
    v
    • 2
    • 2
  • v

    Vignesh

    11/14/2022, 11:31 AM
    #support I'm trying to setup Signoz locally, but then when i create an account, I get an errror "invite token is required", this is v0.11.2; could you help me out here?
    p
    • 2
    • 4
  • h

    Himanshu Jain

    11/15/2022, 8:59 AM
    #support Does this implementation works in the production build of the next.js? https://signoz.io/blog/opentelemetry-nextjs/
    p
    p
    • 3
    • 5
  • b

    Bogdan Butusov

    11/15/2022, 12:37 PM
    hey guys, was wondering if anyone knows how to setup signoz on laravel, having a hard time trying to do so
    p
    v
    s
    • 4
    • 6
  • t

    Timothy Wigginton

    11/15/2022, 5:15 PM
    #support I am setting up Signoz in an EKS on a private vpc and I am getting this error in the signoz-clickhouse-operator
    E1115 16:56:11.312079       1 connection.go:105] connect():FAILED Ping(http://***:***@chi-signoz-chart-clickhouse-cluster-0-0.default.svc.cluster.local:8123/). Err: dial tcp: lookup chi-signoz-chart-clickhouse-cluster-0-0.default.svc.cluster.local on 10.100.0.10:53: no such host
    p
    p
    • 3
    • 20
  • h

    Hima Vyas

    11/15/2022, 6:11 PM
    Hello, I am setting up signoz again after some time. We are installing on kubernetes with helm. I wanted to ask where all I will have to make changes If I want to restrict all signoz pods to run on a specific node group. I can see that there are toleration parameter for all the components but wanted to confirm which would be the correct place in helm to do that? Also please suggest if there's any other way of doing this. Thanks!
    v
    p
    • 3
    • 6
Powered by Linen
Title
h

Hima Vyas

11/15/2022, 6:11 PM
Hello, I am setting up signoz again after some time. We are installing on kubernetes with helm. I wanted to ask where all I will have to make changes If I want to restrict all signoz pods to run on a specific node group. I can see that there are toleration parameter for all the components but wanted to confirm which would be the correct place in helm to do that? Also please suggest if there's any other way of doing this. Thanks!
v

Vishal Sharma

11/16/2022, 2:35 AM
@Prashant Shahi
p

Prashant Shahi

11/16/2022, 5:29 AM
Hey @Hima Vyas 👋 You can use taints and tolerations which together ensures that pods are not scheduled onto inappropriate nodes. You would have to set taints in the nodes or node groups and use
tolerations
configuration in Helm for relevant components. https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
h

Hima Vyas

11/16/2022, 5:37 AM
Thanks @Prashant Shahi while installing signoz, is there a straightforward way to override tolerations?
If not, does it sound right to change tolerations in values.yaml file of all 3 directories - https://github.com/SigNoz/charts/tree/main/charts ? Taint part - node group creation can be handled separately.
p

Prashant Shahi

11/16/2022, 5:06 PM
yes, node group taints can be added afterwards. You can also include tolerations in
override-values.yaml
for the
helm upgrade
h

Hima Vyas

11/17/2022, 4:27 AM
Awesome, let me try this! Thank you @Prashant Shahi !
View count: 4