zoukankan      html  css  js  c++  java
  • Docker搭建ELK笔记

    ES version: 7.10.0

    这里我们使用elk集成镜像,docker hub 地址:https://hub.docker.com/r/sebp/elk/

    前提条件

    1. Docker至少得分配3GB的内存;
    2. Elasticsearch至少需要单独2G的内存;
    3. 防火墙开放相关端口; 9200,5404,56001
      如果配置太差了,可以指定使用的配置参数
      vm.max_map_count至少需要262144
    echo "vm.max_map_count=262144" > /etc/sysctl.conf
    
    sysctl -p
    

    docker-compose

    version: '2'
    networks:
      backend:
        driver: bridge
    services:
    	elk:
    	  container_name: elk
    	  image: sebp/elk:7.10.0
    	  stdin_open: true
    	  tty: true
    	  restart: always
    	  volumes:
    	    - /opt/elk-data:/var/lib/elasticsearch
    	    - /etc/localtime:/etc/localtime
    	  ports:
    	    - 5601:5601
    	    - 9200:9200
    	    - 5044:5044
    	  environment:
            - ES_MIN_MEM=128m
            - ES_MAX_MEM=2048m
    	  networks:
    	    - backend
    

    或者:

    sudo docker run -dit --name elk 
        -p 5601:5601 
        -p 9200:9200 
        -p 5044:5044 
        -e ES_MIN_MEM=128m 
        -e ES_MAX_MEM=2048m 
        -v /opt/elk-data:/var/lib/elasticsearch 
        -v /etc/localtime:/etc/localtime 
        sebp/elk:7.10.0
    

    filebeat

    https://www.elastic.co/guide/en/beats/filebeat/current/running-on-docker.html

    filebeat的版本与es的版本一致

    docker pull docker.elastic.co/beats/filebeat:7.10.0
    

    Example configuration fileedit
    Download this example configuration file as a starting point:

    curl -L -O https://raw.githubusercontent.com/elastic/beats/7.10/deploy/docker/filebeat.docker.yml
    

    filebeat.docker.yml 文件的内容

    filebeat.config:
      modules:
        path: ${path.config}/modules.d/*.yml
        reload.enabled: false
    
    filebeat.autodiscover:
      providers:
        - type: docker
          hints.enabled: true
    
    processors:
    - add_cloud_metadata: ~
    
    output.elasticsearch:
      hosts: '${ELASTICSEARCH_HOSTS:elasticsearch:9200}'
      username: '${ELASTICSEARCH_USERNAME:}'
      password: '${ELASTICSEARCH_PASSWORD:}'
    

    docker-composer.yml

    version: '2'
    networks:
      backend:
        driver: bridge
    services:
    	filebeat:
    	  container_name: filebeat
    	  image: docker.elastic.co/beats/filebeat:7.10.0
    	  stdin_open: true
    	  tty: true
    	  restart: always
    	  volumes:
    	    - $(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml
    	    - /var/lib/docker/containers:/var/lib/docker/containers
    	    - /var/run/docker.sock:/var/run/docker.sock
    	    - /etc/localtime:/etc/localtime
    	    - /www/wwwroot/PHP/thinkphp/runtime/log/:/logs/thinkphp/
    	  networks:
    	    - backend
    

    filebeat.docker.yml

    # 日志输入配置
    filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /logs/thinkphp/*/*.log
        include_lines: ['error']
        multiline:
            pattern: '^['
            negate:  true
            match:   after
    output.elasticsearch:
      hosts: ["elasticsearch:9200"]
    
    #日志输出配置(采用 logstash 收集日志,5044为logstash端口)
    #output.logstash:
    #  hosts: ['elasticsearch:5044']
    

    只提取 error 日志


    kibana 设置显示中文

    修改 kibana 安装目录下的 config/kibana.yml, 在文件末尾添加:

    i18n.locale: "zh-CN"
    

    重启 kibana



    ES 设置密码

    ES 版本: 7.10.0

    1. 修改 elasticsearch 安装目录下的 config/elasticsearch.yml,在文件末尾添加,修改完之后,重启elasticsearch 服务
    # discovery.type: single-node
    
    xpack.security.enabled: true
    xpack.license.self_generated.type: basic
    xpack.security.transport.ssl.enabled: true
    
    1. 执行设置用户名和密码的命令,这里会为4个左右用户分别设置密码,elastic, kibana, logstash_system,beats_system 等
    D:devopselasticsearch-7.8.0in> elasticsearch-setup-passwords interactive
    
    Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
    You will be prompted to enter passwords as the process progresses.
    Please confirm that you would like to continue [y/N]y
    
    Enter password for [elastic]:
    Reenter password for [elastic]:
    Enter password for [apm_system]:
    Reenter password for [apm_system]:
    Enter password for [kibana_system]:
    Reenter password for [kibana_system]:
    Enter password for [logstash_system]:
    Reenter password for [logstash_system]:
    Enter password for [beats_system]:
    Reenter password for [beats_system]:
    Enter password for [remote_monitoring_user]:
    Reenter password for [remote_monitoring_user]:
    Changed password for user [apm_system]
    Changed password for user [kibana_system]
    Changed password for user [kibana]
    Changed password for user [logstash_system]
    Changed password for user [beats_system]
    Changed password for user [remote_monitoring_user]
    Changed password for user [elastic]
    
    1. 修改密码命令如下
    curl -H "Content-Type:application/json" -XPOST -u elastic 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
    
    1. 修改 Kibana 配置文件 config/kibana.yml文件
    elasticsearch.username: "elastic"
    elasticsearch.password: "123456"
    

    filebeat.yml

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
          - D:/workspace/lamp/thinkphp/runtime/v1/log/*/*.log
    #  include_lines: ['error']
      multiline:
        pattern: '^[sd{4}-d{2}(-d{2})?'
        negate:  true
        match:   after
      tags: ["thinkphp-api"]
    
    #output.elasticsearch:
      # Array of hosts to connect to.
    #  hosts: ["localhost:9200"]
    
      # Protocol - either `http` (default) or `https`.
      #protocol: "https"
    
      # Authentication credentials - either API key or username/password.
      #api_key: "id:api_key"
      #username: "elastic"
      #password: "changeme"
    #  username: "elastic"
    #  password: "wakasann"
    #  indices:
    #    - index: "thinkphp-api-error"
    #      when.contains:
    #        tags: "thinkphp-api"
    
    
    output.logstash:
      # The Logstash hosts
      hosts: ["localhost:5044"]
      index: "thinkphp-api-error"
    

    filebeat 运行

    filebeat.exe -c filebeat.yml -e
    

    logstash

    thinkphpapi.conf

    input {
      beats {
        port => 5044
      }
    }
    
    output {
      elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        user => "elastic"
        password => "wakasann"
      }
    }
    

    通过powershell 运行 logstash

     .inlogstash.bat -f .config	hinkphpapi.conf
    

  • 相关阅读:
    nodejs 文件拷贝
    MySQL linux二进制安装
    【Android工具类】验证码倒计时帮助类CountDownButtonHelper的实现
    JAVA一些基础概念
    程序猿生存定律-公司选择上的方法论
    Leetcode 第 2 题(Add Two Numbers)
    SpringMVC学习记录(五)--表单标签
    算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS
    CentOS 7 virt-manager 无法连接本地的hypervisor
    Android自己定义View画图实现拖影动画
  • 原文地址:https://www.cnblogs.com/fsong/p/14412518.html
Copyright © 2011-2022 走看看