什么是elk?
e指 elasticsearch,用于存储数据,搜索
l 指 logstash,用于数据处理,input,fifter,output
Logstash 是一个开源数据收集引擎,具有实时流水线功能。 Logstash 可以动态统一来自不同来源的数据,并将数据规范化为您选择的目的地。
收集是通过许多可配置的输入插件完成的,包括原始套接字/数据包通信、文件拖尾和几个消息总线客户端。 一旦输入插件收集了数据,它就可以被任意数量的过滤器处理,这些过滤器修改和注释事件数据。 最后,事件被路由到输出插件,这些插件可以将事件转发到各种外部程序,包括 Elasticsearch、本地文件和几个消息总线实现。
准备工作
- docker 相关知识
- liunx环境,jdk环境
安装方式
使用dokcer run 逐个拉起
安装步骤
1.1 安装es
# 安装es
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.3.1
--name表示镜像启动后的容器名称
-d: 后台运行容器,并返回容器ID;
-e: 指定容器内的环境变量
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
1.2 安装kibana
# 启动kibana
docker run --link 20ddcfe0a1ad:elasticsearch --name kibana -p -d 5601:5601 kibana:7.6.2
1.3 安装logstash
# 需要创建三个文件
[root@lyp config]# ls
jvm.options logstash.conf logstash.yml
[root@lyp config]# cat jvm.options
-Xmx128m
-Xms128m
[root@lyp config]# cat logstash.conf
input {
beats {
port => 5044
}
}
output {
elasticsearch { hosts => ["127.0.0.1::9200"] }
index => "logstash-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
[root@lyp config]# cat logstash.yml
node.name: logstash-203
# 日志文件目录配置
path.logs: /usr/share/logstash/logs
# 验证配置文件及存在性
config.test_and_exit: false
# 配置文件改变时是否自动加载
config.reload.automatic: false
# 重新加载配置文件间隔
config.reload.interval: 60s
# debug模式 开启后会打印解析后的配置文件 包括密码等信息 慎用
# 需要同时配置日志等级为debug
config.debug: true
log.level: debug
# The bind address for the metrics REST endpoint.
http.host: 0.0.0.0
# 日志格式 json/plain
log.format: json
# 启动logstash
docker run -d --name logstash --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --link 20ddcfe0a1ad:es-log -v /data/elk/logstach/config/logstash.yml:/usr/share/logstash/config/logstash.yml -v /data/elk/logstach/config/logstash.conf:/usr/share/logstash/config/logstash.conf -v /data/elk/logstach/config/jvm.options:/usr/share/logstash/config/jvm.options logstash:7.6.2
# 报错了,没有足够的大小,如果没有设置JVM 参数就会报错内存不够用
[root@lyp config]# docker logs -f --tail=400 b618244d6c73
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Not enough space' (errno=12)
# 查看logstash.yml
[root@lyp config]# cat logstash.yml
input {
beats {
port => 5044
}
}
output {
elasticsearch { hosts => ["127.0.0.1::9200"] }
stdout { codec => rubydebug }
}
[root@lyp config]# docker start 49d6d914ecce
49d6d914ecce
// 报错了 yal 格式不对
[root@lyp config]# docker logs -f --tail=200 49d6d914ecce
2021/06/15 01:31:30 error: yaml: unmarshal errors:
line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
2021/06/15 01:41:58 error: yaml: unmarshal errors:
line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
2021/06/15 01:46:59 error: yaml: unmarshal errors:
line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
2021/06/15 01:47:36 error: yaml: unmarshal errors:
line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
2021/06/17 03:29:13 error: yaml: unmarshal errors:
line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
# 安装结束
[root@lyp config]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5625dbe291e2 logstash:7.6.2 "/usr/local/bin/dock…" 6 minutes ago Up 6 minutes 0.0.0.0:5044->5044/tcp, 9600/tcp logstash
00f985052fc7 kibana:7.6.2 "/usr/local/bin/dumb…" 13 days ago Up About an hour 0.0.0.0:5601->5601/tcp kibana
20ddcfe0a1ad elasticsearch:7.6.2 "/usr/local/bin/dock…" 11 months ago Up About an hour 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch01
安装小结
# docker 手册
docker run #运行
--rm #退出删除
-it #后台运行
-v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf#挂载日志收集配置文件
-v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml#挂载logstash配置文件默认主机是elasticsearch
docker.elastic.co/logstash/logstash:6.6.2#使用的镜像
使用docker compones 脚本拉起
安装步骤
结果验证
[root@lyp config]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00f985052fc7 kibana:7.6.2 "/usr/local/bin/dumb…" 13 days ago Up 10 days 0.0.0.0:5601->5601/tcp kibana
20ddcfe0a1ad elasticsearch:7.6.2 "/usr/local/bin/dock…" 11 months ago Up 13 days 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch01