-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Init passenger plugin #522
Closed
Closed
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Add phusion Passenger plugin
Gather metric by parsing XMLoutput of `passenger-status` utility. More information of this utility: https://www.phusionpassenger.com/library/admin/apache/overall_status_report.html
- Loading branch information
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
# Telegraf plugin: passenger | ||
|
||
Get phusion passenger stat using their command line utility | ||
`passenger-status` | ||
|
||
# Measurements | ||
|
||
Meta: | ||
|
||
- tags: | ||
|
||
* name | ||
* passenger_version | ||
* pid | ||
* code_revision | ||
|
||
Measurement names: | ||
|
||
- passenger: | ||
|
||
* Tags: `passenger_version` | ||
* Fields: | ||
|
||
- process_count | ||
- max | ||
- capacity_used | ||
- get_wait_list_size | ||
|
||
- passenger_supergroup: | ||
|
||
* Tags: `name` | ||
* Fields: | ||
|
||
- get_wait_list_size | ||
- capacity_used | ||
|
||
- passenger_group: | ||
|
||
* Tags: | ||
|
||
- name | ||
- app_root | ||
- app_type | ||
|
||
* Fields: | ||
|
||
- get_wait_list_size | ||
- capacity_used | ||
- processes_being_spawned | ||
|
||
- passenger_process: | ||
|
||
* Tags: | ||
|
||
- group_name | ||
- app_root | ||
- supergroup_name | ||
- pid | ||
- code_revision | ||
- life_status | ||
- process_group_id | ||
|
||
* Field: | ||
|
||
- concurrency | ||
- sessions | ||
- busyness | ||
- processed | ||
- spawner_creation_time | ||
- spawn_start_time | ||
- spawn_end_time | ||
- last_used | ||
- uptime | ||
- cpu | ||
- rss | ||
- pss | ||
- private_dirty | ||
- swap | ||
- real_memory | ||
- vmsize | ||
|
||
# Example output | ||
|
||
Using this configuration: | ||
|
||
``` | ||
[[inputs.passenger]] | ||
# Path of passenger-status. | ||
# | ||
# Plugin gather metric via parsing XML output of passenger-status | ||
# More information about the tool: | ||
# https://www.phusionpassenger.com/library/admin/apache/overall_status_report.html | ||
# | ||
# | ||
# If no path is specified, then the plugin simply execute passenger-status | ||
# hopefully it can be found in your PATH | ||
command = "passenger-status -v --show=xml" | ||
``` | ||
|
||
When run with: | ||
|
||
``` | ||
./telegraf -config telegraf.conf -test -input-filter passenger | ||
``` | ||
|
||
It produces: | ||
|
||
``` | ||
> passenger,passenger_version=5.0.17 capacity_used=23i,get_wait_list_size=0i,max=23i,process_count=23i 1452984112799414257 | ||
> passenger_supergroup,name=/var/app/current/public capacity_used=23i,get_wait_list_size=0i 1452984112799496977 | ||
> passenger_group,app_root=/var/app/current,app_type=rack,name=/var/app/current/public capacity_used=23i,get_wait_list_size=0i,processes_being_spawned=0i 1452984112799527021 | ||
> passenger_process,app_root=/var/app/current,code_revision=899ac7f,group_name=/var/app/current/public,life_status=ALIVE,pid=11553,process_group_id=13608,supergroup_name=/var/app/current/public busyness=0i,concurrency=1i,cpu=58i,last_used=1452747071764940i,private_dirty=314900i,processed=951i,pss=319391i,real_memory=314900i,rss=418548i,sessions=0i,spawn_end_time=1452746845013365i,spawn_start_time=1452746844946982i,spawner_creation_time=1452746835922747i,swap=0i,uptime=226i,vmsize=1563580i 1452984112799571490 | ||
> passenger_process,app_root=/var/app/current,code_revision=899ac7f,group_name=/var/app/current/public,life_status=ALIVE,pid=11563,process_group_id=13608,supergroup_name=/var/app/current/public busyness=2147483647i,concurrency=1i,cpu=47i,last_used=1452747071709179i,private_dirty=309240i,processed=756i,pss=314036i,real_memory=309240i,rss=418296i,sessions=1i,spawn_end_time=1452746845172460i,spawn_start_time=1452746845136882i,spawner_creation_time=1452746835922747i,swap=0i,uptime=226i,vmsize=1563608i 1452984112799638581 | ||
``` | ||
|
||
# Note | ||
|
||
You have to ensure that you can run the `passenger-status` command under | ||
telegraf user. Depend on how you install and configure passenger, this | ||
maybe an issue for you. If you are using passenger standlone, or compile | ||
yourself, it is straight forward. However, if you are using gem and | ||
`rvm`, it maybe harder to get this right. | ||
|
||
Such as with `rvm`, you can use this command: | ||
|
||
``` | ||
~/.rvm/bin/rvm default do passenger-status -v --show=xml | ||
``` | ||
|
||
You can use `&` and `;` in the shell command to run comlicated shell command | ||
in order to get the passenger-status such as load the rvm shell, source the | ||
path | ||
``` | ||
command = "source .rvm/scripts/rvm && passenger-status -v --show=xml" | ||
``` | ||
|
||
Anyway, just ensure that you can run the command under `telegraf` user, and it | ||
has to produce XML output. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This package is need to parse the XML with a a charset reader. The XML output has an attribute
encoding=ISO88591
and I cannot simply parse it withxml.Unmarshal
because go lag complains about it like this:However, If I simply remove that attribute from XML then it works just fine. I'm not sure if we should just stripped out that attribute to remove this dependency
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no problem, thanks for adding it to Godeps