小李同学 keep digging deeper
ELK

ELK日志分析搭建(一),安装ES + Kibana

2 阅读 — 字

ELK(ES + Logstash + Kibana)采日志有两条路,差别在日志怎么从应用走到 Logstash。

两种采集方案

方案一:Logstash 直接读日志文件。 每台服务器上装一个 Logstash,配置成固定读某个日志文件,然后写进 ES,开发者在 Kibana 里查。

方案二:ELK + Kafka。 Logstash 不直接碰日志文件,而是应用先把日志写进 Kafka,Logstash 再从 Kafka 消费。

不管哪种方案,ES 和 Kibana 都得装,所以先做方案一。下面全部基于 Docker,ES 和 Kibana 最好保持同一个版本。

Elasticsearch

镜像页:https://hub.docker.com/_/elasticsearch/tags?page=1&name=7.14.0

 docker run -d --name elasticsearch \
 --net macvlan --ip 192.168.31.97 \
 -v /home/myfiles/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
 -v /home/myfiles/docker/elasticsearch/data:/usr/share/elasticsearch/data \
 -v /home/myfiles/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
 -e "discovery.type=single-node" \
 -e ES_JAVA_OPTS="-Xms1024m -Xmx1024m" \
 docker.io/jasonleemz/elasticsearch:230730

discovery.type=single-node 是单节点模式,不用配集群发现;堆内存固定 1 GB,小机器上比较稳当。

elasticsearch.yml:

http.host: 0.0.0.0
xpack.security.enabled: false

0.0.0.0 是为了让容器外的 Kibana 能连进来,关掉 security 则是省掉证书和账号配置。仅限内网环境这么用,别直接暴露到公网。

Kibana

镜像页:https://hub.docker.com/_/kibana/tags?page=1&name=7.14.0

docker run -itd --name kibana \
--net macvlan \
-e ELASTICSEARCH_HOSTS="http://192.168.31.97:9200" \
-v /home/myfiles/docker/kinaba/config/kinaba.yml:/usr/share/kibana/config/kinaba.yml \
docker.io/jasonleemz/kinaba:230731

kinaba.yml:

#
# ** THIS IS AN AUTO-GENERATED FILE **
#

# Default Kibana configuration for docker target
server.host: "0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
monitoring.ui.container.elasticsearch.enabled: true

两个容器都跑在 macvlan 网络上,ES 用固定 IP 192.168.31.97,所以 Kibana 启动参数里的 ELASTICSEARCH_HOSTS 写这个地址即可,不靠容器名解析。

进 Kibana 后台

Kibana 的端口是 5601,浏览器打开 http://kibana:5601/:

本文作者 小李同学,转载请注明出处。

评论

还没有人留言。

写一条

提交后会先进站主的待审列表,通过之后才公开。

搜索文章

输入关键词搜索文章。