146 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
	
		
			4.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
h = repo.libs.hashable.hashable
 | 
						|
 | 
						|
defaults = {
 | 
						|
    'apt': {
 | 
						|
        'packages': {
 | 
						|
            'telegraf': {},
 | 
						|
            # needed by crystal plugins:
 | 
						|
            'libgc-dev': {},
 | 
						|
            'libevent-dev': {},
 | 
						|
        },
 | 
						|
        'sources': {
 | 
						|
            'influxdata': {
 | 
						|
                'urls': {
 | 
						|
                    'https://repos.influxdata.com/debian',
 | 
						|
                },
 | 
						|
                'suites': {
 | 
						|
                    'stable',
 | 
						|
                },
 | 
						|
                'components': {
 | 
						|
                    'main',
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    },
 | 
						|
    'telegraf': {
 | 
						|
        'config': {
 | 
						|
            'agent': {
 | 
						|
                'hostname': node.name,
 | 
						|
                'collection_jitter': '0s',
 | 
						|
                'flush_interval': '15s',
 | 
						|
                'flush_jitter': '0s',
 | 
						|
                'interval': '15s',
 | 
						|
                'metric_batch_size': 1000,
 | 
						|
                'metric_buffer_limit': 10000,
 | 
						|
                'omit_hostname': False,
 | 
						|
                'round_interval': True,
 | 
						|
            },
 | 
						|
            'inputs': {
 | 
						|
                'cpu': {h({
 | 
						|
                    'collect_cpu_time': False,
 | 
						|
                    'percpu': True,
 | 
						|
                    'report_active': False,
 | 
						|
                    'totalcpu': True,
 | 
						|
                })},
 | 
						|
                'disk': {h({
 | 
						|
                    'ignore_fs': [
 | 
						|
                        'tmpfs',
 | 
						|
                        'devtmpfs',
 | 
						|
                        'devfs',
 | 
						|
                        'iso9660',
 | 
						|
                        'overlay',
 | 
						|
                        'aufs',
 | 
						|
                        'squashfs',
 | 
						|
                    ],
 | 
						|
                })},
 | 
						|
                'procstat': {h({
 | 
						|
                    'interval': '60s',
 | 
						|
                    'pattern': '.',
 | 
						|
                    'fieldinclude': [
 | 
						|
                        'cpu_usage',
 | 
						|
                        'memory_rss',
 | 
						|
                    ],
 | 
						|
                })},
 | 
						|
                'diskio': {h({
 | 
						|
                    'device_tags': ["ID_PART_ENTRY_NUMBER"],
 | 
						|
                })},
 | 
						|
                'kernel': {h({})},
 | 
						|
                'mem': {h({})},
 | 
						|
                'processes': {h({})},
 | 
						|
                'swap': {h({})},
 | 
						|
                'system': {h({})},
 | 
						|
                'net': {h({})},
 | 
						|
                'exec': {
 | 
						|
                    h({
 | 
						|
                        'commands': [
 | 
						|
                            f'sudo /usr/local/share/telegraf/procio',
 | 
						|
                        ],
 | 
						|
                        'data_format': 'influx',
 | 
						|
                        'interval': '20s',
 | 
						|
                    }),
 | 
						|
                    h({
 | 
						|
                        'commands': [
 | 
						|
                            f'/usr/local/share/telegraf/pressure_stall',
 | 
						|
                        ],
 | 
						|
                        'data_format': 'influx',
 | 
						|
                        'interval': '10s',
 | 
						|
                    }),
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    },
 | 
						|
    'grafana_rows': {
 | 
						|
        'cpu',
 | 
						|
        'mem',
 | 
						|
        'disk_io',
 | 
						|
        'disk_usage',
 | 
						|
        'net_io',
 | 
						|
        'proc_cpu_ram',
 | 
						|
        'proc_io',
 | 
						|
    },
 | 
						|
    'sudoers': {
 | 
						|
        'telegraf': {'/usr/local/share/telegraf/procio'},
 | 
						|
    },
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'telegraf/config/outputs/influxdb_v2',
 | 
						|
)
 | 
						|
def influxdb(metadata):
 | 
						|
    influxdb_metadata = repo.get_node(metadata.get('telegraf/influxdb_node')).metadata.get('influxdb')
 | 
						|
 | 
						|
    return {
 | 
						|
        'telegraf': {
 | 
						|
            'config': {
 | 
						|
                'outputs': {
 | 
						|
                    'influxdb_v2': [{
 | 
						|
                        'urls': [f"http://{influxdb_metadata['hostname']}:{influxdb_metadata['port']}"],
 | 
						|
                        'token': str(influxdb_metadata['writeonly_token']),
 | 
						|
                        'organization': influxdb_metadata['org'],
 | 
						|
                        'bucket': influxdb_metadata['bucket'],
 | 
						|
                    }]
 | 
						|
                },
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 | 
						|
 | 
						|
 | 
						|
# crystal based (procio, pressure_stall):
 | 
						|
@metadata_reactor.provides(
 | 
						|
    'apt/packages/libpcre2-8-0',
 | 
						|
    'apt/packages/libpcre3',
 | 
						|
)
 | 
						|
def libpcre(metadata):
 | 
						|
    if node.os == 'debian' and node.os_version >= (13,):
 | 
						|
        libpcre_package = 'libpcre2-8-0'
 | 
						|
    else:
 | 
						|
        libpcre_package = 'libpcre3'
 | 
						|
 | 
						|
    return {
 | 
						|
        'apt': {
 | 
						|
            'packages': {
 | 
						|
                libpcre_package: {},
 | 
						|
            },
 | 
						|
        },
 | 
						|
    }
 |