裸机安装部署运行ELK全套教程
1: 内容概要
-
1.1:本教程的核心目标是从基础出发,首先学习如何从头开始搭建一套ELK(Elasticsearch, Logstash, Kibana)系统。在此过程中,您将获得关于虚拟机(VM)安装和使用的知识,同时掌握Docker命令的基础操作。最终,本教程将通过模拟业务场景的应用演示,来展示ELK系统的运行和使用。
-
1.2:涉及软件和应用组件:vmware、docker、elasticsearch、kibana、logstash、kafka、springboot。
-
1.3:如果您对一些基本概念感到不熟悉,可以自行通过百度进行查询和学习。
-
1.4: 本教程将提供一个Spring Boot应用程序的示例,该程序演示了如何与ELK(Elasticsearch, Logstash, Kibana)集成。
-
1.5:博客地址:https://blog.csdn.net/itman1010
-
1.6:在本人博客资源下载所有安装介质
1.7:构建系统一定要仔细和耐心!!!!!!
2: 系统架构
3: 安装vmware
-
3.1:如果已经有linux系统,则可以直接跳到步骤5
-
3.2:如果是windows系统,则需要安装vmware,安装步骤如下:
-
3.3:使用vmware版本如下
-
3.4:提供vmware安装介质和序列,加微信可以获取
-
3.5:vmware安装后界面如下
4:安装centos
-
4.1:在vmware安装centos系统
-
4.2:免费提供CentOS的安装介质:CentOS-7-x86_64-DVD-2009.iso,博客资源里有下载地址
-
4.3:在vmware点击“”创建虚拟机”,选择安装介质:CentOS-7-x86_64-DVD-2009.iso
-
4.4:在software selection选择最小化安装,快速安装,节省资源使用
-
4.5:内存直接调整3G
-
4.6:网络选择NAT,当然可以根据自己需要选择其他方式
-
4.7:CPU调大写:至少能有3核
-
4.8:用root用户进行登录,密码是安装centos过程中设置密码:elk
-
4.9:确定是否已安装yum。使用命令`yum list installed`来检查系统中是否已经安装了yum。如果已安装,终端会输出yum的版本信息
-
4.10:关闭和禁止防火墙
关闭防火墙:systemctl stop firewalld
禁止防火墙启动:systemctl disable firewalld -
4.11:设置静态IP
进入目录:cd /etc/sysconf ig/network-scripts, 使用vi命令修改文件:ifcfg-ens33
IP必须是网关所在网段192.168.48.X
修改:
BOOTPROTP=“static”
增加:
IPADDR =192.168.48.120
NETMASK=255.255.255.0
GATEWAY=192.168.48.2
DNS1=192.168.48.2
网关按照下面流程寻找:
重启网络服务:systemctl restart network
查看IP设置执行命令: ip addr
在虚拟机上ping物理机IP,执行命令:ping 192.168.3.138
在物理机上ping虚拟机IP,执行命令:ping 192.168.48.120
在虚拟机上ping百度,执行命令:ping <www.baidu.com> ,说明虚拟机可以连上外网
5:安装SecureCRT
- 5.1:在物理机上安装secureCRT或类似软件,方便登录操作虚拟机linux系统
- 5.2:提供安装介质,见后面资源提供
- 5.3:打开主页,创建系统连接
- 5.4: 设置192.168.48.120连接界面
6:安装docker以及镜像
-
6.1:执行docker安装命令:yum install docker
安装过程提示输入y,一直安装结束 -
6.2:启动docker命令:systemctl start docker, 然后执行docker命令检查是否安装成功
-
6.3:设置docker镜像源
进入目录:/etc/docker,修改文件daemon.json添加如下内容(一定要复制完整):
“registry-mirrors”:["https://docker.mirrors.ustc.edu.cn",“https://cr.console.aliyun.com/”,“http://hub-mirror.c.163.com”\]
注:两处中间横线要复制出来,别漏了
然后重启docker,执行命令:systemctl restart docker -
6.4: 安装elk需要相关的docker镜像
docker pull elasticsearch:7.7.1
docker pull kibana:7.7.1
docker pull logstash:7.7.1
docker pull docker.io/zookeeper:3.7.1
docker pull wurstmeister/kafka:latest
查看已经下载镜像执行命令:docker images
下载镜像要有些耐性,有些镜像下载可能有点慢,有些时候可能会超时要多执行几次
下面安装步骤一定要安装顺序执行,因为容器内IP会安装启动顺序生成172.17.0.2、172.17.0.3 …
7:安装elastricsearch
-
7.1:运行elastricsearch, 执行启动命令
docker run --name elasticsearch -d -e ES_JAVA_OPTS=“-Xms512m -Xmx512m” -e “discovery.type=single-node” -p 9200:9200 -p 9300:9300 elasticsearch:7.7.1 -
7.2:查看启动elastricsearch的docker容器,执行命令: docker ps
确保状态是up状态表示容器运行正常 -
7.3:浏览器运行: http://192.168.48.120:9200 (多等几秒钟,多刷新几次浏览器) 界面上显示如下信息表示elastricsearch启动运行成功
-
7.4:执行命令:docker inspect elasticsearch获取容器里IP地址172.17.0.2
8:安装kibana
-
8.1:新建本地配置目录和配置文件:/home/elk/kibana/kibana.yml
# Default Kibana configuration for docker target
server.name: kibana
server.host: “0”
elasticsearch.hosts: [ “http://172.17.0.2:9200” ]
monitoring.ui.container.elasticsearch.enabled: true
172.17.0.2 也可以使用虚拟机192.168.48.120替换 -
8.2:执行启动命令:
docker run -d --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 --name kibana -p 5601:5601 -v /home/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml --privileged=true kibana:7.7.1 -
8.3:查看状态UP成功,执行命令:docker images
-
8.4:浏览器运行: http://192.168.48.120:5601 (一定多刷几次,多等几分钟)
9: 安装zookeeper
-
9.1:执行启动命令:
docker run -d --name zookeeper -p 2181:2181 --privileged=true zookeeper:3.7.1 -
9.2:查看容器状态,执行命令docker ps
-
.9.3:验证zookeeper是否可能,需要进入容器内部:
进入容器内部,执行命令:docker exec -it zookeeper bash
进入目录bin ,执行如下命令:./zkServer.sh status
看到如下信息,说明zookeeper安装成功
10:安装kafka
-
10.1:执行启动脚本:
docker run -d --name kafka -p 9092:9092 --env KAFKA_ADVERTISED_HOST_NAME=192.168.48.120 --env KAFKA_ADVERTISED_PORT=9092 --env KAFKA_ZOOKEEPER_CONNECT=172.17.0.4:2181 wurstmeister/kafka:latest
注:KAFKA_ADVERTISED_HOST_NAME填写地址是虚拟机主机地址192.168.48.120,后面业务应用直接发送这个地址 -
10.2:查看容器启动是否成功,执行命令:docker ps
-
10.3:进入容器内部验证是否能正常发送消息:
进入容器执行命令:docker exec -it kafka bash
进入kafka目录:/opt/kafka/bin
创建topic : ./kafka-topics.sh --create --zookeeper 172.17.0.4:2181 --replication-factor 1 --partitions 8 --topic elktopic
注:这里创建topic连接zk的Ip是172.17.0.4,可以执行命令查看zookeeper的容器IP
查看topic : kafka-topics.sh --list --bootstrap-server 127.0.0.1:9092
终端1模拟消息生产:./kafka-console-producer.sh --bootstrap-server localhost:9092 --topic elktopic
终端2模拟消息消费: ./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic elktopic
11:安装logstash
-
11.1:新建本地配置目录/home/elk/logstash;新增配置文件:logstash.yml和logstash.conf
-
11.2:logstash.yml文件信息增加如下:
http.host: “0.0.0.0”
xpack.monitoring.elasticsearch.hosts: [ “http://172.17.0.2:9200” ]
注:172.17.0.2是elasticesearch,可以执行命令查看elasticsearch的容器IP -
11.3:logstash.conf文件信息如下:
input {
kafka {
bootstrap_servers => “172.17.0.5:9092”
group_id => “logstash” #分组id
topics => [“elktopic”]
codec => “plain”
consumer_threads => 8 #消费者线程数,与分区数量保持一致
auto_offset_reset => latest #自动将偏移重置为最新偏移
decorate_events => “true” #将元数据添加到事件中
}
}
output {
elasticsearch {
hosts => ["http://172.17.0.2:9200"\] #es
index => “logs_%{[@metadata][kafka][topic]}_%{+YYYY.MM.dd}” #动态创建索引
}
}
注:172.17.0.2是elasticesearch,可以执行命令查看elasticsearch的容器IP;
172.17.0.5是kafka,可以执行命令查看kafka的容器IP -
11.4:执行logstash启动命令:
docker run -d --name logstash \
-p 5044:5044 -p 9600:9600 \
-v /home/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/elk/logstash/logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
–privileged=true logstash:7.7.1 -
11.5:查看容器启动成功,执行命令:docker ps
-
11.6:后续稍等5分钟,刷新日志执行命令:docker logs logstash
12:模拟演示1
- 12.1:模拟演示从kafka发送模拟消息在kibana界面展示
- 12.2:登录kafka容器内部执行模拟发送消息命令,具体参考上面步骤10
- 12.3:登录kibana界面查看elastricsearch生成索引
- 12.4:建立kibana的对elastricseach这个索引的监控
- 12.5:切回到监控界面
13:开发、演示Springboot应用
-
13.1:代码加微信获取
源代码,可以根据自己需求增加业务代码
二进制运行文件,直接启动:
java -jar elkdemo-1.0-SNAPSHOT.jar
界面打开网址:http://localhost:9386/elkDemo/sayHello?yourname=jack
jack可以替换输入的内容 -
13.2:教学视频使用
裸机部署运行ELK全套视频.mp4,加微信获取
14:注意点和异常分析解决
- 见文档教程和视频,加微信获取