ELK представляет собой комбинацию трех программ с открытым исходным кодом: Elasticsearch, Logstash и Kibana. Elasticsearch — это распределенная система поиска и анализа, используемая для хранения журналов, поиска, анализа и запросов. Logstash — это инструмент сбора, преобразования и передачи данных, который собирает, фильтрует и преобразует данные перед их отправкой в Elasticsearch или другое целевое хранилище. Kibana — это платформа визуализации данных, которая обеспечивает мощный анализ данных и функции информационной панели благодаря интеграции с Elasticsearch. Filebeat — это компонент Elastic Stack (ELK), используемый для упрощенного сбора и пересылки файлов журналов. Он может отслеживать указанные файлы журналов в режиме реального времени и отправлять их в Elasticsearch или Logstash для обработки и анализа.
Существует множество архитектур ELK, Эта Архитектура статьи Shareuse показана на рисунке: Beats(Filebeat) -> -> Elasticsearch -> Кибана, текущая производственная среда создает десятки миллионов журналов в день, а использование памяти составляет около 10G о
Эта статья ELK Версия v7.8.1,Эта Контейнерная сеть статьииспользовать — это devopsnetwork , нужно создать docker network create devopsnetwork
./data
и Конфигурациядокумент./config/elasticsearch.yml
version: '3.1'
services:
elk_elasticsearch:
image: elasticsearch:7.8.1
container_name: elk_elasticsearch
restart: always
environment:
- discovery.type=single-node
- ES_JAVA_OPTS=-Xms4096m -Xmx4096m
ports:
- 9200:9200
- 9300:9300
volumes:
# Авторизовать chmod 777 ./config/ && chmod 777 ./data/
- ./data:/usr/share/elasticsearch/data
- ./config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
network.host: 0.0.0.0
xpack:
ml.enabled: false
monitoring.enabled: false
security.enabled: false
watcher.enabled: false
Скопируйте его на сервер и запустите
#cd /app/elasticsearch
mkdir ./config
mkdir ./data
chmod 777 ./config/ && chmod 777 ./data/
docker compose up -d
Подтвердить доступ
./pipeline
и./config
Каталог может запускать контейнерыкопироватьпублично заявитьversion: '3.1'
services:
elk_logstash:
image: logstash:7.17.16
container_name: elk_logstash
restart: always
ports:
- 5044:5044
volumes:
# Авторизовать chmod 777 ./logs/ && chmod 777 ./data/ && chmod 777 ./pipeline/ && chmod 777 ./config/
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime:ro
- ./logs:/usr/share/logstash/logs
- ./data:/usr/share/logstash/data
- ./pipeline:/usr/share/logstash/pipeline
- ./config:/usr/share/logstash/config
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
input {
beats {
port => 5044
codec => json {
charset => "UTF-8"
}
}
}
filter {
}
output {
elasticsearch {
hosts => ["http://192.168.123.102:9200"]
index => "%{[app]}-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
Скопируйте его на сервер и запустите
mkdir ./data
mkdir ./logs
chmod 777 ./logs/ && chmod 777 ./data/ && chmod 777 ./pipeline/ && chmod 777 ./config/
docker compose up -d
./config/kibana.yml
version: '3.1'
services:
elk_kibana:
image: kibana:7.8.1
container_name: elk_kibana
restart: always
environment:
- discovery.type=single-node
ports:
- 5601:5601
volumes:
- ./config/kibana.yml:/usr/share/kibana/config/kibana.yml
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.123.102:9200/"]
i18n.locale: "zh-CN"
xpack:
apm.ui.enabled: false
graph.enabled: false
ml.enabled: false
monitoring.enabled: false
reporting.enabled: false
security.enabled: false
grokdebugger.enabled: false
searchprofiler.enabled: false
Скопируйте его на сервер и запустите
docker compose up -d
version: '3.1'
services:
elk_filebeat:
image: elastic/filebeat:7.8.1
container_name: elk_filebeat
restart: always
volumes:
# Авторизовать chmod 777 ./config/ && chmod 777 ./data/ && chmod 777 ./logs/ && chmod 777 /app/logs
- ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- ./data:/usr/share/filebeat/data
- ./logs:/usr/share/filebeat/logs
- /app/logs:/app/logs
networks:
- devopsnetwork
networks:
devopsnetwork:
external: true
output.logstash:
#logstash hosts
hosts: ["192.168.123.102:5044"]
fields_under_root: true
filebeat.inputs:
- type: log
enabled: true
paths:
- /app/logs/*/*.log
close_older: 24h
ignore_older: 24h
json.keys_under_root: true
json.overwrite_keys: true
encoding: utf-8
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 3
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
- drop_fields:
fields: ["log","@version","ecs","agent","beat","host","beat.hostname","beat.version","beat.name","prospector.type","input.type","host.id","host.name","host.os.build","host.os.family","host.os.name","host.os.platform","host.os.platform","log.file.path","tags","offset","host.architecture","host.os.version"]
server {
listen 80;
listen 443 ssl;
server_name kibana.devops.test.com; # Измените его на свое собственное доменное имя.
ssl_certificate /certs/kibana.devops.test.com/server.crt;
ssl_certificate_key /certs/kibana.devops.test.com/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.123.102:5601;
proxy_http_version 1.1;
proxy_buffering off;
proxy_request_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Конфигурация завершена и вы можете получить доступ к доменному именииспользовать
Добавьте следующее содержимое в файл конфигурации Nginx
location / {
auth_basic "Restricted Content";
auth_basic_user_file /certs/kibana.devops.test.com/passwd;
...
}
Добавить соответствующийpasswdдокумент,использовать htpasswd Генерировать, если пароль учетной записи root devops666 файл конфигурации
root:WvesKBTr22.wY
Можетиспользоватья metools Инструмент генератор паролей генерировать
После завершения настройки обновите страницу после перезагрузки конфигурации, и вам будет предложено ввести свою учетную запись и пароль.
location / {
allow 192.168.123.201; # Разрешенные IP-адреса
deny all; # Запретить все остальные IP-адреса
}
Эта статья только для ELK Установка была введена и организована соответствующим образом. Docker Compose Файл конфигурации можно быстро установить. ELK Окружение, способы его объединения с проектом будут опубликованы позже.