在Linux中部署ELK架构
ELK(ElasticSearch分布式搜索引擎、Logstash数据收集处理引擎和Kibana可视化化平台)是在大型后端架构中,一个标准的数据采集方案。在公网IP为x.x.x.x的服务器上部署Elasticsearch+ Logstash+filebeat+redis+Kibana架构。这种架构先通过Logstash收集日志,然后通过Elasticsearch分析日志,最后在Kibana中展示数
ELK(ElasticSearch分布式搜索引擎、Logstash数据收集处理引擎和Kibana可视化化平台)是在大型后端架构中,一个标准的数据采集方案。
在公网IP为x.x.x.x的服务器上部署Elasticsearch+ Logstash+filebeat+redis+Kibana架构。这种架构先通过Logstash收集日志,然后通过Elasticsearch分析日志,最后在Kibana中展示数据。可以在客户端部署filebeat(轻量级数据收集引擎),filebeat消耗比Logstash更少的资源就能够收集到日志。可以通过部署redis来避免数据的丢失,当Logstash出现故障时,日志还是存在于redis中,当Logstash再次启动,就会读取redis中存储的日志。
docker安装
第一步,卸载旧版本docker。
命令:yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
第二步,安装gcc依赖。
命令:yum -y install gcc gcc-c++
第三步,使用docker仓库进行安装。
# 设置仓库,安装所需的软件包。
命令:yum install -y yum-utils device-mapper-persistent-data lvm2
# 可以选择阿里云源地址
命令:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第四步,安装docker。
# 更新yum软件包索引
命令:yum makecache
# 安装最新版本的docker Engine-Community和containerd
命令:yum -y install docker-ce docker-ce-cli containerd.io
# 查看docker-ce是否成功安装
命令:yum list docker-ce
docker安装完默认未启动,并且已经创建好docker用户组,但该用户组下没有用户。
或
# 列出存储库中可用的版本并按版本号从高到低进行排序
命令:yum list docker-ce --showduplicates | sort -r
# 通过其完整的软件包名称安装特定版本,如docker-ce-24.0.0。
命令:yum -y install docker-ce-24.0.0 docker-ce-cli-24.0.0 containerd.io
第五步,启动docker。
命令:systemctl enable docker
systemctl start docker
systemctl restart docker
第六步,验证docker是否正确安装。
命令:docker version
docker run hello-world
若结果显示“Unable to find image 'hello-world:latest' locally”,则需要按照下面的步骤来解决:
1)创建文件daemon.json文件。
命令:touch /etc/docker/daemon.json
2)配置文件/etc/docker/daemon.json,添加阿里云镜像。
{
"registry-mirrors": ["https://ufxq8t1x.mirror.aliyuncs.com"]
}
3)重启docker服务。
命令:systemctl restart docker
systemctl status docker
再次验证:docker run hello-world
若结果显示“Hello from docker!”,则说明docker安装成功。
若结果显示“docker: Cannot connect to the docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?”,则运行如下命令:
systemctl daemon-reload
systemctl restart docker.service
再次验证:docker run hello-world
若结果显示“Hello from docker!”,则说明docker安装成功。
Elasticsearch安装
第一步,创建docker网络。
命令:docker network create -d bridge elastic
第二步,拉取elasticsearch镜像。
命令:docker pull elasticsearch:7.12.1
第三步,执行docker脚本。
命令:docker run -d \
--name elasticsearch \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network elastic \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1
第四步,查看docker情况。
# 列出本地所有的镜像
命令:docker images -a
# 列出当前所有正在运行的镜像
命令:docker images
# 从docker中强制删除镜像
命令:docker rmi -f 镜像ID或容器名称
# 列出所有的容器
命令:docker ps -a
# 列出当前所有正在运行的容器
命令:docker ps
# 从docker中强制删除容器
命令:docker rm -f 容器ID或容器名称
第五步,登录网址:http://x.x.x.x:9200进行测试。
Kibana安装
第一步,在docker中拉取kibana镜像。
命令:docker pull kibana:7.12.1
第二步,在docker中执行启动脚本命令。
命令:docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--network elastic \
-p 5601:5601 \
kibana:7.12.1
第三步,查看docker情况。
# 列出本地所有的镜像
命令:docker images -a
# 列出当前所有正在运行的镜像
命令:docker images
# 从docker中强制删除镜像
命令:docker rmi -f 镜像ID或容器名称
# 列出所有的容器
命令:docker ps -a
# 列出当前所有正在运行的容器
命令:docker ps
# 从docker中强制删除容器
命令:docker rm -f 容器ID或容器名称
第四步,查看kibana中的日志。
命令:docker logs -f kibana
kibana中的日志文件中会显示“5601”端口号。
第五步,登录网址:http://x.x.x.x:5601进行测试。
在浏览器登录之后会出现下图所示页面,然后点击“Add data”。

