All Projects → Sjeanpierre → passenger-datadog-monitor

Sjeanpierre / passenger-datadog-monitor

Licence: MIT license
Golang application for reporting Phusion Passenger stats to DataDog via statsD

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
ruby
36898 projects - #4 most used programming language
Makefile
30231 projects

Projects that are alternatives of or similar to passenger-datadog-monitor

statsd.cr
A statsd client library for Crystal.
Stars: ✭ 32 (+113.33%)
Mutual labels:  datadog
yake
A Rake-like DSL for writing AWS Lambda handlers
Stars: ✭ 146 (+873.33%)
Mutual labels:  datadog
watchdog
DEPRECATED -- Github Bot for Datadog codification
Stars: ✭ 26 (+73.33%)
Mutual labels:  datadog
rsdmx
Tools for reading SDMX data and metadata in R
Stars: ✭ 93 (+520%)
Mutual labels:  web-services
vault-consul-monitoring
Sample project to explore monitoring Vault and Consul with telegraf/influxdb/grafana
Stars: ✭ 52 (+246.67%)
Mutual labels:  datadog
datadog-anomaly-detector
🐶 Anomaly detection system for Datadog multiple metrics
Stars: ✭ 19 (+26.67%)
Mutual labels:  datadog
natchez-extras
Integrations between Natchez, Doobie, HTTP4s, Log4cats and Datadog. Formerly called effect-utils.
Stars: ✭ 24 (+60%)
Mutual labels:  datadog
nebulous
The Kubefirst Open Source Platform
Stars: ✭ 122 (+713.33%)
Mutual labels:  datadog
terraform-aws-datadog-integration
Terraform module to configure Datadog AWS integration
Stars: ✭ 26 (+73.33%)
Mutual labels:  datadog
SwiftDog
This is an (un)official swift library of the datadog API! Many more features to come, but right now it supports sending metrics and events!
Stars: ✭ 26 (+73.33%)
Mutual labels:  datadog
Jarvis
APL-based web service framework supporting JSON or REST
Stars: ✭ 17 (+13.33%)
Mutual labels:  web-services
okra
Hot-swap Kubernetes clusters while keeping your service up and running.
Stars: ✭ 46 (+206.67%)
Mutual labels:  datadog
terraform-aws-datadog-forwarders
Terraform module which creates resources on AWS to forward logs/metrics to Datadog 🇺🇦
Stars: ✭ 30 (+100%)
Mutual labels:  datadog
Flight-Booking-System-JavaServlets App
✈️ An enterprise level Flight Booking System for Turkish Airlines (web-application) based on the Model View Controller (MVC) Architecture made using Java Servlets, Java Server Pages (JSPs). Moreover authentication and authorization for users is implemented. The web-application is also secured against SQL Injection and Cross-Site Scripting attacks.
Stars: ✭ 107 (+613.33%)
Mutual labels:  web-services
datadog-api-client-python
Python client for the Datadog API
Stars: ✭ 44 (+193.33%)
Mutual labels:  datadog
http4s-poc-api
POC: http4s http api on zio
Stars: ✭ 34 (+126.67%)
Mutual labels:  web-services
lara
Lara Web Engine is a lightweight C# framework for web user interface development.
Stars: ✭ 121 (+706.67%)
Mutual labels:  web-services
datadog-actions-metrics
Send GitHub Actions metrics to Datadog
Stars: ✭ 27 (+80%)
Mutual labels:  datadog
datadog-to-terraform
Converts Datadog resource JSON into Terraform alarm code.
Stars: ✭ 191 (+1173.33%)
Mutual labels:  datadog
datadog-trace-agent
Datadog Trace Agent archive (pre-6.10.0)
Stars: ✭ 70 (+366.67%)
Mutual labels:  datadog

passenger-datadog-monitor

Send health metrics from Phusion Passenger to Datadog using the StatsD interface on the server agent.

Purpose

Graph and track Passenger threads and possibly detect misbehaving threads before they become a problem.

Tracked Metrics

Aggregated

  • Processed requests: min,max,average,total
  • Memory usage: min,max,average,total
  • Thread uptime: min, max, average
  • Request queue depth
  • Threads in use vs Max thread configured & Threads used between runs

Discrete

  • Process memory usage per Passenger Process PID
  • OS thread count per Passenger Process PID
  • Requests processed per Passenger Process PID
  • Process Idle time per Passenger Process PID

Installation

Downloading from Github

The passenger-datadog-monitor binary can be downloaded from the releases area of this repository for Linux

Building the binary

You will first need to build the passenger-datadog-monitor executable using Go. You can download the source and dependencies, and build the binary by running:

go get -v github.com/Sjeanpierre/passenger-datadog-monitor

Once it completes, you should find your new passenger-datadog-monitor executable in your $GOROOT/bin directory.

Note that if you are building in a different environment from where you plan to deploy, you should configure your target operating system and architecture.

The Makefile in this repository will cross compile for Linux.

Installing the binary

After you've built the executable, you should install it on your server (e.g. in /usr/bin/).

Usage

passenger-datadog-monitor runs as a daemon with a 10 second sampling interval. Monit, God, SupervisorD, or any other daemon management tool should be used to manage the process.

Sample Monit config

check process passenger-datadog-monitor with pidfile /var/run/passenger-datadog-monitor.pid
start program = "/etc/init.d/passenger-datadog-monitor start"
stop  program = "/etc/init.d/passenger-datadog-monitor stop"

You should run passenger-datadog-monitor as root, since access to passenger-status requires root.

Flags

flag type description example
-host string StatsD collector IP - useful when running with a Kubernetes DaemonSet or other external collector -host=100.124.102.21
-port string StatsD collector UDP Port - useful when running in Docker or other custom environments -port=81333
-print bool Enable debug and stats printing -print

Full example:

passenger-datadog-monitor -host=$STATSD_IP -port=$STATSD_PORT

Testing

udp.rb can be run locally when you want to see what is being received on the server side.

Alternatively you can listen using netcat: nc -kulvw 0 8125

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].