技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页Docker>正文
Docker安装部署ELK Stack
2023年08月18日 Docker 暂无评论 ⁄ 被围观 3,002次+

什么是ELK:

ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其它轻量型数据采集器,如filebeat等组成的日志收集分析系统。

Elasticsearch :分布式搜索引擎,具有高可伸缩、高可靠、易管理等特点,可以用于全文检索、结构化检索和分析,并能将这三者结合起来,Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一。

Logstash :数据收集处理引擎,支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Filebeat:轻量级数据收集引擎。Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

安装说明:

1、Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

2、部署组件的服务器时间必须一致,否则会出现日志无法显示。

安装部署

1、安装elasticsearch

官方网站:

https://www.elastic.co/cn/downloads/elasticsearch

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.9.1-linux-x86_64.tar.gz

Elasticsearch的功能:搜索、全文检索、分析数据、处理海量数据PB,对海量数据进行近实时的处理(ES可以自动将海量数据分散到多台服务器上去存储和检索)、高可用高性能分布式搜索引擎数据库

Elasticsearch的应用场景:网页搜索、新闻搜索、商品标签、日志收集分析展示

elasticsearch的安装方式:二进制包(elasticsearch-8.9.1-linux-x86_64.tar.gz)安装,依赖于java,所以首先安装java环境-jdk、docker方式安装

我们使用docker方式安装

Linux下安装部署Docker二进制版本

https://www.osyunwei.com/archives/13930.html

1.1创建用于elk的网络

docker network create elk

1.2部署docker镜像

#创建Elasticsearch容器

docker run --restart=always  -d \

--name=elasticsearch \

-v es-data:/usr/share/elasticsearch/data \

-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \

-e discovery.type="single-node" \

-e "xpack.security.enabled=false" \

--net elk \

-p 9200:9200 -p 9300:9300 \

docker.elastic.co/elasticsearch/elasticsearch:8.9.1

#测试elasticsearch

curl http://127.0.0.1:9200/_cat/health

curl http://localhost:9200/_cat/health

2、安装kibana

2.1创建kibana容器

docker run --restart=always  -d \

--name=kibana \

-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \

-e I18N_LOCALE=zh-CN \

--net elk \

-p 5601:5601 \

docker.elastic.co/kibana/kibana:8.9.1

#测试Kibana

http://192.168.21.101:5601

docker ps #查看容器

3、安装Filebeat(部署在被采集的日志服务器上)

https://www.elastic.co/cn/downloads/past-releases

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.9.1-x86_64.rpm

#安装

rpm -ivh filebeat-8.9.1-x86_64.rpm

systemctl enable filebeat #设置开机启动

systemctl start filebeat #启动

systemctl restart filebeat #重启

systemctl status filebeat #查看状态

ps -ef |grep filebeat #查看进程

4、使用filebeat采集日志

4.1采集系统日志

