青柠檬檬哒|Stack 实现日志的自动采集、搜索和分析,Elastic

ElasticStack包括Elasticsearch、Kibana、Beats和Logstash(也称为ELKStack) 。 能够安全可靠地获取任何来源、任何格式的数据 , 然后实时地对数据进行搜索、分析和可视化
Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎
Kibana是一个免费且开放的用户界面 , 能够让您对Elasticsearch数据进行可视化管理和展示
Beats是一个免费且开放的平台 , 集合了多种单一用途数据采集器 , 将数据发送给Logstash或Elasticsearch
Logstash是一个免费且开放的服务器端数据处理管道 , 能够从多个来源采集数据 , 转换数据 , 然后将数据发送到您最喜欢的“存储库”中
一、下载镜像(image)搜索镱像(image)
dockersearchelasticsearchdockersearchkibanadockersearchlogstash获取镜像(image)
dockerpullelasticsearch:7.6.0#镜像名称:Tagdockerpullkibana:7.6.0#镜像名称:Tagdockerpulllogstash:7.6.0#镜像名称:Tag【青柠檬檬哒|Stack 实现日志的自动采集、搜索和分析,Elastic】注:版本要统一
二、创建ELK.ymlELK.yml
version:"3.5"services:elasticsearch:container_name:elasticsearchimage:elasticsearch:7.6.0#镱像(image)restart:always#重启方式environment:discovery.type:single-node#环境变量:运行模式单例ports:-"9200:9200"#端口映射-"9300:9300"kibana:container_name:kibanaimage:kibana:7.6.0#镱像(image)restart:always#重启方式environment:I18N_LOCALE:"zh-CN"#指定中文ports:-"5601:5601"#端口映射logstash:container_name:logstashimage:logstash:7.6.0restart:alwaysvolumes:#文件夹映射 , 本地:容器-"/Users/iChochy/logs:/usr/share/logstash/logs"ports:-"5044:5044"-"9600:9600"volumes自定义监控的文件夹注:注意YML文件编写 , 不要出现Tab制表符 , 否则导致文件解析错误 , 启动容器(container)失败
#错误信息yaml.scanner.ScannerError:mappingvaluesarenotallowedhere三、运行容器宿主机hosts中添加
127.0.0.1elasticsearch命令启动
docker-compose-fELK.ymlup-ddocker-compose-f#指定构建文件up#创建并启动容器-d#后台运行容器(container) , 打印容器(container)ID四、检查容器的运行状态elasticsearch访问:
mleo$dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES1b8cb2effedelogstash:7.6.0"/usr/local/bin/dock…"2hoursagoUpAboutanhour0.0.0.0:5044->5044/tcp,0.0.0.0:9600->9600/tcplogstash69b8bc678e4ekibana:7.6.0"/usr/local/bin/dumb…"3weeksagoUp2hours0.0.0.0:5601->5601/tcpkibana8c655f5b7493elasticsearch:7.6.0"/usr/local/bin/dock…"3weeksagoUp2hours0.0.0.0:9200->9200/tcp,0.0.0.0:9300->9300/tcpelasticsearch运行dockerlogsid查看容器运行日志
例:持续查看logstash日志dockerlogs1b8cb2effede-f五、修改logstash配置 , 监控日志文件运行dockerexec-it1b8cb2effedebash进入logstash运行vipipeline/logstash.conf修改logstash默认配置input{beats{port=>5044}file{path=>"/usr/share/logstash/logs/*"#监控的文件路径}}output{stdout{codec=>rubydebug}elasticsearch{hosts=>["http://elasticsearch:9200"]#elasticsearch请求地址index=>"ichochy"#索引名称}}运行dockerrestart1b8cb2effede重启logstash六、采集日志在logstash的监控的文件路径下动态添加日志文件 , 日志就可以自动采集到elasticsearch