26 lines
		
	
	
	
		
			601 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			601 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| 
 | |
| from subprocess import check_output
 | |
| 
 | |
| 
 | |
| WARN_AT=80
 | |
| CRITICAL_AT=90
 | |
| output = []
 | |
| exitcode = 0
 | |
| 
 | |
| for line in check_output(['/usr/sbin/zpool', 'list', '-Hpo', 'name,size,alloc']).decode().splitlines():
 | |
|     pool, size, alloc = line.split('\t')
 | |
|     used_percent = int(int(alloc)/int(size)*100)
 | |
| 
 | |
|     if used_percent > CRITICAL_AT:
 | |
|         exitcode = max(exitcode, 2)
 | |
|     elif used_percent > WARN_AT:
 | |
|         exitcode = max(exitcode, 1)
 | |
| 
 | |
|     if used_percent > WARN_AT:
 | |
|         output.append(
 | |
|             f'{pool} is {used_percent}% full'
 | |
|         )
 | |
| 
 | |
| print('\n'.join(output))
 | |
| exit(exitcode)
 |