Примеры использования Logging Operator
Раздел содержит примеры использования Logging Operator.
1. Отправка логов из Syslog-NG в Opensearch
В данном пункте рассказывается как настроить отправку логов из Syslog-NG в Opensearch, используя компонент Logging Operator.
Syslog-NG имеет модуль для отправки логов в ElasticSearch. Поскольку OpenSearch является ответвлением ElasticSearch, этот модуль также можно использовать для отправки логов в OpenSearch. OpenSearch поддерживает авторизацию по TLS, поэтому вы можете использовать сертификаты для настройки Output, но также доступна авторизация по имени пользователя и паролю.
1.1. Предварительные условия
-
Вы ознакомились с архитектурой и концепциями
Logging operatorвNova Container Platform. -
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes. -
Вы создали отдельное Namespace для компонентов Logging operator. Например,
logging.
1.2. Добавление секрета
-
В Nova Console перейдите на вкладку и выберите Namespace
nova-logs. -
Найдите секрет
nova-opensearchи скопируйте его в Namespace, где установлен Syslog-NG (например,logging). Этот секрет содержит сертификаты, необходимые для авторизации в Opensearch.
1.3. Установка Output для Syslog-ng
Установите Output через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterOutput (1)
metadata:
name: syslogngoutput
namespace: logging
spec:
elasticsearch:
logstash_prefix: nova-syslog (2)
url: https://nova-logs-cluster.nova-logs.svc.cluster.local:9200/_bulk
tls:
ca_file:
mountFrom:
secretKeyRef:
key: ca.crt
name: nova-opensearch
cert_file:
mountFrom:
secretKeyRef:
key: tls.crt
name: nova-opensearch
key_file:
mountFrom:
secretKeyRef:
key: tls.key
name: nova-opensearch
peer_verify: false (3)
| 1 | Происходит установка Output для всего кластера (Global Output). |
| 2 | Имя индекса в Opensearch, куда будут отправляться логи. Индекс создастся автоматически. |
| 3 | Позволяет Logging Operator работать с недоверенными сертификатами. |
1.4. Установка Flow для Syslog-ng
Установите Flow через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterFlow (1)
metadata:
name: syslogngflow
namespace: logging
spec:
globalOutputRefs:
- syslogngoutput
match:
regexp: (2)
pattern: '*'
type: glob
value: json.kubernetes.labels.app.kubernetes.io/instance
| 1 | Происходит установка Flow для всего кластера. |
| 2 | Логи будут собираться со всех экземпляров и со всех Namespace. |
2. Настройка отправки логов из NeuVector на внешний сервер Syslog
В данной статье будет рассматриваться отправка логов из NeuVector на внешний сервер Syslog средствами самого NeuVector.
2.1. Предварительные условия
-
Вы ознакомились с архитектурой и концепциями
NeuVectorвNova Container Platform. -
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes.
2.2. Настройка NeuVector
-
Откройте консоль NeuVector и перейдите на вкладку .

-
Найдите блок Syslog в нижней части страницы. Настройте параметры в соответствии с настройками внешнего Syslog сервера. В данном случае оставлен стандартный порт, выбран протокол TCP.
Выберите нужные параметры. В данном случае настроено получение всех логов с сервера, а также активирована опцияIn JSON, которая позволяет получать данные в JSON формате.
-
После настройки сгенерируйте событие в логе или просмотрите логи на внешнем сервере Syslog. В приведённом примере было настроено правило, запрещающее установку pod’а, если образ не подписан через cosign, и была сделана попытка создания pod’а.

3. Настройка отправки логов из Neuvector в Opensearch
В данной разделе описывается процесс отправки логов из NeuVector в OpenSearch с использованием Syslog-ng и Fluentd через компонент Logging Operator.
3.1. Предварительные условия
-
Вы ознакомились с архитектурой и концепциями
Logging operatorвNova Container Platform. -
Вы ознакомились с архитектурой и концепциями
NeuVectorвNova Container Platform. -
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes. -
Создано новое Namespace. Например,
logging.
3.2. Отправка логов через Fluentd
3.2.1. Включаем запись событий из Neuvector в логи pod’а контроллера
-
Откройте консоль Neuvector.
-
Перейдите на вкладку и раскройте блок Notification Configuration.
-
Включите опцию Write notifications to controller pod logs и укажите необходимые опции.

