| {%- if pillar.get('fluentd', {}).get('agent', {}).get('enabled', False) %} |
| {%- set positiondb = pillar.fluentd.agent.dir.positiondb %} |
| {%- if grains.get('init') == 'systemd' %} |
| agent: |
| plugin: |
| fluent-plugin-systemd: |
| deb: ['td-agent-additional-plugins'] |
| config: |
| label: |
| default_metric: |
| filter: |
| metric_failed_user: |
| tag: metric.failed_user |
| type: prometheus |
| metric: |
| - name: failed_logins_total |
| type: counter |
| desc: The total number of failed logins. |
| label: |
| - name: host |
| value: ${Hostname} |
| metric_out_of_memory: |
| tag: metric.out_of_memory |
| type: prometheus |
| metric: |
| - name: out_of_memory_total |
| type: counter |
| desc: The total number of OOM. |
| label: |
| - name: host |
| value: ${Hostname} |
| metric_hdd_errors_exclude: |
| tag: metric.hdd_errors |
| type: grep |
| # Regexp: https://regex101.com/r/ZRMX9j/3 |
| exclude: |
| - name: Payload |
| regexp: (virDomainNetFind|libvirt|(At|De)tach(ing)?\ volume) |
| metric_hdd_errors_parse: |
| require: |
| - metric_hdd_errors_exclude |
| tag: metric.hdd_errors |
| type: parser |
| key_name: Payload |
| parser: |
| type: regexp |
| format: '/(?<device>[sv]d[a-z]+\d*)/' |
| metric_hdd_errors: |
| tag: metric.hdd_errors |
| require: |
| - metric_hdd_errors_parse |
| type: prometheus |
| metric: |
| - name: hdd_errors_total |
| type: counter |
| desc: The total number of hdd errors. |
| label: |
| - name: host |
| value: ${Hostname} |
| - name: device |
| value: ${device} |
| systemd: |
| input: |
| systemd: |
| type: systemd |
| tag: systemd.source |
| path: /run/log/journal |
| pos_file: {{ positiondb }}/systemd.source.pos |
| entry: |
| field_map: |
| MESSAGE: 'Payload' |
| _CMDLINE: 'process' |
| _PID: 'Pid' |
| _COMM: 'programname' |
| _SYSTEMD_UNIT: 'service' |
| syslog_identifier: 'ident' |
| priority: 'Severity' |
| field_map_strict: True |
| fields_strip_underscores: True |
| fields_lowercase: True |
| filter: |
| add_severity_label: |
| tag: systemd.source |
| type: record_transformer |
| enable_ruby: true |
| record: |
| - name: severity_label |
| value: '${ {"TRACE"=>8,"DEBUG"=>7,"INFO"=>6,"NOTICE"=>5,"WARNING"=>4,"ERROR"=>3,"CRITICAL"=>2,"ALERT"=>1,"EMERGENCY"=>0}.key(record["Severity"].to_i) }' |
| - name: source |
| value: systemd |
| match: |
| rewrite_tag: |
| tag: systemd.source |
| type: rewrite_tag_filter |
| rule: |
| - name: ident |
| regexp: '^(.*)$' |
| result: $1.systemd |
| {%- if pillar.get('telegraf', {}).get('agent', {}).get('enabled', False) %} |
| push_to_telegraf: |
| require_in: |
| - push_to_default |
| tag: 'telegraf.systemd' |
| type: relabel |
| label: telegraf |
| {%- endif %} |
| push_to_default: |
| tag: '*.systemd' |
| type: copy |
| store: |
| - type: relabel |
| label: default_output |
| - type: rewrite_tag_filter |
| rule: |
| - name: Payload |
| regexp: '^Invalid user' |
| result: metric.failed_user |
| - name: Payload |
| regexp: '^Out of memory' |
| result: metric.out_of_memory |
| - name: Payload |
| regexp: >- |
| 'error.*\b[sv]d[a-z]{1,2}\d{0,3}\b.*' |
| result: metric.hdd_errors |
| - name: Payload |
| regexp: >- |
| '\b[sv]d[a-z]{1,2}\d{0,3}\b.*error' |
| result: metric.hdd_errors |
| push_to_metric: |
| tag: 'metric.**' |
| type: relabel |
| label: default_metric |
| {%- else %} |
| agent: |
| config: |
| label: |
| default_metric: |
| filter: |
| metric_hdd_errors_exclude: |
| tag: metric.hdd_errors |
| type: grep |
| # Regexp: https://regex101.com/r/ZRMX9j/3 |
| exclude: |
| - name: Payload |
| regexp: (virDomainNetFind|libvirt|(At|De)tach(ing)?\ volume) |
| metric_hdd_errors_parse: |
| require: |
| - metric_hdd_errors_exclude |
| tag: metric.hdd_errors |
| type: parser |
| key_name: Payload |
| parser: |
| type: regexp |
| format: '/(?<device>[sv]d[a-z]+\d*)/' |
| metric_hdd_errors: |
| tag: metric.hdd_errors |
| require: |
| - metric_hdd_errors_parse |
| type: prometheus |
| metric: |
| - name: hdd_errors_total |
| type: counter |
| desc: The total number of hdd errors. |
| label: |
| - name: host |
| value: ${Hostname} |
| - name: device |
| value: ${device} |
| syslog: |
| input: |
| syslog_file: |
| type: tail |
| tag: linux.syslog |
| path: /var/log/syslog |
| pos_file: {{ positiondb }}/linux_syslog.pos |
| suppress_parse_error_log: true |
| parser: |
| type: regexp |
| format: >- |
| '/(?<Payload>.*(?<device>[sv]d[a-z]{1,2}\d{0,3}).*)/' |
| match: |
| push_to_default: |
| tag: 'linux.**' |
| type: copy |
| store: |
| - type: relabel |
| label: default_output |
| - type: rewrite_tag_filter |
| rule: |
| - name: Payload |
| regexp: >- |
| 'error.*\b[sv]d[a-z]{1,2}\d{0,3}\b.*' |
| result: metric.hdd_errors |
| - name: Payload |
| regexp: >- |
| '\b[sv]d[a-z]{1,2}\d{0,3}\b.*error' |
| result: metric.hdd_errors |
| push_to_metric: |
| tag: 'metric.**' |
| type: relabel |
| label: default_metric |
| {%- endif %} |
| {%- endif %} |