ELK 搭建

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana: web化接口用作查寻和可视化日志;

5601 kibana
5044 Logstash
9200 es

操作0,分别搭建

解决 x-pack 问题(安全的)
echo "network.host: 0.0.0.0
xpack:
ml.enabled: false
monitoring.enabled: false
security.enabled: false
watcher.enabled: false
" >>elasticsearch.yml

分别 pull 镜像

docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3
docker pull docker.elastic.co/logstash/logstash:6.4.3
docker pull docker.elastic.co/kibana/kibana:6.4.3

创建文件

运行

docker run --rm -it -p 9200:9200 -p 9300:9300 -v "$PWD"/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml docker.elastic.co/elasticsearch/elasticsearch:6.4.3
docker run --rm -it -v "$PWD"/logstash/pipeline/:/usr/share/logstash/pipeline/ -v "$PWD"/logstash/config/:/usr/share/logstash/config/ docker.elastic.co/logstash/logstash:6.4.3 # 在输入中:输入的日志文件使用/usr/share/logstash/pipeline/logs/test.log,只需将日志文件放入pipeline/logs/下,或者手动映射进容器即可。另外输入文件路径支持模糊匹配。在过滤器中定义了去掉消息中的换号符号,以及定义了消息格式。这里的消息格式自定义方法参阅:https://www.elastic.co/guide/en/logstash/6.4/filter-plugins.html
docker run --rm -it -p 5601:5601 -v "$PWD"/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:6.4.3

创建文件

echo "config:
reload:
automatic: true
interval: 3s
xpack:
management.enabled: false
monitoring.enabled: false
"> logstash/config/logstash.yml

echo "- pipeline.id: test
path.config: "/usr/share/logstash/pipeline/logstash-test.conf"
"> logstash/config/pipelines.yml

echo "input {
file {
path => ["/usr/share/logstash/pipeline/logs/test.log"]
start_position => "beginning"
}
}

filter {
mutate {
gsub => ["message", " ", ""]
}
dissect {
mapping => {"message" => "%{date} %{+date} [%{task} %{+task}] [%{type}] %{class} - %{info}"}
}
}

output {
elasticsearch { hosts => ["127.0.0.1:9200"] }
stdout { codec => rubydebug }
} "> logstash/pipeline/logstash-test.conf.yml

mkdir -p kibana/config
echo "server.host: "0.0.0.0"
elasticsearch.url: http://127.0.0.1:9200
xpack:
apm.ui.enabled: false
graph.enabled: false
ml.enabled: false
monitoring.enabled: false
reporting.enabled: false
security.enabled: false
grokdebugger.enabled: false
searchprofiler.enabled: false
">kibana/config/kibana.yml

问题

启动es报错

操作1,现成版

下载镜像

运行容器
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -e ES_MIN_MEM=128m -e ES_MAX_MEM=1024m -it --name elk sebp/elk

运行成功

进入交互模式

FAQ

  1. [2019-04-08T10:39:19,982][ERROR][o.e.b.Bootstrap ] [bh2HKsP] node validation exception
    [1] bootstrap checks failed
    [1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
    [2019-04-08T10:39:20,005][INFO ][o.e.n.Node ] [bh2HKsP] stopping ...
    [2019-04-08T10:39:20,059][INFO ][o.e.n.Node ] [bh2HKsP] stopped
    [2019-04-08T10:39:20,059][INFO ][o.e.n.Node ] [bh2HKsP] closing ...
    [2019-04-08T10:39:20,077][INFO ][o.e.n.Node ] [bh2HKsP] closed

解决:调整参数即可

  1. sysctl: setting key "vm.max_map_count": Read-only file system
    解决:https://blog.csdn.net/Gamer_gyt/article/details/52960941

修改宿主机本身的配置文件,然后重新启动镜像,也能解决问题,退出容器,返回到宿主机
修改vm.max_map_count 可以通过命令行修改,但是在机器重启时会失效,所以通过修改配置文件来解决问题
命令行修改办法:

sudo sysctl -w vm.max_map_count=655360

并用以下命令查看是否修改成功

sysctl -a | grep “vm.max_map_count”

修改配置文件:

sudo vim /etc/sysctl.conf

加入:

vm.max_map_count=262144

保存即可

接下来解决

max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]

这个问题

sudo vim /etc/security/limits.conf

加入以下两行:

redhat hard nofile 65536
redhat soft nofile 65536
1
2
redhat这里为用户名

然后重启启动elasticsearch即可

参考

【原生推荐】在 CentOS7 安装 ELK
http://www.cnblogs.com/cheesebar/p/9126171.html
【docker 推荐】基于Docker的ELK日志平台搭建
https://www.cnblogs.com/devinzhang/p/6962404.html

【docker 推荐,10分钟搭建 ok】使用Docker安装ELK系列(超简单)
https://www.cnblogs.com/hackyo/p/9951684.html

【9.5分,拿来即用】Docker ElK安装部署使用教程
https://www.cnblogs.com/soar1688/p/6849183.html

Go!!!
原文地址:https://www.cnblogs.com/shliujing/p/ELK-da-jian.html