[{"data":1,"prerenderedAt":374},["ShallowReactive",2],{"project-29711433":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":27,"sentiment":28,"stance_mix":29,"scored_comments":18,"aspects":34,"strip":41,"post_text":42,"what":43,"said":96,"maker_in_thread":231,"shape":240,"grid":244,"attempts":331,"same_week":338,"maker_shows":38,"maker_hidden":366,"reader_version":367,"card":368},"29711433","Uptrace","Distributed Tracing Using OpenTelemetry and ClickHouse","title","Show HN: Distributed Tracing Using OpenTelemetry and ClickHouse","https:\u002F\u002Fgithub.com\u002Fuptrace\u002Fuptrace","github.com","vmihailenco",1640677207,2021,105,41,503,2533,20,"notable","infrastructure","distributed tracing","web_app",[21,24,25,26],"opentelemetry","clickhouse","observability","curious",0.108,{"positive":30,"neutral":31,"mixed":32,"critical":33},5,12,1,2,{"execution":35,"design":37,"idea":39,"pricing":40},{"positive":36,"critical":32},0,{"positive":38,"critical":36},3,{"positive":32,"critical":32},{"positive":32,"critical":36},[36,38,36,38,36,38,36,38,36,38,36,30,36,38,36,38,36,32,36,36,32,36,36,38,36,38,36,38,36,30,38,36,36,38,36,30,36,30,30,38],null,{"problem":44,"audience":51,"pricing":60,"motivation":42,"time_to_build":42,"stack":74,"openness":93,"stage":94,"team_size":95},{"value":45,"source":46,"evidence":47},"Finding root causes of production issues by tracing requests across services","maker",[48],{"id":49,"by":11,"text":50},"29711799","You can use Uptrace to monitor routes\u002Fqueries performance, errors, and partially logs (only Go at the moment and it is unofficial). Distributed tracing excels at finding the root…",{"value":52,"source":53,"evidence":54},"Teams monitoring production services, including SaaS apps","inferred",[55,59],{"id":56,"by":57,"text":58},"29711638","cpursley","Looks interesting. Can you share a couple of common use cases, say - for somebody running a typical saas app? Also, are there plans for an Elixir client?",{"id":49,"by":11,"text":50},{"value":61,"source":62,"evidence":63},"Self-hosting free for own monitoring; hosted cloud version offered; cheaper than Datadog","commenter",[64,68,71],{"id":65,"by":66,"text":67},"29713921","mnahkies","As far as I understand the license you're allowed to self host this for free, so long as you're monitoring your own stuff rather than reselling monitoring as a service. I can see…",{"id":69,"by":11,"text":70},"29714291","You are right about the license - it allows everything Apache 2.0 allows except reselling monitoring as a service.",{"id":72,"by":11,"text":73},"29713881","Well, I had a delusion that Uptrace will have clean and simple UI, but I guess for others the UI is just as confusing. :( I think we've done pretty good job with…",[75,81,88],{"value":76,"source":46,"evidence":77},"ClickHouse",[78],{"id":79,"by":11,"text":80},"29711455","Uptrace is an open source distributed tracing system that uses OpenTelemetry to collect data and ClickHouse database to store it. ClickHouse is the only dependency. Would be…",{"value":82,"source":46,"evidence":83},"OpenTelemetry (OTLP)",[84,85],{"id":79,"by":11,"text":80},{"id":86,"by":11,"text":87},"29713061","The data is received via OTLP (Otel protocol) and almost immediately inserted into ClickHouse buffer table in small batches. Simple and very efficient. Tail-based sampling will…",{"value":89,"source":46,"evidence":90},"Go",[91,92],{"id":49,"by":11,"text":50},{"id":86,"by":11,"text":87},"open_source","launched","unknown",{"praise":97,"objections":122,"requests":144,"questions":177,"alternatives":202},[98,110,115],{"value":99,"source":62,"evidence":100},"Clean UI and strong filtering, grouping and aggregation",[101,105,109],{"id":102,"by":103,"text":104},"29714076","tarun_anand","For an open source young project, your UI is pretty good. In fact that is what got me here to comment! Any mobile client sdk? Android\u002FiOS you are aware of?",{"id":106,"by":107,"text":108},"29748829","schmurfy","We have been using your hosted service for a while now and we are perfectly happy with uptrace, compared to jaeger the UI is miles ahead, I like jaeger for what it brought but…",{"id":72,"by":11,"text":73},{"value":111,"source":62,"evidence":112},"Cheaper than hosted alternatives",[113,114],{"id":106,"by":107,"text":108},{"id":65,"by":66,"text":67},{"value":116,"source":62,"evidence":117},"ClickHouse backend is a good fit compared to Cassandra",[118],{"id":119,"by":120,"text":121},"29722482","atombender","We use remote sampling. I don't have a ton of experience with Jaeger, but I've used it a lot, and implemented OpenTracing in a dozen or so apps. The benefit of remote sampling,…",[123,127,134],{"value":124,"source":46,"evidence":125},"UI is confusing to some users",[126],{"id":72,"by":11,"text":73},{"value":128,"source":46,"evidence":129},"Lacks tail-based sampling and buffers spans only briefly",[130,131],{"id":86,"by":11,"text":87},{"id":132,"by":11,"text":133},"29722731","Uptrace \u002F Go process will buffer spans in memory for some short period of time (5-15 seconds). It does not work for long traces, but most traces are short. There is some…",{"value":135,"source":62,"evidence":136},"Lacks plugin\u002Fextensibility for storage",[137,141],{"id":138,"by":139,"text":140},"29722949","rad_gruchalski","We use a custom elastic storage on steroids with Keycloak integration for enabling multi-tenancy in Jaeger so we can do SLA tracking and reporting. So the answer is yes. I get…",{"id":142,"by":139,"text":143},"29723819","> there is also some sense in NOT having to support different storages \u002F plugins API and instead supporting more features that work out of the box I humbly do not agree. There’s…",[145,155,160,167],{"value":146,"source":62,"evidence":147},"Kubernetes deployment support (ClickHouse operator)",[148,152],{"id":149,"by":150,"text":151},"29713673","mritchie712","Where is the clickhouse data stored, in the Docker container? For reference, here's what I'm using: https:\u002F\u002Fgithub.com\u002FAltinity\u002Fclickhouse-operator\u002Fblob\u002Fmaster\u002Fdocs\u002Fstorage.md",{"id":153,"by":11,"text":154},"29713991","I've provided a Docker example so users can quickly try Uptrace without downloading and configuring anything. I don't use Docker to run anything besides examples so can't give…",{"value":156,"source":62,"evidence":157},"Elixir client",[158,159],{"id":56,"by":57,"text":58},{"id":49,"by":11,"text":50},{"value":161,"source":62,"evidence":162},"Mobile SDK support for Android and iOS",[163,164],{"id":102,"by":103,"text":104},{"id":165,"by":11,"text":166},"29714235","OpenTelemetry Java should work with Android, but I haven't really tried it. Java supports true auto-instrumentation so it should not be hard to figure out if you have an Android…",{"value":168,"source":62,"evidence":169},"Comparison with Jaeger",[170,174],{"id":171,"by":172,"text":173},"29711637","d-fal","This is quite cool piece of work. Would you please make a comparison between uptrace and jaeger?",{"id":175,"by":172,"text":176},"29712739","Yes you are mostly right, we can open an issue on github and try to compare them, if you agree. This would be among the first things a user wants to know before picking up uptrace.",[178,188,195],{"value":179,"source":62,"evidence":180},"How persistent storage and ClickHouse replication are handled",[181,184,185],{"id":182,"by":150,"text":183},"29713496","Nice, I'm using Clickhouse to build Luabase[0]. I saw \"ClickHouse cluster support\" on your roadmap, are you just using a single node right now? How are you handling persistent…",{"id":149,"by":150,"text":151},{"id":186,"by":150,"text":187},"29714562","Got it. I might be missing something, but if you deployed it this way and needed to rebuild the Docker image, you'd lose all your data, right?",{"value":189,"source":62,"evidence":190},"Whether the query language can do parent\u002Fchild trace analysis",[191],{"id":192,"by":193,"text":194},"29716313","shazzy","Uptrace looks really pretty interesting. I particularly like the query language that you can use to query your distributed trace data. This is the biggest limitation I have found…",{"value":196,"source":62,"evidence":197},"How tail-based sampling flushes spans",[198],{"id":199,"by":200,"text":201},"29716314","lma21","For tail-based sampling, does it mean that every process in a trace will keep its spans in memory until the initial process 'ends' the trace? How does the flushing happen (e.g.…",[203,210,217,223,227],{"value":204,"source":62,"evidence":205},"Jaeger",[206,207],{"id":171,"by":172,"text":173},{"id":208,"by":139,"text":209},"29720094","This solution has some great ideas but there’s always “but”. Main things distinguishing this from Jaeger are on the storage side. Jaeger has pluggable span writers and readers so…",{"value":211,"source":62,"evidence":212},"Datadog",[213],{"id":214,"by":215,"text":216},"29713366","debuggerpk","how is different from datadog ?",{"value":218,"source":62,"evidence":219},"SigNoz",[220],{"id":221,"by":215,"text":222},"29723942","how is it different from https:\u002F\u002Fsignoz.io signoz datastore is built with cassandra and yours with clickhouse.",{"value":224,"source":62,"evidence":225},"Grafana Tempo",[226],{"id":138,"by":139,"text":140},{"value":228,"source":62,"evidence":229},"Zipkin",[230],{"id":119,"by":120,"text":121},{"comments":232,"answered":233,"key":234},17,10,[235,236,239],{"id":79,"text":80},{"id":237,"text":238},"29713611","By cluster support I mean: - ability to use ReplicatedMergeTree in the table schema - round-robin writing to multiple nodes It is mostly a matter of providing configuration…",{"id":153,"text":154},{"commenters":241,"max_depth":242,"maker_replies":232,"first_comment_mins":242,"lifespan_hours":243},18,6,182,[245,247,249,251,253,255,256,260,263,265,266,267,269,272,276,278,280,282,284,287,288,292,295,297,300,301,303,305,306,308,310,314,316,320,321,322,323,324,325,327,329],[79,36,36,246,11,32],"project\u002Fneutral\u002Fnone",[182,32,38,248,150,36],"maker\u002Fneutral\u002Fnone",[237,32,36,250,11,32],"project\u002Fneutral\u002Fexecution",[149,32,38,252,150,36],"maker\u002Fneutral\u002Fexecution",[153,32,36,254,11,32],"project\u002Fneutral\u002Fdocs",[186,32,38,250,150,36],[257,32,36,258,259,36],"29715667","commenter\u002Fneutral\u002Fexecution","NicoJuicy",[261,33,38,250,262,36],"29712892","tomnipotent",[86,33,36,264,11,32],"project\u002Fneutral\u002Fperformance",[199,33,38,250,200,36],[132,33,36,250,11,32],[192,38,30,268,193,36],"project\u002Fpositive\u002Fdesign",[270,38,36,271,11,32],"29723558","project\u002Fneutral\u002Fdesign",[273,274,38,246,275,36],"29712643",4,"drchaim",[277,274,36,246,11,32],"29712998",[208,30,38,279,139,36],"project\u002Fmixed\u002Fidea",[281,30,36,246,11,32],"29722762",[138,30,32,283,139,36],"project\u002Fcritical\u002Fidea",[285,30,36,286,11,32],"29723436","commenter\u002Fneutral\u002Fidea",[142,30,36,286,139,36],[289,242,32,290,291,36],"29722502","project\u002Fcritical\u002Fexecution","pachico",[293,242,36,294,11,32],"29722696","commenter\u002Fneutral\u002Fperformance",[296,242,36,294,291,36],"29734250",[56,298,38,299,57,36],7,"project\u002Fneutral\u002Fidea",[49,298,36,299,11,32],[171,302,38,246,172,36],8,[304,302,36,246,11,32],"29711713",[175,302,38,246,172,36],[307,302,36,246,11,32],"29713118",[119,302,30,309,120,36],"project\u002Fpositive\u002Fidea",[311,312,38,246,313,36],"29721963",9,"joshxyz",[315,312,36,246,11,32],"29722799",[317,312,36,318,319,36],"29800956","other\u002Fneutral\u002Fnone","qxip",[214,233,38,246,215,36],[72,233,36,271,11,32],[102,233,30,268,103,36],[165,233,36,246,11,32],[106,233,30,268,107,36],[65,233,30,326,66,36],"project\u002Fpositive\u002Fpricing",[69,233,36,328,11,32],"project\u002Fneutral\u002Fpricing",[221,330,38,246,215,36],11,[332,333],{"id":4,"t":12,"points":14,"comments":15},{"id":334,"t":335,"points":336,"comments":337},"35650732",1682061997,85,25,[339,344,349,353,358,362],{"id":340,"name":341,"points":342,"category":343},"29690877","mwmbl",441,"web_saas",{"id":345,"name":346,"points":347,"category":348},"29726787","Voiceliner",297,"productivity",{"id":350,"name":351,"points":352,"category":20},"29715464","ntfy",241,{"id":354,"name":355,"points":356,"category":357},"29729335","Wall of Text",145,"learning_science",{"id":359,"name":360,"points":14,"category":361},"29705794","Drovp","dev_tools",{"id":363,"name":364,"points":365,"category":348},"29703671","Alfread",104,false,"v2",{"id":369,"name":5,"line":6,"ai":366,"cat":20,"year":13,"points":14,"comments":15,"rec":27,"s":370,"top":18,"kw":371,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":372,"url":9,"mix":373,"praise":99,"objection":124,"sub":21},29711433,0.11,[21,24,25,26],"0303030303050303010010030303053003050553",[30,31,32,33],1794036614630]