Установка Logging Operator
Logging Operator уже установлен в Nova Container Platform. Для начала работы с логированием необходимо установить следующие компоненты:
-
Fluent Bit Agent
-
Syslog-ng или FluentD
Примечание
-
Выбор между Syslog-ng и FluentD зависит от требований по передаче логов. Можно развернуть любое количество экземпляров этих сервисов, но каждый из них должен находиться в отдельном Namespace.
-
При установке модуля OpenSearch - Fluent Bit Agent и FluentD установятся автоматически.
1. Предварительные условия
-
Вы ознакомились с архитектурой и концепциями
Logging operatorвNova Container Platform. -
У вас есть доступ к кластеру с учетной записью, обладающей ролью
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes. -
Вы создали отдельное Namespace для компонентов Logging operator. Например,
logging.
2. (Опционально) Установка Fluent Bit Agent
Установите Fluent Bit Agent через kubectl или через Nova Console используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: FluentbitAgent
metadata:
name: nova-logs-fluentbit
namespace: nova-logs
spec:
tolerations:
- operator: Exists
filterKubernetes:
Kube_URL: "https://kubernetes.default.svc.cluster.local:443"
tls.verify: "Off"
inputTail:
Refresh_Interval: "60"
Rotate_Wait: "5"
Представленный манифест выполняет только предварительную настройку агентов, а не их установку. Агенты устанавливаются автоматически лишь после установки Syslog-ng или FluentD. |
3. Настройка сбора логов через Syslog-ng
В этой части статьи описан процесс настройки отправки логов через Syslog-ng на внешний Syslog сервер.
3.1. Установка Syslog-ng
Установите Syslog-ng через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: Logging
metadata:
name: syslogng
namespace: logging
spec:
controlNamespace: logging
allowClusterResourcesFromAllNamespaces: true
syslogNG: {}
|
Опция |
3.2. Установка Output для Syslog-ng
Установите Output через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterOutput (1)
metadata:
name: random-log-output
namespace: logging
spec:
syslog:
host: 10.251.19.20 (2)
port: 514 (3)
transport: tcp (4)
| 1 | Происходит установка Output для всего кластера (Global Output). |
| 2 | Полное имя или IP адрес Syslog сервера. |
| 3 | Порт для подключения к Syslog серверу. |
| 4 | Протокол, указанный в настройках Syslog сервера. |
3.3. Установка Flow для Syslog-ng
Установите Flow через kubectl или через Nova Console используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterFlow
metadata:
name: random-log-flow
namespace: logging
spec:
globalOutputRefs:
- random-log-output
match:
regexp:
value: json.kubernetes.labels.app.kubernetes.io/instance
pattern: "*"
type: glob
|
В этом манифесте происходит установка Flow для всего кластера. Логи будут собираться со всех экземпляров и из всех Namespace. |
4. Настройка сбора логов через FluentD
В этой части статьи описан процесс настройки отправки логов через FluentD на внутренний Opensearch.
4.1. Установка FluentD
При установке модуля OpenSearch, автоматически устанавливается FluentD. В дальнейшем можно использовать его. Однако, для более гибкой настройки и управления логами, рекомендуется развернуть отдельный экземпляр FluentD.
Установка нового FluentD
Установите FluentD через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: Logging
metadata:
name: fluentd
namespace: logging
spec:
fluentd:
resources:
requests:
cpu: 1
memory: 1Gi
limits:
cpu: 2
memory: 4Gi
bufferStorageVolume:
pvc:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: ovirt-csi-sc (1)
volumeMode: Filesystem
controlNamespace: logging
allowClusterResourcesFromAllNamespaces: true (2)
| 1 | Поменяйте storageClassName на тот, что используется в кластере. |
| 2 | Опция allowClusterResourcesFromAllNamespaces добавляется, если требуется, чтобы в каждом Namespace были свои Output и Flow. |
Использование установленного FluentD
Для использования стандартного FluentD необходимо обновить существующий ресурс, чтобы он мог работать со всеми Namespace в вашем кластере.
-
Зайдите в Nova консоль.
-
Перейдите на вкладку .
-
Найдите
Kustomization. -
Перейдите на вкладку Экземпляры.
-
Зайдите в ресурс
nova-release-logs-post. -
Перейдите на вкладку YAML.
-
В блоке spec добавьте следующий patch и примените новую настройку.
spec:
patches:
- patch: |
- op: add
path: /spec/allowClusterResourcesFromAllNamespaces
value: true
target:
kind: Logging
version: v1beta1
name: nova-logs-logging
4.2. Установка Output для FluentD
Можно настроить отправку логов как на внутренний, так и на внешний OpenSearch, а также в другой сборщик логов.
Все варианты настройки можно найти в документации по CustomResourceDefinitions Output или ClusterOutput.
В данном случае настроим отправку логов на внутренний OpenSearch.
Авторизация в OpenSearch возможна как по имени и паролю, так и по сертификату и ключу.
Для авторизации по имени и паролю потребуется секрет nova-logging-credentials из Namespace nova-logs.
Для авторизации по сертификату и ключу потребуется секрет nova-opensearch из Namespace nova-logs.
В данном примере будет использоваться авторизация по имени и паролю.
-
Скопируйте секрет
nova-logging-credentialsиз Namespacenova-logsвlogging. -
Установите Output через
kubectlили через Nova Console, используя следующий манифест:apiVersion: logging.banzaicloud.io/v1beta1 kind: ClusterOutput (1) metadata: name: os-output namespace: logging spec: opensearch: buffer: flush_interval: 30s path: /buffers/all-logs retry_timeout: 96h retry_wait: 2s chunk_limit_records: 1000000 timekey: 1h flush_thread_count: 2 delayed_commit_timeout: 150s retry_max_interval: 180s chunk_limit_size: 300K flush_mode: interval logstash_prefix: nova-node-all (2) port: 9200 logstash_format: true scheme: https host: nova-logs-cluster.nova-logs.svc.cluster.local user: nova-logging ssl_verify: false reload_on_failure: true reconnect_on_error: true password: valueFrom: secretKeyRef: key: password name: nova-logging-credentials include_timestamp: true1 Происходит установка Output для всего кластера. 2 Указывается имя индекса в Opensearch, куда будут переданы логи. Индекс создастся автоматически.
4.3. Установка Flow для FluentD
Установите Flow через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow (1)
metadata:
name: os-flow
namespace: logging
spec:
globalOutputRefs:
- os-output
match:
- select:
namespaces: ["test","test-syslog"] (2)
| 1 | Происходит установка Flow для всего кластера. |
| 2 | Логи будут собираться со всех экземпляров в указанных Namespace’х. |