ELK搭建与使用

  • Docker 安装 Elasticsearch
  • Docker 安装 Kibana
  • Docker 安装 Logstash
  • 索引模式
  • 查看实时日志
  • 日志规范


Docker 安装 Elasticsearch

  1. 拉取镜像
    docker pull elasticsearch:7.1.1
  2. 创建自定义的网络(用于连接到连接到同一网络的其他服务)
    docker network create somenetwork
  3. 运行elasticsearch
    docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” elasticsearch:7.1.1
  4. 查看容器状态
    docker ps
  5. 检测 elasticsearch 是否启动成功
    curl 127.0.0.1:9200

Docker 安装 Kibana

  1. 拉取镜像
    docker pull kibana:7.1.1
  2. 运行Kibana
    docker run -d --name kibana --net somenetwork -p 5601:5601 kibana:7.1.1
  3. 浏览器访问测试
    http://10.0.0.101:5601/

Docker 安装 Logstash

  1. 拉取镜像
    docker pull logstash:7.1.1
  2. 创建目录用于存放配置文件(标准商城 bin>docker)
  3. 启动Logstash 映射上一步创建的目录
    docker run -it -d -p 5044:5044 --name logstash --net somenetwork
    -v /root/docker/logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
    -v /root/docker/logstash/conf.d/:/usr/share/logstash/conf.d/
    -v /usr/mydata/app/logs/:/usr/mydata/app/logs/ \

索引模式

  1. es自动创建索引使用配置文件
  2. docker部署electron项目_elasticsearch


  3. docker部署electron项目_docker_02

  4. 创建索引
  5. docker部署electron项目_elasticsearch_03


  6. docker部署electron项目_elk_04

  7. 索引查询,实时查询索引 根据刚刚添加的
  8. docker部署electron项目_docker_05

  9. 通过开发工具 查询
GET 索引名称/_search

docker部署electron项目_docker部署electron项目_06


(1). 按条件查询全部

{
  "query": {
    "match_all": {} 
  }
}

(2). 按字段的分词查询

{
  "query": {
    "match": {
      "message": "honghai"
    }
  }
}

(3). 按照短语查询 是指, 匹配某个 field 的整个内容, 不再利用分词技术

{
  "query": {
    "match_phrase": {
      "message": "honghai"
    }
  }
}

(4). 模糊查询

{
  "query": {
    "fuzzy": {
      "message":"honghai"
    }
  }
}

(5). 指定查询的字段

{
  "query": {"match_all": {}}
    , "_source": ["message", "score"]
}

查看实时日志

docker部署electron项目_docker_07

日志规范

  1. 日志级别
    error:错误日志,指比较严重的错误,对正常业务有影响,需要运维配置监控的;
    warn:警告日志,一般的错误,对业务影响不大,但是需要开发关注;
    info:信息日志,记录排查问题的关键信息,如调用时间、出参入参等等;
    debug:用于开发DEBUG的,关键逻辑里面的运行时数据;
    trace:最详细的信息,一般这些信息只记录到日志文件中。
  2. 日志要打印出方法的入参、出参
  3. 建议使用参数占位{},而不是用+拼接。
  4. 不要使用e.printStackTrace(),异常日志不要只打一半,要输出全部错误信息
  5. 禁止在线上环境开启 debug
  6. 不要记录了异常,又抛出异常
  7. 避免重复打印日志
  8. 日志文件分离
  9. 核心功能模块,建议打印较完整的日志