diff --git a/Dockerfile b/Dockerfile index c12e6b5..cace754 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,6 +62,11 @@ WORKDIR /usr/local/src/graphite-web RUN . /opt/graphite/bin/activate && pip3 install -r requirements.txt \ && python3 ./setup.py install +# fixing RRD support (see https://github.com/graphite-project/docker-graphite-statsd/issues/63) +RUN sed -i \ +'s/return os.path.realpath(fs_path)/return os.path.realpath(fs_path).decode("utf-8")/' \ +/opt/graphite/webapp/graphite/readers/rrd.py + # installing nodejs 6 WORKDIR /opt RUN wget https://nodejs.org/download/release/v6.14.4/node-v6.14.4-linux-x64.tar.gz && \ @@ -98,6 +103,7 @@ RUN apt-get update --fix-missing \ && apt-get install --yes --no-install-recommends \ git \ redis \ + collectd \ nginx \ python3-pip \ python3-ldap \ @@ -121,6 +127,9 @@ ADD conf/etc/nginx/sites-enabled/graphite-statsd.conf /etc/nginx/sites-enabled/g # config redis ADD conf/etc/redis/redis.conf /etc/redis/redis.conf +# config collectd +ADD conf/etc/collectd/collectd.conf /etc/collectd/collectd.conf + # logging support RUN mkdir -p /var/log/carbon /var/log/graphite /var/log/nginx /var/log/graphite/ ADD conf/etc/logrotate.d/graphite-statsd /etc/logrotate.d/graphite-statsd @@ -132,6 +141,7 @@ ADD conf/etc/service/graphite/run /etc/service/graphite/run ADD conf/etc/service/statsd/run /etc/service/statsd/run ADD conf/etc/service/nginx/run /etc/service/nginx/run ADD conf/etc/service/redis/run /etc/service/redis/run +ADD conf/etc/service/collectd/run /etc/service/collectd/run RUN chmod 0755 /etc/service/*/run # default conf setup diff --git a/README.md b/README.md index af3a5b8..cf577c2 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ DOCKER ASSIGNED | /var/lib/redis | Redis TagDB data (optional) Built using [Phusion's base image](https://github.com/phusion/baseimage-docker). * All Graphite related processes are run as daemons & monitored with [runit](http://smarden.org/runit/). -* Includes additional services such as logrotate. +* Includes additional services such as logrotate, nginx, optional Redis for TagDB and optional collectd instance. ## Start Using Graphite & Statsd @@ -160,6 +160,9 @@ Graphite stores tag information in a separate tag database (TagDB). Please check * GRAPHITE_TAGDB_HTTP_PASSWORD: ('') Password for HTTP TagDB * GRAPHITE_TAGDB_HTTP_AUTOCOMPLETE: (false) Does the remote TagDB support autocomplete? +## Collectd +Use `COLLECTD=1` environment variable to enable local collectd instance + ## Change the Configuration Read up on Graphite's [post-install tasks](https://graphite.readthedocs.org/en/latest/install.html#post-install-tasks). diff --git a/conf/etc/collectd/collectd.conf b/conf/etc/collectd/collectd.conf new file mode 100644 index 0000000..7467ccd --- /dev/null +++ b/conf/etc/collectd/collectd.conf @@ -0,0 +1,1116 @@ +# Config file for collectd(1). +# +# Some plugins need additional configuration and are disabled by default. +# Please read collectd.conf(5) for details. +# +# You should also read /usr/share/doc/collectd-core/README.Debian.plugins +# before enabling any more plugins. + +#Hostname "localhost" +Hostname "graphite" +FQDNLookup true +#BaseDir "/var/lib/collectd" +#PluginDir "/usr/lib/collectd" +#TypesDB "/usr/share/collectd/types.db" "/etc/collectd/my_types.db" +Interval 10 +#Interval 60 +#Timeout 2 +#ReadThreads 5 + +#LoadPlugin logfile +LoadPlugin syslog + +# +# LogLevel "info" +# File STDOUT +# Timestamp true +# PrintSeverity false +# + + + LogLevel info + + +#LoadPlugin amqp +#LoadPlugin apache +#LoadPlugin apcups +#LoadPlugin ascent +LoadPlugin battery +#LoadPlugin bind +#LoadPlugin conntrack +#LoadPlugin contextswitch +LoadPlugin cpu +#LoadPlugin cpufreq +#LoadPlugin csv +#LoadPlugin curl +#LoadPlugin curl_json +#LoadPlugin curl_xml +#LoadPlugin dbi +LoadPlugin df +LoadPlugin disk +#LoadPlugin dns +#LoadPlugin email +LoadPlugin entropy +#LoadPlugin ethstat +#LoadPlugin exec +LoadPlugin filecount +#LoadPlugin fscache +#LoadPlugin gmond +#LoadPlugin hddtemp +LoadPlugin interface +#LoadPlugin ipmi +#LoadPlugin iptables +#LoadPlugin ipvs +#LoadPlugin irq +#LoadPlugin java +#LoadPlugin libvirt +LoadPlugin load +#LoadPlugin madwifi +#LoadPlugin mbmon +#LoadPlugin md +#LoadPlugin memcachec +#LoadPlugin memcached +LoadPlugin memory +#LoadPlugin multimeter +#LoadPlugin mysql +#LoadPlugin netlink +#LoadPlugin network +#LoadPlugin nfs +LoadPlugin nginx +#LoadPlugin notify_desktop +#LoadPlugin notify_email +#LoadPlugin ntpd +#LoadPlugin numa +#LoadPlugin nut +#LoadPlugin olsrd +#LoadPlugin openvpn +# +# Globals true +# +#LoadPlugin pinba +#LoadPlugin ping +#LoadPlugin postgresql +#LoadPlugin powerdns +LoadPlugin processes +#LoadPlugin protocols +# +# Globals true +# +#LoadPlugin rrdcached +#LoadPlugin rrdtool +#LoadPlugin sensors +#LoadPlugin serial +#LoadPlugin snmp +LoadPlugin swap +#LoadPlugin table +LoadPlugin tail +#LoadPlugin tcpconns +#LoadPlugin teamspeak2 +#LoadPlugin ted +#LoadPlugin thermal +#LoadPlugin tokyotyrant +#LoadPlugin unixsock +#LoadPlugin uptime +#LoadPlugin users +#LoadPlugin uuid +#LoadPlugin varnish +#LoadPlugin vmem +#LoadPlugin vserver +#LoadPlugin wireless +LoadPlugin write_graphite +#LoadPlugin write_http +#LoadPlugin write_mongodb + +# +# +# Host "localhost" +# Port "5672" +# VHost "/" +# User "guest" +# Password "guest" +# Exchange "amq.fanout" +# RoutingKey "collectd" +# Persistent false +# StoreRates false +# +# + +# +# +# URL "https://127.0.0.1/server-status?auto" +# VerifyPeer false +# VerifyHost false +# +# +# URL "http://localhost/server-status?auto" +# User "www-user" +# Password "secret" +# VerifyPeer false +# VerifyHost false +# CACert "/etc/ssl/ca.crt" +# Server "apache" +# +# +# +# URL "http://some.domain.tld/status?auto" +# Host "some.domain.tld" +# Server "lighttpd" +# +# + +# +# Host "localhost" +# Port "3551" +# + +# +# URL "http://localhost/ascent/status/" +# User "www-user" +# Password "secret" +# VerifyPeer false +# VerifyHost false +# CACert "/etc/ssl/ca.crt" +# + +# +# URL "http://localhost:8053/" +# +# ParseTime false +# +# OpCodes true +# QTypes true +# ServerStats true +# ZoneMaintStats true +# ResolverStats false +# MemoryStats true +# +# +# QTypes true +# ResolverStats true +# CacheRRSets true +# +# Zone "127.in-addr.arpa/IN" +# +# + +# +# DataDir "/var/lib/collectd/csv" +# StoreRates false +# + +# +# +# URL "http://finance.google.com/finance?q=NYSE%3AAMD" +# User "foo" +# Password "bar" +# VerifyPeer false +# VerifyHost false +# CACert "/etc/ssl/ca.crt" +# MeasureResponseTime false +# +# Regex "]*> *([0-9]*\\.[0-9]+) *" +# DSType "GaugeAverage" +# Type "stock_value" +# Instance "AMD" +# +# +# + +# +## See: http://wiki.apache.org/couchdb/Runtime_Statistics +# +# Instance "httpd" +# +# Type "http_requests" +# +# +# +# Type "http_request_methods" +# +# +# +# Type "http_response_codes" +# +# +## Database status metrics: +# +# Instance "dbs" +# +# Type "gauge" +# +# +# Type "counter" +# +# +# Type "bytes" +# +# +# + +# +# +# Host "my_host" +# Instance "some_instance" +# User "collectd" +# Password "thaiNg0I" +# VerifyPeer true +# VerifyHost true +# CACert "/path/to/ca.crt" +# +# +# Type "magic_level" +# InstancePrefix "prefix-" +# InstanceFrom "td[1]" +# ValuesFrom "td[2]/span[@class=\"level\"]" +# +# +# + +# +# +# Statement "SELECT 'customers' AS c_key, COUNT(*) AS c_value \ +# FROM customers_tbl" +# MinVersion 40102 +# MaxVersion 50042 +# +# Type "gauge" +# InstancePrefix "customer" +# InstancesFrom "c_key" +# ValuesFrom "c_value" +# +# +# +# +# Driver "mysql" +# DriverOption "host" "localhost" +# DriverOption "username" "collectd" +# DriverOption "password" "secret" +# DriverOption "dbname" "custdb0" +# SelectDB "custdb0" +# Query "num_of_customers" +# Query "..." +# +# + + + Device "/dev/vda" + ReportInodes true +# Device "/dev/sda1" +# Device "192.168.0.2:/mnt/nfs" +# MountPoint "/home" +# FSType "ext3" +# IgnoreSelected false +# ReportByDevice false +# ReportReserved false +# ReportInodes false + + +# +# Disk "hda" +# Disk "/sda[23]/" +# IgnoreSelected false +# + +# +# Interface "eth0" +# IgnoreSource "192.168.0.1" +# SelectNumericQueryTypes false +# + +# +# SocketFile "/var/run/collectd-email" +# SocketGroup "collectd" +# SocketPerms "0770" +# MaxConns 5 +# + +# +# Interface "eth0" +# Map "rx_csum_offload_errors" "if_rx_errors" "checksum_offload" +# Map "multicast" "if_multicast" +# MappedOnly false +# + +# +# Exec user "/path/to/exec" +# Exec "user:group" "/path/to/exec" +# NotificationExec user "/path/to/exec" +# + + + + Instance "whisper" + Name "*.wsp" +# +# Instance "foodir" +# Name "*.conf" +# MTime "-5m" +# Size "+10k" +# Recursive true +# IncludeHidden false + + + +# +# MCReceiveFrom "239.2.11.71" "8649" +# +# +# Type "swap" +# TypeInstance "total" +# DataSource "value" +# +# +# +# Type "swap" +# TypeInstance "free" +# DataSource "value" +# +# + +# +# Host "127.0.0.1" +# Port 7634 +# + +# +# Interface "eth0" +# IgnoreSelected false +# + +# +# Sensor "some_sensor" +# Sensor "another_one" +# IgnoreSelected false +# NotifySensorAdd false +# NotifySensorRemove true +# NotifySensorNotPresent false +# + +# +# Chain "table" "chain" +# + +# +# Irq 7 +# Irq 8 +# Irq 9 +# IgnoreSelected true +# + +# +# JVMArg "-verbose:jni" +# JVMArg "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar" +# +# LoadPlugin "org.collectd.java.GenericJMX" +# +# # See /usr/share/doc/collectd/examples/GenericJMX.conf +# # for an example config. +# +# + +# +# Connection "xen:///" +# RefreshInterval 60 +# Domain "name" +# BlockDevice "name:device" +# InterfaceDevice "name:device" +# IgnoreSelected false +# HostnameFormat name +# InterfaceFormat name +# + +# +# Interface "wlan0" +# IgnoreSelected false +# Source "SysFS" +# WatchSet "None" +# WatchAdd "node_octets" +# WatchAdd "node_rssi" +# WatchAdd "is_rx_acl" +# WatchAdd "is_scan_active" +# + +# +# Host "127.0.0.1" +# Port 411 +# + +# +# Device "/dev/md0" +# IgnoreSelected false +# + +# +# +# Server "localhost" +# Key "page_key" +# +# Regex "(\\d+) bytes sent" +# ExcludeRegex "" +# DSType CounterAdd +# Type "ipt_octets" +# Instance "type_instance" +# +# +# + +# +# Socket "/var/run/memcached.sock" +# or: +# Host "127.0.0.1" +# Port "11211" +# + +# +# +# Host "database.serv.er" +# Port "3306" +# User "db_user" +# Password "secret" +# Database "db_name" +# MasterStats true +# +# +# +# Host "localhost" +# Socket "/var/run/mysql/mysqld.sock" +# SlaveStats true +# SlaveNotifications true +# +# + +# +# Interface "All" +# VerboseInterface "All" +# QDisc "eth0" "pfifo_fast-1:0" +# Class "ppp0" "htb-1:10" +# Filter "ppp0" "u32-1:0" +# IgnoreSelected false +# + +# +# # client setup: +# Server "ff18::efc0:4a42" "25826" +# +# SecurityLevel Encrypt +# Username "user" +# Password "secret" +# Interface "eth0" +# +# TimeToLive "128" +# +# # server setup: +# Listen "ff18::efc0:4a42" "25826" +# +# SecurityLevel Sign +# AuthFile "/etc/collectd/passwd" +# Interface "eth0" +# +# MaxPacketSize 1024 +# +# # proxy setup (client and server as above): +# Forward true +# +# # statistics about the network plugin itself +# ReportStats false +# +# # "garbage collection" +# CacheFlush 1800 +# + + + URL "http://localhost/nginx_status?auto" + VerifyPeer false + VerifyHost false + + +# +# OkayTimeout 1000 +# WarningTimeout 5000 +# FailureTimeout 0 +# + +# +# SMTPServer "localhost" +# SMTPPort 25 +# SMTPUser "my-username" +# SMTPPassword "my-password" +# From "collectd@main0server.com" +# # on . +# # Beware! Do not use not more than two placeholders (%)! +# Subject "[collectd] %s on %s!" +# Recipient "email1@domain1.net" +# Recipient "email2@domain2.com" +# + +# +# Host "localhost" +# Port 123 +# ReverseLookups false +# + +# +# UPS "upsname@hostname:port" +# + +# +# Host "127.0.0.1" +# Port "2006" +# CollectLinks "Summary" +# CollectRoutes "Summary" +# CollectTopology "Summary" +# + +# +# StatusFile "/etc/openvpn/openvpn-status.log" +# ImprovedNamingSchema false +# CollectCompression true +# CollectIndividualUsers true +# CollectUserCount false +# + +# +# IncludeDir "/my/include/path" +# BaseName "Collectd::Plugins" +# EnableDebugger "" +# LoadPlugin Monitorus +# LoadPlugin OpenVZ +# +# +# Foo "Bar" +# Qux "Baz" +# +# + +# +# Address "::0" +# Port "30002" +# +# Host "host name" +# Server "server name" +# Script "script name" +# +# + +# +# Host "host.foo.bar" +# Host "host.baz.qux" +# Interval 1.0 +# Timeout 0.9 +# TTL 255 +# SourceAddress "1.2.3.4" +# Device "eth0" +# MaxMissed -1 +# + +# +# +# Statement "SELECT magic FROM wizard WHERE host = $1;" +# Param hostname +# +# +# Type gauge +# InstancePrefix "magic" +# ValuesFrom "magic" +# +# +# +# +# Statement "SELECT COUNT(type) AS count, type \ +# FROM (SELECT CASE \ +# WHEN resolved = 'epoch' THEN 'open' \ +# ELSE 'resolved' END AS type \ +# FROM tickets) type \ +# GROUP BY type;" +# +# +# Type counter +# InstancePrefix "rt36_tickets" +# InstancesFrom "type" +# ValuesFrom "count" +# +# +# +# +# Host "hostname" +# Port 5432 +# User "username" +# Password "secret" +# +# SSLMode "prefer" +# KRBSrvName "kerberos_service_name" +# +# Query magic +# +# +# +# Interval 60 +# Service "service_name" +# +# Query backend # predefined +# Query rt36_tickets +# +# + +# +# +# Collect "latency" +# Collect "udp-answers" "udp-queries" +# Socket "/var/run/pdns.controlsocket" +# +# +# Collect "questions" +# Collect "cache-hits" "cache-misses" +# Socket "/var/run/pdns_recursor.controlsocket" +# +# LocalSocket "/opt/collectd/var/run/collectd-powerdns" +# + +# +# Process "name" +# ProcessMatch "foobar" "/usr/bin/perl foobar\\.pl.*" +# + +# +# Value "/^Tcp:/" +# IgnoreSelected false +# + +# +# ModulePath "/path/to/your/python/modules" +# LogTraces true +# Interactive true +# Import "spam" +# +# +# spam "wonderful" "lovely" +# +# + +# +# DaemonAddress "unix:/var/run/rrdcached.sock" +# DataDir "/var/lib/rrdcached/db/collectd" +# CreateFiles true +# CollectStatistics true +# + +# +# DataDir "/var/lib/collectd/rrd" +# CacheTimeout 120 +# CacheFlush 900 +# WritesPerSecond 30 +# RandomTimeout 0 +# +# The following settings are rather advanced +# and should usually not be touched: +# StepSize 10 +# HeartBeat 20 +# RRARows 1200 +# RRATimespan 158112000 +# XFF 0.1 +# + +# +# SensorConfigFile "/etc/sensors3.conf" +# Sensor "it8712-isa-0290/temperature-temp1" +# Sensor "it8712-isa-0290/fanspeed-fan3" +# Sensor "it8712-isa-0290/voltage-in8" +# IgnoreSelected false +# + +# See /usr/share/doc/collectd/examples/snmp-data.conf.gz for a +# comprehensive sample configuration. +# +# +# Type "voltage" +# Table false +# Instance "input_line1" +# Scale 0.1 +# Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1" +# +# +# Type "users" +# Table false +# Instance "" +# Shift -1 +# Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0" +# +# +# Type "if_octets" +# Table true +# InstancePrefix "traffic" +# Instance "IF-MIB::ifDescr" +# Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets" +# +# +# +# Address "192.168.0.2" +# Version 1 +# Community "community_string" +# Collect "std_traffic" +# Inverval 120 +# +# +# Address "192.168.0.42" +# Version 2 +# Community "another_string" +# Collect "std_traffic" "hr_users" +# +# +# Address "192.168.0.3" +# Version 1 +# Community "more_communities" +# Collect "powerplus_voltge_input" +# Interval 300 +# +# + +# +# ReportByDevice false +# + +# +# +# Instance "slabinfo" +# Separator " " +# +# Type gauge +# InstancePrefix "active_objs" +# InstancesFrom 0 +# ValuesFrom 1 +# +# +# Type gauge +# InstancePrefix "objperslab" +# InstancesFrom 0 +# ValuesFrom 4 +# +#
+#
+ + + + # cache performance + + Instance "graphite_web" + + Regex "Request-Cache hit " + DSType "CounterInc" + Type "counter" + Instance "request_cache_hit" + + + Regex "Request-Cache miss " + DSType "CounterInc" + Type "counter" + Instance "request_cache_miss" + + + Regex "CarbonLink creating a new socket " + DSType "CounterInc" + Type "counter" + Instance "socket_create_count" + + + Regex "CarbonLink cache-query request " + DSType "CounterInc" + Type "counter" + Instance "query_count" + + + Regex "CarbonLink set-metadata request " + DSType "CounterInc" + Type "counter" + Instance "set-metadata_count" + + + Regex "Data-Cache hit " + DSType "CounterInc" + Type "counter" + Instance "data_cache_hit" + + + Regex "Data-Cache miss " + DSType "CounterInc" + Type "counter" + Instance "data_cache_miss" + + + + # rendering performance + + Instance "graphite_web" + + # PNG's + + Regex "Rendered PNG in ([0-9\.]+) seconds" + DSType "CounterInc" + Type "requests" + Instance "render_png_count" + + + Regex "Rendered PNG in ([0-9\.]+) seconds" + DSType "GaugeMin" + Type "response_time" + Instance "render_png_time_min" + + + Regex "Rendered PNG in ([0-9\.]+) seconds" + DSType "GaugeMax" + Type "response_time" + Instance "render_png_time_max" + + + Regex "Rendered PNG in ([0-9\.]+) seconds" + DSType "GaugeAverage" + Type "response_time" + Instance "render_png_time_avg" + + + # pickle (carbonlink) + + Regex "Total pickle rendering time ([0-9\.]+)" + DSType "CounterInc" + Type "counter" + Instance "render_pickle_count" + + + Regex "Total pickle rendering time ([0-9\.]+)" + DSType "GaugeMin" + Type "response_time" + Instance "render_pickle_time_min" + + + Regex "Total pickle rendering time ([0-9\.]+)" + DSType "GaugeMax" + Type "response_time" + Instance "render_pickle_time_max" + + + Regex "Total pickle rendering time ([0-9\.]+)" + DSType "GaugeAverage" + Type "response_time" + Instance "render_pickle_time_avg" + + + # rawData (json, csv, etc) + + Regex "Total rawData rendering time ([0-9\.]+)" + DSType "CounterInc" + Type "counter" + Instance "render_rawdata_count" + + + Regex "Total rawData rendering time ([0-9\.]+)" + DSType "GaugeMin" + Type "response_time" + Instance "render_rawdata_time_min" + + + Regex "Total rawData rendering time ([0-9\.]+)" + DSType "GaugeMax" + Type "response_time" + Instance "render_rawdata_time_max" + + + Regex "Total rawData rendering time ([0-9\.]+)" + DSType "GaugeAverage" + Type "response_time" + Instance "render_rawdata_time_avg" + + + # total render time + + Regex "Total rendering time ([0-9\.]+) seconds" + DSType "CounterInc" + Type "counter" + Instance "total_render_count" + + + Regex "Total rendering time ([0-9\.]+) seconds" + DSType "GaugeMin" + Type "response_time" + Instance "total_render_time_min" + + + Regex "Total rendering time ([0-9\.]+) seconds" + DSType "GaugeMax" + Type "response_time" + Instance "total_render_time_max" + + + Regex "Total rendering time ([0-9\.]+) seconds" + DSType "GaugeAverage" + Type "response_time" + Instance "total_render_time_avg" + + + # cached response time + + Regex "Returned cached response in ([0-9\.]+) seconds" + DSType "CounterInc" + Type "counter" + Instance "cached_response_time_count" + + + Regex "Returned cached response in ([0-9\.]+) seconds" + DSType "GaugeMin" + Type "response_time" + Instance "cached_response_time_min" + + + Regex "Returned cached response in ([0-9\.]+) seconds" + DSType "GaugeMax" + Type "response_time" + Instance "cached_response_time_max" + + + Regex "Returned cached response in ([0-9\.]+) seconds" + DSType "GaugeAverage" + Type "response_time" + Instance "cached_response_time_avg" + + + # data retrieval time + + Regex "Retrieval of [^ ]+ took ([0-9\.]+)" + DSType "CounterInc" + Type "counter" + Instance "retrieval_count" + + + Regex "Retrieval of [^ ]+ took ([0-9\.]+)" + DSType "GaugeMin" + Type "response_time" + Instance "retrieval_time_min" + + + Regex "Retrieval of [^ ]+ took ([0-9\.]+)" + DSType "GaugeMax" + Type "response_time" + Instance "retrieval_time_max" + + + Regex "Retrieval of [^ ]+ took ([0-9\.]+)" + DSType "GaugeAverage" + Type "response_time" + Instance "retrieval_time_avg" + + +# +# Instance "exim" +# +# Regex "S=([1-9][0-9]*)" +# DSType "CounterAdd" +# Type "ipt_bytes" +# Instance "total" +# +# +# Regex "\\" +# ExcludeRegex "\\.*mail_spool defer" +# DSType "CounterInc" +# Type "counter" +# Instance "local_user" +# +# + + +# +# ListeningPorts false +# LocalPort "25" +# RemotePort "25" +# + +# +# Host "127.0.0.1" +# Port "51234" +# Server "8767" +# + +# +# Device "/dev/ttyUSB0" +# Retries 0 +# + +# +# ForceUseProcfs false +# Device "THRM" +# IgnoreSelected false +# + +# +# Host "localhost" +# Port "1978" +# + +# +# SocketFile "/var/run/collectd-unixsock" +# SocketGroup "collectd" +# SocketPerms "0660" +# DeleteSocket false +# + +# +# UUIDFile "/etc/uuid" +# + +# +# +# CollectCache true +# CollectBackend true +# CollectConnections true +# CollectSHM true +# CollectESI false +# CollectFetch false +# CollectHCB false +# CollectSMA false +# CollectSMS false +# CollectSM false +# CollectTotals false +# CollectWorkers false +# +# +# +# CollectCache true +# +# + +# +# Verbose false +# + + + + Host "localhost" +# Port "2003" + Prefix "collectd." + Protocol "tcp" +# Postfix "collectd" +# StoreRates false +# AlwaysAppendDS false +# EscapeCharacter "_" + + + +# +# +# User "collectd" +# Password "secret" +# VerifyPeer true +# VerifyHost true +# CACert "/etc/ssl/ca.crt" +# Format "Command" +# StoreRates false +# +# + +# +# +# Host "localhost" +# Port "27017" +# Timeout 1000 +# StoreRates false +# +# + +Include "/etc/collectd/collectd.conf.d/*.conf" diff --git a/conf/etc/nginx/sites-enabled/graphite-statsd.conf b/conf/etc/nginx/sites-enabled/graphite-statsd.conf index 998ed14..46142bb 100644 --- a/conf/etc/nginx/sites-enabled/graphite-statsd.conf +++ b/conf/etc/nginx/sites-enabled/graphite-statsd.conf @@ -3,6 +3,13 @@ server { root /opt/graphite/static; index index.html; + location /nginx_status { + stub_status on; + access_log off; + allow 127.0.0.1; + deny all; + } + location /media { # django admin static files alias /usr/local/lib/python3.6/dist-packages/django/contrib/admin/media/; diff --git a/conf/etc/service/collectd/run b/conf/etc/service/collectd/run new file mode 100644 index 0000000..57db6a3 --- /dev/null +++ b/conf/etc/service/collectd/run @@ -0,0 +1,4 @@ +#!/bin/bash + +[[ -n ${COLLECTD} ]] || exit 1 +exec /usr/sbin/collectd -f -C /etc/collectd/collectd.conf \ No newline at end of file