vi /etc/filebeat/filebeat.yml #修改filebeat配置文件

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/*.log

- /var/log/messages

setup.ilm.enabled: false

setup.template.name: "syslog"

setup.template.pattern: "syslog-*"

output.elasticsearch:

hosts: ["http://192.168.21.101:9200"]

index: "syslog-%{+yyyy.MM.dd}"

:wq! #保存退出

systemctl restart filebeat #重启

filebeat test config #检查配置文件是否正确

打开Management-Stack Management-数据-索引管理-数据流

http://192.168.21.101:5601/app/management

Kibana-数据视图-创建数据视图

Analytics-Discover

可以看到已经有数据显示了

4.2采集nginx日志

vi /etc/filebeat/filebeat.yml

filebeat.inputs:

- type: log

enabled: true

paths:

- /var/log/nginx/access.log

fields_under_root: true

fields:

type: access

project: ms

app: nginx

- type: log

enabled: true

paths:

- /var/log/nginx/error.log

fields_under_root: true

fields:

type: error

project: ms

app: nginx

setup.ilm.enabled: false

setup.template.name: "ms-nginx"

setup.template.pattern: "ms-nginx-*"

output.elasticsearch:

hosts: ["http://192.168.21.101:9200"]

indices:

- index: "ms-nginx-access-%{+yyyy.MM.dd}"

when.contains:

type: "access"

- index: "ms-nginx-error-%{+yyyy.MM.dd}"

when.contains:

type: "error"

:wq! #保存退出

systemctl restart filebeat #重启

filebeat test config #检查配置文件是否正确

systemctl status filebeat #查看状态

5、设置Elasticsearch和Kibana登录用户名和密码

Elasticsearch和Kibana默认情况下均未使用用户登录验证,为了数据安全我们需要配置用户验证。

5.1、在创建Elasticsearch容器的时候,将参数设置为true

-e "xpack.security.enabled=true"

5.2、修改Elasticsearch容器elasticsearch.yml配置文件

#以下是通过docker cp命令将配置文件复制到主机、编辑并再次复制回容器的步骤

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

vi elasticsearch.yml

cluster.name: "docker-cluster"

network.host: 0.0.0.0

http.cors.enabled: true

http.cors.allow-origin: "*"

:wq! #保存退出

#把修改后的文件拷贝到容器

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

#重启容器

docker restart elasticsearch

5.3、设置登录密码

docker exec -it elasticsearch /bin/bash #进入容器

./bin/elasticsearch-setup-passwords auto #自动生成密码

#####################################################

Changed password for user apm_system

PASSWORD apm_system = tBJjOUtT25ZvBOEvRMPY

Changed password for user kibana_system

PASSWORD kibana_system = J3gj9CiWEPqETAeWRzTq

Changed password for user kibana

PASSWORD kibana = J3gj9CiWEPqETAeWRzTq

Changed password for user logstash_system

PASSWORD logstash_system = NUqM2ZfwQwp9l5n5JKS3

Changed password for user beats_system

PASSWORD beats_system = xIH9zgiLsFZHjiy1s8NQ

Changed password for user remote_monitoring_user

PASSWORD remote_monitoring_user = sznAupLag25MBOfItx4e

Changed password for user elastic

PASSWORD elastic = I6N4ABKR=iU0Qe5UZ-9K

#####################################################

#./bin/elasticsearch-setup-passwords interactive #交互式设置密码

#elasticsearch-reset-password -u elastic #重置elastic用户的密码

#elasticsearch-reset-password -u kibana #重置elastic用户的密码

#####################################################

#修改elastic为指定的密码

curl -XPOST -u elastic 'http://localhost:9200/_security/user/elastic/_password' -H "Content-Type: application/json" -d'

{

"password": "123456"

}

'

#修改kibana为指定的密码

curl -XPOST -u kibana 'http://localhost:9200/_security/user/kibana/_password' -H "Content-Type: application/json" -d'

{

"password": "123456"

}

'

#####################################################

exit #退出容器

#登录验证

curl http://localhost:9200 -u elastic

http://192.168.21.101:9200/

登录账号:elastic

密码:123456

5.4、修改kibana配置文件kibana.yml

#以下是通过docker cp命令将配置文件复制到主机、编辑并再次复制回容器的步骤

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

vi kibana.yml

#添加这2行,此处设置kibana的用户名和密码,仅可用于连接elasticsearch并与之通信, 不能用于kibana登录

elasticsearch.username: "kibana"

elasticsearch.password: "123456"

:wq! #保存退出

#把修改后的文件拷贝到容器

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

docker restart kibana #重启kibana容器

#验证登录

curl http://localhost:5601 -u elastic

http://192.168.21.101:5601/

登录账号:elastic

密码:123456

#kibana配置的时候要写kibana用户

#kibana登录的时候使用elastic用户,kibana用户仅是用来连接elasticsearch并与之通信, 不能用于kibana登录

#API访问es验证

请求地址:http://elastic:123456@192.168.21.101:9200

相关命令:

docker stop dd4cffaa8967 #关闭容器

docker start dd4cffaa8967 #启动容器

docker network ls #查看网络

docker network inspect elk #详细查看网络

docker network rm elk #删除网络

docker volume ls #查看卷

docker volume inspect es-data #详细查看卷

docker volume rm es-data #删除卷

docker ps -aq #列出所有的容器ID

docker stop $(docker ps -aq) #停止所有的容器

docker rm $(docker ps -aq) #删除所有的容器

docker rmi $(docker images -q) #删除所有的镜像

docker image ls    #查看当前所有镜像

docker images #查看镜像

docker image save docker.elastic.co/kibana/kibana:8.9.1 > /tmp/kibana-8.9.1.tar.gz #导出镜像

docker image save docker.elastic.co/elasticsearch/elasticsearch:8.9.1 > /tmp/elasticsearch-8.9.1.tar.gz #导出镜像

docker load -i /tmp/elasticsearch-8.9.1.tar.gz #导入镜像

docker image tag docker.elastic.co/elasticsearch/elasticsearch:8.9.1 myelasticsearch:8.9.1 #修改镜像名称

rpm -qa | grep filebeat

rpm -e filebeat-8.9.1-x86_64.rpm #卸载

#删除所有容器

docker stop $(docker ps -aq)

docker rm $(docker ps -aq)

docker network rm elk

docker volume rm es-data

至此,Docker安装部署ELK Stack完成。

     
» 转载请注明来源:系统运维 » Docker安装部署ELK Stack

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2024 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3