new type: __prometheus_exporter (#566)
This commit is contained in:
		
					parent
					
						
							
								7564038f04
							
						
					
				
			
			
				commit
				
					
						a9f338b6a5
					
				
			
		
					 6 changed files with 178 additions and 0 deletions
				
			
		
							
								
								
									
										63
									
								
								cdist/conf/type/__prometheus_exporter/files/blackbox.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								cdist/conf/type/__prometheus_exporter/files/blackbox.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					modules:
 | 
				
			||||||
 | 
					  http_2xx:
 | 
				
			||||||
 | 
					    prober: http
 | 
				
			||||||
 | 
					    timeout: 3s
 | 
				
			||||||
 | 
					    http:
 | 
				
			||||||
 | 
					      method: GET
 | 
				
			||||||
 | 
					      no_follow_redirects: false
 | 
				
			||||||
 | 
					      fail_if_ssl: false
 | 
				
			||||||
 | 
					      fail_if_not_ssl: false
 | 
				
			||||||
 | 
					  # http_post_2xx:
 | 
				
			||||||
 | 
					  #   prober: http
 | 
				
			||||||
 | 
					  #   timeout: 5s
 | 
				
			||||||
 | 
					  #   http:
 | 
				
			||||||
 | 
					  #     method: POST
 | 
				
			||||||
 | 
					  #     headers:
 | 
				
			||||||
 | 
					  #       Content-Type: application/json
 | 
				
			||||||
 | 
					  #     body: '{}'
 | 
				
			||||||
 | 
					  # tcp_connect_v4_example:
 | 
				
			||||||
 | 
					  #   prober: tcp
 | 
				
			||||||
 | 
					  #   timeout: 5s
 | 
				
			||||||
 | 
					  #   tcp:
 | 
				
			||||||
 | 
					  #     protocol: "tcp4"
 | 
				
			||||||
 | 
					  # irc_banner_example:
 | 
				
			||||||
 | 
					  #   prober: tcp
 | 
				
			||||||
 | 
					  #   timeout: 5s
 | 
				
			||||||
 | 
					  #   tcp:
 | 
				
			||||||
 | 
					  #     query_response:
 | 
				
			||||||
 | 
					  #       - send: "NICK prober"
 | 
				
			||||||
 | 
					  #       - send: "USER prober prober prober :prober"
 | 
				
			||||||
 | 
					  #       - expect: "PING :([^ ]+)"
 | 
				
			||||||
 | 
					  #         send: "PONG ${1}"
 | 
				
			||||||
 | 
					  #       - expect: "^:[^ ]+ 001"
 | 
				
			||||||
 | 
					  # icmp_example:
 | 
				
			||||||
 | 
					  #   prober: icmp
 | 
				
			||||||
 | 
					  #   timeout: 5s
 | 
				
			||||||
 | 
					  #   icmp:
 | 
				
			||||||
 | 
					  #     protocol: "icmp"
 | 
				
			||||||
 | 
					  #     preferred_ip_protocol: "ip4"
 | 
				
			||||||
 | 
					  # dns_udp_example:
 | 
				
			||||||
 | 
					  #   prober: dns
 | 
				
			||||||
 | 
					  #   timeout: 5s
 | 
				
			||||||
 | 
					  #   dns:
 | 
				
			||||||
 | 
					  #     query_name: "www.prometheus.io"
 | 
				
			||||||
 | 
					  #     query_type: "A"
 | 
				
			||||||
 | 
					  #     valid_rcodes:
 | 
				
			||||||
 | 
					  #     - NOERROR
 | 
				
			||||||
 | 
					  #     validate_answer_rrs:
 | 
				
			||||||
 | 
					  #       fail_if_matches_regexp:
 | 
				
			||||||
 | 
					  #       - ".*127.0.0.1"
 | 
				
			||||||
 | 
					  #       fail_if_not_matches_regexp:
 | 
				
			||||||
 | 
					  #       - "www.prometheus.io.\t300\tIN\tA\t127.0.0.1"
 | 
				
			||||||
 | 
					  #     validate_authority_rrs:
 | 
				
			||||||
 | 
					  #       fail_if_matches_regexp:
 | 
				
			||||||
 | 
					  #       - ".*127.0.0.1"
 | 
				
			||||||
 | 
					  #     validate_additional_rrs:
 | 
				
			||||||
 | 
					  #       fail_if_matches_regexp:
 | 
				
			||||||
 | 
					  #       - ".*127.0.0.1"
 | 
				
			||||||
 | 
					  # dns_tcp_example:
 | 
				
			||||||
 | 
					  #   prober: dns
 | 
				
			||||||
 | 
					  #   dns:
 | 
				
			||||||
 | 
					  #     protocol: "tcp" # accepts "tcp/tcp4/tcp6/udp/udp4/udp6", defaults to "udp"
 | 
				
			||||||
 | 
					  #     preferred_ip_protocol: "ip4" # used for "udp/tcp", defaults to "ip6"
 | 
				
			||||||
 | 
					  #     query_name: "www.prometheus.io"
 | 
				
			||||||
							
								
								
									
										63
									
								
								cdist/conf/type/__prometheus_exporter/man.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								cdist/conf/type/__prometheus_exporter/man.rst
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,63 @@
 | 
				
			||||||
 | 
					cdist-type__prometheus_exporter(7)
 | 
				
			||||||
 | 
					==================================
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NAME
 | 
				
			||||||
 | 
					----
 | 
				
			||||||
 | 
					cdist-type__prometheus_exporter - install some Prometheus exporters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DESCRIPTION
 | 
				
			||||||
 | 
					-----------
 | 
				
			||||||
 | 
					Install and configure some exporters to be used by the Prometheus monitoring system (https://prometheus.io/).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This type creates a daemontools-compatible service directory under /service/$__object_id.
 | 
				
			||||||
 | 
					Daemontools (or something compatible) must be installed (in particular, the command `svc` must be executable).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This type installs and builds the latest version from git, using go get. A recent version of golang as well
 | 
				
			||||||
 | 
					as build tools (make, g++, etc.) must be available.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REQUIRED PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					None
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONAL PARAMETERS
 | 
				
			||||||
 | 
					-------------------
 | 
				
			||||||
 | 
					exporter
 | 
				
			||||||
 | 
					   Which exporter to install and configure. Default: $__object_id.
 | 
				
			||||||
 | 
					   Currently supported: node, blackbox, ceph
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BOOLEAN PARAMETERS
 | 
				
			||||||
 | 
					------------------
 | 
				
			||||||
 | 
					add-consul-service
 | 
				
			||||||
 | 
					   Add this exporter as a Consul service for automatic service discovery.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EXAMPLES
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.. code-block:: sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    __daemontools
 | 
				
			||||||
 | 
					    __golang_from_vendor --version 1.9  # required for prometheus and many exporters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    require="__daemontools __golang_from_vendor" __prometheus_exporter node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SEE ALSO
 | 
				
			||||||
 | 
					--------
 | 
				
			||||||
 | 
					:strong:`cdist-type__prometheus_server`\ (7), :strong:`cdist-type__daemontools`\ (7),
 | 
				
			||||||
 | 
					:strong:`cdist-type__golang_from_vendor`\ (7),
 | 
				
			||||||
 | 
					Prometheus documentation: https://prometheus.io/docs/introduction/overview/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AUTHORS
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Kamila Součková <kamila--@--ksp.sk>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPYING
 | 
				
			||||||
 | 
					-------
 | 
				
			||||||
 | 
					Copyright \(C) 2017 Kamila Součková. You can redistribute it
 | 
				
			||||||
 | 
					and/or modify it under the terms of the GNU General Public License as
 | 
				
			||||||
 | 
					published by the Free Software Foundation, either version 3 of the
 | 
				
			||||||
 | 
					License, or (at your option) any later version.
 | 
				
			||||||
							
								
								
									
										50
									
								
								cdist/conf/type/__prometheus_exporter/manifest
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								cdist/conf/type/__prometheus_exporter/manifest
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,50 @@
 | 
				
			||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export GOBIN=/opt/gocode/bin  # where to find go binaries
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exporter="$(cat $__object/parameter/exporter)"
 | 
				
			||||||
 | 
					[ -z "$exporter" ] && exporter="$__object_id"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__user prometheus --system
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					case $exporter in
 | 
				
			||||||
 | 
						node)
 | 
				
			||||||
 | 
							TEXTFILES=/service/node-exporter/textfiles  # path for the textfiles collector
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							port=9100
 | 
				
			||||||
 | 
							run="setuidgid prometheus $GOBIN/node_exporter -web.listen-address :$port -collector.textfile.directory=$TEXTFILES"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							require="__golang_from_vendor" __go_get github.com/prometheus/node_exporter
 | 
				
			||||||
 | 
							__directory $TEXTFILES --parents --mode 777
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
						blackbox)
 | 
				
			||||||
 | 
							port=9115
 | 
				
			||||||
 | 
							run="setuidgid prometheus $GOBIN/blackbox_exporter -config.file=/service/blackbox-exporter/blackbox.yml"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							require="__daemontools_service/blackbox-exporter __user/prometheus" __config_file "/service/blackbox-exporter/blackbox.yml" \
 | 
				
			||||||
 | 
								--source $__type/files/blackbox.yml \
 | 
				
			||||||
 | 
								--group prometheus --mode 640 \
 | 
				
			||||||
 | 
								--onchange "svc -h /service/blackbox-exporter"
 | 
				
			||||||
 | 
							require="__golang_from_vendor" __go_get github.com/prometheus/blackbox_exporter
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
						ceph)
 | 
				
			||||||
 | 
							port=9128
 | 
				
			||||||
 | 
							run="setuidgid ceph $GOBIN/ceph_exporter -ceph.config /etc/ceph/ceph.conf -telemetry.addr :$port"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							__package librados-dev  # dependency of ceph_exporter
 | 
				
			||||||
 | 
							require="__golang_from_vendor __package/librados-dev" __go_get github.com/digitalocean/ceph_exporter
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
						*)
 | 
				
			||||||
 | 
							echo "Unknown exporter: $exporter." >&2
 | 
				
			||||||
 | 
							exit 1
 | 
				
			||||||
 | 
						;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require="__daemontools" __daemontools_service ${exporter}-exporter --run "$run"
 | 
				
			||||||
 | 
					if [ -f "$__object/parameter/add-consul-service" ]; then
 | 
				
			||||||
 | 
						__consul_service ${exporter}-exporter --port $port --check-http "http://localhost:$port/metrics" --check-interval 10s
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#__daemontools --install-init-script
 | 
				
			||||||
 | 
					__daemontools
 | 
				
			||||||
 | 
					__golang_from_vendor --version 1.8.1  # required for many exporters
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__prometheus_exporter/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__prometheus_exporter/parameter/boolean
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					add-consul-service
 | 
				
			||||||
							
								
								
									
										1
									
								
								cdist/conf/type/__prometheus_exporter/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__prometheus_exporter/parameter/optional
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					exporter
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue