sansible.rsyslog

Rsyslog

Master: Status budowy Rozwój: Status budowy

Ta rola instaluje rsyslog v8 do wysyłania logów.

Aby uzyskać więcej informacji na temat rsyslog, odwiedź dokumentację rsyslog.

Instalacja i zależności

Aby zainstalować, uruchom ansible-galaxy install sansible.rsyslog lub dodaj to do swojego roles.yml

- name: sansible.rsyslog
  version: v3.0

a następnie uruchom ansible-galaxy install -p ./roles -r roles.yml

Tagi

Ta rola używa dwóch tagów: build i configure

  • build - Instaluje Rsyslog z wszystkimi zależnościami.

Wbudowane konfiguracje logów

Kilka wbudowanych konfiguracji jest dołączonych do wysyłania plików logów do Logstash. Te wbudowane konfiguracje są zaprojektowane dla określonych formatów plików logów i zawsze wychodzą w formacie JSON. Możesz zobaczyć przykładowe ustawienia dla każdej wbudowanej obsługi w pliku defaults/main.yml pod sekcją builtin_configs.

Pliki syslog

Domyślnie wiadomości syslog są wysyłane w formacie JSON, nie jest wymagana dodatkowa konfiguracja.

Wiadomości syslog są wysyłane w następującym formacie:

  • typ - zawsze syslog
  • host - nazwa hosta maszyny źródłowej
  • znacznik czasu - data w formacie RFC-3339
  • wersja - zawsze 2 dla logów JSON
  • rola - to pole app_name z konfiguracji ról rsyslog
  • wiadomość - sama linia logu
  • priorytet - numer poziomu serwisu syslog
  • program - nazwa usługi, która wygenerowała wiadomość
  • obiekt - obiekt syslog
  • poziom - nazwa poziomu serwisu syslog
{
  "type": "syslog",
  "host": "192.168.1.1",
  "timestamp": "2017-10-21T14:29:30.739200+00:00",
  "@version": "2",
  "role": "some_application",
  "message": "Coś się wydarzyło",
  "priority": "3",
  "program": "some-local-service",
  "facility": "daemon",
  "severity": "err"
}

Pliki logów autoryzacji

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_application_logs_enabled: true

Wysyła wiadomości z fachu auth i authpriv, używa tej samej szablonu co wiadomości syslog, ustawiając pole type na authlog:

{
  "type": "authlog",
  "host": "192.168.1.1",
  "timestamp": "2018-01-09T10:45:01.117615+00:00",
  "@version": "2",
  "role": "some_application",
  "message": " pam_unix(cron:session): sesja zakończona dla użytkownika some_user",
  "priority": "6",
  "program": "CRON",
  "facility": "authpriv",
  "severity": "info"
}

Pliki logów w formacie tekstowym

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_application_logs_enabled: true
sansible_rsyslog_builtin_configs_application_logs_logs:
  - path: "/var/log/some_log.log"
    # typ domyślnie ustawia się na application_log, jeśli nie określono
    options:
      type: some_application_log

Wbudowana aplikacja_logs jest zaprojektowana do obsługi plików logów w formacie tekstowym. Linie w tych plikach logów są wysyłane bez zmian do Logstash w następującym formacie JSON:

  • typ - pole typ z konfiguracji plików logów, użyteczne do filtrów Logstash
  • host - nazwa hosta maszyny źródłowej
  • znacznik czasu - data w formacie RFC-3339
  • wersja - zawsze 1 dla logów tekstowych
  • rola - to pole app_name z konfiguracji ról rsyslog
  • sourcefile - lokalizacja pliku logu, z którego pochodzi linia
  • wiadomość - sama linia logu

Na przykład:

{
  "type": "application_log",
  "host": "192.168.1.1",
  "timestamp": "2017-10-21T13:58:40.098660+00:00",
  "@version": "1",
  "role": "some_application_log",
  "sourcefile": "/var/log/some_log.log",
  "message": "Linia logu w formie tekstowej"
}

Pliki logów w formacie JSON

sansible_rsyslog_app_name: some_application
sansible_rsyslog_builtin_configs_json_logs_enabled: true
sansible_rsyslog_builtin_configs_json_logs_logs:
  - path: "/var/log/some_log.log"
    options:
      type: some_application_log

Wbudowana aplikacja json_logs jest zaprojektowana do obsługi plików logów w formacie JSON, wszystkie pola są przesyłane jako JSON z dodanymi dodatkowymi danymi:

  • typ - pole typ z konfiguracji plików logów, użyteczne do filtrów Logstash
  • host - nazwa hosta maszyny źródłowej
  • wersja - zawsze 2 dla logów JSON
  • rola - to pole app_name z konfiguracji ról rsyslog
  • sourcefile - lokalizacja pliku logu, z którego pochodzi linia

Na przykład, mając linię logu:

{ "message": "Jakaś wiadomość logu", "datetime": "2017-01-01 00:00:00", "level": "info" }

Będzie ona przesyłana jako:

{
  "type": "some_application_log",
  "host": "192.168.1.1",
  "@version": "2",
  "role": "some_application",
  "sourcefile": "/var/log/some_log.log",
  "message": "Jakaś wiadomość logu",
  "datetime": "2017-01-01 00:00:00",
  "level": "info"
}

Pliki logów dostępu Nginx

Wbudowana aplikacja nginx_access_logs zasadniczo jest taka sama jak wbudowana aplikacja json_logs, jedyną różnicą jest to, że pole typ jest twardo ustalone na nginx-access-logs.

Aby renderować logi dostępu Nginx w formacie JSON, możesz użyć poniższej konfiguracji w nginx.conf:

log_format main '{ '
    '"http_host": "$http_host", '
    '"clientip": "$remote_addr", '
    '"datetime": "$time_iso8601", '
    '"verb": "$request_method", '
    '"request_full": "$request", '
    '"response": "$status", '
    '"response_length": "$body_bytes_sent", '
    '"request_length": "$request_length", '
    '"referrer": "$http_referer", '
    '"agent": "$http_user_agent", '
    '"request_time": "$request_time", '
    '"upstream_time": "$upstream_response_time", '
    '"user_id": "$http_x_user", '
    '"request_id": "$http_x_request_id" '
'}';

access_log  /var/log/nginx/access.log main;

Logi z kontenerów Docker

Konfiguracje logów z kontenerów Docker mają na celu dodanie ich do instancji kontenera ECS. Konfiguracja tworzy pliki gniazd unixowych na hoście, do których docker przesyła logi generowane przez uruchomione kontenery.

Logi w formacie tekstowym

sansible_rsyslog_builtin_configs_docker_application_logs_enabled: true

Ta konfiguracja tworzy gniazdo w /var/run/rsyslog/text.sock Konfiguracja logowania w definicji zadania aplikacji powinna być następująca:

"LogConfiguration": {
    "LogDriver": "syslog",
    "Options": {
        "tag": { "Ref": "ServiceName" },
        "syslog-address": "unixgram:///var/run/docker/text.sock"
    },
}

Logi JSON

sansible_rsyslog_builtin_configs_docker_json_logs_enabled: true

Ta konfiguracja tworzy gniazdo w /var/run/rsyslog/json.sock Konfiguracja logowania w definicji zadania aplikacji powinna być następująca:

"LogConfiguration": {
    "LogDriver": "syslog",
    "Options": {
        "tag": { "Ref": "ServiceName" },
        "syslog-address": "unixgram:///var/run/docker/json.sock"
    },
}

Logi tekstowe lub JSON przez Journald

sansible_rsyslog_builtin_configs_docker_journald_logs_enabled: false

Ta konfiguracja łączy się i nasłuchuje usługi journald. Będzie przetwarzać tylko pliki logów dla kontenerów, ignorując inne wpisy logów w journald. Zarówno JSON, jak i tekstowe dane wyjściowe z kontenerów mogą być przetwarzane. Dla podstawowego logowania konfiguracja logowania w definicji zadania aplikacji powinna być następująca:

"LogConfiguration": {
    "LogDriver": "journald"
}

Dla wdrożeń ECS istnieje możliwość rozszerzenia metadanych dla wpisów logów, włączając:

sansible_rsyslog_custom_ecs_properties: yes

Jeśli to jest włączone, konfiguracja logowania w definicji zadania aplikacji powinna wyglądać następująco:

"LogConfiguration": {
    "LogDriver": "journald",
    "Log-Opts" : {
        "labels": "role,ecs_task_container,app_version"
    }
}

Przykłady

Aby zainstalować:

- name: Niektóre aplikacje
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_builtin_configs_application_logs_enabled: true
      sansible_rsyslog_builtin_configs_application_logs_logs:
        - path: "/home/application_user/app_log.log"
      sansible_rsyslog_builtin_configs_json_logs_enabled: true
      sansible_rsyslog_builtin_configs_json_logs_logs:
        - path: "/home/application_user/app_log_json.log"
          options:
            type_tag: "application_log"
      sansible_rsyslog_builtin_configs_nginx_access_logs_enabled: true
      sansible_rsyslog_builtin_configs_nginx_access_logs_logs:
        - path: "/var/log/nginx/application_access.log"

Istnieją globalne domyślne ustawienia, które są stosowane do plików konfiguracyjnych, można je zobaczyć w vars/main.yml. Aby nadpisać lub dodać jakiekolwiek dodatkowe ustawienia, można użyć zmiennych sansible_rsyslog_config_global, sansible_rsyslog_config_imfile, sansible_rsyslog_config_main_queue oraz sansible_rsyslog_config_omfwd:

- name: Niektóre aplikacje
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_builtin_configs_application_logs_enabled: true
      sansible_rsyslog_builtin_configs_application_logs_logs:
        - path: "/home/application_user/app_log.log"
      sansible_rsyslog_builtin_configs_json_logs_enabled: true
      sansible_rsyslog_builtin_configs_json_logs_logs:
        - path: "/home/application_user/app_log_json.log"
          options:
            type_tag: "application_log"
      sansible_rsyslog_builtin_configs_nginx_access_logs_enabled: true
      sansible_rsyslog_builtin_configs_nginx_access_logs_logs:
        - path: "/var/log/nginx/application_access.log"
      sansible_rsyslog_config_global:
        maxMessageSize: 32K
        oversizemsg.input.mode: accept
      sansible_rsyslog_config_imfile:
        reopenOnTruncate: "on"
      sansible_rsyslog_config_main_queue:
        queue.size: 100000
      sansible_rsyslog_config_omfwd:
        action.resumeRetryCount: 10

Aby zainstalować bez domyślnej konfiguracji:

- name: Niektóre aplikacje
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_app_name: default_app
      sansible_rsyslog_default_config: no

Aby zainstalować konkretne wersje pakietów:

- name: Niektóre aplikacje
  hosts: "{{ hosts }}"

  roles:
    - role: sansible.rsyslog
      sansible_rsyslog_version: "8.30*"
      sansible_rsyslog_version_libfastjson4: "0.99.*"
      sansible_rsyslog_version_mmjsonparse: "8.30.*"
Zainstaluj
ansible-galaxy install sansible.rsyslog
Licencja
mit
Pobrania
13.1k
Właściciel
See https://github.com/sansible/sansible for more information