Docker 클러스터 로그 수집의 EFK 구현
우선 모든 docker 숙주 호스트에 Fluentd가 설치되어 있는지 확인하고, docker가 거울을 시작할 때, docker run --log-driver Fluentd를 사용합니다.용기 안의 컨트롤러의 정보를 Fluentd에 전달하고, Fluentd가 elasticsearch에 저장합니다.다시 키바나를 통해 전시하고 분석한다.
방문https://www.elastic.co/cn/최신 Elasticsearch와 Kibana를 다운로드하려면 두 버전이 일치해야 합니다.직접 압축을 풀고 실행하면 됩니다. 환경 변수를 설정할 필요가 없습니다. (Elasticsearch는 jdk 환경에 의존합니다.)Elasticsearch와 kibana의 프로필 서버를 수정하십시오.host=0.0.0.0, 외부 네트워크를 통해 접근할 수 있습니다.
elasticsearch 다운로드
$wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
Kibana 다운로드
$wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
압축 해제 설치
$tar -zxvf elasticsearch-6.0.0.tar.gz
$tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz
운행
$./elasticsearch-6.0.0/bin/elasticsearch
$./kibana-6.0.0-linux-x86_64/bin/kibana
그리고 fluentd를 직접 설치합니다.프론트, 현재 최대 열기 파일 수:
$ ulimit -n
1024
1024를 보았다면, 이 수치가 부족합니다. 프로필을 수정해서 수치를 높여야 합니다.
vi /etc/security/limits.conf
설정 값은 다음과 같습니다.
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
네트워크 매개변수 수정
vi /etc/sysctl.conf
설정 값은 다음과 같습니다.
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535
그리고 시스템을 다시 시작해서 fluentd를 설치합니다.
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
fluentd 시작
$ /etc/init.d/td-agent start
Starting td-agent: [ OK ]
$ /etc/init.d/td-agent status
td-agent (pid 21678) is running...
필요한 플러그인 설치
$ /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
$ /usr/sbin/td-agent-gem install fluent-plugin-typecast
$ /usr/sbin/td-agent-gem install fluent-plugin-secure-forward
$ systemctl restart td-agent
td-agent를 설정하여docker에서 생성한 로그를elasticsearch로 출력합니다
$ vi /etc/td-agent/td-agent.conf
수정 내용은 다음과 같습니다. (여기 포트를 입력하지 않았습니다. 기본적으로 9200 포트를 사용합니다.)
@type forward
port 24224
bind 0.0.0.0
@type elasticsearch
logstash_format true
flush_interval 10s # for testing
host 127.0.0.1
td-agent 재부팅
systemctl restart td-agent
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.