logo头像

老陕小张学技术接地气

docker搭建elk8.9.1

一、系统基础配置

1、主机硬件配置

系统版本 系统配置 IP
CentOS7.9.2009 2vCPU8G 192.168.75.100

2、系统基础配置

配置软件源

mv /etc/yum.repos.d/* /tmp/  #备份系统软件园
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo  #配置阿里云软件源
yum clean all #清除环境
yum repolist #刷新软件源

关闭seLinux

sed -i "s/=enforcing/=disabled/g" /etc/selinux/config  #修改selinx配置

关闭防火墙

systemctl  stop firewalld  #关闭防火墙
systemctl  disable firewalld #开机关闭,防火墙不自启

清除环境

reboot #关键重新启动

二、架构解读

ELK(Elasticsearch、Logstash、Kibana)与Filebeat是一个常用的日志和事件管理堆栈,用于实时收集、处理、分析和可视化大规模数据。它们一起提供了强大的工具和平台,用于监控系统、分析应用程序性能、进行安全分析以及探索和理解各种数据。搭建教程可以同访问https://www.elastic.co/guide/index.html,查找各组件安装教程。

以下是ELK与Filebeat的详细介绍和如何整合它们的基本概述:

  1. Elasticsearch(ES):

    • Elasticsearch是一个分布式、实时的搜索和分析引擎,专用于高效地存储、索引和检索数据。
    • 它支持全文搜索、结构化查询和复杂的分析。
    • Elasticsearch以分布式方式运行,提供高可用性和可扩展性。
  2. Logstash

    • Logstash是一个数据收集、转换和传输管道。
    • 它可以从各种数据源(如日志文件、消息队列、数据库等)收集数据。
    • Logstash可以对数据进行转换和清洗,以确保数据的一致性和结构。
    • 它还可以将数据发送到Elasticsearch或其他目标存储或分析工具。
  3. Kibana

    • Kibana是一个用于可视化和分析数据的开源工具。
    • 它提供了直观的用户界面,用于创建仪表板、图表和可视化,以便用户可以轻松地探索和理解数据。
    • Kibana还允许用户执行高级查询和构建自定义仪表板。
  4. Filebeat

    • Filebeat是一个轻量级的数据收集代理,用于实时监控、收集和发送日志和事件数据。
    • 它可以监视指定的日志文件、系统日志、容器日志等,然后将其发送到Logstash或Elasticsearch进行进一步处理和存储。
    • Filebeat支持多种输入和输出插件,使其易于与各种数据源和目标集成。

整合ELK与Filebeat的工作流程通常如下:

  1. Filebeat部署在数据源服务器上,监视日志文件或事件源。
  2. Filebeat收集数据,并可以对数据进行简单的结构化处理。
  3. Filebeat将数据发送到Logstash用于进一步处理(可选)。
  4. Logstash可以执行高级数据转换、过滤和增强,并将数据发送到Elasticsearch进行索引。
  5. Elasticsearch存储和索引数据,使其可以进行快速搜索和分析。
  6. Kibana提供用户界面,允许用户查询、可视化和分析数据,创建仪表板以监控系统性能、故障排除问题和进行安全分析。

ELK与Filebeat的整合使你能够实时处理和可视化各种数据,从而支持日志分析、应用程序性能监控、安全事件管理等多种用途。这个堆栈提供了一个强大的解决方案,可以帮助组织更好地理解其数据并做出更明智的决策。

三、搭建教程

1、安装docker环境

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2   #安装依赖
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #添加镜像源
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin #安装软件
# 更换阿里云镜像仓库
 mkdir /etc/docker/
vim  /etc/docker/daemon.json
{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}
#重新启动docker服务
 systemctl daemon-reload
 systemctl restart docker
 systemctl enable docker

2、安装Elasticsearch

mkdir -p /usr/local/data-docker/  #创建环境
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.1 #拉取镜像
docker run -itd --restart=always --name es01 -p 9200:9200 -p 9300:9300 --privileged=true --net host    -e "discovery.type=single-node"  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" docker.elastic.co/elasticsearch/elasticsearch:8.9.1
docker logs -f es01 #查看用户账号,需要保存

docker cp es01:/usr/share/elasticsearch   /usr/local/data-docker/  #复制挂载资源
chmod -R 777  /usr/local/data-docker/elasticsearch                   #资源授权
docker rm -f es01  #删除容器
docker run -itd --restart=always --name es01 -p 9200:9200 -p 9300:9300 --privileged=true --net host    -v /usr/local/data-docker/elasticsearch:/usr/share/elasticsearch -e "discovery.type=single-node"  -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" docker.elastic.co/elasticsearch/elasticsearch:8.9.1

检查elasticsearch状态

curl --cacert /usr/local/data-docker/elasticsearch/config/certs/http_ca.crt -u elastic:x4lJ73ZLdDr+qPJUvbZV https://192.168.75.100:9200  #检查命令
{
  "name" : "elk",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "l485S3D2RJmqzCJ5znFFFw",
  "version" : {
    "number" : "8.9.1",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "a813d015ef1826148d9d389bd1c0d781c6e349f0",
    "build_date" : "2023-08-10T05:02:32.517455352Z",
    "build_snapshot" : false,
    "lucene_version" : "9.7.0",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

3、安装Kibana

docker pull docker.elastic.co/kibana/kibana:8.9.1 #拉取镜像
docker run -itd --restart=always --name kib-01 -p 5601:5601 --net host docker.elastic.co/kibana/kibana:8.9.1  #启动容器
docker logs -f kib-01 #查看容器日志

访问本地的地址http://192.168.75.100:5601/?code=076601

点击configure elastic

Kibana汉化

docker cp kib-01:/usr/share/kibana/config/kibana.yml .   #将容器的配置文件复制到本地
echo 'i18n.locale: "zh-CN"' >> kibana.yml                #添加汉化插件
docker cp  kibana.yml  kib-01:/usr/share/kibana/config/kibana.yml   #修改容器里面的配置文件
docker restart  kib-01                                   #重新启动容器

4、安装Logstash

docker pull  docker.elastic.co/logstash/logstash:8.9.1  #拉取镜像
docker run -it -d -p 5044:5044  --name logstash    --net host  docker.elastic.co/logstash/logstash:8.9.1  #启动容器
docker cp logstash:/usr/share/logstash  /usr/local/data-docker/logstash   #复制挂载资源
chmod -R 777 /usr/local/data-docker/logstash   #授权
docker rm -f logstash #删除容器
docker run -it -d -p 5044:5044  --name logstash  --net  host -v /usr/local/data-docker/logstash:/usr/share/logstash    docker.elastic.co/logstash/logstash:8.9.1  #启动容器
cp /usr/local/data-docker/elasticsearch/config/certs/http_ca.crt /usr/local/data-docker/logstash/   #复制访问的证书
vim /usr/local/data-docker/logstash/config/logstash.yml #修改配置文件
http.host: "0.0.0.0"
#xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

修改logstash.conf

vim /usr/local/data-docker/logstash/pipeline/logstash.conf
input{
  beats{
    port => 5044
  }
}
output{
     elasticsearch {
        hosts => ["https://192.168.75.100:9200"]   #es主机ip
        index => "ecs-logstash-%{+YYYY.MM.dd}"  #索引名称
        user => "elastic"                     #es账号
        password => "oc1K_+YvPPx1c3FM6Zak"    #es密码
        ssl => true                           #开启ssl
        cacert => "/usr/share/logstash/http_ca.crt"  #ssl证书
  }
}

查看容器ip密码账号

重新启动logstash容器

docker restart logstash

5、安装Filebeat

访问下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.9.1-x86_64.rpm #复制链接
rpm -ivh filebeat-8.9.1-x86_64.rpm 

配置filebeat的文件

cp  /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  paths:
    - /var/log/*.log
output.logstash:
  hosts: ["192.168.75.100:5044"]
systemctl  restart filebeat #启动
systemctl  enable filebeat  #开机自启

四、测试ELK集群架构

创建索引日志

验证elk集群状态

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励

-->