-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Update SSI injector guide with process selection details #32340
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
- Add comprehensive overview of what processes SSI instruments and excludes - Document location, language, process type, and context-based selection criteria - List specific examples of excluded processes (build tools, CLIs, IDEs, system utilities) - Add language-specific instrumentation behavior for Java, .NET, Node.js, Python, Ruby - Include links to open-source requirements files for transparency - Remove marketing language and focus on technical accuracy
Preview links (active after the
|
| ### Location | ||
| Applications deployed in standard application directories are instrumented: | ||
| - `/opt/myapp`, `/app`, `/home/user/app` (instrumented) | ||
| - `/bin`, `/sbin`, `/usr/bin` (system utilities, not instrumented) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these have exceptions:
{
"description": "Allowed Python targets from system directories",
"values": [
{
"cmp_strategy": "equals",
"value": "/usr/bin/gunicorn",
"value_type": "entry_file"
},
{
"cmp_strategy": "equals",
"value": "/usr/bin/flask",
"value_type": "entry_file"
},
{
"cmp_strategy": "equals",
"value": "/usr/bin/uvicorn",
"value_type": "entry_file"
},
{
"cmp_strategy": "equals",
"value": "/usr/bin/django-admin",
"value_type": "entry_file"
},
{
"cmp_strategy": "equals",
"value": "/usr/bin/celery",
"value_type": "entry_file"
},
{
"cmp_strategy": "equals",
"value": "/usr/bin/scrapy",
"value_type": "entry_file"
}
]
}
| - `java -jar myapp.jar` (application, instrumented) | ||
| - `java -version` (version check, not instrumented) | ||
| - `npm start` (starts application, instrumented) | ||
| - `npm install` (installs dependencies, not instrumented) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just to clarify, right now (although work is being done to change that) we do inject but it's the SDK's responsibility to bail (or not)
and like I said, in the future we will also bail (and not inject) if we detected certain command line arguments liek 'help', 'version', etc.
| - Text processing: `grep`, `sed`, `awk` | ||
| - File operations: `cp`, `mv`, `tar`, `zip` | ||
| - System monitoring: `ps`, `top`, `htop` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we don't inject these anyway they are native applications
| - **Compilers:** `javac`, `gcc`, `dotnet build` | ||
| - **Package managers:** `npm`, `pip`, `gem`, `maven`, `gradle` | ||
| - **Build tools:** `make`, `cmake`, `webpack` | ||
| - **Project scaffolding:** `dotnet new`, `rails new`, `create-react-app` | ||
|
|
||
| ### Database and infrastructure management tools | ||
| - **Database CLIs:** `psql`, `mysql`, `mongo`, `redis-cli` | ||
| - **Kafka tools:** `kafka-topics.sh`, `kafka-console-consumer.sh` | ||
| - **Elasticsearch tools:** `elasticsearch-plugin`, `elasticsearch-keystore` | ||
| - **Cassandra tools:** `nodetool`, `cqlsh` | ||
| - **Cloud CLIs:** `aws`, `gcloud`, `kubectl` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://github.com/DataDog/auto_inject/blob/main/preload_go/deny_patterns.go
☝️ even this is not a comprehensive list
| - Modifies environment variables or command-line arguments to load the appropriate tracer SDK. | ||
| - Emits telemetry to report status and aid in debugging. | ||
| - Includes fallback logic to allow the application to continue running uninstrumented if injection fails. | ||
| Single Step Instrumentation instruments the following types of applications: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Single Step Instrumentation instruments the following types of applications: | |
| Single Step Instrumentation supports the following types of applications: |
Just a small nitpick here to remove the duplication of the word "instrument"
| - **Web services** - API servers, web applications, microservices | ||
| - **Application servers** - Tomcat, Jetty, JBoss, WebLogic, Kestrel | ||
| - **Background workers** - Celery, Sidekiq, job processors | ||
| - **Custom applications** - Business logic and services | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - **Web services** - API servers, web applications, microservices | |
| - **Application servers** - Tomcat, Jetty, JBoss, WebLogic, Kestrel | |
| - **Background workers** - Celery, Sidekiq, job processors | |
| - **Custom applications** - Business logic and services | |
| - **Web services**: API servers, web applications, microservices | |
| - **Application servers**: Tomcat, Jetty, JBoss, WebLogic, Kestrel | |
| - **Background workers**: Celery, Sidekiq, job processors | |
| - **Custom applications**: Business logic and services |
Editing this to match out style guide.
| - **Background workers** - Celery, Sidekiq, job processors | ||
| - **Custom applications** - Business logic and services | ||
|
|
||
| SSI uses multiple signals to determine if a process should be instrumented: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| SSI uses multiple signals to determine if a process should be instrumented: | |
| SSI uses multiple signals such as location, language, process type, and context, to determine if a process should be instrumented. |
Adding these here to set the stage for the upcoming headers so the reader knows which signals are to come up next.
| - **Compilers:** `javac`, `gcc`, `dotnet build` | ||
| - **Package managers:** `npm`, `pip`, `gem`, `maven`, `gradle` | ||
| - **Build tools:** `make`, `cmake`, `webpack` | ||
| - **Project scaffolding:** `dotnet new`, `rails new`, `create-react-app` | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - **Compilers:** `javac`, `gcc`, `dotnet build` | |
| - **Package managers:** `npm`, `pip`, `gem`, `maven`, `gradle` | |
| - **Build tools:** `make`, `cmake`, `webpack` | |
| - **Project scaffolding:** `dotnet new`, `rails new`, `create-react-app` | |
| - Compilers: `javac`, `gcc`, `dotnet build` | |
| - Package managers: `npm`, `pip`, `gem`, `maven`, `gradle` | |
| - Build tools: `make`, `cmake`, `webpack` | |
| - Project scaffolding: `dotnet new`, `rails new`, `create-react-app` |
I don't think these need to be bolded since the values are in quotes .
| - **Database CLIs:** `psql`, `mysql`, `mongo`, `redis-cli` | ||
| - **Kafka tools:** `kafka-topics.sh`, `kafka-console-consumer.sh` | ||
| - **Elasticsearch tools:** `elasticsearch-plugin`, `elasticsearch-keystore` | ||
| - **Cassandra tools:** `nodetool`, `cqlsh` | ||
| - **Cloud CLIs:** `aws`, `gcloud`, `kubectl` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - **Database CLIs:** `psql`, `mysql`, `mongo`, `redis-cli` | |
| - **Kafka tools:** `kafka-topics.sh`, `kafka-console-consumer.sh` | |
| - **Elasticsearch tools:** `elasticsearch-plugin`, `elasticsearch-keystore` | |
| - **Cassandra tools:** `nodetool`, `cqlsh` | |
| - **Cloud CLIs:** `aws`, `gcloud`, `kubectl` | |
| - Database CLIs: `psql`, `mysql`, `mongo`, `redis-cli` | |
| - Kafka tools: `kafka-topics.sh`, `kafka-console-consumer.sh` | |
| - Elasticsearch tools: `elasticsearch-plugin`, `elasticsearch-keystore` | |
| - Cassandra tools: `nodetool`, `cqlsh` | |
| - Cloud CLIs: `aws`, `gcloud`, `kubectl` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi there,
Thanks for this PR. I added some comments/suggestions here. Let me know if you have any questions!
What does this PR do? What is the motivation?
Merge instructions
Merge readiness:
For Datadog employees:
Your branch name MUST follow the
<name>/<description>convention and include the forward slash (/). Without this format, your pull request will not pass CI, the GitLab pipeline will not run, and you won't get a branch preview. Getting a branch preview makes it easier for us to check any issues with your PR, such as broken links.If your branch doesn't follow this format, rename it or create a new branch and PR.
[6/5/2025] Merge queue has been disabled on the documentation repo. If you have write access to the repo, the PR has been reviewed by a Documentation team member, and all of the required checks have passed, you can use the Squash and Merge button to merge the PR. If you don't have write access, or you need help, reach out in the #documentation channel in Slack.
Additional notes