赞
踩
docker pull sebp/elk
方法一:Docker部署
- docker run
- -e ES_JAVA_OPTS="-Xms256m -Xmx256m" # 设置虚拟机所需内存大小
- -p 5601:5601 # Kibana Web 接口
- -p 5040:5040 # Logstash Beat 接口
- -p 5041:5041
- -p 5042:5042
- -p 5043:5043
- -p 5044:5044
- -p 5045:5045
- -p 5046:5046
- -p 5047:5047
- -p 5048:5048
- -p 5049:5049
-
- -p 9200:9200 # Elasticsearch JSON 接口
- -p 9300:9300 # Elasticsearch transport接口
- -it # 虚拟机交互
- --name elk -d ******
方法二:dokcer-compose部署
- version: '2'
- services:
- elk: #服务名称(不是容器名,名称最好不要含有特殊字符,碰到过用下划线时运行出错)
- image: sebp/elk:latest
- container_name: elk #容器名称
- ports:
- - "9200:9200"
- - "9300:9300"
- - "5601:5601"
- - ...... # 继续映射开启的服务端口
-
- environment: #设置镜像变量,它可以保存变量到镜像里面
- ES_JAVA_OPTS: "-Xmx256m -Xms256m"
注意事项:
运行启动ELK碰到vm.max_map_count限制问题,在Elasticsearch version 5属于最常出现的问题.
持久性的做法是修改/etc/sysctl.conf文件中的vm.max_map_count.
echo "vm.max_map_count=262144" > /etc/sysctl.conf #持久设置最大值
sysctl -p # 生效
其次,logstash的配置文件在/etc/logstash/conf.d/目录下,将input,filter,out分开,最终组合成一个,建议将/etc/logstash/conf.d映射出来,自行管理
- cd etc/logstash/conf.d/
- vim 02-beats-input.conf
-
- input {
- tcp {
- port => 5040 #设置输入端口
- codec => json_lines
- type => system #对应服务名称
- }
- }
- ........ #可配置多个
- }
-
- output {
- if [type] == "system" { #根据输出类型判断输出节点
- elasticsearch {
- hosts => ["localhost:9200"]
- index => "system" #对应服务名称
- }
-
- ........ #可配置多个
-
- }
- 访问localhost:9200查看启动状态
- {
- "name" : "elk",
- "cluster_name" : "elasticsearch",
- "cluster_uuid" : "FNt0O9UfRPeruL10xraQSw",
- "version" : {
- "number" : "7.16.2",
- "build_flavor" : "default",
- "build_type" : "tar",
- "build_hash" : "2b937c44140b6559905130a8650c64dbd0879cfb",
- "build_date" : "2021-12-18T19:42:46.604893745Z",
- "build_snapshot" : false,
- "lucene_version" : "8.10.1",
- "minimum_wire_compatibility_version" : "6.8.0",
- "minimum_index_compatibility_version" : "6.0.0-beta1"
- },
- "tagline" : "You Know, for Search"
- }
- 访问localhost:5601 进入Kibana页面
- 进入管理会话,创建索引模式,由于上文中设置输出文件为logstash-%{+YYYY.MM.dd}
- 设置索引为logstash-*
- <Appenders>
- <Console name="Console" target="SYSTEM_OUT" follow="true">
- <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/>
- </Console>
- <!-- 设置连接 -->
- <Socket name="logstash-tcp" host="ip地址" port="5044" protocol="TCP">
- <PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}"/>
- </Socket>
- </Appenders>
- <Loggers>
- <Root level="INFO" additivity="false">
- <AppenderRef ref="Console"/>
- <AppenderRef ref="logstash-tcp" />
- </Root>
- </Loggers>
- Kibana汉化
进入elk终端
docker exec -it elk /bin/bash
cd /opt/kibana/config/
vim kibana.yml
最后一行添加 i18n.locale: zh-CN # 冒号后有空格
docker restart elk
- 页面Message展示不全问题
进入ELK容器
docker exec -it elk /bin/bash
cd /opt/logstash/bin/
./logstash-plugin list # 查看是否安装multiline
./logstash-plugin install logstash-filter-multiline # 安装multilinecd /etc/logstash/conf.d/
vim 10-syslog.conf
添加如下
filter {
multiline {
pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}"
negate => true
what => "previous"
}
}
docker restart elk
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。