filebeat7.5.1+elasticsearch7.5.1+elastAlert0.2.1+elastalert-dingtalk-plugin 로그 감시 못 경고 실현

컨디션
CentOS7.5
jdk1.8 
python3.6

1. 먼저 버전 문제를 정리한다.
  • elastAlert0.2.1 elasticsearch7+버전 지원
  • elastAlert0.2.1python 3.6 버전
  • elastalert-dingtalk-plugin 플러그인은elastalert 의존정보 및elasticsearch 의존정보를 수정해야 한다
  • 다운로드
  • Elastic 다운로드
  • filebeat7.5.1
  • elasticsearch7.5.1

  • ElastAlert0 다운로드.2.1 ElastAlert GitHub
  • git clone https://github.com/Yelp/elastalert.git
    
  • elastalert-dingtalk-plugin elastalert-dingtalk-plugin GitHub 다운로드
  • git clone https://github.com/xuyaoqiang/elastalert-dingtalk-plugin.git
    

    2、python3.6 환경 설치
    python 홈페이지 선택 3.6.10 버전 wget 다운로드 명령 속도가 느립니다. 다운로드 후 업로드 서버 다운로드 완료 후 컴파일 설치 권장
    tar -zxf Python-3.6.10.tgz
    #      
    yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc  libffi-devel
    cd Python-3.6.10
    #   
    ./configure --prefix=/usr/local/python3.6
    #  
    make && make install
    

    설치가 완료되면/usr/local 디렉터리에서python3을 생성합니다.6 디렉토리 및 소프트 링크 만들기
    ln -s /usr/local/python3.6/bin/python3 /usr/bin/python3
    

    테스트 인쇄 버전 번호, 3.6.10 표시는 설치 성공
    python3 -V
    

    python3.6 자체 pip3를 가지고 있으면 소프트 링크를 직접 만들 수 있습니다
    ln -s /usr/local/python3.6/bin/pip3 /usr/bin/pip3
    

    Elasticsearch7.5.1 설치
    config/elasticsearch 구성yaml
    node.name: node-1
    network.host: 192.168.0.99
    http.port: 9200
    cluster.initial_master_nodes: ["node-1"]
    #            
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

    시스템/etc/security/limits 구성conf
    * soft nofile 65535
    * hard nofile 65535
    * - nofile 65536
    * - memlock unlimited
    

    시스템/etc/sysctl을 구성합니다.conf
    vm.max_map_count=262144
    

    구성 완료 후 실행
    /sbin/sysctl -p
    

    터미널을 종료하고 다시 입장해야 효력이 발생합니다
    이어서 바로 Elasticsearch를 시작할 수 있습니다. 시작 명령. - d 백엔드 시작 명령.
    ./bin/elasticsearch -d
    

    로그에 이상이 있는지 확인
    tail -100f logs/elasticsearch.log
    

    filebeat7. 설치5.1
    Filebeat는 로그를 수집해야 하는 서버에 filebeat를 설정해야 하는 채집기입니다.yml, 이곳은nginxaccess를 채집할 수 있습니다.lo를 예로 들면 로그는 json 형식으로 출력하는 것이 좋습니다.구체적으로 어떻게 nginx 로그 형식을 설정하고 자료를 스스로 찾습니까?서로 다른 버전의 filebeat 설정은 일치하지 않는 부분이 있을 수 있습니다.자세한 내용은 공식 문서 참조
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    
    setup.template.settings:
      index.number_of_shards: 1
    
    setup.template.name: "nginx-access"
    setup.template.pattern: "nginx-access-*"
    setup.ilm.enabled: false
    output.elasticsearch:
      # Array of hosts to connect to.
      hosts: ["xxx.xxx.xxx.xxx:9200"]
      index: nginx-access-%{+yyyy-MM-dd}
    

    백그라운드 시작 명령
     nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
    

    ElastAlert 설치(python 3.6 환경 기반)
    ElastAlert doc 문서 관련 구성은 여기서python3을 볼 수 있습니다.6 위에서 설치가 완료되었습니다.python3 명령을 사용하여 ElastAlert 설치를 완료하고 Elastalert 설치 디렉터리에 들어갈 수 있습니다
    ##    
    pip3 install -r requirements.txt
    python3 setup.py install
    

    설치가 완료되면python 3.6 디렉토리에서 4개의 elastalert* 명령을 생성하여 소프트 링크 추가
    ln -s /usr/local/python3.6/bin/elastalert* /usr/bin
    

    추가가 완료되면 명령을 사용하여 설치할 수 있습니다
  • elastalert-dingtalk-plugin 모듈
  • elastalert-dingtalk-plugin 디렉터리에 들어가서 수정은requirement에 의존합니다.txt
    elastalert==0.2.1
    elasticsearch>=7.0.0
    pyOpenSSL==16.2.0
    requests==2.18.1
    setuptools>=11.3
    

    그리고 설치 의존, 설치 완료 시 오류 없이 다음과 같은 조작을 진행하며, 오류 신고가 스스로 해결되면 정상적으로 오류 신고가 되지 않습니다
    pip3 install -r requirements.txt 
    

    그리고 config를 설정합니다.yaml .이 구성은 실제 Elastalert 구성 파일로 뒤에 구성해야 하는 rules를 포함하여 모두 Elastalert 구성입니다. 자세한 내용은 ElastAlert doc 설명서를 참조하십시오.
    rules_folder: rules
    
    run_every:
      minutes: 1
    
    buffer_time:
      minutes: 15
    
    es_host: 192.168.0.99
    
    es_port: 9200
    
    writeback_index: elastalert_status
    alert_time_limit:
      days: 
    

    그리고 rules/apierror.yaml
    name: API    (status >= 400)
    type: frequency
    index: nginx-access-*
    num_events: 5
    timeframe:
        minutes: 1
    filter:
    - range:
        status:
          from: 400
          to: 599
    #       https://elastalert.readthedocs.io/en/latest/ruletypes.html#include
    include: ["_index","uri","remote_addr","http_x_forwarded_for","status"]
    alert:
    - "elastalert_modules.dingtalk_alert.DingTalkAlerter"
    
    dingtalk_webhook: "https://oapi.dingtalk.com/robot/send?access_token=xxxxx"
    dingtalk_msgtype: "text"
    
    

    그리고 elastalert-dingtalk-plugin 디렉토리에서 시작 명령 실행 상세 정보 GITHUB 참조
    #          
    python3 -m elastalert.elastalert --verbose --rule rules/api_error.yaml
    

    구체적인 각 항목의 규칙과 더 많은 배치는 스스로 깊이 파고들어 주십시오.

    좋은 웹페이지 즐겨찾기