[每周一更]-(第5期):Docker 安装并使用ELK

安装工具篇

“ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。

  • Elasticsearch 是一个搜索和分析引擎。
  • Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。
  • Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
  • Elastic Stack 是 ELK Stack 的更新换代产品。

在这里插入图片描述

安装

工具使用

  • 查看容器日志: docker logs 容器ID
  • 查看容器详细信息: docker inspect 容器ID | grep ID
  • 进入某个容器: docker exec -it 容器ID /bin/bash

版本:统一是7.6.2

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

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

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

Filebeat 是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到 Logstash 或 Elasticsearch。

ElasticSearch 安装(简称 ES)

地址:http://xxxx:9200/

  • 下载镜像
docker pull elasticsearch:7.6.2

  • 修改虚拟内存大小
sysctl -w vm.max_map_count=262144
  • 启动ES服务
docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \
-e "discovery.type=single-node" \
-e "cluster.name=elasticsearch" \
-v /mnt/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mnt/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /mnt/elasticsearch/data:/usr/share/elasticsearch/data \
-d elasticsearch:7.6.2

注意:启动如果发现 /usr/share/elasticsearch/data 目录没有访问权限,只需要修改 /mnt/elasticsearch/data 目录的权限,再重新启动即可;

chmod 777 /mnt/elasticsearch/data/
docker restart elasticsearch
  • 安装中文分词器IKAnalyzer,并重新启动:
docker exec -it elasticsearch /bin/bash
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip
  • 重启elasticsearch
docker restart elasticsearch
  • 开启防火墙:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
  • 访问会返回版本信息:

搜索到虚拟机IP地址
docker inspect elasticsearch | grep IPAddress

请求:http://虚拟机IP(外网也可,需配置):9200  

-- 成功了 -- 
如下:

curl http://xxx:9200
{
  "name" : "e9e5a6ebcb4c",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "K78rVqleSXCcNUGsU75uXA",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

错误记录

docker: Error response from daemon: driver failed programming external connectivity on endpoint elasticsearch

开启了防火墙,关闭即可
systemctl disable firewalld
systemctl stop firewalld

Logstash 安装

  • 拉取镜像
docker pull logstash:7.6.2

  • 创建目录,拷贝Logstash配置文件 logstash.conf到该目录
mkdir /mnt/logstash
  • logstash.conf配置文件内容
input {
    tcp {
        mode => "server"
        host => "0.0.0.0"
        port => 4560
        codec => json_lines
        type => "debug"
    }
    tcp {
         mode => "server"
         host => "0.0.0.0"
         port => 4561
         codec => json_lines
         type => "error"
     }
     tcp {
         mode => "server"
         host => "0.0.0.0"
         port => 4562
         codec => json_lines
         type => "business"
     }
     tcp {
         mode => "server"
         host => "0.0.0.0"
         port => 4563
         codec => json_lines
         type => "record"
     }
}
filter{
     if [type] == "record" {
         mutate {
             remove_field => "port"
             remove_field => "host"
             remove_field => "@version"
         }
         json {
             source => "message"
             remove_field => ["message"]
         }
     }
}
output {
     elasticsearch {
         hosts => "es:9200"
         index => "logstash-%{type}-%{+YYYY.MM.dd}"
     }
}
  • 启动Logstash服务
docker run --name logstash -p 4560:4560 -p 4561:4561 -p 4562:4562 -p 4563:4563 \
--link elasticsearch:es \
-v /mnt/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
-d logstash:7.6.2
  • 进入容器内部,安装 json_lines 插件
docker exec -it logstash /bin/bash
logstash-plugin install logstash-codec-json_lines

Kibana 安装

地址:http://xxxx:5601/

  • 下载Kibana 7.6.2 的docker镜像:
docker pull kibana:7.6.2
  • 启动Kibana服务:
docker run --name kibana -p 5601:5601 \
--link elasticsearch:es \
-e "elasticsearch.hosts=http://es:9200" \
-d kibana:7.6.2

  • 开启防火墙:(云服务器开放端口即可-这里不操作)
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
  • 访问地址进行测试
http://虚拟机IP:5601


  • 设置中文
    在kibana.yml配置文件中添加一行配置,重启即可 docker restart kibana
i18n.locale: "zh-CN"
  • 启动
docker start kibana

错误记录

curl 172.17.0.5:5601
{"statusCode":503,"error":"Service Unavailable","message":"No Living connections"}


配置文件:
server.name: kibana
server.host: "0.0.0.0"
elasticsearch.hosts: [ "http://47.106.124.146:9200" ]

阿里云开放5601端口


Filebeat 安装

  • 拉取镜像
docker pull elastic/filebeat:7.6.2

  • 下载默认官方配置文件
wget https://raw.githubusercontent.com/elastic/beats/7.6/deploy/docker/filebeat.docker.yml
  • 启动filebeat
docker run --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2   \
--name filebeat \
--user=root  \
-v /logs/:/logs/ \
-v /mnt/filebeat/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml   \
-d elastic/filebeat:7.6.2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ifanatic

觉得对您有用,可以友情打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值