作者:Belief | 来源:互联网 | 2023-09-17 18:14
一、背景
笔者所在项目组的项目要做安全等保:用到部署日志审计系统;此前听说有ELK
这种神器,搜索了一下,发现利用docker搭建似乎并不麻烦,于是进行了一番尝试(运维人家觉得做个样子,不想让接入他们的ELK),那就自己搞呗,结果还比较顺利,blog很多比较详细版本,这里仅限记录,希望留给有需要的读者进行参考。
笔者这次实践的过程当中参考了较多的文档与笔记,参考的链接地址有:
elk docker-configuration说明:https://elk-docker.readthedocs.io/
Docker logstash configuration说明文档 、
Docker Hub官网、
Docker ELK使用文档
这哥们写的也挺不错的:https://www.cnblogs.com/soar1688/p/6849183.html
用这家伙的可以跑起来:使用Docker快速部署ELK分析Nginx日志实践
二、操作概要
- 服务安装与运行
- 数据导入与校验
- 绘图配置与展示
ElasticSearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。这是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎。
Logstash是一个具有实时渠道能力的数据收集引擎,主要用于日志的收集,过滤与解析,并将其存入ElasticSearch中。
Kibana是一款 基于Apache开源协议,为ElasticSearch提供分析和可视化的Web平台,它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图。
5、安装前提条件:
Docker至少得分配3GB的内存;
Elasticsearch至少需要单独2G的内存;
防火墙开放相关端口;
vm.max_map_count至少需要262144,附永久修改vm.max_map_count方法如下图:
执行命令:sysctl -p 查看
注意:如果看到这样的报错信息 Logstash could not be started because there is already another instance using the configured data directory. If you wish to run multiple instances, you must change the "path.data" setting. 请执行命令:service logstash stop 然后在执行就可以了。
部署Logstash服务
添加 ~/logstash/logstash.conf 配置文件如下:具体参数解释:https://blog.csdn.net/weixin_41436549/article/details/82222344
参考官档 Logstash Configuration Examplesedit
input {file {path => "/alex/data/alex-oas/logs/kafkaData.log"start_position => "beginning"}
}filter {if [path] =~ "kafkaData" {mutate { replace => { "type" => "apache_kafkaData" } }grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}}date {match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]}
}output {elasticsearch {hosts => ["localhost:9200"]}stdout { codec => rubydebug }
}
ps:附上创建挂载指令
-----bash
#!/bin/bash
#把文件挂载elk容里面进行收集目录
mkdir -p /alex/data/"$1"/data
mkdir -p /alex/data/"$1"/elasticsearch/config
mkdir -p /alex/data/"$1"/kibana/config
mkdir -p /alex/data/"$1"/logstash/config
mkdir -p /alex/data/"$1"/logstash/logs
mkdir -p /alex/data/"$1"/elasticsearch/logs#docker run -itd --privileged --name="$1" -p "$2":5601 -p "$3":9200 -p "$4":5044 -e ES_HEAP_SIZE="2g" -e LS_HEAP_SIZE="1g" --log-driver=json-file -v /alex/data/"$1"/data:/data docker.io/sebp/elk#docker run -itd --privileged --name="$1" -p "$2":5601 -p "$3":9200 -p "$4":5044 -e ES_MIN_MEM=526m -e ES_MAX_MEM=1024m --log-driver=json-file -v /alex/data/"$1"/config/:/data docker.io/sebp/elkdocker run -itd --privileged --name="$1" -p "$2":5601 -p "$3":9200 -p "$4":5044 -p "$5":9300 -e ES_MIN_MEM=526m -e ES_MAX_MEM=1024m --log-driver=json-file -v /alex/data/"$1"/data:/data-v /alex/data/"$1"/logstash/config/:/opt/logstash/config/ -v /alex/data/"$1"/logstash/logs/:/opt/logstash/logs/-v /alex/data/"$1"/elasticsearch/config/:/opt/elasticsearch/config/ -v /alex/data/"$1"/elasticsearch/logs/:/opt/elasticsearch/logs/-v /alex/data/"$1"/kibana/config/:/opt/kibana/config/ docker.io/sebp/elk#docker run -itd --privileged --name="$1" -p "$2":5601 -p "$3":9200 -p "$4":5044 --log-driver=json-file -v /extracme/data/"$1"/data:/data docker.io/sebp/elk
------------------------------------
一个人的时候,总是在想
我的生活到底在期待什么……