Logstash安装
第一步,在docker中拉取logstash镜像。
命令:docker pull logstash:7.12.1
第二步,在docker中执行启动脚本命令。
命令:docker run -d \
--name logstash \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--network elastic \
-p 9600:9600 \
-p 5044:5044 \
logstash:7.12.1
第三步,查看docker情况。
# 列出本地所有的镜像
命令:docker images -a
# 列出当前所有正在运行的镜像
命令:docker images
# 从docker中强制删除镜像
命令:docker rmi -f 镜像ID或容器名称
# 列出所有的容器
命令:docker ps -a
# 列出当前所有正在运行的容器
命令:docker ps
# 从docker中强制删除容器
命令:docker rm -f 容器ID或容器名称
filebeat安装
第一步,在docker中拉取filebeat镜像。
命令:docker pull elastic/filebeat:7.12.1
第二步,在docker中执行启动脚本命令。
命令:docker run -d \
--name filebeat \
-e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 \
--network elastic \
-e TZ=Asia/Shanghai \
elastic/filebeat:7.12.1
第三步,查看docker情况。
# 列出本地所有的镜像
命令:docker images -a
# 列出当前所有正在运行的镜像
命令:docker images
# 从docker中强制删除镜像
命令:docker rmi -f 镜像ID或容器名称
# 列出所有的容器
命令:docker ps -a
# 列出当前所有正在运行的容器
命令:docker ps
# 从docker中强制删除容器
命令:docker rm -f 容器ID或容器名称
redis安装
第一步,安装前,检测系统是否安装了redis。
命令:rpm -qa | grep redis
若结果显示类似“redis-6.0.5-1.11.al8.x86_64”,则可以选择进行卸载。
# 普通删除模式
命令:rpm -e redis-6.0.5-1.11.al8.x86_64
# 如果使用普通删除模式命令删除时,提示有依赖的其它文件,则用强力删除模式命令对其进行强力删除
命令:rpm -e --nodeps redis-6.0.5-1.11.al8.x86_64
命令:yum -y install redis
若结果显示“redis-6.2.7-1.0.2.al8.x86_64”,则说明安装redis成功。
redis配置
第一步,为了方便管理,把将/etc/redis.conf配置文件备份。
命令:cp -pr /etc/redis.conf /etc/redis1.conf
第二步,编辑配置/etc/redis.conf文件。
编辑配置/etc/redis.conf文件,做以下几处修改:
“bind 127.0.0.1”为“bind 0.0.0.0”,
“daemonize no”改为“daemonize yes”,
“requirepass foobared”改为“requirepass 123456”,
保存并重启redis。
redis启动、关闭服务
命令:systemctl start redis
若结果显示“Active: failed”,则需要把文件/usr/lib/systemd/system/redis.service中的“--daemonize no --supervised systemd”去掉,注释掉“Type=notify”,然后使用命令“systemctl daemon-reload”重新加载服务的配置文件,使服务程序配置文件生效,最后再次启动redis。
# 查看服务状态是否为“Active: active (running)”
命令:systemctl status redis
若结果显示服务状态为“Active: active (running)”,则说明启动redis服务成功。
# 设置开机自启动
命令:systemctl enable redis
# 结果第一行最后面显示redis端口
命令:ps -ef | grep redis
# 结果第一行最后面显示redis进程号
命令:netstat -nap | grep 6379
# 服务端启动成功后,启动redis客户端,查看端口号。
命令:redis-cli
auth 123456
set [key] [value]
get [key]
exit
netstat -nap | grep 6379
第二步,外部IP地址访问redis。
命令:ip a
redis-cli -h x1.x1.x1.x1 -p 6379
auth "123456"
keys *
set [key] [value]
get [key]
exit
第三步,关闭、重启redis服务。
命令:systemctl stop redis
systemctl restart redis
netstat -nap | grep 6379
ELK部署完成后的效果
第一步,登录网址:http://x.x.x.x:5601/。
第二步,在kibana页面选择点击“堆栈监控”会跳转到“未找到监视数据”页面,然后点击“设置自我监控”就会跳转到“监控当前已关闭”页面。



第三步,在“监控当前已关闭”页面点击“打开监控”会跳转到“成功获取监视数据”页面以及“集群概述”页面。“集群概述”页面显示各种监控数据可供用户方便了解集群的情况。


第四步,在kibana页面选择点击“堆栈管理”会跳转到“堆栈管理”页面,然后点击“数据—索引管理”,若能看到索引的“健康”状态为“绿”,“地位”为“打开”,则说明ELK部署配置成功。


魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)