• Stars
    star
    493
  • Rank 87,075 (Top 2 %)
  • Language
    C#
  • License
    Other
  • Created over 7 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A service for automated crash-dump analysis

SuperDump

SuperDump is a service for automated crash-dump analysis. It has a web- as well as a REST-interface to upload Windows crash dumps or Linux coredumps.

SuperDump was made with these goals in mind:

  • Make crash-dump analysis easy for people who are unexperienced with it, or don't have the necessary tools installed.
  • Speed up first assessment of a crash-dump, by automatically preparing crash-dump analysis up-front. A developer should be quicker in determining if it's an already known crash.

What SuperDump is not:

  • A replacement for in-depth analysis tools such as WinDbg.
  • A windows kernel dump analysis tool.

Maintainer: Christoph Neumรผller ([email protected], https://twitter.com/discostu105)

Docker

Windows analyis can be run simply in Docker for Windows:

  • Have Windows Containers enabled on your Docker for Windows.
  • Just run docker run -d -p 80:5000 -v superdump:C:\superdump\data\dumps discostu105/superdump
  • Due to a Windows/Docker glitch, it's not possible to find the service under localhost:5000 though. Use docker inspect <id> to get the IP address of the container and access it directly <ip-of-container>:80. This should improve in future Windows versions.

Features

  • Dump analysis can be triggered via web-frontend (HTTP-upload) or via REST-API.
  • Windows-crash-dumps (Fulldump or Minidump) can be analyzed (.dmp files). Only process-dumps, not kernel-dumps.
  • Linux-crash-dumps can be analyzed (.core files). See format for core dumps
  • .zip files containing multiple crash-dumps are also supported. Each contained dump is processed.
  • Report results are stored as .json files and can be queried via REST-API. But they can also be viewed in SuperDump directly.
  • SuperDump report shows:
    • Basic information (bitness, system/process uptime, lastevent, ...)
    • Loaded modules and versions
    • Stacktraces of all threads (native and .NET frames)
    • AppDomains
    • Basic memory analyis (number of bytes used by .NET types)
    • Linux Signals
  • SuperDump detects exceptions (native and managed) and marks the responsible threads.
  • Deadlock detection.
  • SuperDump also invokes a number of WinDbg commands automatically and logs them to a separate log-file.
  • It also invokes DebugDiag Analysis. An .mht file is created automatically and can be downloaded.
  • You can enter "interactive mode" for every dump. This will spin up cdb.exe (basically WinDbg for the command line) and create a websocket-based console terminal in the browser which lets you analyze the dump more deeply, with out the need to download it and have debugging tools installed locally. (Isn't that awesome?)
  • Linux coredumps (.core) are supported too. The analysis is triggered via a docker container (the actual command is configurable via LinuxAnalysisCommand. Note, that linux dumps must be uploaded in archives in a specific format. In addition to the .core file, it must also contain linux system libraries as libs.tar.gz, otherwise symbols cannot be resolved correctly. If you're interested in seriously using this, please get in touch and we'll document this better. Find more details on linux analysis here: http://epub.jku.at/obvulihs/download/pdf/2581999?originalFilename=true
  • "Interactive mode" for linux coredumps is possible as well. Starts a fully TTY-Compliant browser session with GDB.
  • Slack Notifications for finished analysis (see SlackNotificationUrls config setting)
  • Elastic search integration for statistics. Every dump analysis is pushed into elastic search instance, which allows to run statistics on crash dumps.
  • Link to source (see RepositoryUrl setting)
  • Duplication detection
  • Optional Ldap Authentication with three user groups:
    • Admin: Has access to the Hangfire Server webinterface and can clean the Elastic Search.
    • User: Can download the dump files, view the stack variables, use the interactive mode and rerun the dump analysis.
    • Viewer: Can upload dumps, view the basic report and download certain log files.
  • Token Authentication for Api
  • Logging of security relevant events.
  • Logging of all webrequests.

Demo

Demo-Video: https://youtu.be/XdyDjkW8MDk

Slides about SuperDump (explaining some of the architecture): https://www.slideshare.net/ChristophNeumller/large-scale-crash-dump-analysis-with-superdump

Technologies

Build

  • Prerequisites:
    • Visual Studio 2019
    • .NET 5
    • .NET Framework 4.8 (developer pack)
    • NPM
    • Bower (npm install -g bower)
    • Git
    • Docker for Windows (for building the docker image for linux analysis)
    • LocalDB (optional, see UseInMemoryHangfireStorage setting)
    • DebugDiag (for automatic DebugDiag analysis)
    • When building the first time, remember to create conf/appsettings.json
    • Windows Debugging Tools (cdb.exe) (optional, for interactive mode)
  • Build via buildscript in building/*.cmd (see README.md)
  • Run via build/runsuperdump.cmd (defaults to port 5000)

Authentication

For authentication it is necessary to add a few settings to either the appconfig.json file, environment variables or using the user secrets file of asp .net.

  • "SuperDumpSettings:LdapAuthenticationSettings:LdapDomain"
  • "SuperDumpSettings:LdapAuthenticationSettings:TokenSigningKey"
  • "SuperDumpSettings:LdapAuthenticationSettings:GroupNames:Admin"
  • "SuperDumpSettings:LdapAuthenticationSettings:GroupNames:User"
  • "SuperDumpSettings:LdapAuthenticationSettings:GroupNames:Viewer"

When "SuperDumpSettings:LdapAuthenticationSettings:LdapServiceUserMode" is set to "ServiceUser" it is also necessary to specify

  • "SuperDumpSettings:LdapAuthenticationSettings:LdapServiceUserName"
  • "SuperDumpSettings:LdapAuthenticationSettings:LdapServiceUserPwd"

The user secrets file can be created by right-clicking the "SuperDumpService" Project in Visual Studio and selecting "Manage User Secrets"

For the https redirection it is necessary to add urls for https and http to the ASPNETCORE_URLS environment variable.

State of the project

SuperDump has been created at Dynatrace as an internship project in 2016. It turned out to be pretty useful so we thought it might be useful for others too. Thus we decided to open source it. This project is considered "community supported". No full-fledged support (with SLA's) is provided by Dynatrace.

Though it currently works great for us at Dynatrace, there are areas that need to be improved to make it a high-quality and generally useful tool:

  • Test-Coverage: A couple of unit tests are there, but there is currently no CI to automatically run them. The tests partially depend on actual dump-files being available, which obviously are not in source control. We'd need some binary-store, a prepare/download step, etc to make those run.
  • Some stuff is tailored for our needs at Dynatrace. E.g. we have special detection for Dynatrace Agent stackframes. While this feature probably won't hurt anyone else, it is kind of unclean to have such special detection in place.

Future

We've open sourced SuperDump, because we believe it can be helpful for others. Anyone is welcome to contribute to SuperDump. In small ways, or in ways we have not thought about yet. Feedback, github tickets, as well as PR's are welcome.

Some high-level ideas we've been poking around:

  • Pluggable analyzers: Possibility to write your own analyzers, detached from the main project and pluggable.
  • Workers: Instead of directly invoking analysis by SuperDumpService, a worker should instead invoke those, after fetching jobs from a queue. It would enable to detach actual analysis from the web-frontend. After that step, it would be easier to deploy SuperDump into Kubernetes.
  • Descriptive summaries: The idea is to put the most likely crash-reason in a short descriptive summary text. This is useful if a crash is entered as a bug in a ticket system.

Security

A word of caution: SuperDump is meant to be an internal tool to make crash dump diagnosis easier and faster. It is NOT designed to be used as a publicly hosted service. If you deploy SuperDump, it's recommended to put access restrictions in place on top of the LDAP authentication that SuperDump provides to only allow access for trusted individuals, .

Known shortcomings:

  • Especially the "Interactive Mode" is basically a window into a shell on the SuperDump server. So far, no effort has been made to properly sandbox that shell process, so a versatile user could break out of the debugger process (cdb/gdb) and gain shell access. Only users with the role SuperDumpSettings:LdapAuthenticationSettings:GroupNames:User can enter Interactive Mode.
  • SuperDump allows to upload files that are supposed to contain dumps, logfiles, debug symbols or archives containing such files. Uploading executables is not detected or restricted, which opens to possibility for remote code execution.
  • There is no access restriction between users that uploaded dumps. As soon as user permission SuperDumpSettings:LdapAuthenticationSettings:GroupNames:User is given, such a user can download other dumps or enter Interactive Mode. Memory dumps are may contain highly sensitive data, so such access must only be given to trusted individuals.

Credit

Most of the initial code base was written by Andreas Lobmaier in his summer internship of 2016. It's been maintained and further developed since then by Christoph Neumรผller and other folks at Dynatrace. Dominik Steinbinder also contributed large parts, such as Linux analysis, elastic search integration and much more.

Some of the thread analysis code is based on Sasha Goldshtein's work in https://github.com/goldshtn/msos.

Thank you!

License

MIT

More Repositories

1

dynatrace-configuration-as-code

This tool automates deployment of Dynatrace Configuration to one or multiple Dynatrace environments.
Go
161
star
2

dynatrace-operator

Automate Kubernetes observability with Dynatrace
Go
151
star
3

ufo

Visual alert/status display for builds, CI, continuous delivery, operations, and more.
JavaScript
103
star
4

AWSDevOpsTutorial

Unbreakable DevOps Pipeline Tutorial with AWS CodeDeploy, AWS CodePipeline, AWS Lambda, EC2 and Dynatrace
JavaScript
97
star
5

dynatrace-api

Python
97
star
6

dynatrace-oneagent-operator

Kubernetes/Openshift Operator for managing Dynatrace OneAgent deployments
Go
89
star
7

Dynatrace-AppMon-Docker

The home of Dockerized components of the Dynatrace Application Monitoring enterprise solution.
Shell
67
star
8

AWSMonitoringTutorials

JavaScript
48
star
9

easyTravel-Docker

The Dynatrace easyTravel Demo Application in Docker.
Shell
47
star
10

Dynatrace-OneAgent-Ansible

This Ansible role installs Dynatrace OneAgent.
37
star
11

openkit-java

OpenKit Java Reference Implementation
Java
34
star
12

OneAgent-SDK-for-Java

Enables custom tracing of Java applications in Dynatrace
Java
33
star
13

OneAgent-SDK-for-Python

Enables custom tracing of Python applications in Dynatrace
Python
26
star
14

helm-charts

Help Charts provided by Dynatrace
Smarty
25
star
15

easytrade

EasyTrade - new demo microservices based application that allows its users to buy and sell stocks, developed by Demoability Team
22
star
16

BizOpsConfigurator

SPA to get inputs from the user and from the Dynatrace API, to transform a stock collection of currated dashboards, and to upload via the Dynatrace API
JavaScript
21
star
17

OneAgent-SDK

Describes technical concepts of Dynatrace OneAgent SDK
Java
21
star
18

Dynatrace-AppMon-Ansible

A collection of Ansible Roles for automated deployments of Dynatrace products.
Ruby
20
star
19

OneAgent-SDK-for-C

Enables custom tracing of native applications in Dynatrace
C
20
star
20

Dynatrace-AppMon-Puppet

Installs the Dynatrace Application Monitoring solution using Puppet.
Puppet
19
star
21

Dynatrace-AppMon-Docker-Monitor-Plugin

Retrieves CPU, memory and network stats from Docker containers via the Docker Remote API.
Java
18
star
22

OneAgent-SDK-for-NodeJs

Enables custom tracing of Node.js applications in Dynatrace
TypeScript
18
star
23

OneAgent-SDK-for-dotnet

Enables custom tracing of .NET applications in Dynatrace
C#
17
star
24

ufo-esp32

2nd generation of Dynatrace UFO with ESP32 microcontroller
C++
16
star
25

openkit-dotnet

OpenKit .NET Reference Implementation
C#
16
star
26

dynatrace-otel-collector

Dynatrace distribution of the OpenTelemetry Collector
Go
16
star
27

dynatrace-configuration-as-code-samples

Shell
15
star
28

openkit-js

OpenKit JavaScript Reference Implementation
TypeScript
14
star
29

Dynatrace-AppMon-hybris-eCommerce-Fastpack

A Dynatrace fastpack for a fully featured SAP Hybris APM Monitoring
14
star
30

openkit-native

C++
13
star
31

JMX-Extensions

Dynatrace Platform JMX plugins
13
star
32

agent-nodejs

Dynatrace agent for PaaS environments
JavaScript
13
star
33

Dynatrace-hybris-eCommerce-Fastpack

A python script which posts custom services and request attributes for to your Dynatrace Tenant
Python
12
star
34

Custom-Webhook-Python

Python
12
star
35

Dynatrace-Config-Manager

Go
12
star
36

Dynatrace-AppMon-Chef

Installs the Dynatrace Application Monitoring solution using Chef.
Ruby
11
star
37

fastlane-plugin-dynatrace

This plugin allows you to decode and upload symbolication files to Dynatrace. You can also use it to first download your latest dSYM files from AppStore Connect if you use Bitcode.
Ruby
11
star
38

backstage-plugin

Dynatrace Backstage Plugin
TypeScript
11
star
39

extension-automated-config

Dynatrace ActiveGate extension for posting Dynatrace Audit Log information into Event Feeds
Python
10
star
40

Dynatrace-OneAgent-Puppet

This puppet module downloads and installs the dynatrace unified agent on windows and linux systems.
Puppet
10
star
41

Dynatrace-AppMon-Server-Ansible

An Ansible role for automated deployments of the Dynatrace AppMon Server.
Shell
9
star
42

snippets

This repository contains useful samples and snippets
Python
9
star
43

dynatrace-automation-tools

TypeScript
9
star
44

Dynatrace-AppMon-JMX-Enhanced-Monitor-Plugin

The JMX Enhanced Monitor Plugin allows to gather MBeans metrics from different JMX servers, e.g. Pivotal CloudFoundry Ops Metrics Tool, JVM, Weblogic, WebSphere, JBoss, etc.
Java
9
star
45

Dynatrace-AppMon-Test-Automation-Samples

Collector of Samples showcasing Metrics-Driven Continuous Delivery with Dynatrace Test Automation
Java
9
star
46

monitoring-coverage

Visualize monitoring coverage by Dynatrace across the user's entire estate and take action to get to 100% quickly.
TypeScript
8
star
47

Dynatrace-AppMon-Powershell

Powershell scripts to deploy Dynatrace on Microsoft Windows and Azure
PowerShell
8
star
48

swift-mobile-sdk

Swift Package Manger repository of the Dynatrace OneAgent for mobile (iOS, tvOS)
Swift
8
star
49

heroku-buildpack-dynatrace

Heroku buildpack to enable application monitoring for Heroku apps
Shell
8
star
50

Dynatrace-AppMon-SOAP-Monitor-Plugin

System Monitor SOAP Monitor Plugin
Java
7
star
51

Dynatrace-Azure-WebApp-Deployment

This script automates the Dynatrace Agent installation for Azure WebApps
PowerShell
6
star
52

Dynatrace-AppMon-Oracle-Weblogic-Monitoring-Plugin

Java
6
star
53

atlassian-connect-jira

The Dynatrace Atlassian Connect JIRA Add-On enables DevOps teams to improve collaboration from Dev to Ops
JavaScript
6
star
54

Dynatrace-AppMon-Visual-Studio-2017

Dynatrace Application Monitoring Extension for Visual Studio 2017
C#
6
star
55

Dynatrace-AppMon-WebServer-Agent-Ansible

An Ansible role for automated deployments of the Dynatrace WebServer Agent.
Shell
6
star
56

bosh-oneagent-release

BOSH release for Dynatrace OneAgent
Ruby
6
star
57

Dynatrace-OneAgent-Chef

This chef recipe downloads and installs the Dynatrace OneAgent on Linux or Windows systems.
Ruby
6
star
58

Dynatrace-AppMon-TFS-Integration-Plugin

Integrates Dynatrace AppMon with Team Foundation Server.
PowerShell
6
star
59

OneAgent-SDK-Ruby-Sample-Binding

This repository provides a partial Ruby binding for the Dynatrace OneAgent SDK for C using FFI.
Ruby
5
star
60

Dynatrace-AppMon-ServiceNow-Action-Plugin

Dynatrace ServiceNow Action Plugin
Java
5
star
61

Dynatrace-AppMon-Big-Data-Business-Transaction-Bridge

BigData Big Data Business Transaction Bridge
Java
5
star
62

xk6-output-dynatrace

repo for the k6 extension
Go
5
star
63

Dynatrace-AppMon-Generic-Measure-Monitoring-Plugin

Opens an HTTP Listener Port with which you can feed ANY generic measure to Dynatrace. One of the use cases will be feeding data from JMeter or other testing tools to Dynatrace
Java
5
star
64

Dynatrace-workflow-samples

5
star
65

Dynatrace-EventDrivenAnsible

Python
5
star
66

Dynatrace-AppMon-IBM-MQ-Queue-Channel-Monitoring-Plugin

System Monitor IBM MQ Queue Channel Monitoring Plugin
Java
5
star
67

Dynatrace-Appmon-Collector-Ansible

An Ansible role for automated deployments of the Dynatrace Collector.
Shell
5
star
68

Dynatrace-AppMon-License-Count

System Monitor License Count
Java
5
star
69

Dynatrace-AppMon-Server-REST-Java-SDK

Library providing wrappers for working with Server REST API from Java code
Java
5
star
70

automation-workflow-creator

This app assists you in building your first automated Dynatrace workflow with two example use cases:
TypeScript
5
star
71

Dynatrace-AppMon-JIRA-Action-Plugin

Operations JIRA Action Plugin
Java
4
star
72

Dynatrace-AppMon-DB-Query-Monitor-Plugin

Operations DB Query Monitor Plugin
Java
4
star
73

Dynatrace-AppMon-Oracle-Monitor-Plugin

System Monitor Oracle Monitor Plugin
Java
4
star
74

Dynatrace-LoadRunner-Request-Tagging

Command line tool which tags HTTP requests with relevant HTTP headers for Dynatrace
C
4
star
75

Dynatrace-AppMon-Elasticsearch-Plugin

A plugin for Dynatrace AppMon to fetch measures from an Elasticsearch Cluster
Java
4
star
76

dynatrace-configuration-as-code-core

Go
4
star
77

Dynatrace-AppMon-Upgrade-Automation

Shell
4
star
78

Dynatrace-AppMon-Splunk-Application

Java
4
star
79

db-connection-check

Quick & dirty tool to verify database connectivity
Java
4
star
80

dtPocketTopology

Demo iOS app, consumes Dynatrace REST API topology endpoint
Swift
4
star
81

github-actions-profiler

TypeScript
4
star
82

Dynatrace-AppMon-NGINX-Plus-Monitoring-Plugin

Dynatrace NGINX Plus Monitoring Plugin
Java
4
star
83

Dynatrace-Agent-Ansible

An Ansible role for automated deployments of the Dynatrace Agents package.
Ruby
4
star
84

Native-Android-Sample-Application

Sample Mobile Application with Guide to Instrument with Dynatrace
Java
4
star
85

Dynatrace-AppMon-URL-Monitor-Plugin

System Monitor URL Monitor Plugin
Java
4
star
86

Dynatrace-AppMon-PostgreSQL-Monitor-Plugin

Dynatrace PostgreSQL Monitor Plugin
Java
4
star
87

Dynatrace-AppMon-Master-Slave-Dashboard-Creator

GUI based tool helps build Master / Slave dashboards. A user selects a master dashlet and the rest are automatically turned into slaves of this dashboard. Great for business-oriented dashboards.
Java
4
star
88

Dynatrace-AppMon-IntelliJ-IDEA-Integration-Plugin

IntelliJ IDEA Integration Plugin
Java
4
star
89

diagnostics-eventflow

C#
3
star
90

OneAgent-SDK-for-Go

Go
3
star
91

alyeska

Alyeska /al-ee-EHS-kah/ n. A Data Pipeline Toolkit
Python
3
star
92

Dynatrace-AppMon-User-Logins-Plugin

Dynatrace User Logins Plugin
Java
3
star
93

Dynatrace-AppMon-REST-Monitor-Plugin

Parses the result of an HTTP call and extracts one or more measures.
Java
3
star
94

Dynatrace-AppMon-Apache-HTTPD-Agent-Ansible

An Ansible role for automated deployments of the Dynatrace Agent for the Apache HTTP Server.
Ruby
3
star
95

Dynatrace-AppMon-FastPack-Builder

GUI Tool to automatically create Dynatrace Fastpacks
Java
3
star
96

perform-2023-hotday

JavaScript
3
star
97

Dynatrace-AppMon-Windows-Event-Log-Monitor

System Monitoring Windows Event Log Monitor
Java
3
star
98

Dynatrace-AppMon-WebSphere-DataPower-Monitor-Plugin

System Monitor WebSphere DataPower Monitor Plugin
Java
3
star
99

PurePath-Throughput-Action-Plugin

Check active configuration and activate next higher/lower level based on throughput
Java
3
star
100

Dynatrace-AppMon-Java-Agent-Ansible

An Ansible role for automated deployments of the Dynatrace Java Agent.
Ruby
3
star