基于elk实现系统日志收集管理

发布于 2022-6-5 21:58
浏览
0收藏

ELK简介

ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

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

在elasticsearch中,所有节点的数据是均等的。

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

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

基于docker部署elk

创建docker网络

docker network create elasticsearch

部署Elasticsearch

docker run -d \
  --name elasticsearch \
  --network elasticsearch \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  elasticsearch:6.8.12

通过以上命令可创建一个单节点es,创建多节点集群需要启动多个容器实例

参数 说明
cluster.name 配置elasticsearch的集群名称。
node.name 节点名,es会默认随机指定一个名字,用户可自行配置。
path.data 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号分隔。
path.logs 设置日志文件的存储路径,默认是es根目录下的logs文件夹。
path.conf 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch。
path.plugins 设置插件的存放路径,默认是es根目录下的plugins文件夹。
bootstrap.memory_lock 设置为true可以锁住ES使用的内存,避免内存进行swap。
network.host 设置bind_host和publish_host,设置为0.0.0.0允许所有外网访问。
http.port 设置对外服务的http端口,默认为9200。
transport.tcp.port 集群结点之间通信端口,默认为9300。
discovery.zen.ping.timeout 设置ES自动发现节点连接超时的时间,默认为3S。
discovery.zen.minimum_master_nodes 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。
discovery.seed_hosts 集群发现,配置该节点会与哪些候选地址进行通信,hostname,ip,ip+port,比如:[“127.0.0.1:9300”]。
discovery.zen.ping.unicast.hosts 设置服务发现主机地址
node.master 是否为master节点
node.data 是否为数据节点

部署logstash

Logstash用于同步系统微服务日志到elasticsearch

docker run -d \
  --name logstash \
  --network elasticsearch \
  -v /xxx/logs:/data/logs
  -v /root/logstash/pipeline:/usr/share/logstash/pipeline \
  logstash:6.8.12 --config.reload.automatic

–config.reload.automatic参数:支持pipeline配置项文件热加载

配置Pipeline文件将挂载到容器的日志文件实时同步到es

XXX.conf: |
    input{
        file{
            path=>"/data/logs/xxx"
            type=>"systemlog"
            start_position=>"beginning"
            stat_interval=>"5"
        }
    }
    output{
        elasticsearch{
            hosts=>["elasticsearch:9200"]
            index=>"systemlog-%{+YYYY.MM.dd}"
        }
    }
  }

部署kibana

docker run -d \
  --name kibana \
  --network elasticsearch \
  -p 5601:5601 \
  -e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
  -e "I18N_LOCALE=zh-CN" \
  kibana:6.8.12

—END—

分类
标签
已于2022-6-5 21:58:40修改
1
收藏
回复
举报
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
    相关推荐