Add mtail role for thot
							parent
							
								
									7dc4c33deb
								
							
						
					
					
						commit
						e7888a6b9c
					
				| 
						 | 
					@ -63,3 +63,8 @@
 | 
				
			||||||
- hosts: redisdead.adm.crans.org
 | 
					- hosts: redisdead.adm.crans.org
 | 
				
			||||||
  roles:
 | 
					  roles:
 | 
				
			||||||
    - prometheus-node-exporter-postfix
 | 
					    - prometheus-node-exporter-postfix
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Monitor logs with mtail
 | 
				
			||||||
 | 
					- hosts: thot.adm.crans.org
 | 
				
			||||||
 | 
					  roles:
 | 
				
			||||||
 | 
					    - mtail
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,5 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Restart mtail
 | 
				
			||||||
 | 
					  service:
 | 
				
			||||||
 | 
					    name: mtail
 | 
				
			||||||
 | 
					    state: restarted
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					- name: Install mtail
 | 
				
			||||||
 | 
					  apt:
 | 
				
			||||||
 | 
					    update_cache: true
 | 
				
			||||||
 | 
					    name: mtail
 | 
				
			||||||
 | 
					  register: apt_result
 | 
				
			||||||
 | 
					  retries: 3
 | 
				
			||||||
 | 
					  until: apt_result is succeeded
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Configure mtail
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: default/mtail.j2
 | 
				
			||||||
 | 
					    dest: /etc/default/mtail
 | 
				
			||||||
 | 
					  notify: Restart mtail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Copy mtail configurations
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: "mtail/{{ item }}.j2"
 | 
				
			||||||
 | 
					    dest: "/etc/mtail/{{ item }}"
 | 
				
			||||||
 | 
					  loop:
 | 
				
			||||||
 | 
					    - dhcpd.mtail
 | 
				
			||||||
 | 
					  notify: Restart mtail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Indicate role in motd
 | 
				
			||||||
 | 
					  template:
 | 
				
			||||||
 | 
					    src: update-motd.d/05-service.j2
 | 
				
			||||||
 | 
					    dest: /etc/update-motd.d/05-mtail
 | 
				
			||||||
 | 
					    mode: 0755
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					# {{ ansible_managed }}
 | 
				
			||||||
 | 
					# Set to 1 to start Mtail at boot.
 | 
				
			||||||
 | 
					ENABLED=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Log processing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# List of files to monitor (mandatory).
 | 
				
			||||||
 | 
					LOGS=/var/log/cablage/global.log
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Metrics exporting.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# HTTP port to listen on. (default "3903")
 | 
				
			||||||
 | 
					#PORT=3903
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Path to collectd unixsock to write metrics to.
 | 
				
			||||||
 | 
					#COLLECTD_SOCKETPATH=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Host:port to graphite carbon server to write metrics to.
 | 
				
			||||||
 | 
					#GRAPHITE_HOSTPORT=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Host:port to statsd server to write metrics to.
 | 
				
			||||||
 | 
					#STATSD_HOSTPORT=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Interval between metric pushes, in seconds (default 60)
 | 
				
			||||||
 | 
					#METRIC_PUSH_INTERVAL=
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Extra command-line arguments to pass to the server.
 | 
				
			||||||
 | 
					EXTRA_ARGS=""
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,143 @@
 | 
				
			||||||
 | 
					# {{ ansible_managed }}
 | 
				
			||||||
 | 
					# Copyright 2011 Google Inc. All Rights Reserved.
 | 
				
			||||||
 | 
					# This file is available under the Apache license.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Define the exported metric names.  The `by' keyword indicates the metric has
 | 
				
			||||||
 | 
					# dimensions.  For example, `request_total' counts the frequency of each
 | 
				
			||||||
 | 
					# request's "command".  The name `command' will be exported as the label name
 | 
				
			||||||
 | 
					# for the metric.  The command provided in the code below will be exported as
 | 
				
			||||||
 | 
					# the label value.
 | 
				
			||||||
 | 
					counter dhcpd_request_total by command
 | 
				
			||||||
 | 
					counter dhcpd_config_file_errors
 | 
				
			||||||
 | 
					counter dhcpd_peer_disconnects
 | 
				
			||||||
 | 
					counter dhcpd_dhcpdiscovers
 | 
				
			||||||
 | 
					counter dhcpd_bind_xid_mismatch
 | 
				
			||||||
 | 
					counter dhcpd_duplicate_lease
 | 
				
			||||||
 | 
					counter dhcpd_bad_udp_checksum
 | 
				
			||||||
 | 
					counter dhcpd_unknown_subnet
 | 
				
			||||||
 | 
					counter dhcpd_dhcpdiscover_nofree by network
 | 
				
			||||||
 | 
					counter dhcpd_unknown_lease by ip
 | 
				
			||||||
 | 
					counter dhcpd_update_rejected
 | 
				
			||||||
 | 
					counter dhcpd_failover_peer_timeout
 | 
				
			||||||
 | 
					counter dhcpd_ip_already_in_use
 | 
				
			||||||
 | 
					counter dhcpd_ip_abandoned by reason
 | 
				
			||||||
 | 
					counter dhcpd_invalid_state_transition
 | 
				
			||||||
 | 
					counter dhcpd_negative_poolreq by pool
 | 
				
			||||||
 | 
					counter dhcpd_lease_conflicts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# The `syslog' decorator defines a procedure.  When a block of mtail code is
 | 
				
			||||||
 | 
					# "decorated", it is called before entering the block.  The block is entered
 | 
				
			||||||
 | 
					# when the keyword `next' is reached.
 | 
				
			||||||
 | 
					def syslog {
 | 
				
			||||||
 | 
					  /^(?P<date>(?P<legacy_date>\w+\s+\d+\s+\d+:\d+:\d+)|(?P<rfc3339_date>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+[+-]\d{2}:\d{2}))/ +
 | 
				
			||||||
 | 
					  /\s+(?:\w+@)?(?P<hostname>[\w\.-]+)\s+(?P<application>[\w\.-]+)(?:\[(?P<pid>\d+)\])?:\s+(?P<message>.*)/ {
 | 
				
			||||||
 | 
					    # If the legacy_date regexp matched, try this format.
 | 
				
			||||||
 | 
					    len($legacy_date) > 0 {
 | 
				
			||||||
 | 
					      strptime($2, "Jan _2 15:04:05")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # If the RFC3339 style matched, parse it this way.
 | 
				
			||||||
 | 
					    len($rfc3339_date) > 0 {
 | 
				
			||||||
 | 
					      strptime($rfc3339_date, "2006-01-02T15:04:05.999999999Z07:00")
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    # Call into the decorated block
 | 
				
			||||||
 | 
					    next
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Define some pattern constants for reuse in the patterns below.
 | 
				
			||||||
 | 
					const IP /\d+(\.\d+){3}/
 | 
				
			||||||
 | 
					const MATCH_IP /(?P<ip>/ + IP + /)/
 | 
				
			||||||
 | 
					const MATCH_NETWORK /(?P<network>\d+(\.\d+){1,3}\/\d+)/
 | 
				
			||||||
 | 
					const MATCH_MAC /(?P<mac>([\da-f]{2}:){5}[\da-f]{2})/
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					@syslog {
 | 
				
			||||||
 | 
					    # Request
 | 
				
			||||||
 | 
					    /(balanced|balancing|BOOTREPLY|BOOTREQUEST|DHCPACK|DHCPDECLINE|DHCPDISCOVER|DHCPINFORM|DHCPNAK|DHCPOFFER|DHCPRELEASE|DHCPREQUEST)/ {
 | 
				
			||||||
 | 
					        # The lowercased name of the command matched in the regex is used to
 | 
				
			||||||
 | 
					        # count the frequency of each command.  An external collector can use
 | 
				
			||||||
 | 
					        # this to compute the rate of each command independently.
 | 
				
			||||||
 | 
					        dhcpd_request_total[tolower($1)]++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # DHCP Discover
 | 
				
			||||||
 | 
					        /DHCPDISCOVER from / + MATCH_MAC {
 | 
				
			||||||
 | 
					            # Counts the discovery requests.
 | 
				
			||||||
 | 
					            dhcpd_dhcpdiscovers++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /network / + MATCH_NETWORK + /: no free leases/ {
 | 
				
			||||||
 | 
					                # If the range is full, your clients may be having a bad time.
 | 
				
			||||||
 | 
					                dhcpd_dhcpdiscover_nofree[$network]++
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Config file errors
 | 
				
			||||||
 | 
					    /Configuration file errors encountered -- exiting/ {
 | 
				
			||||||
 | 
					        # Counting config parse errors can he useful for detecting bad config
 | 
				
			||||||
 | 
					        # pushes that made it to production.
 | 
				
			||||||
 | 
					        dhcpd_config_file_errors++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Peer disconnects
 | 
				
			||||||
 | 
					    /peer ([^:]+): disconnected/ {
 | 
				
			||||||
 | 
					        dhcpd_peer_disconnects++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # XID mismatches
 | 
				
			||||||
 | 
					    /bind update on / + IP + / got ack from (?P<group>\w+): xid mismatch./ {
 | 
				
			||||||
 | 
					        dhcpd_bind_xid_mismatch++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Duplicate lease
 | 
				
			||||||
 | 
					    /uid lease / + MATCH_IP + / for client / + MATCH_MAC + / is duplicate on / + MATCH_NETWORK {
 | 
				
			||||||
 | 
					        dhcpd_duplicate_lease++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Bad UDP Checksum
 | 
				
			||||||
 | 
					    /(?P<count>\d+) bad udp checksums in \d+ packets/ {
 | 
				
			||||||
 | 
					        dhcpd_bad_udp_checksum += $count
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Unknown subnet
 | 
				
			||||||
 | 
					    /DHCPDISCOVER from / + MATCH_MAC + / via / + IP + /: unknown network segment/ {
 | 
				
			||||||
 | 
					        dhcpd_unknown_subnet++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Unknown lease
 | 
				
			||||||
 | 
					    /DHCPREQUEST for / + IP + /\(/ + IP + /\) from / + MATCH_MAC + / via / + IP + /: unknown lease / + MATCH_IP {
 | 
				
			||||||
 | 
					        dhcpd_unknown_lease[$ip]++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Update rejected
 | 
				
			||||||
 | 
					    /bind update on \S+ from \S+ rejected: incoming update is less critical than the outgoing update/ {
 | 
				
			||||||
 | 
					        dhcpd_update_rejected++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /timeout waiting for failover peer \S+/ {
 | 
				
			||||||
 | 
					        dhcpd_failover_peer_timeout++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /ICMP Echo reply while lease / + IP + /valid/ {
 | 
				
			||||||
 | 
					        dhcpd_ip_already_in_use++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /unexpected ICMP Echo reply from / + IP {
 | 
				
			||||||
 | 
					        dhcpd_ip_already_in_use++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /Abandoning IP address / + IP + /: (?P<reason>.*)/ {
 | 
				
			||||||
 | 
					        dhcpd_ip_abandoned[$reason]++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /bind update on \S+ from \S+ rejected: / + IP + /: invalid state transition/ {
 | 
				
			||||||
 | 
					        dhcpd_invalid_state_transition++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /peer (?P<pool>[^:]+): Got POOLREQ, answering negatively!/ {
 | 
				
			||||||
 | 
					        dhcpd_negative_poolreq[$pool]++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /Lease conflict at/ {
 | 
				
			||||||
 | 
					        dhcpd_lease_conflicts++
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					#!/usr/bin/tail +3
 | 
				
			||||||
 | 
					# {{ ansible_managed }}
 | 
				
			||||||
 | 
					[0m> [38;5;82mmtail[0m a été déployé sur cette machine. Voir [38;5;6m/etc/mtail/[0m.
 | 
				
			||||||
		Loading…
	
		Reference in New Issue