3.2.2. Настройка Fluentd
Создайте новый Fluentd или настройте уже существующий согласно инструкции. В данном случае был настроен уже существующий Fluentd.
|
Рекомендуется создать новый Fluentd, чтобы не нарушить работу встроенного компонента. |
3.2.3. Установка Output
Установите Output согласно инструкции через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterOutput (1)
metadata:
name: os-output
namespace: nova-logs
spec:
opensearch:
buffer:
flush_interval: 30s
path: /buffers/neuvector
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-neuvector (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: true
| 1 | Происходит установка Output для всего кластера. |
| 2 | Указывается имя индекса в Opensearch, куда будут направляться логи. Индекс создастся автоматически. |
3.2.4. Установка Flow
Установите Flow через kubectl или через Nova Console используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: ClusterFlow (1)
metadata:
name: os-flow
namespace: nova-logs
spec:
globalOutputRefs:
- os-output
match:
- select:
labels:
app: neuvector-controller-pod (2)
| 1 | Происходит установка Flow для всего кластера. |
| 2 | В Opensearch будут отправляться только логи с контейнера neuvector-controller-pod. |
3.3. Отправка логов через Syslog-ng
3.3.1. Включение записи событий из Neuvector в логи pod’а контроллера
-
Откройте консоль Neuvector.
-
Перейдите на вкладку и раскройте блок Notification Configuration.
-
Включите опцию Write notifications to controller pod logs и укажите необходимые опции.

3.3.2. Настройка Syslog-ng
Создайте Syslog-ng согласно инструкции.
3.3.3. Добавление секрета
-
В Nova Console перейдите на вкладку и Namespace
nova-logs. -
Найдите секрет
nova-opensearchи скопируйте его в Namespace, где установлен Syslog-ng. В данном случае -logging. Этот секрет содержит сертификаты и ключи, которые нужны для авторизации в Opensearch.
3.3.4. Установка Output
Установите Output через kubectl или через Nova Console, используя следующий манифест:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterOutput
metadata:
name: random-log-output
namespace: logging
spec:
elasticsearch:
logstash_prefix: nova-neuvector
url: https://nova-logs-cluster.nova-logs.svc.cluster.local:9200/_bulk
tls:
ca_file:
mountFrom:
secretKeyRef:
key: ca.crt
name: nova-opensearch
cert_file:
mountFrom:
secretKeyRef:
key: tls.crt
name: nova-opensearch
key_file:
mountFrom:
secretKeyRef:
key: tls.key
name: nova-opensearch
peer_verify: false
3.3.5. Установка Flow
Установите Flow через kubectl или через Nova Console, используя любой из следующих манифестов:
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterFlow
metadata:
name: random-log-flow
namespace: logging
spec:
filters:
- match:
and:
- regexp:
pattern: notification
- regexp:
pattern: neuvector-controller-pod-0
globalOutputRefs:
- random-log-output
|
В этом манифесте происходит установка Flow для всего кластера. В Opensearch будут отправляться только логи, которые содержат слова |
apiVersion: logging.banzaicloud.io/v1beta1
kind: SyslogNGClusterFlow
metadata:
name: random-log-flow
namespace: logging
spec:
globalOutputRefs:
- random-log-output
match:
regexp:
pattern: neuvector-controller-pod
type: glob
value: json.kubernetes.labels.app
|
В этом манифесте происходит установка Flow для всего кластера. В Opensearch будут отправляться только логи с контейнера |
4. Настройка отправки логов kubelet в Opensearch
4.1. Предварительные условия
-
Вы ознакомились с архитектурой и концепциями
Logging operatorвNova Container Platform. -
У вас есть доступ к кластеру с учетной записью, имеющей роль
cluster-adminв Kubernetes. -
Вы установили утилиту
kubectlдля работы с Kubernetes.
4.2. Настройка
-
Создайте агенты Fluent Bit, которые будут собирать логи сервиса kubelet.
apiVersion: logging-extensions.banzaicloud.io/v1alpha1 kind: HostTailer metadata: name: nova-node-kubelet-host-tailer namespace: nova-logs spec: systemdTailers: - containerOverrides: image: 'hub.nova-platform.io/registry/fluent/fluent-bit:2.1.8' name: nova-node-kubelet systemdFilter: kubelet.service (1) workloadMetaOverrides: labels: nova-log-type: nova-node-kubelet (2) workloadOverrides: tolerations: - operator: Exists1 Фильтр по имени сервиса. 2 Метка, которая будет присутствовать на созданных ресурсом pod’ах. -
Создайте точку выхода для логов.
apiVersion: logging.banzaicloud.io/v1beta1 kind: Output metadata: name: nova-node-kubelet-output namespace: nova-logs spec: opensearch: buffer: flush_interval: 30s path: /buffers/kubelet (1) 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-kubelet (2) port: 9200 logstash_format: true scheme: https host: nova-logs-cluster.nova-logs.svc.cluster.local (3) user: nova-logging (4) ssl_verify: false reload_on_failure: true reconnect_on_error: true password: (5) valueFrom: secretKeyRef: key: password name: nova-logging-credentials include_timestamp: true1 Путь до буфера. 2 Имя нового индекса в Opensearch. 3 Адрес Opensearch. 4 Имя пользователя в Opensearch. 5 Пароль пользователя в Opensearch. -
Создайте правило фильтрации логов для отправки их в Opensearch.
apiVersion: logging.banzaicloud.io/v1beta1 kind: Flow metadata: name: nova-node-kubelet-flow namespace: nova-logs spec: localOutputRefs: - nova-node-kubelet-output (1) match: - select: labels: nova-log-type: nova-node-kubelet (2)1 Точка выхода для отфильтрованных логов. 2 Метка для pod’ов, с которых будут собираться логи.