Docker 运行ELK日志监测系统,汉化Kibana界面

1、ELK日志监控简介

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用 。

Kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

2、ELK镜像地址

我搭建的ELK版本为6.3.0,6+版本后,官方就没有将镜像上传到GitHub,只能去官网下载,速度超慢。

这里我将ELK镜像上传到我的网易云供大家拉取。

ES:docker pull hub.c.163.com/xiedongbin/elasticsearch:6.3.0

Logstash:docker pull hub.c.163.com/xiedongbin/logstash:6.3.0 

Kibana:docker pull hub.c.163.com/xiedongbin/kibana:6.3.0

拉取后,将镜像分别命名为 elasticsearch、logstash、kibana。

3、ELK目录下,新建logstash目录

进入 logstash,创建logstash.conf文件,文件内容如下:

input {
       tcp {
            add_field => {"myid"=>"APP"}
            mode => "server"
            port => 4567
            codec => json_lines
       }
       tcp {
            add_field => {"myid"=>"SQL"}
            mode => "server"
            port => 4568
            codec => json_lines
       }
}
filter {}
output {
      if [myid] == "APP"{
         elasticsearch {
             hosts => ["192.168.0.13:9200"]
             index => "log-%{[service_name]}-%{+YYYY.MM.dd}"
         }
         file {
             path => "ELK/log.log"
             codec => line
         }
       }

       if [myid] == "SQL"{
          elasticsearch {
              hosts => ["192.168.0.13:9200"]
              index => "sql-%{[service_name]}-%{+YYYY.MM.dd}"
          }
          file {
              path => "ELK/log.log"
              codec => line
          }
       }
}

 

创建dockerfile文件,内容如下:

Docker 运行ELK日志监测系统,汉化Kibana界面_第1张图片

FROM logstash:6.3.0
COPY logstash.conf /some/config-dir/
CMD ["-f","/some/config-dir/logstash.conf"]
                                        

以logstash.conf配置新建镜像my-logstash。

docker build -t my-logstash:6.3.0 .

4、修改内存权限设置

vim  /etc/sysctl.conf

添加 vm.max_map_count=262144 参数,

保存文件后,使用命令 sysctl -p 使设置立即生效。

5、ELK目录下创建docker-compose.yml文件

Docker 运行ELK日志监测系统,汉化Kibana界面_第2张图片

version: '2'
services:
  elasticsearch:
    image: elasticsearch:6.3.0
    container_name: elasticsearch
    restart: always
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xms1g -Xmx1g"
    networks:
      - elk
    volumes:
      - ./data:/usr/elasticsearch/data
  logstash:
    image: my-logstash:6.3.0
    container_name: logstash
    restart: always
    networks:
      - elk
    ports:
      - "4567:4567"
      - "4568:4568"
    depends_on:
      - elasticsearch
  kibana:
    image: kibana:6.3.0
    container_name: kibana
    restart: always
    networks:
      - elk
    ports:
      - "5601:5601"
    depends_on:
      - elasticsearch
networks:
  elk:

以docker-compose运行文件。命令如下:

docker-compose up -d    #后台启动,如果容器不存在根据镜像自动创建

docker-compose down -v  #停止容器并删除容器

 

docker-compose start     #启动容器,容器不存在就无法启动

docker-compose stop     #停止容器

docker-compose、python的安装详见: 搭建Harbor私有镜像仓库

docker network 问题详见: docker 解决network has active endpoints 

 

6、ELK各服务地址说明

ElasticSearch: http://IP:9200/

ElasticSearch日志:http://IP:9200/_search?pretty

Logstash(日志传输地址):  IP:4567、IP:4568

Kibana: http://IP:5601

7、Kibana界面汉化

下载汉化工具并解压:

wget    https://github.com/anbai-inc/Kibana_Hanization/archive/master.zip

unzip master.zip

将解压后文件夹重命名为master。

 

查看kibana容器ID, docker inspect -f '{{.Id}}' kibana

通过docker cp命令将本地文件夹复制到容器内部

docker cp master 容器ID:/

进入容器内部,docker exec -it kibana /bin/bash

切换根路径下,进入master目录,执行汉化程序。

python  main.py  “/opt/kibana/”

最后重启Kibana容器即可察看到汉化后的界面。

Docker 运行ELK日志监测系统,汉化Kibana界面_第3张图片

8、Zipkin链路追踪

Zipkin启动:
docker run -p 9411:9411 --restart=always  --name zipkin --env STORAGE_TYPE=elasticsearch --env ES_HOSTS=IP:9200 --env ES_HTTP_LOGGING=BASIC --env RABBIT_URI=amqp://admin:admin@IP:5672 -d openzipkin/zipkin:2

Zipkin-dependencies启动:
 docker run --restart=always  --name zipkin-dependencies --env STORAGE_TYPE=elasticsearch --env ES_HOSTS=IP:9200 --env ES_HTTP_LOGGING=BASIC -d openzipkin/zipkin-dependencies:2

Zipkin管理页面地址:http://IP:9411

 

 

你可能感兴趣的:(ZLK)