Configuration Example
Full configuration example
---
# Cavaliba / cmt_monitor / conf.yml
# CMT Version: 2.0beta
# Example configuration / template
# Global section
# --------------
global:
cmt_group: cavaliba
cmt_node: vmxupm
cmt_node_env: dev
cmt_node_role: dev_cmt
cmt_node_location: France
enable: yes
enable_pager: yes
business_hours: 08:00:00 18:00:00
#conf_url: http://localhost/txt/
pager_rate_limit: 3600
max_execution_time: 55
load_confd: yes
alert_max_level: warn
alert_delay: 90
tags: demo os=linux os_ver=debian10
# Metrology section
# -----------------
metrology_servers:
graylog_test1:
type: graylog_udp_gelf
host: 10.10.10.13
port: 12201
enable: yes
graylog_test2:
type: graylog_http_gelf
url: http://10.10.10.13:8080/gelf
ssl_verify: yes
enable: yes
elastic_test:
type: elastic_http_json
url: http://10.10.10.51:9200/cmt/data/?pipeline=timestamp
ssl_verify: yes
enable: yes
# CMT V1.7+ ; compatible with influxdb V1 & V2
influxdb_test:
type: influxdb
# V1
url: http://10.10.10.13:8086/write?db=cmt
# V2
# url:
# msec, sec, nsec ; anything else, no timestamp
time_format: msec
batch: yes
send_tags: yes
token: toto
#username: cmt
#password : cmt
ssl_verify: yes
enable: yes
# Pager section
# -------------
# type : team_channel, teams (idem), pagerduty
# mode : managed (ratelimit, hysteresis by CMT), allnotifications
pagers:
myteams:
type: teams
mode: managed
url: https://outlook.office.com/webhook/xxxxx/IncomingWebhook/yyyyyyyyyyyyyyy
enable: yes
mypagerduty:
type: pagerduty
mode: allnotifications
url: https://events.pagerduty.com/v2/enqueue
key: XXXXXXXXXXXXXXXXXXXXXXXx
enable: yes
# checks section
# --------------
# module_name:
#
# checkname:
# [enable] : timerange ; default yes ; yes, no, before, after, hrange, ho, hno
# [enable_pager] : timerange ; default NO ; need global/pager to be enabled ; sent if alert found
# [alert_max_level] : alert, warn, notice, none (scale down) ; overwrites global & module entry
# [alert_delay] : delay before transition from normal to alert (if alert) ; seconds ; DEFAULT 120
# [frequency] : min seconds between runs ; needs --cron in ARGS ; overrides module config
# [root_required] : [yes|no(default)] - new 1.4.0 - is root privilege manadatory for this check ?
# [tags] : tag1 tag2[=value] ... ; list of tags ; no blank space aroung optional "=value"
# arg1 : specific to module (see doc for each module)
# arg2 : specific to module
# (...)
load:
myload:
enable: yes
alert_max_level: alert
severity_max: warning
threshold1: 10.3
threshold5: 8.4
threshold15: 4.4
tags: local1 local2=43
cpu:
mycpu:
enable: yes
alert_max_level: alert
severity_max: warning
memory:
mymemory:
enable: yes
alert_max_level: alert
frequency: 10
# percent
threshold: 80.5
severity_max: warning
boottime:
myboottime:
enable: yes
alert_max_level: alert
# days
threshold: 180
severity_max: warning
swap:
myswap:
enable: yes
alert_max_level: warn
# percent
threshold: 11.3
severity_max: warning
disk:
disk_root:
path: /
alert: 80
severity_max: warning
disk_boot:
path: /boot
alert: 90
severity_max: warning
# ---------
url:
www.cavaliba.com:
enabled: after 2020-01-01
url: https://www.cavaliba.com/
pattern: "Cavaliba"
allow_redirects: yes
ssl_verify: yes
#host: toto
severity_max: warning
www_non_existing:
enabled: after 2020-01-01
url: http://www.nonexisting/
#pattern: ""
severity_max: warning
google:
url: https://www.google.com/
severity_max: warning
yahoo:
url: https://www.yahoo.com/
allow_redirects: yes
ssl_verify: yes
severity_max: warning
via_proxy_cavaliba:
enabled: yes
url: https://www.cavaliba.com/
http_proxy: http://72.25.7.140:8080
severity_max: warning
url_noenv_proxy:
url: http://www.monip.org/
http_proxy: noenv
severity_max: warning
url_test_timeout:
url: http://slowwly.robertomurray.co.uk/delay/4000/url/http://google.co.uk
timeout: 2
severity_max: warning
# ---------
mount:
mount_root:
path: /
severity_max: warning
mount_mnt:
path: /mnt
severity_max: warning
# ---------
process:
redis:
psname: redis
enable_pager: no
severity_max: warning
apache:
psname: httpd
severity_max: warning
cron:
psname: cron
search_arg: "-f"
severity_max: warning
ssh:
psname: sshd
severity_max: warning
ntp:
psname: ntpd
severity_max: warning
mysql:
psname: mysqld
severity_max: warning
php-fpm:
psname: php-fpm
enable_pager: yes
severity_max: warning
# ---------
ping:
ping_vm1:
host: 192.168.0.1
severity_max: warning
ping_locahost:
host: localhost
severity_max: warning
www.google.com:
host: www.google.com
severity_max: warning
wwwtest:
host: www.test.com
severity_max: warning
badname:
host: www.averybadnammme_indeed.com
severity_max: warning
# ---------
folder:
test_recursive100:
path: /opt/cmt/testdata/arbo100
severity_max: critical
alert_max_level: alert
recursive: yes
test_extension:
path: /opt/cmt/testdata
severity_max: warning
recursive: yes
filter_extension: ".conf .hl7"
test_regexp:
path: /opt/cmt/testdata
severity_max: warning
recursive: yes
filter_regexp: '^Makefile$'
test_regexp_no_recurse:
path: /opt/cmt/testdata
severity_max: warning
recursive: no
filter_regexp: '^Makefile$'
test_regexp_ext:
path: /opt/cmt/testdata
severity_max: warning
recursive: yes
filter_regexp: '.*.conf$'
test_wrong_target:
path: /opt/cmt/testdata
severity_max: warning
target:
is_blabla:
test_hasfile:
path: /opt/cmt/testdata
severity_max: error
recursive: no
target:
has_files:
- secret.pdf
#- secret2.pdf
test_age_min:
path: /opt/cmt/testdata
severity_max: error
target:
age_min: 1000
test_age_max:
path: /opt/cmt/testdata
severity_max: notice
target:
age_max: 300
test_files_min:
path: /opt/cmt/testdata
severity_max: warning
target:
files_min: 3
test_files_max:
path: /opt/cmt/testdata
severity_max: warning
target:
files_max: 10
test_size_min:
path: /opt/cmt/testdata
severity_max: warning
target:
size_min: 100000
test_size_max:
path: /opt/cmt/testdata
severity_max: error
target:
size_max: 10
test_has_recent:
path: /opt/cmt/testdata
target:
has_recent: 3600
severity_max: warning
test_has_old:
path: /opt/cmt/testdata
target:
has_old: 86400
severity_max: warning
test_missing:
path: /opt/cmt/testdata/missing
severity_max: warning
test_missing:
path: /opt/cmt/testdata/file_missing.txt
severity_max: warning
test_nostore:
path: /opt/cmt/testdata/file.txt
recursive: yes
no_store: yes
severity_max: warning
folder_root:
path: /root
root_required: yes
severity_max: warning
# ---------
certificate:
cert_google:
hostname: google.com
port: 443
alert_in: 1 week
warning_in: 3 months
notice_in: 6 months
severity_max: warning
duck:
hostname: duckduckgo.com
alert_in: 1 week
severity_max: warning
broken:
hostname: duckduckgo.com
port: 80
alert_in: 2 week
severity_max: warning
yahoo:
hostname: yahoo.com
port: 443
alert_in: 2 week
severity_max: warning
# ---------
socket:
redis:
socket: local tcp 6379
#socket: local tcp port | remote tcp host port
connect: yes
#send:
#pattern:
severity_max: warning
www_google:
socket: remote www.google.com tcp 443
connect: yes
#send:
#pattern:
severity_max: warning
send:
test_token1:
attribute: test
comment: "a test comment for token1 - cmt_test will be created in elastic"
unit: "no_unit"
severity_max: warning
sendfile:
mysendfile:
jsonfile: /opt/cmt/demo.json
frequency: 3
mysql:
mydb:
defaults_file: /opt/cmt/mysql.cnf
# [client]
# host = 127.0.0.1
# user = root
# password = xxxxxxx
# port = 3306
# socket = /var/run/mysqld/mysqld.sock
is_slave: yes
max_behind: 300
alert_max_level: notice
alert_delay: 300
severity_max: warning
# -------------------------------------
# timerange field (from documentation)
# -------------------------------------
# - yes
# - no
# - after YYYY-MM-DD hh:mm:ss
# - before YYYY-MM-DD hh:mm:ss
# - hrange hh:mm:ss hh:mm:ss
# - ho (8h30/18h mon>fri) - business hours
# - hno (! (8h30/18h mon>fri)) - non business hours
# ------------------------------------
# conf.d/*.yml also included with :
# - main conf has higher priority
# - first level lists merged
# ------------------------------------