ELK 와 ElaticAlert 기반 시스템 구축 모니터링 경보
13536 단어 ELK
이 글 은 ELK 기반 모니터링 과정 을 간단히 소개 한다.
1. ELK 의 설치
먼저 ELK 의 구축 입 니 다. 여 기 는 더 이상 군말 하지 않 고 한 편의 글 을 참고 하여 ELK 로그 분석 플랫폼 을 신속하게 구축 할 수 있 습 니 다.
2. ElastAlert 설치 및 설정
1. 설치
경보 구성 요 소 는 ElastAlert 를 사용 합 니 다.여기 Yelp 회 사 는 Python 이 쓴 오픈 소스 구성 요 소 를 사용 합 니 다.주 소 는 여기 있 습 니 다: ElastAlert. 두 가지 방식 으로 설치 할 수 있 습 니 다.
pip install elastalert
git clone https://github.com/Yelp/elastalert.git
pip install "setuptools>=11.3"
python setup.py install
원본 코드 를 다운로드 하 는 방식 으로 설치 하 는 것 을 더욱 추천 합 니 다. 원본 코드 에 여러 가지 예시 코드 가 있 기 때문에 현지에서 조정 을 편리 하 게 참고 할 수 있 습 니 다.
또한 ES 와 상호작용 을 하기 위해 elasticsearch 가방 을 설치 해 야 합 니 다.
pip install "elasticsearch>=5.0.0"
elastalert-create-index
이 명령 을 실행 하면 ES 에서 다음 과 같은 색인 을 만 듭 니 다.
2. config. yaml 프로필.
설치 가 완료 되 기 전에 먼저 프로필 을 수정 해 야 합 니 다.여기 서 ES 의 주소, 경보 규칙 파일 경로 등 기본 적 인 설정 을 설정 할 수 있 습 니 다. 다음은 몇 가지 기본 적 인 설정 입 니 다.
# , rule
rules_folder: /usr/local/elastalert/my_alert_rules
# , ES
run_every:
minutes: 1
# ES
es_host: localhost
# ES
es_port: 9200
3. rule 파일 설정
rule 파일 은 경보 규칙 을 조회 하 는 것 을 표시 합 니 다.ElastAlert 는 여러 개의 rule 파일 을 지원 합 니 다. config. yaml 에 설 정 된 rules 를 찾 을 수 있 습 니 다.folder 는 그 중의 모든 rule 파일 을 실행 하여 조회 와 경 고 를 합 니 다.
【 1 】. 기본 설정
rule 파일 은 모니터링 과 경보 규칙 을 설정 하 는 데 사 용 됩 니 다. 먼저 해당 하 는 색인, 이름, 유형 을 밝 혀 야 합 니 다.
# , rule ,
name: test_502_alert
# , ,
index: nginx_log_*
# ,frequency
type: frequency
# ,
num_events: 50
# , 。 num_events 50
timeframe:
minutes: 1
여기 서 사용 하 는 것 은 frequency 가 발생 횟수 에 따라 조회 하 는 것 이다.ElastAlert 는 다음 과 같은 다른 조회 방식 도 제공 합 니 다.
frequency 조회 에 대해 서 는 좀 더 말씀 드 리 겠 습 니 다. 실제 상황 에서 여러 대의 서버 를 모니터링 해 야 하기 때 문 입 니 다. 이 때 는 서버 에 따라 횟수 를 집계 해 야 합 니 다. 한 서버 의 오류 빈도 가 num 을 초과 할 때.이벤트 시 경찰 에 신고 합 니 다. 여 기 는 querykey 설정 으로 지정
query_key server_name.keyword。 502 , 。
query_key: server_name.keyword
【 2 】 일치 하 는 규칙 설정
기본 설정 이 완료 되면 조회 규칙 을 설정 해 야 합 니 다.ElastAlert 는 설 정 된 조회 규칙 에 따라 ES 에 데 이 터 를 조회 합 니 다. 결과 가 num 에 도달 하면이 벤트 는 경 고 를 보 냅 니 다.
기본 예 는 다음 과 같다.
filter:
- terms: # , server_name ['server01', 'server02']
server_name: ['server01', 'server02']
- term: # , response_code 502
response_code: 502
그 주요 조회 방식 은 다음 과 같은 몇 가지 가 있다.
query string
모호 일치
filter:
- query:
# username bob
query_string:
query: "username: bob"
- query:
# name tom address USA
query_string:
query: "name: tom AND address: USA"
term
정확하게 일치 합 니 다. 필드 의 값 이 주어진 값 과 같 아야 조회 할 수 있 습 니 다.
filter:
- term: # ,response_code 502 response_code: 502
terms 를 통 해 여러 값 을 일치 시 킬 수도 있 습 니 다.
filter:
- terms: # name name: [Faker, Mlxg, Uzi]
와 일 드 카드 어댑터 일치
filter:
- query:
wildcard: # filenae ngxin 、log
filename: "nginx_*_log"
range
범위 조회,
filter:
- range:
status_code: # 500 ~ 599 ,
from: 500
to: 599
ElastAlert 의 조회 규칙 은 ES 의 DSL 을 바탕 으로 확정 되 었 고 익숙 하지 않 은 학생 들 이 ES 의 문 서 를 조회 하 는 것 이다.
【 3 】. 경고 방식 설정
ElastAlert 는 이메일 메 일, slack, http post 요청 등 을 통 해 신고 메 시 지 를 보 낼 수 있 는 매우 많은 경고 방식 을 제공 했다.여러 개의 경고 방식 을 동시에 지정 할 수 있다.여기 서 우 리 는 이메일 과 post 로 신고 방식 을 지정 합 니 다.
#
alert:
- "email" - "post"
경고 방식 을 지정 하면 각 경고 방식 에 대해 맞 춤 형 설정 을 해 야 한다.우선 이메일 설정 입 니 다. 메 일 서버, 수신 자, 메 일 내용 등 을 알려 야 합 니 다.
# ,
smtp_host: "smtp.sina.cn"
smtp_port: 25
# , ,
smtp_auth_file: "/usr/local/elastalert/sina_auth.yaml"
# sina_auth.yaml
# user: "[email protected]"
# password: "mypassword"
# ,
alert_text: |
In the past 1 minute, Cloud Application have been more than 50 times 502 exceptions on the {0} machine. Please pay attention to the status of the server in time.
"timestamp": {1}
alert_text_args: ["host.name.keyword", "@timestamp"] # , text
alert_text_type: alert_text_only # ,
#
from_addr: "[email protected]"
# ,
email:
- "[email protected]"
- "[email protected]"
그 다음은 post 가 요청 한 설정 입 니 다. 저 는 post 를 문자 서비스 로 가리 키 고 신고 할 때마다 문 자 를 받 습 니 다.
#
http_post_url: "http://mysite.alert.cn/api/v2/alert/"
# post , ES
http_post_payload:
server: host.name.keyword
num_hits: num_hits
# 。
http_post_static_payload:
response_code: 502
service_name: mysite
여기 두 가 지 는 주의해 야 한다.
설정 이 완료 되면 python 명령 을 통 해 직접 실행 할 수 있 습 니 다.
python -m elastalert.elastalert --verbose --rule example_rules/test.yaml
INFO:elastalert:Starting up
INFO:elastalert:Queried rule test_502_alert from 2018-08-22 13:30 UTC to 2018-08-22 13:30 UTC: 0 buckets
INFO:elastalert:Ran test_502_alert from 2018-08-22 13:30 UTC to 2018-08-22 13:30 UTC: 0 query hits (0 already seen), 0 matches, 0 alerts sent
INFO:elastalert:Sleeping for 59.794757 seconds
python 명령 을 통 해 실행 되 는 몇 가지 매개 변 수 는 주의해 야 합 니 다. * – verbose 출력 디 버 깅 정보 * – debug 는 디 버 깅 만 출력 하고 경보 * – config 지정 프로필 * – rule 지정 규칙 파일 은 실행 되 지 않 습 니 다.
그 밖 에 디 버 깅 이 완료 되 어 서비스 로 실 행 될 때 저 희 는 Supervisor 를 사용 하여 서비스 관 리 를 할 수 있 습 니 다. 설정 파일 은 다음 과 같 습 니 다.
[program:elastalert]
# workon elastalert
# running globally
user=dev
command=sudo elastalert --config /usr/local/elastalert/config.yaml
autorestart=true
startsecs=15
stderr_logfile=/var/log/supervisor/elastalert.log
stdout_logfile=/var/log/supervisor/elastalert.log
이상 은 전체 감시 경보 시스템 의 간단 한 구축 과정 이다. 결 과 를 보면 20 대의 기 계 를 감시 하고 특정한 기계 가 1 분 에 50 번 이 넘 는 502 요청 을 할 때마다 1 분 안에 신고 문 자 를 받는다. 물론 문제 의 포 지 셔 닝 은 스스로 해 야 한다.만약 에 잘못된 제시 에 따라 진일보 한 운영 처 리 를 할 수 있다. 예 를 들 어 자동 확장, 기계 부하 변경 에 문제 가 있 는 기계 차단 등 이다. 현재 처리 방식 에서 출발 하여 생각 은 해당 하 는 post 요청 에서 해당 하 는 처 리 를 하 는 것 이다. 다른 건의 와 관심 이 있 는 친구 들 의 교류 지적 을 환영 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ELK 스택 구축ElasticSearch, LogStash, Kibana 조합으로 로그 수집 - 로그 저장 및 검색 - 시각화로 쓰이게 된다. Logstash는 실시간 파이프라인 기능을 갖는 데이터 수집 엔지이며, Input을 받아...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.