diff --git a/answers.md b/answers.md index 092b6d280..b0d9d06f6 100644 --- a/answers.md +++ b/answers.md @@ -1 +1,517 @@ -Your answers to the questions go here. +If you want to apply as a Solutions or Sales Engineer at [Datadog](http://datadog.com) you are in the right spot. Read on, it's fun, I promise. + + + + + +## The Exercise + +Don’t forget to read the [References](https://github.com/DataDog/hiring-engineers/blob/solutions-engineer/README.md#references) + +## Questions + +Please provide screenshots and code snippets for all steps. + +## Prerequisites - Setup the environment + +You can utilize any OS/host that you would like to complete this exercise. However, we recommend one of the following approaches: + +* You can spin up a fresh linux VM via Vagrant or other tools so that you don’t run into any OS or dependency issues. [Here are instructions](https://github.com/DataDog/hiring-engineers/blob/solutions-engineer/README.md#vagrant) for setting up a Vagrant Ubuntu VM. We strongly recommend using minimum `v. 16.04` to avoid dependency issues. +* You can utilize a Containerized approach with Docker for Linux and our dockerized Datadog Agent image. + +Once this is ready, sign up for a trial Datadog at https://www.datadoghq.com/ + +**Please make sure to use “Datadog Recruiting Candidate” in [the “Company” field](https://a.cl.ly/wbuPdEBy)** + +Then, get the Agent reporting metrics from your local machine and move on to the next section... + +For the environment setup I had a Windows 10 JUMPBOX machine and a Windows Server 2016 in an Azure subscription. +I also created an Ubuntu 18.04 VM in Azure which I then installed the Datadog agent on. + +![image](images/1.PNG?raw=true "1") + +![image](images/2.PNG?raw=true "2") + +For Windows 2016 I simply installed the Datadog agent MSI and followed the instructions. +Since I saw Datadog had a specific Azure section when installing the Agent I decided that for my personal subscription I would like to see the process of linking my Azure subscription to Datadog. +For this I followed the steps here : https://docs.datadoghq.com/integrations/azure/?tab=azurecliv20#setup +I first logged in to my Azure tenant + +![image](images/3.PNG?raw=true "3") + +I then proceeded with creating an App Registration in my Azure AD named Datadog Auth. + +![image](images/4.PNG?raw=true "4") + + +And also, a client secret for the registration + +![image](images/95.png?raw=true "95") + +I followed the documentation further by creating a user with Monitoring Reader role in the Subscriptions IAM + +![image](images/5.png?raw=true "5") + + +I then went to the Azure integration and added the information needed from my subscription and added the registration. + +![image](images/6.PNG?raw=true "6") + + +The add came back successful + +![image](images/7.PNG?raw=true "7") + + +After the integration I went to add the Datadog Agent as an extension to my VMs in Azure. + +![image](images/8.png?raw=true "8") + +I then validated this was functional by going to the Azure VM Default Dashboard. + +![image](images/9.png?raw=true "9") + + +The machines also appeared in my host app. I added a second subscription that I have from work just to see how the host map looked and also installed the MSI agent on two of those machines. + +![image](images/10.png?raw=true "10") + + + +## Collecting Metrics: + +* Add tags in the Agent config file and show us a screenshot of your host and its tags on the Host Map page in Datadog. + +A quick google of the Agent config file location /etc/datadog-agent/datadog.yaml +I then quickly added some tags both on the Windows VM and the Ubuntu VM by looking at the following example on Github from the eDocs +https://github.com/DataDog/datadog-agent/blob/main/pkg/config/config_template.yaml +For Windows I simply added environment, name and geo as shown below in the datadog.yaml file + +![image](images/11.PNG?raw=true "11") + + +I am not sure if the next step is necessary but I restarted the Agent service just to ensure it made the changes. + +![image](images/12.PNG?raw=true "12") + + +On Ubuntu a similar process was done but with VIM.I was having some issues for a little bit with the formatting. It seemed for some reason it did not like the formatting of the tags, I assume this was due to the spacing, however I copy pasted the exact format from the Windows machine notepad and just changed the values to make a distinction. + +![image](images/13.PNG?raw=true "13") + + +I then restarted the agent service (again I am not sure if this step is necessary but it seemed to have worked for me) + +![image](images/14.PNG?raw=true "14") + + +I then checked both machines and the tags were added successfully + +![image](images/15.PNG?raw=true "15") + +![image](images/16.png?raw=true "16") + + +* Install a database on your machine (MongoDB, MySQL, or PostgreSQL) and then install the respective Datadog integration for that database. + +For this step I installed MySQL on the Ubuntu VM + +![image](images/17.PNG?raw=true "17") + +![image](images/18.PNG?raw=true "18") + + + The next step was checking if I needed a separate agent for this integration. A quick check on the eDocs showed the following: + + ![image](images/19.PNG?raw=true "19") + + +I then just simply proceeded by adding the integration per the instructions on the MySQL Integration eDocs by running the following commands. + +![image](images/20.PNG?raw=true "20") + +![image](images/21.PNG?raw=true "21") + +![image](images/22.PNG?raw=true "22") + +![image](images/23.PNG?raw=true "23") + + +I then went to the mysql.d/conf.yaml file and edited it by comparing it to the sample mysql.d/conf.yaml file already present. + +![image](images/24.PNG?raw=true "24") + +![image](images/25.PNG?raw=true "25") + + +The integration was added successfully. +I then restarted the Agent service and ran a bunch of simple queries on the db. I then went to the MySQL Overview and saw traffic in the dashboard. + +![image](images/26.PNG?raw=true "26") + + +* Create a custom Agent check that submits a metric named my_metric with a random value between 0 and 1000. + +For this section I looked at the following link: https://docs.datadoghq.com/developers/write_agent_check/?tab=agentv6v7 + +In here it talks about creating a Custom agent check. From this I took the hello.py sample code from the eDocs. + +I then pasted this sample code into visual studio and looked up the random function syntax in python. I followed the syntax from here. +https://www.programiz.com/python-programming/examples/random-number + +I added a tag from my ubuntu machine and saved the file. I then copied the changes and pasted it in /etc/datadog-agent/checks.d/datatest.py + +![image](images/27.PNG?raw=true "27") + + +I then followed the docs further and created a yaml file called datatest.yaml and pasted the sample code with the only change being the min_collection_interval from 30 to 45 in /etc/datadog-agent/conf.d + +![image](images/28.PNG?raw=true "28") + + +I then ran the following test command on my datatest to check that the code executes properly + +![image](images/29.PNG?raw=true "29") + +I also went to the Datadog app and created a dashboard with my_metric data in order to see if this integration worked. + +![image](images/30.PNG?raw=true "30") + +![image](images/96.png?raw=true "96") + +![image](images/31.PNG?raw=true "31") + +* Change your check's collection interval so that it only submits the metric once every 45 seconds. + +This was done in the previous step. Originally the sample file had a value of 30 and that was just simply changed to 45. + +* **Bonus Question** Can you change the collection interval without modifying the Python check file you created? + +Looking at the “Writing checks that run command line programs” eDocs. +https://docs.datadoghq.com/developers/write_agent_check/?tab=agentv6v7 +It suggests you can create a custom check that runs a command line program and captures its output as a custom metric. You could then use the command line to set the “min_collection_interval” value. +We can also do it as in the exercise by editing the conf.d file rather than the python. + + +## Visualizing Data: + +Utilize the Datadog API to create a Timeboard that contains: + +The main doc I used for this is here: +https://docs.datadoghq.com/api/latest/dashboards/ + +First, I Installed the Datadog API Collection. I was trying to get the key Authentication to validate the API and got a status code of 200 where all I added was the API Key to the Authorization. + + +![image](images/32.PNG?raw=true "32") + +The status code was 200 when running the create dashboard however when I checked the Datadog App for the new dashboard it was not being created. + +![image](images/33.PNG?raw=true "33") + +![image](images/34.PNG?raw=true "34") + +I’m not sure why the dashboard wasn’t being created. I spent some time troubleshooting this and, in the end, I just decided to start my own request from scratch rather than using the API Collection. +I repeated the same process and this time I got a different output for Validating the API key but still status code 200. + +And when I ran the create dashboard POST call it also returned status 200.I used the code from the below eDocs in the body to test the creation of a test dashboard. +https://docs.datadoghq.com/api/latest/dashboards/#create-a-new-dashboard + +This also worked properly this time with a status code of 200 and more readable output than what I was previously getting. + +![image](images/35.png?raw=true "35") + +![image](images/36.png?raw=true "36") + + + +When I then checked the Dashboard list I could see the newly created Dashboard from the API. + +![image](images/37.png?raw=true "37") + +* Your custom metric scoped over your host. + +![image](images/38.png?raw=true "38") + +* Any metric from the Integration on your Database with the anomaly function applied. + +![image](images/39.png?raw=true "39") + +https://www.datadoghq.com/blog/introducing-anomaly-detection-datadog/ + +* Your custom metric with the rollup function applied to sum up all the points for the past hour into one bucket + +![image](images/40.png?raw=true "40") + +https://docs.datadoghq.com/dashboards/functions/rollup/ + + +I entered the body in the request and it came back successfully. + +![image](images/41.png?raw=true "41") + +I then checked the Dashboard List and saw it was created + +![image](images/42.png?raw=true "42") + +![image](images/43.png?raw=true "43") + + +Please be sure, when submitting your hiring challenge, to include the script that you've used to create this Timeboard. + +Once this is created, access the Dashboard from your Dashboard List in the UI: + +* Set the Timeboard's timeframe to the past 5 minutes + +![image](images/44.png?raw=true "44") + + +* Take a snapshot of this graph and use the @ notation to send it to yourself. + +![image](images/45.png?raw=true "45") + +![image](images/46.png?raw=true "46") + + +* **Bonus Question**: What is the Anomaly graph displaying? + +From this blog, https://www.datadoghq.com/blog/introducing-anomaly-detection-datadog/ + +I was able to understand that the Anomaly graph is graphing outliers in order to help you identify unexpected differences in behaviour among multiple entities that are reporting the same metric. + + +## Monitoring Data + +Since you’ve already caught your test metric going above 800 once, you don’t want to have to continually watch this dashboard to be alerted when it goes above 800 again. So let’s make life easier by creating a monitor. + +Create a new Metric Monitor that watches the average of your custom metric (my_metric) and will alert if it’s above the following values over the past 5 minutes: + +* Warning threshold of 500 +* Alerting threshold of 800 +* And also ensure that it will notify you if there is No Data for this query over the past 10m. + +I entered the values in the question in the Monitor details shown below + +![image](images/47.png?raw=true "47") + + +Please configure the monitor’s message so that it will: + +* Send you an email whenever the monitor triggers. +* Create different messages based on whether the monitor is in an Alert, Warning, or No Data state. +* Include the metric value that caused the monitor to trigger and host ip when the Monitor triggers an Alert state. + +![image](images/48.png?raw=true "48") + + +* When this monitor sends you an email notification, take a screenshot of the email that it sends you. + +![image](images/49.png?raw=true "49") + + +I wanted to check if the value parameter was actually working as in the test, it shows as 0.0 +I created the monitor and waited and I soon got a warning that shows the following. + +![image](images/50.png?raw=true "50") + + +The value is now filled in which suggests it works. + + +* **Bonus Question**: Since this monitor is going to alert pretty often, you don’t want to be alerted when you are out of the office. Set up two scheduled downtimes for this monitor: + + * One that silences it from 7pm to 9am daily on M-F, + + ![image](images/51.png?raw=true "51") + + + * And one that silences it all day on Sat-Sun. + + ![image](images/52.png?raw=true "52") + + * Make sure that your email is notified when you schedule the downtime and take a screenshot of that notification. + + ![image](images/53.png?raw=true "53") + + ![image](images/54.png?raw=true "54") + + + +## Collecting APM Data: + +Given the following Flask app (or any Python/Ruby/Go app of your choice) instrument this using Datadog’s APM solution: + +```python +from flask import Flask +import logging +import sys + +# Have flask use stdout as the logger +main_logger = logging.getLogger() +main_logger.setLevel(logging.DEBUG) +c = logging.StreamHandler(sys.stdout) +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') +c.setFormatter(formatter) +main_logger.addHandler(c) + +app = Flask(__name__) + +@app.route('/') +def api_entry(): + return 'Entrypoint to the Application' + +@app.route('/api/apm') +def apm_endpoint(): + return 'Getting APM Started' + +@app.route('/api/trace') +def trace_endpoint(): + return 'Posting Traces' + +if __name__ == '__main__': + app.run(host='0.0.0.0', port='5050') +``` +I have had some previous experience in college with Flask so I spent a bit of time looking through the documentation in the references section.. + +I firstly installed Flask, + +$ sudo pip3 install Flask + +I then ran the app using the code that I was given above and it ran without an issue. + +![image](images/55.png?raw=true "55") + + +I was able to reach the endpoint on port 5050 + +![image](images/56.png?raw=true "56") + + +* **Note**: Using both ddtrace-run and manually inserting the Middleware has been known to cause issues. Please only use one or the other. + +I ran into some issues getting ddtrace setup. I was missing some dependencies. A quick google search told me I needed to have python-setuptools installed. I installed it using the following command: + +sudo apt-get install python-setuptools + +I had to also import a Cython module as I was getting the following error + +![image](images/57.png?raw=true "57") + +I installed the cython module + +![image](images/58.png?raw=true "58") + +After this I as able to install ddtrace without any issue and the app started to run using the command given + +DD_SERVICE="flaskservice" DD_ENV="ubuntudev" DD_LOGS_INJECTION=true ddtrace-run python flaskapp.py + +![image](images/59.png?raw=true "59") + +I then accessed it again on the endpoint and I could see logs appear on the service + +![image](images/60.png?raw=true "60") + +I then restarted the datadog agent and waited a few minutes as the eDocs suggest. When I went back to the datadog app I was able to see the flask service there and was able to go into it. + +![image](images/61.png?raw=true "61") + +![image](images/62.png?raw=true "62") + + + +* **Bonus Question**: What is the difference between a Service and a Resource? + +A service is a piece of software that performs certain tasks. For example system services that are running on start-up in order to keep the key software services running for the endpoint to operate functionally. +A resource is more related to hardware but with cloud it can also be virtual not just physical. These are the bare bones of the computer system such as Disk, RAM, CPU info etc. These resources allow services to operate. + + +Provide a link and a screenshot of a Dashboard with both APM and Infrastructure Metrics. + +Link to Dashboard: https://p.datadoghq.eu/sb/0f546c48-5c07-11ec-87a1-da7ad0900005-7babdbc6c304146e166ec45bdd02399c + +![image](images/63.png?raw=true "63") + +Please include your fully instrumented app in your submission, as well. + +## Final Question: + +Datadog has been used in a lot of creative ways in the past. We’ve written some blog posts about using Datadog to monitor the NYC Subway System, Pokemon Go, and even office restroom availability! + +Is there anything creative you would use Datadog for? + +Since the initial look at datadog I was interested to see if I could integrate this with Citrix technology. + +As I have good experience working with the Citrix ADC (Netscaler) I wanted to try and see if I could integrate the datadog agent into it. + +I believe this would be a challenge since under the hood of the Netscaler is a very customized FreeBSD OS that would prevent a lot of integrations that are pre-added in the initial image. + +I first tried my hand at installing the Agent using the Debian/Ubuntu command on the eDocs. + +DD_AGENT_MAJOR_VERSION=7 DD_API_KEY=24001504bc5544c28b23d0a157d7939c DD_SITE="datadoghq.eu" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" + +It however was not a surprise to find that even though it ran, the package wasn’t installed. I checked the file directory on the Netscaler and no datadog folder was created. + +![image](images/64.png?raw=true "64") + +Since this is a VM running in Azure, I thought maybe I could install the agent as an extension. + +![image](images/65.png?raw=true "65") + +Even though I did that, the process was stuck on deployment which leads me to believe this is again not going to work. + +![image](images/66.png?raw=true "66") + +I then decided to potentially try just putting the files on the Netscaler myself with WinSCP. I believe I have more of a chance running this as source rather than Ubuntu/Linux however it’s worth a shot. + +![image](images/67.png?raw=true "67") + +Unfortunately, that did not work either, I did find some extra articles to try out however it could be too optimised however it would be part of the next steps. + +I found a FreeBSD package for datadog-agent on GitHub that could be very useful if combining it with the missing dependencies on the NetScaler. +https://github.com/DataDog/dd-agent/issues/350# + +Something else that could be a possibility is looking into the NITRO API: https://developer-docs.citrix.com/projects/citrix-adc-nitro-api-reference/en/latest/ + +Nevertheless, I would be very interested to spend some time looking into this further as I believe a lot of customers I currently work with that have large Citrix environments would benefit massively from the in-depth monitoring and integrations that Datadog has available. + + + +## Instructions + +If you have a question, create an issue in this repository. + +To submit your answers: + +* Fork this repo. +* Answer the questions in answers.md +* Commit as much code as you need to support your answers. +* Submit a pull request. +* Don't forget to include links to your dashboard(s), even better links and screenshots. We recommend that you include your screenshots inline with your answers. + +## References + +### How to get started with Datadog + +* [Datadog overview](https://docs.datadoghq.com/) +* [Guide to graphing in Datadog](https://docs.datadoghq.com/graphing/) +* [Guide to monitoring in Datadog](https://docs.datadoghq.com/monitors/) + +### The Datadog Agent and Metrics + +* [Guide to the Agent](https://docs.datadoghq.com/agent/) +* [Datadog Docker-image repo](https://hub.docker.com/r/datadog/docker-dd-agent/) +* [Writing an Agent check](https://docs.datadoghq.com/developers/write_agent_check/) +* [Datadog API](https://docs.datadoghq.com/api/) + +### APM + +* [Datadog Tracing Docs](https://docs.datadoghq.com/tracing) +* [Flask Introduction](http://flask.pocoo.org/docs/0.12/quickstart/) + +### Vagrant + +* [Setting Up Vagrant](https://www.vagrantup.com/intro/getting-started/) + +### Other questions: + +* [Datadog Help Center](https://help.datadoghq.com/hc/en-us) diff --git a/answerstxt.txt b/answerstxt.txt new file mode 100644 index 000000000..092b6d280 --- /dev/null +++ b/answerstxt.txt @@ -0,0 +1 @@ +Your answers to the questions go here. diff --git a/code/CreateDashboard.json b/code/CreateDashboard.json new file mode 100644 index 000000000..a768187ff --- /dev/null +++ b/code/CreateDashboard.json @@ -0,0 +1,120 @@ +{ + "title": "Alex Final API Dashboard", + "description": "", + "widgets": [{ + "id": 7609878547521478, + "definition": { + "title": "My_metric host", + "title_size": "16", + "title_align": "left", + "time": {}, + "type": "timeseries", + "requests": [{ + "formulas": [{ + "formula": "query1" + }], + "queries": [{ + "data_source": "metrics", + "name": "query1", + "query": "avg:my_metric{host:202-Ubuntu}" + }], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + }], + "yaxis": { + "scale": "linear", + "include_zero": true, + "label": "", + "min": "auto", + "max": "auto" + }, + "markers": [] + }, + "layout": { + "x": 0, + "y": 0, + "width": 4, + "height": 2 + } + }, { + "id": 2742440866700390, + "definition": { + "title": "my_metricAnomaly", + "title_size": "16", + "title_align": "left", + "time": {}, + "type": "timeseries", + "requests": [{ + "formulas": [{ + "formula": "anomalies(query1, 'basic', 2)" + }], + "queries": [{ + "data_source": "metrics", + "name": "query1", + "query": "avg:my_metric{host:202-Ubuntu}" + }], + "response_format": "timeseries", + "style": { + "palette": "dog_classic", + "line_type": "solid", + "line_width": "normal" + }, + "display_type": "line" + }], + "yaxis": { + "scale": "linear", + "include_zero": true, + "label": "", + "min": "auto", + "max": "auto" + }, + "markers": [] + }, + "layout": { + "x": 4, + "y": 0, + "width": 4, + "height": 2 + } + }, { + "id": 5735803946471652, + "definition": { + "title": "sum:my_metricRollup", + "title_size": "16", + "title_align": "left", + "time": {}, + "type": "query_value", + "requests": [{ + "response_format": "scalar", + "queries": [{ + "data_source": "metrics", + "name": "query1", + "query": "sum:my_metric{host:202-Ubuntu}.rollup(sum, 3600)", + "aggregator": "sum" + }], + "formulas": [{ + "formula": "query1" + }] + }], + "autoscale": true, + "precision": 2 + }, + "layout": { + "x": 8, + "y": 0, + "width": 2, + "height": 2 + } + }], + "template_variables": [], + "layout_type": "ordered", + "is_read_only": false, + "notify_list": [], + "reflow_type": "fixed", + "id": "b7r-yje-gg5" +} \ No newline at end of file diff --git a/code/datadog.yaml b/code/datadog.yaml new file mode 100644 index 000000000..f1afab015 --- /dev/null +++ b/code/datadog.yaml @@ -0,0 +1,2092 @@ + +######################### +## Basic Configuration ## +######################### + +## @param api_key - string - required +## @env DD_API_KEY - string - required +## The Datadog API key to associate your Agent's data with your organization. +## Create a new API key here: https://app.datadoghq.com/account/settings +# +api_key: "" + +## @param site - string - optional - default: datadoghq.com +## @env DD_SITE - string - optional - default: datadoghq.com +## The site of the Datadog intake to send Agent data to. +## Set to 'datadoghq.eu' to send data to the EU site. +## Set to 'us3.datadoghq.com' to send data to the US3 site. +## Set to 'us5.datadoghq.com' to send data to the US5 site. +## Set to 'ddog-gov.com' to send data to the US1-FED site. +# +site: datadoghq.eu + +## @param dd_url - string - optional - default: https://app.datadoghq.com +## @env DD_URL - string - optional - default: https://app.datadoghq.com +## The host of the Datadog intake server to send metrics to, only set this option +## if you need the Agent to send metrics to a custom URL, it overrides the site +## setting defined in "site". It does not affect APM, Logs or Live Process intake which have their +## own "*_dd_url" settings. +# +#dd_url: https://app.datadoghq.com + +## @param proxy - custom object - optional +## @env DD_PROXY_HTTP - string - optional +## @env DD_PROXY_HTTPS - string - optional +## @env DD_PROXY_NO_PROXY - space separated list of strings - optional +## If you need a proxy to connect to the Internet, provide it here (default: +## disabled). Refer to https://docs.datadoghq.com/agent/proxy/ to understand how to use these settings. +## For Logs proxy information, refer to https://docs.datadoghq.com/agent/proxy/#proxy-for-logs +# +# proxy: +# https: http://:@: +# http: http://:@: +# no_proxy: +# - +# - + +## @param skip_ssl_validation - boolean - optional - default: false +## @env DD_SKIP_SSL_VALIDATION - boolean - optional - default: false +## Setting this option to "true" tells the Agent to skip validation of SSL/TLS certificates. +# +# skip_ssl_validation: false + +## @param force_tls_12 - boolean - optional - default: false +## @env DD_FORCE_TLS_12 - boolean - optional - default: false +## Setting this option to "true" forces the Agent to only use TLS 1.2 when +## pushing data to the Datadog intake specified in "site" or "dd_url". +# +# force_tls_12: false + +## @param hostname - string - optional - default: auto-detected +## @env DD_HOSTNAME - string - optional - default: auto-detected +## Force the hostname name. +# +# hostname: + +## @param hostname_file - string - optional +## In some environments, auto-detection of the hostname is not adequate and +## environment variables cannot be used to set the value. In such cases, the +## file on the host can also be used provide an appropriate value. If +## 'hostname' value has been set to a non-empty value, this option is ignored. +# +# hostname_file: /var/lib/cloud/data/instance-id + +## @param hostname_fqdn - boolean - optional - default: false +## @env DD_HOSTNAME_FQDN - boolean - optional - default: false +## When the Agent relies on the OS to determine the hostname, make it use the +## FQDN instead of the short hostname. Recommended value: true +## More information at https://dtdg.co/flag-hostname-fqdn +# +# hostname_fqdn: false + +## @param host_aliases - list of strings - optional +## List of host aliases to report in addition to any aliases collected +## automatically from cloud providers. +## More information at +## https://docs.datadoghq.com/agent/faq/how-datadog-agent-determines-the-hostname/?tab=agentv6v7#host-aliases +# +# host_aliases: +# - +# - + +## @param tags - list of key:value elements - optional +## @env DD_TAGS - space separated list of strings - optional +## List of host tags. Attached in-app to every metric, event, log, trace, and service check emitted by this Agent. +## +## Additional tags can be supplied using the `DD_EXTRA_TAGS` enviro +tags: + + - environment:ubuntuDev + + - name:alex + + - geo:germany + +## @param env - string - optional +## @env DD_ENV - string - optional +## The environment name where the agent is running. Attached in-app to every +## metric, event, log, trace, and service check emitted by this Agent. +# +# env: + +## @param tag_value_split_separator - map - optional +## @env DD_TAG_VALUE_SPLIT_SEPARATOR - list of key:value strings - optional +## Split tag values according to a given separator. Only applies to host tags, +## and tags coming from container integrations. It does not apply to tags on dogstatsd metrics, +## and tags collected by other integrations. +## +## Example use-case: +## +## With a raw collected tag "foo:1;2;3", using the following configuration: +## +## tag_value_split_separator: +## foo: ; +## +## results in the raw tag being transformed into "foo:1", "foo:2", "foo:3" tags +#i +# tag_value_split_separator: +# i : + +## @param checks_tag_cardinality - string - optional - default: low +## @env DD_CHECKS_TAG_CARDINALITY - string - optional - default: low +## Configure the level of granularity of tags to send for checks metrics and events. Choices are: +## * low: add tags about low-cardinality objects (clusters, hosts, deployments, container images, ...) +## * orchestrator: add tags about pod, (in Kubernetes), or task (in ECS or Mesos) -level of cardinality +## * high: add tags about high-cardinality objects (individual containers, user IDs in requests, ...) +## WARNING: sending container tags for checks metrics may create more metrics +## (one per container instead of one per host). This may impact your custom metrics billing. +# +# checks_tag_cardinality: low + +## @param dogstatsd_tag_cardinality - string - optional - default: low +## @env DD_DOGSTATSD_TAG_CARDINALITY - string - optional - default: low +## Configure the level of granularity of tags to send for DogStatsD metrics and events. Choices are: +## * low: add tags about low-cardinality objects (clusters, hosts, deployments, container images, ...) +## * orchestrator: add tags about pod, (in Kubernetes), or task (in ECS or Mesos) -level of cardinality +## * high: add tags about high-cardinality objects (individual containers, user IDs in requests, ...) +## +## WARNING: sending container tags for dogstatsd metrics may create more metrics +## (one per container instead of one per host). This may impact your custom metrics billing. +# +# dogstatsd_tag_cardinality: low + +## @param histogram_aggregates - list of strings - optional - default: ["max", "median", "avg", "count"] +## @env DD_HISTOGRAM_AGGREGATES - space separated list of strings - optional - default: max median avg count +## Configure which aggregated value to compute. +## Possible values are: min, max, median, avg, sum and count. +# +# histogram_aggregates: +# - max +# - median +# - avg +# - count + +## @param histogram_percentiles - list of strings - optional - default: ["0.95"] +## @env DD_HISTOGRAM_PERCENTILES - space separated list of strings - optional - default: 0.95 +## Configure which percentiles are computed by the Agent. It must be a list of float between 0 and 1. +## Warning: percentiles must be specified as yaml strings +# +# histogram_percentiles: +# - "0.95" + +## @param histogram_copy_to_distribution - boolean - optional - default: false +## @env DD_HISTOGRAM_COPY_TO_DISTRIBUTION - boolean - optional - default: false +## Copy histogram values to distributions for true global distributions (in beta) +## Note: This increases the number of custom metrics created. +# +# histogram_copy_to_distribution: false + +## @param histogram_copy_to_distribution_prefix - string - optional +## @env DD_HISTOGRAM_COPY_TO_DISTRIBUTION_PREFIX - string - optional +## A prefix to add to distribution metrics created when histogram_copy_to_distributions is true +# +# histogram_copy_to_distribution_prefix: "" + +## @param aggregator_stop_timeout - integer - optional - default: 2 +## @env DD_AGGREGATOR_STOP_TIMEOUT - integer - optional - default: 2 +## When stopping the agent, the Aggregator will try to flush out data ready for +## aggregation (metrics, events, ...). Data are flushed to the Forwarder in order +## to be sent to Datadog, therefore the Agent might take at most +## 'aggregator_stop_timeout'+'forwarder_stop_timeout' seconds to exit. +## +## You can set the maximum amount of time, in seconds, allocated to the +## Aggregator to do so. You can disable this feature by setting +## 'aggregator_stop_timeout' to 0. +# +# aggregator_stop_timeout: 2 + +## @param aggregator_buffer_size - integer - optional - default: 100 +## @env DD_AGGREGATOR_BUFFER_SIZE - integer - optional - default: 100 +## The default buffer size for the aggregator use a sane value for most of the +## use cases, however, it could be useful to manually set it in order to trade +## RSS usage with better performances. +# +# aggregator_buffer_size: 100 + +## @param forwarder_timeout - integer - optional - default: 20 +## @env DD_FORWARDER_TIMEOUT - integer - optional - default: 20 +## Forwarder timeout in seconds +# +# forwarder_timeout: 20 + +## @param forwarder_retry_queue_payloads_max_size - integer - optional - default: 15728640 (15MB) +## It defines the maximum size in bytes of all the payloads in the forwarder's retry queue. +## The actual memory used is greater than the payloads size as there are extra fields like HTTP headers, +## but no more than 2.5 times the payload size. +# +# forwarder_retry_queue_payloads_max_size: 15728640 + +## @param forwarder_num_workers - integer - optional - default: 1 +## @env DD_FORWARDER_NUM_WORKERS - integer - optional - default: 1 +## The number of workers used by the forwarder. +# +# forwarder_num_workers: 1 + +## @param forwarder_stop_timeout - integer - optional - default: 2 +## @env DD_FORWARDER_STOP_TIMEOUT - integer - optional - default: 2 +## When stopping the agent, the Forwarder will try to flush all new +## transactions (not the ones in retry state). New transactions will be created +## as the Aggregator flush it's internal data too, therefore the Agent might take +## at most 'aggregator_stop_timeout'+'forwarder_stop_timeout' seconds to exit. +## +## You can set the maximum amount of time, in seconds, allocated to the +## Forwarder to send those transactions. You can disable this feature by setting +## 'forwarder_stop_timeout' to 0. +# +# forwarder_stop_timeout: 2 + +## @param forwarder_storage_max_size_in_bytes - int - optional - default: 0 +## When the retry queue of the forwarder is full, `forwarder_storage_max_size_in_bytes` +## defines the amount of disk space the Agent can use to store transactions on the disk. +## When `forwarder_storage_max_size_in_bytes` is `0`, the transactions are never stored on the disk. +# +# forwarder_storage_max_size_in_bytes: 50000000 + +## @param forwarder_storage_max_disk_ratio - float - optional - default: 0.8 +## `forwarder_storage_max_disk_ratio` defines the disk capacity limit for storing transactions. +## `0.8` means the Agent can store transactions on disk until `forwarder_storage_max_size_in_bytes` +## is reached or when the disk mount for `forwarder_storage_path` exceeds 80% of the disk capacity, +## whichever is lower. +# +# forwarder_storage_max_disk_ratio: 0.8 + +## @param forwarder_outdated_file_in_days - int - optional - default: 10 +## This value specifies how many days the overflow transactions will remain valid before +## being discarded. During the Agent restart, if a retry file contains transactions that were +## created more than `forwarder_outdated_file_in_days` days ago, they are removed. +# +# forwarder_outdated_file_in_days: 10 + +## @param cloud_provider_metadata - list of strings - optional - default: ["aws", "gcp", "azure", "alibaba"] +## This option restricts which cloud provider endpoint will be used by the +## agent to retrieve metadata. By default the agent will try # AWS, GCP, Azure +## and alibaba providers. Some cloud provider are not enabled by default to not +## trigger security alert when querying unknown IP (for example, when enabling +## Tencent on AWS). +## Setting an empty list will disable querying any cloud metadata endpoints +## (falling back on system metadata). Disabling metadata for the cloud provider in which an Agent runs may result in +## duplicated hosts in your Datadog account and missing Autodiscovery features +## +## Possible values are: +## "aws" AWS EC2, ECS/Fargate +## "gcp" Google Cloud Provider +## "azure" Azure +## "alibaba" Alibaba +## "tencent" Tencent +# +# cloud_provider_metadata: +# - "aws" +# - "gcp" +# - "azure" +# - "alibaba" + +## @param collect_ec2_tags - boolean - optional - default: false +## @env DD_COLLECT_EC2_TAGS - boolean - optional - default: false +## Collect AWS EC2 custom tags as host tags. +## Requires the EC2 instance to have an IAM role with the `EC2:DescribeTags` +## permission. See docs for further details: +## https://docs.datadoghq.com/integrations/faq/how-do-i-pull-my-ec2-tags-without-using-the-aws-integration/ +# +# collect_ec2_tags: false + +## @param ec2_metadata_timeout - integer - optional - default: 300 +## Timeout in milliseconds on calls to the AWS EC2 metadata endpoints. +# +# ec2_metadata_timeout: 300 + +## @param ec2_prefer_imdsv2 - boolean - optional - default: false +## If this flag is true then the agent will request EC2 metadata using IMDS v2, +## which offers additional security for accessing metadata. However, in some +## situations (such as a containerized agent on a plain EC2 instance) it may +## require additional configuration on the AWS side. See the AWS guidelines +## for further details: +## https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html#instance-metadata-transition-to-version-2 +# +# ec2_prefer_imdsv2: false + +## @param collect_gce_tags - boolean - optional - default: true +## @env DD_COLLECT_GCE_TAGS - boolean - optional - default: true +## Collect Google Cloud Engine metadata as host tags +# +# collect_gce_tags: true + +## @param exclude_gce_tags - list of strings - optional - default: ["kube-env", "kubelet-config", "containerd-configure-sh", "startup-script", "shutdown-script", "configure-sh", "sshKeys", "ssh-keys", "user-data", "cli-cert", "ipsec-cert", "ssl-cert", "google-container-manifest", "bosh_settings"] +## @env DD_EXCLUDE_GCE_TAGS - space separated list of strings - optional - default: kube-env kubelet-config containerd-configure-sh startup-script shutdown-script configure-sh sshKeys ssh-keys user-data cli-cert ipsec-cert ssl-cert google-container-manifest bosh_settings +## Google Cloud Engine metadata attribute to exclude from being converted into +## host tags -- only applicable when collect_gce_tags is true. +# +# exclude_gce_tags: +# - "kube-env" +# - "kubelet-config" +# - "containerd-configure-sh" +# - "startup-script" +# - "shutdown-script" +# - "configure-sh" +# - "sshKeys" +# - "ssh-keys" +# - "user-data" +# - "cli-cert" +# - "ipsec-cert" +# - "ssl-cert" +# - "google-container-manifest" +# - "bosh_settings" + +## @param gce_send_project_id_tag - bool - optional - default: false +## Send the project ID host tag with the `project_id:` tag key in addition to +## the `project:` tag key. +# +# gce_send_project_id_tag: false + +## @param gce_metadata_timeout - integer - optional - default: 1000 +## Timeout in milliseconds on calls to the GCE metadata endpoints. +# +# gce_metadata_timeout: 1000 + +## @param azure_hostname_style - string - optional - default: "os" +## Changes how agent hostname is set on Azure virtual machines. +## +## Possible values: +## "os" - use the hostname reported by the operating system (default) +## "name" - use the instance name +## "name_and_resource_group" - use a combination of the instance name and resource group name +## "full" - use a combination of the instance name, resource group name and subscription id +## "vmid" - use the instance id +# +# azure_hostname_style: "os" + +## @param flare_stripped_keys - list of strings - optional +## @env DD_FLARE_STRIPPED_KEYS - space separated list of strings - optional +## By default, the Agent removes known sensitive keys from Agent and Integrations yaml configs before +## including them in the flare. +## Use this parameter to define additional sensitive keys that the Agent should scrub from +## the yaml files included in the flare. +# +# flare_stripped_keys: +# - "sensitive_key_1" +# - "sensitive_key_2" + +## @param no_proxy_nonexact_match - boolean - optional - default: false +## Enable more flexible no_proxy matching. See https://godoc.org/golang.org/x/net/http/httpproxy#Config +## for more information on accepted matching criteria. +# +# no_proxy_nonexact_match: false + +## @param use_proxy_for_cloud_metadata - boolean - optional - default: false +## By default cloud provider IP's are added to the transport's `no_proxy` list. +## Use this parameter to remove them from the `no_proxy` list. +# +# use_proxy_for_cloud_metadata: false + +## @param auto_exit - custom object - optional +## Configuration for the automatic exit mechanism: the Agent stops when some conditions are met. +# +# auto_exit: + + ## @param noprocess - custom object - optional + ## Configure the `noprocess` automatic exit method. + ## Detect when no other processes (non-agent) are running to trigger automatic exit. `HOST_PROC` is taken into account when gathering processes. + ## Feature is only supported on POSIX systems. + # + # noprocess: + ## @param enabled - boolean - optional - default: false + ## Enable the `noprocess` method + # + # enabled: false + + ## @param enabled - list of strings - optional + ## List of regular expressions to exclude extra processes (on top of built-in list). + # + # excluded_processes: [] + + ## @param validation_period - int - optional - default: 60 + ## Time (in seconds) delay during which the auto exit validates that the selected method continuously detects an exit condition, before exiting. + ## The value is verified every 30s. By default, three consecutive checks need to return true to trigger an automatic exit. + # + # validation_period: 60 + + + +############################ +## Advanced Configuration ## +############################ + +## @param confd_path - string - optional +## @env DD_CONFD_PATH - string - optional +## The path containing check configuration files. By default, uses the conf.d folder +## located in the Agent configuration folder. +# +# confd_path: "" + +## @param additional_checksd - string - optional +## @env DD_ADDITIONAL_CHECKSD - string - optional +## Additional path indicating where to search for Python checks. By default, uses the checks.d folder +## located in the Agent configuration folder. +# +# additional_checksd: + +## @param expvar_port - integer - optional - default: 5000 +## @env DD_EXPVAR_PORT - integer - optional - default: 5000 +## The port for the go_expvar server. +# +# expvar_port: 5000 + +## @param cmd_port - integer - optional - default: 5001 +## @env DD_CMD_PORT - integer - optional - default: 5001 +## The port on which the IPC api listens. +# +# cmd_port: 5001 + +## @param GUI_port - integer - optional +## @env DD_GUI_PORT - integer - optional +## The port for the browser GUI to be served. +## Setting 'GUI_port: -1' turns off the GUI completely +## Default is: +## * Windows & macOS : `5002` +## * Linux: `-1` +## +# +# GUI_port: + +## @param health_port - integer - optional - default: 0 +## @env DD_HEALTH_PORT - integer - optional - default: 0 +## The Agent can expose its health check on a dedicated http port. +## This is useful for orchestrators that support http probes. +## Default is 0 (disabled), set a valid port number (eg. 5555) to enable. +# +# health_port: 0 + +## @param check_runners - integer - optional - default: 4 +## @env DD_CHECK_RUNNERS - integer - optional - default: 4 +## The `check_runners` refers to the number of concurrent check runners available for check instance execution. +## The scheduler attempts to spread the instances over the collection interval and will _at most_ be +## running the number of check runners instances concurrently. +## Setting the value to 1 would result in checks running sequentially. +## +## This is a sensitive setting, and we do NOT recommend changing the default number +## of check runners in the general case. The level of concurrency has effects on +## the Agent's: RSS memory, CPU load, resource contention overhead, etc. +# +# check_runners: 4 + +## @param enable_metadata_collection - boolean - optional - default: true +## @env DD_ENABLE_METADATA_COLLECTION - boolean - optional - default: true +## Metadata collection should always be enabled, except if you are running several +## agents/dsd instances per host. In that case, only one Agent should have it on. +## WARNING: disabling it on every Agent leads to display and billing issues. +# +# enable_metadata_collection: true + +## @param enable_gohai - boolean - optional - default: true +## @env DD_ENABLE_GOHAI - boolean - optional - default: true +## Enable the gohai collection of systems data. +# +# enable_gohai: true + +## @param server_timeout - integer - optional - default: 30 +## @env DD_SERVER_TIMEOUT - integer - optional - default: 30 +## IPC api server timeout in seconds. +# +# server_timeout: 30 + +## @param procfs_path - string - optional +## @env DD_PROCFS_PATH - string - optional +## Some environments may have the procfs file system mounted in a miscellaneous +## location. The procfs_path configuration parameter provides a mechanism to +## override the standard default location: '/proc' - this setting trickles down to +## integrations and affect their behavior if they rely on the psutil python package. +# +# procfs_path: + +## @param disable_py3_validation - boolean - optional - default: false +## @env DD_DISABLE_PY3_VALIDATION - boolean - optional - default: false +## Disable Python3 validation of python checks. +# +# disable_py3_validation: false +# +## @param python3_linter_timeout - integer - optional - default: 120 +## @env DD_PYTHON3_LINTER_TIMEOUT - integer - optional - default: 120 +## Timeout in seconds for validation of compatibility with python 3 when running python 2. +# +# python3_linter_timeout: 120 + +## @param memtrack_enabled - boolean - optional - default: true +## @env DD_MEMTRACK_ENABLED - boolean - optional - default: true +## Enables tracking of memory allocations made from the python runtime loader. +# +# memtrack_enabled: true + +## @param tracemalloc_debug - boolean - optional - default: false +## @env DD_TRACEMALLOC_DEBUG - boolean - optional - default: false +## Enables debugging with tracemalloc for python checks. +## Please note that this option is only available when python_version is set to "3". +## Additionally when this option becomes effective the number of check runners is +## overridden to 1. +# +# tracemalloc_debug: false + +## @param tracemalloc_include - string - optional +## @env DD_TRACEMALLOC_INCLUDE - string - optional +## Comma-separated list of Python checks to enable tracemalloc for when `tracemalloc_debug` is true. +## By default, all Python checks are enabled. +# +# tracemalloc_include: + +## @param tracemalloc_exclude - string - optional +## @env DD_TRACEMALLOC_EXCLUDE - string - optional +## Comma-separated list of Python checks to disable tracemalloc for when `tracemalloc_debug` is true. +## By default, all Python checks are enabled. This setting takes precedence over `tracemalloc_include`. +# +# tracemalloc_exclude: + +## @param windows_use_pythonpath - boolean - optional +## @env DD_WINDOWS_USE_PYTHONPATH - boolean - optional +## Whether to honour the value of the PYTHONPATH env var when set on Windows. +## Disabled by default, so we only load Python libraries bundled with the Agent. +# +# windows_use_pythonpath: false + +## @param secret_backend_command - string - optional +## @env DD_SECRET_BACKEND_COMMAND - string - optional +## `secret_backend_command` is the path to the script to execute to fetch secrets. +## The executable must have specific rights that differ on Windows and Linux. +## +## For more information see: https://github.com/DataDog/datadog-agent/blob/main/docs/agent/secrets.md +# +# secret_backend_command: + +## @param secret_backend_arguments - list of strings - optional +## @env DD_SECRET_BACKEND_ARGUMENTS - space separated list of strings - optional +## If secret_backend_command is set, specify here a list of arguments to give to the command at each run. +# +# secret_backend_arguments: +# - +# - + +## @param secret_backend_output_max_size - integer - optional - default: 1048576 +## @env DD_SECRET_BACKEND_OUTPUT_MAX_SIZE - integer - optional - default: 1048576 +## The size in bytes of the buffer used to store the command answer (apply to both stdout and stderr) +# +# secret_backend_output_max_size: 1048576 + +## @param secret_backend_timeout - integer - optional - default: 30 +## @env DD_SECRET_BACKEND_TIMEOUT - integer - optional - default: 30 +## The timeout to execute the command in second +# +# secret_backend_timeout: 30 + +## @param secret_backend_skip_checks - boolean - optional - default: false +## Disable fetching secrets for check configurations +# +# secret_backend_skip_checks: false + +## @param snmp_listener - custom object - optional +## Creates and schedules a listener to automatically discover your SNMP devices. +## Discovered devices can then be monitored with the SNMP integration by using +## the auto_conf.yaml file provided by default. +# +# snmp_listener: + + ## @param workers - integer - optional - default: 2 + ## The number of concurrent tasks used to discover SNMP devices. Increasing this value + ## discovers devices faster but at the cost of increased resource consumption. + # + # workers: 2 + + ## @param discovery_interval - integer - optional - default: 3600 + ## How often to discover new SNMP devices, in seconds. Decreasing this value + ## discovers devices faster (within the limit of the time taken to scan subnets) + ## but at the cost of increased resource consumption. + # + # discovery_interval: 3600 + + ## @param discovery_allowed_failures - integer - optional - default: 3 + ## The number of failed requests to a given SNMP device before removing it from the list of monitored + ## devices. + ## If a device shuts down, the Agent stops monitoring it after `discovery_interval * discovery_allowed_failures` seconds. + # + # discovery_allowed_failures: 3 + + ## @param loader - string - optional - default: python + ## Check loader to use. Available loaders: + ## - core: (recommended) Uses new corecheck SNMP integration + ## - python: Uses legacy python SNMP integration + # + # loader: core + + ## @param min_collection_interval - number - optional - default: 15 + ## This changes the collection interval for the check instances created + ## from discovered SNMP devices. + ## For more information, see: + ## https://docs.datadoghq.com/developers/write_agent_check/#collection-interval + # + # min_collection_interval: 15 + + ## @param namespace - string - optional - default: default + ## Namespace can be used to disambiguate devices with same IPs. + ## Changing namespace will cause devices being recreated in NDM app. + ## Only available using corecheck SNMP integration with `loader: core` config. + # + # namespace: default + + ## @param configs - list - required + ## The actual list of configurations used to discover SNMP devices in various subnets. + ## Example: + ## configs: + ## - network: 10.0.0.0/24 + ## version: 1 + ## community: public + ## - network: 10.0.1.0/28 + ## community: public + ## ignored_ip_addresses: + ## - 10.0.1.0 + ## - 10.0.1.1 + # + # configs: + ## @param network_address - string - required + ## The subnet in CIDR format to scan for SNMP devices. + ## All unignored IP addresses in the CIDR range are scanned. + ## For optimal discovery time, be sure to use the smallest network mask + ## possible as is appropriate for your network topology. + ## Ex: 10.0.1.0/24 + # + # - network_address: + + ## @param ignored_ip_addresses - list of strings - optional + ## A list of IP addresses to ignore when scanning the network. + # + # ignored_ip_addresses: + # - + # - + + ## @param port - integer - optional - default: 161 + ## The UDP port to use when connecting to SNMP devices. + # + # port: 161 + + ## @param snmp_version - integer - optional - default: + ## Set the version of the SNMP protocol. Available options are: `1`, `2` or `3`. + ## If unset, the Agent tries to guess the correct version based on other configuration + ## parameters, for example: if `user` is set, the Agent uses SNMP v3. + # + # snmp_version: + + ## @param timeout - integer - optional - default: 5 + ## The number of seconds before timing out. + # + # timeout: 5 + + ## @param retries - integer - optional - default: 3 + ## The number of retries before failure. + # + # retries: 3 + + ## @param community_string - string - optional + ## Required for SNMP v1 & v2. + ## Enclose the community string with single quote like below (to avoid special characters being interpreted). + ## Ex: 'public' + # + # community_string: '' + + ## @param user - string - optional + ## The username to connect to your SNMP devices. + ## SNMPv3 only. + # + # user: + + ## @param authKey - string - optional + ## The passphrase to use with your Authentication type. + ## SNMPv3 only. + # + # authKey: + + ## @param authProtocol - string - optional + ## The authentication protocol to use when connecting to your SNMP devices. + ## Available options are: MD5, SHA. + ## Defaults to MD5 when `authentication_key` is specified. + ## SNMPv3 only. + # + # authProtocol: + + ## @param privKey - string - optional + ## The passphrase to use with your privacy protocol. + ## SNMPv3 only. + # + # privKey: + + ## @param privProtocol - string - optional + ## The privacy protocol to use when connecting to your SNMP devices. + ## Available options are: DES, 3DES, AES, AES192, AES256, AES192C, AES256C. + ## Defaults to DES when `privacy_key` is specified. + ## SNMPv3 only. + # + # privProtocol: + + ## @param context_name - string - optional + ## The name of your context (optional SNMP v3-only parameter). + # + # context_name: + + ## @param ad_identifier - string - optional - default: snmp + ## A unique identifier to attach to devices from that subnetwork. + ## When configuring the SNMP integration in snmp.d/auto_conf.yaml, + ## specify the corresponding ad_identifier at the top of the file. + # + # ad_identifier: snmp + + ## @param loader - string - optional - default: python + ## Check loader to use. Available loaders: + ## - core: will use corecheck SNMP integration + ## - python: will use python SNMP integration + # + # loader: core + + ## @param min_collection_interval - number - optional - default: 15 + ## This changes the collection interval for the check instances created from + ## discovered SNMP devices. It applies to each specific config from `snmp_listener.configs` + ## and has precedence over `snmp_listener.min_collection_interval`. + ## For more information, see: + ## https://docs.datadoghq.com/developers/write_agent_check/#collection-interval + # + # min_collection_interval: 15 + + ## @param namespace - string - optional - default: default + ## Namespace can be used to disambiguate devices with same IPs. + ## Changing namespace will cause devices being recreated in NDM app. + ## Only available using corecheck SNMP integration with `loader: core` config. + # + # namespace: default + + +################################## +## Log collection Configuration ## +################################## + +## @param logs_enabled - boolean - optional - default: false +## @env DD_LOGS_ENABLED - boolean - optional - default: false +## Enable Datadog Agent log collection by setting logs_enabled to true. +# +# logs_enabled: false + +## @param logs_config - custom object - optional +## Enter specific configurations for your Log collection. +## Uncomment this parameter and the one below to enable them. +## See https://docs.datadoghq.com/agent/logs/ +# +# logs_config: + + ## @param container_collect_all - boolean - optional - default: false + ## @env DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL - boolean - optional - default: false + ## Enable container log collection for all the containers (see ac_exclude to filter out containers) + # + # container_collect_all: false + + ## @param logs_dd_url - string - optional + ## @env DD_LOGS_CONFIG_DD_URL - string - optional + ## Define the endpoint and port to hit when using a proxy for logs. The logs are forwarded in TCP + ## therefore the proxy must be able to handle TCP connections. + # + # logs_dd_url: : + + ## @param logs_no_ssl - boolean - optional - default: false + ## @env DD_LOGS_CONFIG_LOGS_NO_SSL - optional - default: false + ## Disable the SSL encryption. This parameter should only be used when logs are + ## forwarded locally to a proxy. It is highly recommended to then handle the SSL encryption + ## on the proxy side. + # + # logs_no_ssl: false + + ## @param processing_rules - list of custom objects - optional + ## @env DD_LOGS_CONFIG_PROCESSING_RULES - list of custom objects - optional + ## Global processing rules that are applied to all logs. The available rules are + ## "exclude_at_match", "include_at_match" and "mask_sequences". More information in Datadog documentation: + ## https://docs.datadoghq.com/agent/logs/advanced_log_collection/#global-processing-rules + # + # processing_rules: + # - type: + # name: + # pattern: + + ## @param use_http - boolean - optional - default: false + ## @env DD_LOGS_CONFIG_USE_HTTP - boolean - optional - default: false + ## By default, logs are sent through TCP, use this parameter + ## to send logs in HTTPS batches to port 443 + # + # use_http: true + + ## @param use_tcp - boolean - optional - default: false + ## By default, logs are sent through HTTP if possible, use this parameter + ## to send logs in TCP + # + # use_tcp: true + + ## @param use_compression - boolean - optional - default: false + ## @env DD_LOGS_CONFIG_USE_COMPRESSION - boolean - optional - default: false + ## This parameter is available when sending logs with HTTPS. If enabled, the Agent + ## compresses logs before sending them. + # + # use_compression: true + + ## @param compression_level - integer - optional - default: 6 + ## @env DD_LOGS_CONFIG_COMPRESSION_LEVEL - boolean - optional - default: false + ## The compression_level parameter accepts values from 0 (no compression) + ## to 9 (maximum compression but higher resource usage). + # + # compression_level: 6 + + ## @param batch_wait - integer - optional - default: 5 + ## @env DD_LOGS_CONFIG_BATCH_WAIT - integer - optional - default: 5 + ## The maximum time the Datadog Agent waits to fill each batch of logs before sending. + # + # batch_wait: 5 + + + +#################################### +## Trace Collection Configuration ## +#################################### + +## @param apm_config - custom object - optional +## Enter specific configurations for your trace collection. +## Uncomment this parameter and the one below to enable them. +## See https://docs.datadoghq.com/agent/apm/ +# +# apm_config: + + ## @param enabled - boolean - optional - default: true + ## @env DD_APM_CONFIG_ENABLED - boolean - optional - default: true + ## Set to true to enable the APM Agent. + # + # enabled: true + + ## @param env - string - optional - default: none + ## @env DD_APM_CONFIG_ENV - string - optional - default: none + ## The environment tag that Traces should be tagged with. + ## If not set the value will be inherited, in order, from the top level + ## "env" config option if set and then from the 'env:' tag if present in the + ## 'tags' top level config option. + # + # env: none + + ## @param receiver_port - integer - optional - default: 8126 + ## @env DD_APM_CONFIG_RECEIVER_PORT - integer - optional - default: 8126 + ## The port that the trace receiver should listen on. + # + # receiver_port: 8126 + + ## @param receiver_socket - string - optional + ## @env DD_APM_CONFIG_RECEIVER_SOCKET - string - optional + ## Accept traces through Unix Domain Sockets. + ## It is off by default. When set, it must point to a valid socket file. + # + # receiver_socket: + + ## @param apm_non_local_traffic - boolean - optional - default: false + ## @env DD_APM_CONFIG_APM_NON_LOCAL_TRAFFIC - boolean - optional - default: false + ## Set to true so the Trace Agent listens for non local traffic, + ## i.e if Traces are being sent to this Agent from another host/container + # + # apm_non_local_traffic: false + + ## @param apm_dd_url - string - optional + ## @env DD_APM_CONFIG_APM_DD_URL - string - optional + ## Define the endpoint and port to hit when using a proxy for APM. The traces are forwarded in TCP + ## therefore the proxy must be able to handle TCP connections. + # + # apm_dd_url: : + + ## @param extra_sample_rate - float - optional - default: 1.0 + ## @env DD_APM_CONFIG_EXTRA_SAMPLE_RATE - float - optional - default: 1.0 + ## Extra global sample rate to apply on all the traces + ## This sample rate is combined to the sample rate from the sampler logic, still promoting interesting traces. + ## From 1 (no extra rate) to 0 (don't sample at all) + # + # extra_sample_rate: 1.0 + + ## @param max_traces_per_second - integer - optional - default: 10 + ## @env DD_APM_CONFIG_MAX_TRACES_PER_SECOND - integer - optional - default: 10 + ## Maximum number of traces per second to sample. The limit is applied over an average over + ## a few minutes ; much bigger spikes are possible. Set to 0 to disable the limit. + # + # max_traces_per_second: 10 + + ## @param max_events_per_second - integer - optional - default: 200 + ## @env DD_APM_CONFIG_MAX_EVENTS_PER_SECOND - integer - optional - default: 200 + ## Maximum number of APM events per second to sample. + # + # max_events_per_second: 200 + + ## @param max_memory - integer - optional - default: 500000000 + ## @env DD_APM_CONFIG_MAX_MEMORY - integer - optional - default: 500000000 + ## This value is what the Agent aims to use in terms of memory. If surpassed, the API + ## rate limits incoming requests to aim and stay below this value. + ## Note: The Agent process is killed if it uses more than 150% of `max_memory`. + ## Set the `max_memory` parameter to `0` to disable the memory limitation. + # + # max_memory: 500000000 + + ## @param max_cpu_percent - integer - optional - default: 50 + ## @env DD_APM_CONFIG_MAX_CPU_PERCENT - integer - optional - default: 50 + ## The CPU percentage that the Agent aims to use. If surpassed, the API rate limits + ## incoming requests to aim and stay below this value. Examples: 50 = half a core, 200 = two cores. + ## Set `max_cpu_percent` to `0` to disable rate limiting based on CPU usage. + # + # max_cpu_percent: 50 + + ## @param obfuscation - object - optional + ## @env DD_APM_CONFIG_OBFUSCATION_* - optional + ## Defines obfuscation rules for sensitive data. Disabled by default. + ## See https://docs.datadoghq.com/tracing/setup_overview/configure_data_security/#agent-trace-obfuscation + # + # obfuscation: + # + + ## @param filter_tags - object - optional + ## Defines rules by which to filter traces based on tags. + ## * require - list of key or key/value strings - traces must have those tags in order to be sent to Datadog + ## * reject - list of key or key/value strings - traces with these tags are dropped by the Agent + ## Note: Rules take into account the intersection of tags defined. + # + # filter_tags: + # require: [] + # reject: [] + + ## @param replace_tags - list of objects - optional + ## @env DD_APM_CONFIG_REPLACE_TAGS - list of objects - optional + ## Defines a set of rules to replace or remove certain resources, tags containing + ## potentially sensitive information. + ## Each rules has to contain: + ## * name - string - The tag name to replace, for resources use "resource.name". + ## * pattern - string - The pattern to match the desired content to replace + ## * repl - string - what to inline if the pattern is matched + ## + ## See https://docs.datadoghq.com/tracing/setup_overview/configure_data_security/#replace-rules-for-tag-filtering + ## + # + # replace_tags: + # - name: "" + # pattern: "" + # repl: "" + + ## @param ignore_resources - list of strings - optional + ## @env DD_APM_CONFIG_IGNORE_RESOURCES - space separated list of strings - optional + ## An exclusion list of regular expressions can be provided to disable certain traces based on their resource name + ## all entries must be surrounded by double quotes and separated by commas. + # + # ignore_resources: ["(GET|POST) /healthcheck"] + + ## @param log_file - string - optional + ## @env DD_APM_CONFIG_LOG_FILE - string - optional + ## The full path to the file where APM-agent logs are written. + # + # log_file: + + ## @param log_throttling - boolean - default: true + ## @env DD_APM_CONFIG_LOG_THROTTLING - boolean - default: true + ## Limits the total number of warnings and errors to 10 for every 10 second interval. + # + # log_throttling: true + +#################################### +## AppSec Configuration ## +#################################### + +## @param appsec_config - custom object - optional +## Enter specific configurations for your AppSec collection. +## Uncomment the parameters `appsec_config` and `enabled` to enable AppSec. +# +# appsec_config: + + ## @param enabled - boolean - optional - default: true + ## Enable the AppSec proxy in the APM Agent. + # + # enabled: true + + ## @param appsec_dd_url - string - optional + ## Define the endpoint and port to hit when using a proxy for AppSec. Logs are forwarded by TCP; + ## therefore, the proxy must be able to handle TCP connections. + # + # appsec_dd_url: : + + ## @param max_payload_size - integer - optional - default: 5242880 (5MB) + ## Define the maximum HTTP payload size (the body) in bytes the AppSec proxy allows. + # + # max_payload_size: 5242880 + + + +###################################### +## Process Collection Configuration ## +###################################### + +## @param process_config - custom object - optional +## Enter specific configurations for your Process data collection. +## Uncomment this parameter and the one below to enable them. +## See https://docs.datadoghq.com/graphing/infrastructure/process/ +# +# process_config: + + ## @param enabled - string - optional - default: "false" + ## @env DD_PROCESS_CONFIG_ENABLED - string - optional - default: "false" + ## A string indicating the enabled state of the Process Agent: + ## * "false" : The Agent collects only containers information. + ## * "true" : The Agent collects containers and processes information. + ## * "disabled" : The Agent process collection is disabled. + # + # enabled: "true" + + ## @param expvar_port - string - optional - default: 6062 + ## @env DD_PROCESS_CONFIG_EXPVAR_PORT - string - optional - default: 6062 + ## Port for the debug endpoints for the process Agent. + # + # expvar_port: 6062 + + ## @param cmd_port - string - optional - default: 6162 + ## Port for configuring runtime settings for the process Agent. + # + # cmd_port: 6162 + + ## @param log_file - string - optional + ## @env DD_PROCESS_CONFIG_LOG_FILE - string - optional + ## The full path to the file where process Agent logs are written. + # + # log_file: + + ## @param intervals - custom object - optional - default: 10s for normal checks and 2s for others. + ## @env DD_PROCESS_CONFIG_INTERVALS_CONTAINER - integer - optional - default: 10 + ## @env DD_PROCESS_CONFIG_INTERVALS_CONTAINER_REALTIME - integer - optional - default: 2 + ## @env DD_PROCESS_CONFIG_INTERVALS_PROCESS - integer - optional - default: 10 + ## @env DD_PROCESS_CONFIG_INTERVALS_PROCESS_REALTIME - integer - optional - default: 2 + ## The interval, in seconds, at which the Agent runs each check. If you want consistent + ## behavior between real-time, set the `container_realtime` and `process_realtime` intervals to 10. + # + # intervals: + # container: 10 + # container_realtime: 2 + # process: 10 + # process_realtime: 2 + + ## @param process_discovery - custom object - optional + ## Specifies custom settings for the `process_discovery` object. + # process_discovery: + ## @param enabled - boolean - optional - default: false + ## Toggles the `process_discovery` check. If enabled, this check gathers information about possible running integrations. + ## This check is experimental. + # enabled: false + + ## @param interval - duration - optional - default: 4h - minimum: 10m + ## An interval in hours that specifies how often the process discovery check should run. + # interval: 4h + + + ## @param blacklist_patterns - list of strings - optional + ## @env DD_PROCESS_CONFIG_BLACKLIST_PATTERNS - space separated list of strings - optional + ## A list of regex patterns that exclude processes if matched. + # + # blacklist_patterns: + # - + + ## @param queue_size - integer - optional - default: 20 + ## @env DD_PROCESS_CONFIG_QUEUE_SIZE - integer - optional - default: 20 + ## How many check results to buffer in memory when POST fails. + # + # queue_size: 20 + + ## @param max_per_message - integer - optional - default: 100 + ## @env DD_PROCESS_CONFIG_MAX_PER_MESSAGE - integer - optional - default: 100 + ## The maximum number of processes or containers per message. + # + # max_per_message: 100 + + ## @param dd_agent_bin - string - optional + ## @env DD_PROCESS_CONFIG_DD_AGENT_BIN - string - optional + ## Overrides the path to the Agent bin used for getting the hostname. Defaults are: + ## * Windows: \embedded\\agent.exe + ## * Unix: /opt/datadog-agent/bin/agent/agent + # + # dd_agent_bin: + + ## @param dd_agent_env - string - optional - default: "" + ## @env DD_PROCESS_CONFIG_DD_AGENT_ENV - string - optional - default: "" + ## Overrides of the environment we pass to fetch the hostname. + # + # dd_agent_env: "" + + ## @param scrub_args - boolean - optional - default: true + ## @env DD_PROCESS_CONFIG_SCRUB_ARGS - boolean - optional - default: true + ## Hide sensitive data on the Live Processes page. + # + # scrub_args: true + + ## @param custom_sensitive_words - list of strings - optional + ## @env DD_PROCESS_CONFIG_CUSTOM_SENSITIVE_WORDS - space separated list of strings - optional + ## Define your own list of sensitive data to be merged with the default one. + ## Read more on Datadog documentation: + ## https://docs.datadoghq.com/graphing/infrastructure/process/#process-arguments-scrubbing + # + # custom_sensitive_words: + # - 'personal_key' + # - '*token' + # - 'sql*' + # - '*pass*d*' + +############################################# +## Security Agent Compliance Configuration ## +############################################# + +## @param compliance_config - custom object - optional +## Enter specific configuration for continuous compliance checks. +# compliance_config: + + ## @param enabled - boolean - optional - default: false + ## Set to true to enable Cloud Security Posture Management (CSPM). + # + # enabled: false + + ## @param dir - string - optional - default: /etc/datadog-agent/compliance.d + ## Directory path for compliance checks configuration containing enabled benchmarks + # + # dir: /etc/datadog-agent/compliance.d + + ## @param check_interval - duration - optional - default: 20m + ## Check interval (see https://golang.org/pkg/time/#ParseDuration for available options) + # check_interval: 20m + + ## @param check_max_events_per_run - integer + ## - optional - default: 100 + # check_max_events_per_run: 100 + + +############################# +## DogStatsD Configuration ## +############################# + +## @param use_dogstatsd - boolean - optional - default: true +## @env DD_USE_DOGSTATSD - boolean - optional - default: true +## Set this option to false to disable the Agent DogStatsD server. +# +# use_dogstatsd: true + +## @param dogstatsd_port - integer - optional - default: 8125 +## @env DD_DOGSTATSD_PORT - integer - optional - default: 8125 +## Override the Agent DogStatsD port. +## Note: Make sure your client is sending to the same UDP port. +# +# dogstatsd_port: 8125 + +## @param bind_host - string - optional - default: localhost +## @env DD_BIND_HOST - string - optional - default: localhost +## The host to listen on for Dogstatsd and traces. This is ignored by APM when +## `apm_config.apm_non_local_traffic` is enabled and ignored by DogStatsD when `dogstatsd_non_local_traffic` +## is enabled. The trace-agent uses this host to send metrics to. +## The `localhost` default value is invalid in IPv6 environments where dogstatsd listens on "::1". +## To solve this problem, ensure Dogstatsd is listening on IPv4 by setting this value to "127.0.0.1". +# +# bind_host: localhost + +## @param dogstatsd_socket - string - optional - default: "" +## @env DD_DOGSTATSD_SOCKET - string - optional - default: "" +## Listen for Dogstatsd metrics on a Unix Socket (*nix only). Set to a valid filesystem path to enable. +# +# dogstatsd_socket: "" + +## @param dogstatsd_origin_detection - boolean - optional - default: false +## @env DD_DOGSTATSD_ORIGIN_DETECTION - boolean - optional - default: false +## When using Unix Socket, DogStatsD can tag metrics with container metadata. +## If running DogStatsD in a container, host PID mode (e.g. with --pid=host) is required. +# +# dogstatsd_origin_detection: false + +## @param dogstatsd_buffer_size - integer - optional - default: 8192 +## @env DD_DOGSTATSD_BUFFER_SIZE - integer - optional - default: 8192 +## The buffer size use to receive statsd packets, in bytes. +# +# dogstatsd_buffer_size: 8192 + +## @param dogstatsd_non_local_traffic - boolean - optional - default: false +## @env DD_DOGSTATSD_NON_LOCAL_TRAFFIC - boolean - optional - default: false +## Set to true to make DogStatsD listen to non local UDP traffic. +# +# dogstatsd_non_local_traffic: false + +## @param dogstatsd_stats_enable - boolean - optional - default: false +## @env DD_DOGSTATSD_STATS_ENABLE - boolean - optional - default: false +## Publish DogStatsD's internal stats as Go expvars. +# +# dogstatsd_stats_enable: false + +## @param dogstatsd_queue_size - integer - optional - default: 1024 +## @env DD_DOGSTATSD_QUEUE_SIZE - integer - optional - default: 1024 +## Configure the internal queue size of the Dogstatsd server. +## Reducing the size of this queue will reduce the maximum memory usage of the +## Dogstatsd server but as a trade-off, it could increase the number of packet drops. +# +# dogstatsd_queue_size: 1024 + +## @param dogstatsd_stats_buffer - integer - optional - default: 10 +## @env DD_DOGSTATSD_STATS_BUFFER - integer - optional - default: 10 +## Set how many items should be in the DogStatsD's stats circular buffer. +# +# dogstatsd_stats_buffer: 10 + +## @param dogstatsd_stats_port - integer - optional - default: 5000 +## @env DD_DOGSTATSD_STATS_PORT - integer - optional - default: 5000 +## The port for the go_expvar server. +# +# dogstatsd_stats_port: 5000 + +## @param dogstatsd_so_rcvbuf - integer - optional - default: 0 +## @env DD_DOGSTATSD_SO_RCVBUF - integer - optional - default: 0 +## The number of bytes allocated to DogStatsD's socket receive buffer (POSIX system only). +## By default, the system sets this value. If you need to increase the size of this buffer +## but keep the OS default value the same, you can set DogStatsD's receive buffer size here. +## The maximum accepted value might change depending on the OS. +# +# dogstatsd_so_rcvbuf: 0 + +## @param dogstatsd_metrics_stats_enable - boolean - optional - default: false +## @env DD_DOGSTATSD_METRICS_STATS_ENABLE - boolean - optional - default: false +## Set this parameter to true to have DogStatsD collects basic statistics (count/last seen) +## about the metrics it processed. Use the Agent command "dogstatsd-stats" to visualize +## those statistics. +# +# dogstatsd_metrics_stats_enable: false + +## @param dogstatsd_tags - list of key:value elements - optional +## @env DD_DOGSTATSD_TAGS - list of key:value elements - optional +## Additional tags to append to all metrics, events and service checks received by +## this DogStatsD server. +# +# dogstatsd_tags: +# - : +# +## @param dogstatsd_mapper_profiles - list of custom object - optional +## @env DD_DOGSTATSD_MAPPER_PROFILES - list of custom object - optional +## The profiles will be used to convert parts of metrics names into tags. +## If a profile prefix is matched, other profiles won't be tried even if that profile matching rules doesn't match. +## The profiles and matching rules are processed in the order defined in this configuration. +## +## For each profile, following fields are available: +## name (required): profile name +## prefix (required): mapping only applies to metrics with the prefix. If set to `*`, it will match everything. +## mappings: mapping rules, see below. +## For each mapping, following fields are available: +## match (required): pattern for matching the incoming metric name e.g. `test.job.duration.*` +## match_type (optional): pattern type can be `wildcard` (default) or `regex` e.g. `test\.job\.(\w+)\.(.*)` +## name (required): the metric name the metric should be mapped to e.g. `test.job.duration` +## tags (optional): list of key:value pair of tag key and tag value +## The value can use $1, $2, etc, that will be replaced by the corresponding element capture by `match` pattern +## This alternative syntax can also be used: ${1}, ${2}, etc +# +# dogstatsd_mapper_profiles: +# - name: # e.g. "airflow", "consul", "some_database" +# prefix: # e.g. "airflow.", "consul.", "some_database." +# mappings: +# - match: # e.g. `test.job.duration.*` to match `test.job.duration.my_job_name` +# match_type: # e.g. `wildcard` or `regex` +# name: # e.g. `test.job.duration` +# tags: +# : # e.g. `job_name: "$1"`, $1 is replaced by value capture by * +# - match: 'test.worker.*.*.start_time' # to match `test.worker...start_time` +# name: 'test.worker.start_time' +# tags: +# worker_type: '$1' +# worker_name: '$2' +# - match: 'test\.task\.duration\.(\w+)\.(.*)' # no need to escape in yaml context using single quote +# match_type: regex +# name: 'test.task' +# tags: +# task_type: '$1' +# task_name: '$2' + +## @param dogstatsd_mapper_cache_size - integer - optional - default: 1000 +## @env DD_DOGSTATSD_MAPPER_CACHE_SIZE - integer - optional - default: 1000 +## Size of the cache (max number of mapping results) used by Dogstatsd mapping feature. +# +# dogstatsd_mapper_cache_size: 1000 + +## @param dogstatsd_entity_id_precedence - boolean - optional - default: false +## @env DD_DOGSTATSD_ENTITY_ID_PRECEDENCE - boolean - optional - default: false +## Disable enriching Dogstatsd metrics with tags from "origin detection" when Entity-ID is set. +# +# dogstatsd_entity_id_precedence: false + +## @param statsd_forward_host - string - optional - default: "" +## @env DD_STATSD_FORWARD_HOST - string - optional - default: "" +## Forward every packet received by the DogStatsD server to another statsd server. +## WARNING: Make sure that forwarded packets are regular statsd packets and not "DogStatsD" packets, +## as your other statsd server might not be able to handle them. +# +# statsd_forward_host: "" + +## @param statsd_forward_port - integer - optional - default: 0 +## @env DD_STATSD_FORWARD_PORT - integer - optional - default: 0 +## Port or the "statsd_forward_host" to forward StatsD packet to. +# +# statsd_forward_port: 0 + +## @param statsd_metric_namespace - string - optional - default: "" +## @env DD_STATSD_METRIC_NAMESPACE - string - optional - default: "" +## Set a namespace for all StatsD metrics coming from this host. +## Each metric received is prefixed with the namespace before it's sent to Datadog. +# +# statsd_metric_namespace: "" + + + +## @param metadata_providers - list of custom object - optional +## @env DD_METADATA_PROVIDERS - list of custom object - optional +## Metadata providers, add or remove from the list to enable or disable collection. +## Intervals are expressed in seconds. You can also set a provider's interval to 0 +## to disable it. +# +# metadata_providers: +# - name: k8s +# interval: 60 + + + +####################### +## JMX Configuration ## +####################### + +## @param jmx_custom_jars - list of strings - optional +## @env DD_JMX_CUSTOM_JARS - space separated list of strings - optional +## If you only run Autodiscovery tests, jmxfetch might fail to pick up custom_jar_paths +## set in the check templates. If that is the case, force custom jars here. +# +# jmx_custom_jars: +# - /jmx-jars/jboss-cli-client.jar + +## @param jmx_use_cgroup_memory_limit - boolean - optional - default: false +## @env DD_JMX_USE_CGROUP_MEMORY_LIMIT - boolean - optional - default: false +## When running in a memory cgroup, openjdk 8u131 and higher can automatically adjust +## its heap memory usage in accordance to the cgroup/container's memory limit. +## The Agent set a Xmx of 200MB if none is configured. +## Note: OpenJDK version < 8u131 or >= 10 as well as other JVMs might fail +## to start if this option is set. +# +# jmx_use_cgroup_memory_limit: false + +## @param jmx_use_container_support - boolean - optional - default: false +## @env DD_JMX_USE_CONTAINER_SUPPORT - boolean - optional - default: false +## When running in a container, openjdk 10 and higher can automatically detect +## container specific configuration instead of querying the operating system +## to adjust resources allotted to the JVM. +## Note: openjdk versions prior to 10 and other JVMs might fail to start if +## this option is set. +# +# jmx_use_container_support: false + +## @param jmx_log_file - string - optional +## Path of the log file where JMXFetch logs are written. +# +# jmx_log_file: + +## @param jmx_max_restarts - integer - optional - default: 3 +## @env DD_JMX_MAX_RESTARTS - integer - optional - default: 3 +## Number of JMX restarts allowed in the restart-interval before giving up. +# +# jmx_max_restarts: 3 + +## @param jmx_restart_interval - integer - optional - default: 5 +## @env DD_JMX_RESTART_INTERVAL - integer - optional - default: 5 +## Duration of the restart interval in seconds. +# +# jmx_restart_interval: 5 + +## @param jmx_check_period - integer - optional - default: 15000 +## @env DD_JMX_CHECK_PERIOD - integer - optional - default: 15000 +## Duration of the period for check collections in milliseconds. +# +# jmx_check_period: 15000 + +## @param jmx_thread_pool_size - integer - optional - default: 3 +## @env DD_JMX_THREAD_POOL_SIZE - integer - optional - default: 3 +## JMXFetch collects multiples instances concurrently. Defines the maximum level of concurrency: +## * Higher concurrency increases CPU utilization during metric collection. +## * Lower concurrency results in lower CPU usage but may increase the total collection time. +## A value of 1 processes instances serially. +# +# jmx_thread_pool_size: 3 + +## @param jmx_collection_timeout - integer - optional - default: 60 +## @env DD_JMX_COLLECTION_TIMEOUT - integer - optional - default: 60 +## Defines the maximum waiting period in seconds before timing up on metric collection. +# +# jmx_collection_timeout: 60 + +## @param jmx_reconnection_thread_pool_size - integer - optional - default: 3 +## @env DD_JMX_RECONNECTION_THREAD_POOL_SIZE - integer - optional - default: 3 +## JMXFetch reconnects to multiples instances concurrently. Defines the maximum level of concurrency: +## * Higher concurrency increases CPU utilization during reconnection. +## * Lower concurrency results in lower CPU usage but may increase the total reconnection time +## A value of 1 processes instance reconnections serially. +# +# jmx_reconnection_thread_pool_size: 3 + +## @param jmx_reconnection_timeout - integer - optional - default: 60 +## @env DD_JMX_RECONNECTION_TIMEOUT - integer - optional - default: 60 +## Determines the maximum waiting period in seconds before timing up on instance reconnection. +# +# jmx_reconnection_timeout: 60 + + + +########################### +## Logging Configuration ## +########################### + +## @param log_level - string - optional - default: info +## @env DD_LOG_LEVEL - string - optional - default: info +## Minimum log level of the Datadog Agent. +## Valid log levels are: trace, debug, info, warn, error, critical, and off. +## Note: When using the 'off' log level, quotes are mandatory. +# +# log_level: 'info' + +## @param log_file - string - optional +## @env DD_LOG_FILE - string - optional +## Path of the log file for the Datadog Agent. +## See https://docs.datadoghq.com/agent/guide/agent-log-files/ +# +# log_file: + +## @param log_format_json - boolean - optional - default: false +## @env DD_LOG_FORMAT_JSON - boolean - optional - default: false +## Set to 'true' to output Agent logs in JSON format. +# +# log_format_json: false + +## @param log_to_console - boolean - optional - default: true +## @env DD_LOG_TO_CONSOLE - boolean - optional - default: true +## Set to 'false' to disable Agent logging to stdout. +# +# log_to_console: true + +## @param disable_file_logging - boolean - optional - default: false +## @env DD_DISABLE_FILE_LOGGING - boolean - optional - default: false +## Set to 'true' to disable logging to the log file. +# +# disable_file_logging: false + +## @param log_file_max_size - custom - optional - default: 10MB +## @env DD_LOG_FILE_MAX_SIZE - custom - optional - default: 10MB +## Maximum size of one log file. Use either a size (e.g. 10MB) or +## provide value in bytes: 10485760 +# +# log_file_max_size: 10MB + +## @param log_file_max_rolls - integer - optional - default: 1 +## @env DD_LOG_FILE_MAX_ROLLS - integer - optional - default: 1 +## Maximum amount of "old" log files to keep. +## Set to 0 to not limit the number of files to create. +# +# log_file_max_rolls: 1 + +## @param log_to_syslog - boolean - optional - default: false +## @env DD_LOG_TO_SYSLOG - boolean - optional - default: false +## Set to 'true' to enable logging to syslog. +## Note: Even if this option is set to 'false', the service launcher of your environment +## may redirect the Agent process' stdout/stderr to syslog. In that case, if you wish +## to disable logging to syslog entirely, set 'log_to_console' to 'false' as well. +# +# log_to_syslog: false + +## @param syslog_uri - string - optional +## @env DD_SYSLOG_URI - string - optional +## Define a custom remote syslog uri if needed. If 'syslog_uri' is left undefined/empty, +## a local domain socket connection is attempted. +# +# syslog_uri: + +## @param syslog_rfc - boolean - optional - default: false +## @env DD_SYSLOG_RFC - boolean - optional - default: false +## Set to 'true' to output in an RFC 5424-compliant format for Agent logs. +# +# syslog_rfc: false + +## @param syslog_pem - string - optional +## @env DD_SYSLOG_PEM - string - optional +## If TLS enabled, you must specify a path to a PEM certificate here. +# +# syslog_pem: + +## @param syslog_key - string - optional +## @env DD_SYSLOG_KEY - string - optional +## If TLS enabled, you must specify a path to a private key here. +# +# syslog_key: + +## @param syslog_tls_verify - boolean - optional - default: true +## @env DD_SYSLOG_TLS_VERIFY - boolean - optional - default: true +## If TLS enabled, you may enforce TLS verification here. +# +# syslog_tls_verify: true + +## @param log_format_rfc3339 - boolean - optional - default false +## If enabled the Agent will log using the RFC3339 format for the log time. +# +# log_format_rfc3339: false + +## @param log_all_goroutines_when_unhealthy - boolean - optional - default false +## If enabled, when the health probe of an internal component fails, the stack traces +## of all the goroutines are logged. +# +# log_all_goroutines_when_unhealthy: false + + + +############################## +## Autoconfig Configuration ## +############################## + +## @param autoconf_template_dir - string - optional - default: /datadog/check_configs +## Directory containing configuration templates for Autoconfig. +# +# autoconf_template_dir: /datadog/check_configs + +## @param config_providers - List of custom object - optional +## @env DD_CONFIG_PROVIDERS - List of custom object - optional +## The providers the Agent should call to collect checks configurations. Available providers are: +## * kubelet - The kubelet provider handles templates embedded in pod annotations. +## * docker - The Docker provider handles templates embedded in container labels. +## * clusterchecks - The clustercheck provider retrieves cluster-level check configurations from the cluster-agent. +## * kube_services - The kube_services provider watches Kubernetes services for cluster-checks +## +## See https://docs.datadoghq.com/guides/autodiscovery/ to learn more +# +# config_providers: +# - name: kubelet +# polling: true +# - name: docker +# polling: true +# - name: clusterchecks +# grace_time_seconds: 60 +# - name: etcd +# polling: true +# template_dir: /datadog/check_configs +# template_url: http://127.0.0.1 +# username: +# password: +# - name: consul +# polling: true +# template_dir: datadog/check_configs +# template_url: http://127.0.0.1 +# ca_file: +# ca_path: +# cert_file: +# key_file: +# username: +# password: +# token: +# - name: zookeeper +# polling: true +# template_dir: /datadog/check_configs +# template_url: 127.0.0.1 +# username: +# password: + +## @param extra_config_providers - list of strings - optional +## @env DD_EXTRA_CONFIG_PROVIDERS - space separated list of strings - optional +## Add additional config providers by name using their default settings, and pooling enabled. +## This list is available as an environment variable binding. +# +# extra_config_providers: +# - clusterchecks + +## @param autoconfig_exclude_features - list of comma separated strings - optional +## Exclude features automatically detected and enabled by environment autodiscovery. +## Supported syntax is a list of `(:)`. Currently only the `name` attribute is supported. +## When no attribute is present, it defaults to `name:` attribute. +# +# autoconfig_exclude_features: +# - cloudfoundry +# - containerd +# - cri +# - docker +# - ecsfargate +# - eksfargate +# - kubernetes +# - orchestratorexplorer + +## @param autoconfig_include_features - list of comma separated strings - optional +## Force activation of features (as if they were discovered by environment autodiscovery). +# +# autoconfig_include_features: +# - cloudfoundry +# - containerd +# - cri +# - docker +# - ecsfargate +# - eksfargate +# - kubernetes +# - orchestratorexplorer + + + +########################################### +## Container Autodiscovery Configuration ## +########################################### + +## @param container_cgroup_root - string - optional - default: /host/sys/fs/cgroup/ +## @env DD_CONTAINER_CGROUP_ROOT - string - optional - default: /host/sys/fs/cgroup/ +## Change the root directory to look at to get cgroup statistics. +## Default if environment variable "DOCKER_DD_AGENT" is set to "/host/sys/fs/cgroup" +## and "/sys/fs/cgroup" if not. +# +# container_cgroup_root: /host/sys/fs/cgroup/ + +## @param container_proc_root - string - optional - default: /host/proc +## @env DD_CONTAINER_PROC_ROOT - string - optional - default: /host/proc +## Change the root directory to look at to get proc statistics. +## Default if environment variable "DOCKER_DD_AGENT" is set "/host/proc" and "/proc" if not. +# +# container_proc_root: /host/proc + +## @param listeners - list of key:value elements - optional +## @env DD_LISTENERS - list of key:value elements - optional +## Choose "auto" if you want to let the Agent find any relevant listener on your host +## At the moment, the only auto listener supported is Docker +## If you have already set Docker anywhere in the listeners, the auto listener is ignored +# +# listeners: +# - name: auto +# - name: docker + +## @param extra_listeners - list of strings - optional +## @env DD_EXTRA_LISTENERS - space separated list of strings - optional +## You can also add additional listeners by name using their default settings. +## This list is available as an environment variable binding. +# +# extra_listeners: +# - kubelet + +## @param ac_exclude - list of comma separated strings - optional +## @env DD_AC_EXCLUDE - list of space separated strings - optional +## Exclude containers from metrics and AD based on their name or image. +## If a container matches an exclude rule, it won't be included unless it first matches an include rule. +## An excluded container won't get any individual container metric reported for it. +## See: https://docs.datadoghq.com/agent/guide/autodiscovery-management/ +# +# ac_exclude: [] + +## @param ac_include - list of comma separated strings - optional +## @env DD_AC_INCLUDE - list of space separated strings - optional +## Include containers from metrics and AD based on their name or image: +## See: https://docs.datadoghq.com/agent/guide/autodiscovery-management/ +# +# ac_include: [] + +## @param exclude_pause_container - boolean - optional - default: true +## @env DD_EXCLUDE_PAUSE_CONTAINER - boolean - optional - default: true +## Exclude default pause containers from orchestrators. +## By default the Agent doesn't monitor kubernetes/openshift pause container. +## They are still counted in the container count (just like excluded containers). +# +# exclude_pause_container: true + +## @param docker_query_timeout - integer - optional - default: 5 +## @env DD_DOCKER_QUERY_TIMEOUT - integer - optional - default: 5 +## Set the default timeout value when connecting to the Docker daemon. +# +# docker_query_timeout: 5 + +## @param ad_config_poll_interval - integer - optional - default: 10 +## @env DD_AD_CONFIG_POLL_INTERVAL - integer - optional - default: 10 +## The default interval in second to check for new autodiscovery configurations +## on all registered configuration providers. +# +# ad_config_poll_interval: 10 + +## @param cloud_foundry_garden - custom object - optional +## Settings for Cloudfoundry application container autodiscovery. +# +# cloud_foundry_garden: + + ## @param listen_network - string - optional - default: unix + ## The network on which the garden API is listening. Possible values are `unix` or `tcp` + # + # listen_network: unix + + ## @param listen_address - string - optional - default: /var/vcap/data/garden/garden.sock + ## The address on which the garden API is listening. + # + # listen_address: /var/vcap/data/garden/garden.sock + + + +######################### +## Container detection ## +######################### + +## @param container_cgroup_prefix - string - optional - default: /docker/ +## On hosts with mixed workloads, non-containernized processes can +## mistakenly be detected as containerized. Use this parameter to +## tune the detection logic to your system and avoid false-positives. +# +# container_cgroup_prefix: "/docker/" + +########################### +## Docker tag extraction ## +########################### + +## @param docker_labels_as_tags - map - optional +## The Agent can extract container label values and set them as metric tags values associated to a . +## If you prefix your tag name with `+`, it will only be added to high cardinality metrics (Docker check). +# +# docker_labels_as_tags: +# : +# : + + +## @param docker_env_as_tags - map - optional +## The Agent can extract environment variables values and set them as metric tags values associated to a . +## If you prefix your tag name with `+`, it will only be added to high cardinality metrics (Docker check). +# +# docker_env_as_tags: +# : + + + +############################### +## Kubernetes tag extraction ## +############################### + +## @param kubernetes_pod_labels_as_tags - map - optional +## The Agent can extract pod labels values and set them as metric tags values associated to a . +## If you prefix your tag name with +, it will only be added to high cardinality metrics. +# +# kubernetes_pod_labels_as_tags: +# : +# : + + +## @param kubernetes_pod_annotations_as_tags - map - optional +## The Agent can extract annotations values and set them as metric tags values associated to a . +## If you prefix your tag name with +, it will only be added to high cardinality metrics. +# +# kubernetes_pod_annotations_as_tags: +# : +# : + + +## @param kubernetes_namespace_labels_as_tags - map - optional +## The Agent can extract namespace label values and set them as metric tags values associated to a . +## If you prefix your tag name with +, it will only be added to high cardinality metrics. +# +# kubernetes_namespace_labels_as_tags: +# : +# : + + +## @param container_env_as_tags - map - optional +## @env DD_CONTAINER_ENV_AS_TAGS - map - optional +## The Agent can extract environment variable values and set them as metric tags values associated to a . +## Requires the container runtime socket to be reachable. (Supported container runtimes: Containerd, Docker) +# +# container_env_as_tags: +# : + + + +################################### +## ECS integration Configuration ## +################################### + +## @param ecs_agent_container_name - string - optional - default: ecs-agent +## The ECS Agent container should be autodetected when running with the +## default (ecs-agent) name. If not, change the container name here: +# +# ecs_agent_container_name: ecs-agent + +## @param ecs_agent_url - string - optional - default: http://localhost:51678 +## The ECS Agent container should be autodetected when running with the +## default (ecs-agent) name. If not, change the container name the +## Agent should look for with ecs_agent_container_name, or force a fixed url here: +# +# ecs_agent_url: http://localhost:51678 + +## @param ecs_collect_resource_tags_ec2 - boolean - optional - default: false +## The Agent can collect resource tags from the metadata API exposed by the +## ECS Agent for tasks scheduled with the EC2 launch type. +# +# ecs_collect_resource_tags_ec2: false + +## @param ecs_resource_tags_replace_colon - boolean - optional - default: false +## The Agent replaces colon `:` characters in the ECS resource tag keys by underscores `_`. +# +# ecs_resource_tags_replace_colon: false + +## @param ecs_metadata_timeout - integer - optional - default: 500 +## Timeout in milliseconds on calls to the AWS ECS metadata endpoints. +# +# ecs_metadata_timeout: 500 + + + +################################### +## CRI integration Configuration ## +################################### + +## @param cri_socket_path - string - optional - default: "" +## To activate the CRI check, indicate the path of the CRI socket you're using +## and mount it in the container if needed. +## If left empty, the CRI check is disabled. +## see: https://docs.datadoghq.com/integrations/cri/ +# +# cri_socket_path: "" + +## @param cri_connection_timeout - integer - optional - default: 5 +## Configure the initial connection timeout in seconds. +# +# cri_connection_timeout: 5 + +## @param cri_query_timeout - integer - optional - default: 5 +## Configure the timeout in seconds for querying the CRI. +# +# cri_query_timeout: 5 + + + +########################################## +## Containerd integration Configuration ## +########################################## + +## @param cri_socket_path - string - optional - default: /var/run/containerd/containerd.sock +## To activate the Containerd check, indicate the path of the Containerd socket you're using +## and mount it in the container if needed. +## see: https://docs.datadoghq.com/integrations/containerd/ +# +# cri_socket_path: /var/run/containerd/containerd.sock + +## @param cri_query_timeout - integer - optional - default: 5 +## Configure the timeout in seconds for querying the Containerd API. +# +# cri_query_timeout: 5 + +## @param containerd_namespace - string - optional - default: k8s.io +## Activating the Containerd check also activates the CRI check, as it contains an additional subset of useful metrics. +## Specify here the namespace that Containerd is using on your system. As the Containerd check +## only supports Kubernetes, the default value is `k8s.io` +## https://github.com/containerd/cri/blob/release/1.2/pkg/constants/constants.go#L22-L23 +# +# containerd_namespace: k8s.io + + + +################################################### +## Kubernetes kubelet connectivity Configuration ## +################################################### + +## @param kubernetes_kubelet_host - string - optional +## The kubelet host should be autodetected when running inside a pod. +## If you run into connectivity issues, set the host here according to your cluster setup. +# +# kubernetes_kubelet_host: + +## @param kubernetes_http_kubelet_port - integer - optional - default: 10255 +## The kubelet http port should be autodetected when running inside a pod. +## If you run into connectivity issues, set the http port here according to your cluster setup. +# +# kubernetes_http_kubelet_port: 10255 + +## @param kubernetes_https_kubelet_port - integer - optional - default: 10250 +## The kubelet https port should be autodetected when running inside a pod. +## If you run into connectivity issues, set the https port here according to your cluster setup. +# +# kubernetes_https_kubelet_port: 10250 + +## @param kubelet_tls_verify - boolean - optional - default: true +## Set to false if you don't want the Agent to verify the kubelet's certificate when using HTTPS. +# +# kubelet_tls_verify: true + +## @param kubelet_client_ca - string - optional - default: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt +## Kublet client CA file path. +# +# kubelet_client_ca: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt + +## @param kubelet_auth_token_path - string - optional +## If authentication is needed, the Agent uses the pod's service account's +## credentials. If you want to use a different account, or are running the Agent +## on the host, set a custom token file path here. +# +# kubelet_auth_token_path: + +## @param kubelet_client_crt - string - optional +## Set a custom Client CRT file path. +# +# kubelet_client_crt: + +## @param kubelet_client_key - string - optional +## Set a custom Client key file path. +# +# kubelet_client_key: + +## @param kubelet_wait_on_missing_container - integer - optional - default: 0 +## On some kubelet versions, containers can take up to a second to +## register in the podlist. This option allows to wait for up to a given +## number of seconds (in 250ms chunks) when a container does not exist in the podlist. +# +# kubelet_wait_on_missing_container: 0 + +## @param kubelet_cache_pods_duration - integer - optional - default: 5 +## Polling frequency in seconds of the Agent to the kubelet "/pods" endpoint. +# +# kubelet_cache_pods_duration: 5 + +## @param kubernetes_pod_expiration_duration - integer - optional - default: 900 +## Set the time in second after which the Agent ignores the pods that have exited. +## Set the duration to 0 to disable this filtering. +# +# kubernetes_pod_expiration_duration: 900 + +## @param kubelet_listener_polling_interval - integer - optional - default: 5 +## Polling frequency in seconds at which autodiscovery will query the pod watcher to detect new pods/containers. +## Note that kubelet_cache_pods_duration needs to be lower than this setting, or autodiscovery will only poll more frequently the same cached data (kubelet_cache_pods_duration controls the cache refresh frequency). +# +# kubelet_listener_polling_interval: 5 + + + +#################################################### +## Kubernetes apiserver integration Configuration ## +#################################################### + +## @param kubernetes_kubeconfig_path - string - optional - default: "" +## When running in a pod, the Agent automatically uses the pod's service account +## to authenticate with the API server. +## Provide the path to a custom KubeConfig file if you wish to install the Agent out of a pod +## or customize connection parameters. +## See https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ +# +# kubernetes_kubeconfig_path: "" + +## @param kubernetes_apiserver_ca_path - string - optional - default: "" +## When running in a pod, the Agent automatically uses the pod's service account CA. +## Use this option to keep using the InCluster config but overriding the default CA Path. +## This parameter has no effect if `kubernetes_kubeconfig_path` is set. +# +# kubernetes_apiserver_ca_path: "" + +## @param kubernetes_apiserver_tls_verify - boolean - optional - default: true +## When running in a pod, the Agent automatically uses the pod's service account CA. +## Use this option to keep using the InCluster config but deactivating TLS verification (in case APIServer CA is not ServiceAccount CA) +## This parameter has no effect if `kubernetes_kubeconfig_path` is set. +# +# kubernetes_apiserver_tls_verify: true + +## @param kubernetes_apiserver_use_protobuf - boolean - optional - default: false +## By default, communication with the apiserver is in json format. Setting the following +## option to true allows communication in the binary protobuf format. +# +# kubernetes_apiserver_use_protobuf: false + +## @param kubernetes_collect_metadata_tags - boolean - optional - default: true +## Set this to false to disable tag collection for the Agent. +## Note: In order to collect Kubernetes service names, the Agent needs certain rights. +## See https://github.com/DataDog/datadog-agent/blob/main/Dockerfiles/agent/README.md#kubernetes +# +# kubernetes_collect_metadata_tags: true + +## @param kubernetes_metadata_tag_update_freq - integer - optional - default: 60 +## Set how often in secons the Agent refreshes the internal mapping of services to ContainerIDs. +# +# kubernetes_metadata_tag_update_freq: 60 + +## @param kubernetes_apiserver_client_timeout - integer - optional - default: 10 +## Set the timeout for the Agent when connecting to the Kubernetes API server. +# +# kubernetes_apiserver_client_timeout: 10 + +## @param collect_kubernetes_events - boolean - optional - default: false +## Set `collect_kubernetes_events` to true to enable log collection. +## Note: leader election must be enabled must be enabled bellow to to collect events. +## Only the leader Agent collects events. +## See https://github.com/DataDog/datadog-agent/blob/main/Dockerfiles/agent/README.md#event-collection +# +# collect_kubernetes_events: false + +## @param kubernetes_event_collection_timeout - integer - optional - default: 100 +## Set the timeout between two successful event collections in milliseconds. +# +# kubernetes_event_collection_timeout: 100 + +## @param leader_election - boolean - optional - default: false +## Set the parameter to true to enable leader election on this node. +## See https://github.com/DataDog/datadog-agent/blob/main/Dockerfiles/agent/README.md#leader-election +# +# leader_election: false + +## @param leader_lease_duration - integer - optional - default: 60 +## Set the leader election lease in seconds. +# +# leader_lease_duration: 60 + +## @param kubernetes_node_labels_as_tags - map - optional +## Configure node labels that should be collected and their name as host tags. +## Note: Some of these labels are redundant with metadata collected by cloud provider crawlers (AWS, GCE, Azure) +# +# kubernetes_node_labels_as_tags: +# kubernetes.io/hostname: nodename +# beta.kubernetes.io/os: os + +## @param cluster_name - string - optional +## Set a custom kubernetes cluster identifier to avoid host alias collisions. +## The cluster name can be up to 40 characters with the following restrictions: +## * Lowercase letters, numbers, and hyphens only. +## * Must start with a letter. +## * Must end with a number or a letter. +## +## These are the same rules as the ones enforced by GKE: +## https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters#Cluster.FIELDS.name +# +# cluster_name: + +## @param disable_cluster_name_tag_key - boolean - optional - default: false +## Disable using the 'cluster_name' tag key to submit orchestrator cluster name tag. +## The Agent will continue sending the cluster name tag with 'kube|ecs_cluster_name' key +## regardless of the value of this parameter. +# +# disable_cluster_name_tag_key: false + + + +################################### +## Network Devices Configuration ## +################################### + +## @param snmp_traps_enabled - boolean - optional - default: false +## Set to true to enable collection of traps. +# +# snmp_traps_enabled: false + +## @param snmp_traps_config - custom object - optional +## This section configures SNMP traps collection. Traps are forwarded as logs to Datadog. +## NOTE: This feature is currently **EXPERIMENTAL**. Both behavior and configuration options may +## change in the future. Only SNMPv2 is supported. +# +# snmp_traps_config: + + ## @param port - integer - optional - default: 162 + ## The UDP port to use when listening for incoming trap packets. + # + # port: 162 + + ## @param community_strings - list of strings - required + ## A list of known SNMPv2 community strings that devices can use to send traps to the Agent. + ## Traps with an unknown community string are ignored. + ## Enclose the community string with single quote like below (to avoid special characters being interpreted). + ## Must be non-empty. + # + # community_strings: + # - '' + # - '' + + ## @param bind_host - string - optional + ## The hostname to listen on for incoming trap packets. + ## Defaults to the global `bind_host` config option value. + # + # bind_host: + + ## stop_timeout - float - optional - default: 5.0 + ## The maximum number of seconds to wait for the trap server to stop when the Agent shuts down. + # + # stop_timeout: 5.0 + diff --git a/code/datatest (1).yaml b/code/datatest (1).yaml new file mode 100644 index 000000000..b23702158 --- /dev/null +++ b/code/datatest (1).yaml @@ -0,0 +1,7 @@ +init_config: + + + +instances: + + - min_collection_interval: 45 diff --git a/code/datatest.py b/code/datatest.py new file mode 100644 index 000000000..ee7f01434 --- /dev/null +++ b/code/datatest.py @@ -0,0 +1,27 @@ +# the following try/except block will make the custom check compatible with any Agent version +import random +try: + + # first, try to import the base class from new versions of the Agent... + + from datadog_checks.base import AgentCheck + +except ImportError: + + # ...if the above failed, the check is running in Agent version < 6.6.0 + + from checks import AgentCheck + + + +# content of the special variable __version__ will be shown in the Agent status page + +__version__ = "1.0.0" + + + +class HelloCheck(AgentCheck): + + def check(self, instance): + + self.gauge('my_metric', random.randint(1,1000), tags=['environment:ubuntudev'] + self.instance.get('tags', [])) diff --git a/code/datatest.yaml b/code/datatest.yaml new file mode 100644 index 000000000..b23702158 --- /dev/null +++ b/code/datatest.yaml @@ -0,0 +1,7 @@ +init_config: + + + +instances: + + - min_collection_interval: 45 diff --git a/code/example.py b/code/example.py new file mode 100644 index 000000000..d502e95eb --- /dev/null +++ b/code/example.py @@ -0,0 +1,84 @@ +from datadog import initialize, api +import datadog_api_client + + + +options = { + + 'api_key': '', + + 'app_key': '' + +} + + + +initialize(**options) + + + +title = 'Average Memory Free Shell' + +widgets = [{ + + 'definition': { + + 'type': 'timeseries', + + 'requests': [ + + {'q': 'avg:system.mem.free{*}'} + + ], + + 'title': 'Average Memory Free' + + } + +}] + +layout_type = 'ordered' + +description = 'A dashboard with memory info.' + +is_read_only = True + +notify_list = ['user@domain.com'] + +template_variables = [{ + + 'name': 'host1', + + 'prefix': 'host', + + 'default': 'my-host' + +}] + + + +saved_views = [{ + + 'name': 'Saved views for hostname 2', + + 'template_variables': [{'name': 'host', 'value': ''}]} + +] + + + +api.Dashboard.create(title=title, + + widgets=widgets, + + layout_type=layout_type, + + description=description, + + is_read_only=is_read_only, + + notify_list=notify_list, + + template_variables=template_variables, + + template_variable_presets=saved_view) diff --git a/code/flaskapp.py b/code/flaskapp.py new file mode 100644 index 000000000..931df5cb2 --- /dev/null +++ b/code/flaskapp.py @@ -0,0 +1,55 @@ +from flask import Flask + +import logging + +import sys + + + +# Have flask use stdout as the logger + +main_logger = logging.getLogger() + +main_logger.setLevel(logging.DEBUG) + +c = logging.StreamHandler(sys.stdout) + +formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + +c.setFormatter(formatter) + +main_logger.addHandler(c) + + + +app = Flask(__name__) + + + +@app.route('/') + +def api_entry(): + + return 'Entrypoint to the Application' + + + +@app.route('/api/apm') + +def apm_endpoint(): + + return 'Getting APM Started' + + + +@app.route('/api/trace') + +def trace_endpoint(): + + return 'Posting Traces' + + + +if __name__ == '__main__': + + app.run(host='0.0.0.0', port='5050') diff --git a/images/1.PNG b/images/1.PNG new file mode 100644 index 000000000..c22ad6089 Binary files /dev/null and b/images/1.PNG differ diff --git a/images/10.png b/images/10.png new file mode 100644 index 000000000..5bef3be98 Binary files /dev/null and b/images/10.png differ diff --git a/images/11.PNG b/images/11.PNG new file mode 100644 index 000000000..304d8f8fe Binary files /dev/null and b/images/11.PNG differ diff --git a/images/12.PNG b/images/12.PNG new file mode 100644 index 000000000..ded94d650 Binary files /dev/null and b/images/12.PNG differ diff --git a/images/13.PNG b/images/13.PNG new file mode 100644 index 000000000..8b15e49b6 Binary files /dev/null and b/images/13.PNG differ diff --git a/images/14.PNG b/images/14.PNG new file mode 100644 index 000000000..f9b6ab09b Binary files /dev/null and b/images/14.PNG differ diff --git a/images/15.PNG b/images/15.PNG new file mode 100644 index 000000000..f5cfded20 Binary files /dev/null and b/images/15.PNG differ diff --git a/images/16.png b/images/16.png new file mode 100644 index 000000000..a390e9e83 Binary files /dev/null and b/images/16.png differ diff --git a/images/17.PNG b/images/17.PNG new file mode 100644 index 000000000..cfd90a7f7 Binary files /dev/null and b/images/17.PNG differ diff --git a/images/18.PNG b/images/18.PNG new file mode 100644 index 000000000..fedb326dc Binary files /dev/null and b/images/18.PNG differ diff --git a/images/19.PNG b/images/19.PNG new file mode 100644 index 000000000..9fd4c0865 Binary files /dev/null and b/images/19.PNG differ diff --git a/images/2.PNG b/images/2.PNG new file mode 100644 index 000000000..6a2e3715e Binary files /dev/null and b/images/2.PNG differ diff --git a/images/20.PNG b/images/20.PNG new file mode 100644 index 000000000..33751db8e Binary files /dev/null and b/images/20.PNG differ diff --git a/images/21.PNG b/images/21.PNG new file mode 100644 index 000000000..535cfcd5b Binary files /dev/null and b/images/21.PNG differ diff --git a/images/22.PNG b/images/22.PNG new file mode 100644 index 000000000..79a14f741 Binary files /dev/null and b/images/22.PNG differ diff --git a/images/23.PNG b/images/23.PNG new file mode 100644 index 000000000..86ba41eab Binary files /dev/null and b/images/23.PNG differ diff --git a/images/24.PNG b/images/24.PNG new file mode 100644 index 000000000..019d3ebb3 Binary files /dev/null and b/images/24.PNG differ diff --git a/images/25.PNG b/images/25.PNG new file mode 100644 index 000000000..106d5bb25 Binary files /dev/null and b/images/25.PNG differ diff --git a/images/26.PNG b/images/26.PNG new file mode 100644 index 000000000..bae08652a Binary files /dev/null and b/images/26.PNG differ diff --git a/images/27.PNG b/images/27.PNG new file mode 100644 index 000000000..15836b6f8 Binary files /dev/null and b/images/27.PNG differ diff --git a/images/28.PNG b/images/28.PNG new file mode 100644 index 000000000..a31b94006 Binary files /dev/null and b/images/28.PNG differ diff --git a/images/29.PNG b/images/29.PNG new file mode 100644 index 000000000..8fa53cf8f Binary files /dev/null and b/images/29.PNG differ diff --git a/images/3.PNG b/images/3.PNG new file mode 100644 index 000000000..744c0149a Binary files /dev/null and b/images/3.PNG differ diff --git a/images/30.PNG b/images/30.PNG new file mode 100644 index 000000000..b9c1c947d Binary files /dev/null and b/images/30.PNG differ diff --git a/images/31.PNG b/images/31.PNG new file mode 100644 index 000000000..0b5468f2f Binary files /dev/null and b/images/31.PNG differ diff --git a/images/32.PNG b/images/32.PNG new file mode 100644 index 000000000..34f49ae2b Binary files /dev/null and b/images/32.PNG differ diff --git a/images/33.PNG b/images/33.PNG new file mode 100644 index 000000000..1a396212b Binary files /dev/null and b/images/33.PNG differ diff --git a/images/34.PNG b/images/34.PNG new file mode 100644 index 000000000..63c4445b0 Binary files /dev/null and b/images/34.PNG differ diff --git a/images/35.png b/images/35.png new file mode 100644 index 000000000..8e1f74bcb Binary files /dev/null and b/images/35.png differ diff --git a/images/36.png b/images/36.png new file mode 100644 index 000000000..6908d3284 Binary files /dev/null and b/images/36.png differ diff --git a/images/37.png b/images/37.png new file mode 100644 index 000000000..1119e377a Binary files /dev/null and b/images/37.png differ diff --git a/images/38.png b/images/38.png new file mode 100644 index 000000000..282d20b52 Binary files /dev/null and b/images/38.png differ diff --git a/images/39.png b/images/39.png new file mode 100644 index 000000000..46ce28813 Binary files /dev/null and b/images/39.png differ diff --git a/images/4.PNG b/images/4.PNG new file mode 100644 index 000000000..357297f9a Binary files /dev/null and b/images/4.PNG differ diff --git a/images/40.png b/images/40.png new file mode 100644 index 000000000..627b4ec89 Binary files /dev/null and b/images/40.png differ diff --git a/images/41.png b/images/41.png new file mode 100644 index 000000000..ee8f0b91c Binary files /dev/null and b/images/41.png differ diff --git a/images/42.png b/images/42.png new file mode 100644 index 000000000..10b6da00e Binary files /dev/null and b/images/42.png differ diff --git a/images/43.png b/images/43.png new file mode 100644 index 000000000..28d0f2fdb Binary files /dev/null and b/images/43.png differ diff --git a/images/44.png b/images/44.png new file mode 100644 index 000000000..38ed01701 Binary files /dev/null and b/images/44.png differ diff --git a/images/45.png b/images/45.png new file mode 100644 index 000000000..be23d2600 Binary files /dev/null and b/images/45.png differ diff --git a/images/46.png b/images/46.png new file mode 100644 index 000000000..14e485a63 Binary files /dev/null and b/images/46.png differ diff --git a/images/47.png b/images/47.png new file mode 100644 index 000000000..ec411df89 Binary files /dev/null and b/images/47.png differ diff --git a/images/48.png b/images/48.png new file mode 100644 index 000000000..928b145f9 Binary files /dev/null and b/images/48.png differ diff --git a/images/49.png b/images/49.png new file mode 100644 index 000000000..8238107e4 Binary files /dev/null and b/images/49.png differ diff --git a/images/5.png b/images/5.png new file mode 100644 index 000000000..7b2470473 Binary files /dev/null and b/images/5.png differ diff --git a/images/50.png b/images/50.png new file mode 100644 index 000000000..d8d8fa543 Binary files /dev/null and b/images/50.png differ diff --git a/images/51.png b/images/51.png new file mode 100644 index 000000000..9eccffcc5 Binary files /dev/null and b/images/51.png differ diff --git a/images/52.png b/images/52.png new file mode 100644 index 000000000..d22ee9e08 Binary files /dev/null and b/images/52.png differ diff --git a/images/53.png b/images/53.png new file mode 100644 index 000000000..6e0d25001 Binary files /dev/null and b/images/53.png differ diff --git a/images/54.png b/images/54.png new file mode 100644 index 000000000..67b8e1261 Binary files /dev/null and b/images/54.png differ diff --git a/images/55.png b/images/55.png new file mode 100644 index 000000000..faf486bf6 Binary files /dev/null and b/images/55.png differ diff --git a/images/56.png b/images/56.png new file mode 100644 index 000000000..7d550232c Binary files /dev/null and b/images/56.png differ diff --git a/images/57.png b/images/57.png new file mode 100644 index 000000000..403dcaa02 Binary files /dev/null and b/images/57.png differ diff --git a/images/58.png b/images/58.png new file mode 100644 index 000000000..4b1d49f4e Binary files /dev/null and b/images/58.png differ diff --git a/images/59.png b/images/59.png new file mode 100644 index 000000000..1a18b2822 Binary files /dev/null and b/images/59.png differ diff --git a/images/6.PNG b/images/6.PNG new file mode 100644 index 000000000..5eb1ec32f Binary files /dev/null and b/images/6.PNG differ diff --git a/images/60.png b/images/60.png new file mode 100644 index 000000000..adf00cd09 Binary files /dev/null and b/images/60.png differ diff --git a/images/61.png b/images/61.png new file mode 100644 index 000000000..66b753545 Binary files /dev/null and b/images/61.png differ diff --git a/images/62.png b/images/62.png new file mode 100644 index 000000000..f097f926b Binary files /dev/null and b/images/62.png differ diff --git a/images/63.png b/images/63.png new file mode 100644 index 000000000..385e3ff87 Binary files /dev/null and b/images/63.png differ diff --git a/images/64.png b/images/64.png new file mode 100644 index 000000000..4995386cb Binary files /dev/null and b/images/64.png differ diff --git a/images/65.png b/images/65.png new file mode 100644 index 000000000..9d4aec370 Binary files /dev/null and b/images/65.png differ diff --git a/images/66.png b/images/66.png new file mode 100644 index 000000000..f7db1432f Binary files /dev/null and b/images/66.png differ diff --git a/images/67.png b/images/67.png new file mode 100644 index 000000000..575214974 Binary files /dev/null and b/images/67.png differ diff --git a/images/7.PNG b/images/7.PNG new file mode 100644 index 000000000..bc1903dbf Binary files /dev/null and b/images/7.PNG differ diff --git a/images/8.png b/images/8.png new file mode 100644 index 000000000..bb3c778f7 Binary files /dev/null and b/images/8.png differ diff --git a/images/9.png b/images/9.png new file mode 100644 index 000000000..18105e1db Binary files /dev/null and b/images/9.png differ diff --git a/images/95.png b/images/95.png new file mode 100644 index 000000000..be4982733 Binary files /dev/null and b/images/95.png differ diff --git a/images/96.png b/images/96.png new file mode 100644 index 000000000..805320610 Binary files /dev/null and b/images/96.png differ