Linux下安装ELK

简介

ELK 是 Elasticsearch、Logstash 和 Kibana 的缩写,它们代表的是一套成熟的日志管理系统,ELK Stack 已经成为目前最流行的集中式日志解决管理方案。

Elasticsearch

分布式搜索和分析引擎,具有高可伸缩、高可靠和易管理等特点。基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储、搜索和分析操作。通常被用作某些应用的基础搜索引擎,使其具有复杂的搜索功能;

Logstash

数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置;

Kibana

数据分析和可视化平台。通常与 Elasticsearch 配合使用,对其中数据进行搜索、分析和以统计图表的方式展示;

Filebeat

ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发是对它的替代。在需要采集日志数据的服务上安装 Filebeat,并指定日志目录或日志文件后,Filebeat 就能读取日志文件数据,迅速发送到 Logstash 进行解析,或直接发送到 Elasticsearch 进行集中式存储和分析。

安装 elasticsearch

下载镜像

docker pull elasticsearch:7.17.0

运行

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.0

检测是否启动成功,注意开启防火墙的端口(9200,9300)限制

浏览器访问 ip:9200,响应为

{
  "name" : "adfd092fcbb6",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "QYlWm28zSpCE39liFBr37g",
  "version" : {
    "number" : "7.17.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "bee86328705acaa9a6daede7140defd4d9ec56bd",
    "build_date" : "2022-01-28T08:36:04.875279988Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

修改配置

# 进入docker容器
docker exec -it elasticsearch /bin/bash
cd config
# 修改配置文件
vi elasticsearch.yml
# 增加下面两项,如果不添加以下两项,elasticsearch-head连接不了
http.cors.enabled: true
http.cors.allow-origin: "*"
# 重启 es 容器
docker restart elasticsearch

如果容器内不能编辑,就先拷贝出来

docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml .
docker cp elasticsearch.yml elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml

安装 elasticsearch-head(ES可视化工具)

下载镜像

docker pull mobz/elasticsearch-head:5

运行

docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5

连接 es

image

安装 kibana

下载镜像

docker pull kibana:7.17.0

运行

docker run -d --name kibana -p 5601:5601  -e ELASTICSEARCH_HOSTS=http://ip:9200 kibana:7.17.0

浏览器访问 ip:5601

image

安装 logstash

下载镜像

docker pull logstash:7.17.0

创建配置文件

mkdir -p /data/elk/logstash/conf.d
cd /data/elk/logstash
vim logstash.yml
内容如下:
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
#以下为filebeat的配置
cd /data/elk/logstash/conf.d
vi filebeat.conf
内容如下:
input {
    beats {
        port => 5044
        codec => "json"
    }
}

output {
  elasticsearch { hosts => ["ip:9200"] }
}

安装 filebeat

下载镜像

docker pull elastic/filebeat:7.5.1

运行

docker run -d --name=filebeat elastic/filebeat:7.5.1

修改配置文件

docker cp filebeat:/usr/share/filebeat /root/test_elk/
chmod 777 -R /root/test_elk/filebeat
chmod go-w /root/test_elk/filebeat/filebeat.yml

修改配置文件 filebeat.yml

filebeat:
  inputs:
    - type: log
      paths:
        - /data/log/java-projects/sys-manager/sys-manager_api.log
      multiline:
        pattern: '^\d{4}-\d{1,2}-\d{1,2}'
        negate:  true
        match:   after
      fields:
        type: demo1
      scan_frequency: 15s
      ignore_older: 24h
output:
  logstash:
    hosts: ["ip:5044"]

重新运行

docker rm -f filebeat
docker run -d  \
  --name=filebeat \
  -v /root/test_elk/filebeat:/usr/share/filebeat \
  -v /data/log/java-projects/sys-manager:/data/log/java-projects/sys-manager \
  elastic/filebeat:7.5.1

手动添加日志

echo "this is a test log message" >> /data/log/java-projects/sys-manager/sys-manager_api.log

在 kibana 上查看效果

image

image

总结

ELK 的版本需要一致,不然可能导致 ELK 无法使用。filebeat 的版本不需要特别注意,无特殊需求与本文一致即可。注意开启防火墙的端口限制。ELK 需要较大的内存,最好剩余 4G 以上。

image

遇到的问题

docker kibana nable to retrieve version information from Elasticsearch nodes. getaddrinfo

运行 kibana 失败,原因为 es 地址配置错误,要使用 ELASTICSEARCH_HOSTS 参数,而不是 ELASTICSEARCH_URL

Logstash stopped processing because of an error: (SystemExit) exit

运行 logstash 失败,原因为 配置文件错误,/data/elk/logstash/conf.d/filebeat.conf,写成了 filebeat.yml

参考

docker安装ELK
Docker 部署 ELK 详解
docker安装filebeat
docker kibana nable to retrieve version information from Elasticsearch nodes. getaddrinfo

posted @ 2023-08-14 18:36  strongmore  阅读(248)  评论(0编辑  收藏  举报