Symbolicator as symbol server

When uploading debug symbols to sentry, can the underlying symbolicator service be used as a symbol server?
From the documentation it seems it support the standard symbols lookup protocol.
The ideal use case would be to expose the symbolicator service (from the 3021 port) and add it to the symbol server sources in visual studio.
Is that feasible?

Thank you

As far as I’m aware, the answer is yes. /cc @jauer who has more info on Symbolicator.

https://getsentry.github.io/symbolicator/

Additionally, Symbolicator can act as a proxy to symbol servers supporting multiple formats, such as Microsoft’s symbol server or Breakpad symbol repositories.

Thanks for the reply!
I’ve read the symbolicator documentation, but that doesn’t really state if the looked up symbols will be pulled from sentry.
Specifically, if a symbol is uploaded to sentry, that specific symbol will then be available in the symbol server proxy?

Ah, I don’t think that will work. But again, @jauer would know the best.

Correct, this should possible, although using Symbolicator as a proxy in front of Sentry requires a bit of configuration:

  1. You have to create an API token as linked here. This can either be a user-based API token or an integration token.

  2. Add a Sentry source to Symbolicator’s config.yml. Please verify under which URL Sentry is reachable by Symbolicator – I’m assuming http://web/. Replace the organization and project slugs in the URL:

    sources: 
      [
        {
          "type": "sentry",
          "id": "sentry:internal",
          "url": "http://web/api/0/<org>/<project>/files/dsyms/",
          "token": "<API TOKEN HERE>"
        }
      ]
    
  3. Enable the Proxy in config.yml:

    symstore_proxy: true
    
  4. Symbolicator should now serve your uploaded files under /symbols/ compatible with MS Symbol Server.

Disclaimer: I did not try this configuration myself yet. Please let me know if it’s working for you, and If I have some more time I’ll try to verify myself.

Thank you for the reply!
I’ve succeeded in setting up Symbolicator as a symbol server, since i wanted to serve symbolicator from a different subdomain than sentry’s one i’ve done the following:

  • Configured docker-compose.yml to bind port 81:3021 for the nginx service
  • Exposed the sentry nginx on the port 81 and replicated in the new vserver the same configuration used for web and relay pointing the upstream to http://symbolicator
  • Added the various sources to symbolicator’s config.yml

That worked perfectly fine.
Should point although that this procedure took quite a long time to figure out, documentations about sentry & symbolicator do not really explain this properly.

Thank you for the help and for bring those nice toolsets!

1 Like

Thanks for letting us know, glad it worked. As a final remark, I would suggest you to create a dedicated container just for proxying with its own caches, so that the symbolserver requests do not interfere with symbolication.

The symstore proxy is just an experimental endpoint built into symbolicator, and we have thought about making it a fully fledged web service at some point with more documentation. Knowing that it works now, we will definitely consider adding more information.

1 Like

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.