什么是elk?

e指 elasticsearch,用于存储数据,搜索
l 指 logstash,用于数据处理,input,fifter,output
Logstash 是一个开源数据收集引擎,具有实时流水线功能。 Logstash 可以动态统一来自不同来源的数据,并将数据规范化为您选择的目的地。
收集是通过许多可配置的输入插件完成的,包括原始套接字/数据包通信、文件拖尾和几个消息总线客户端。 一旦输入插件收集了数据,它就可以被任意数量的过滤器处理,这些过滤器修改和注释事件数据。 最后,事件被路由到输出插件,这些插件可以将事件转发到各种外部程序,包括 Elasticsearch、本地文件和几个消息总线实现。

k指 kibana ,相当于操作es 的控制台

准备工作

  • docker 相关知识
  • liunx环境,jdk环境

准备工作结束就开干吧!!!
image.png

安装方式

使用dokcer run 逐个拉起

安装步骤

1.1 安装es

  1. # 安装es
  2. 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
  3. --name表示镜像启动后的容器名称
  4. -d: 后台运行容器,并返回容器ID
  5. -e: 指定容器内的环境变量
  6. -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

1.2 安装kibana

  1. # 启动kibana
  2. docker run --link 20ddcfe0a1ad:elasticsearch --name kibana -p -d 5601:5601 kibana:7.6.2

1.3 安装logstash

  1. # 需要创建三个文件
  2. [root@lyp config]# ls
  3. jvm.options logstash.conf logstash.yml
  4. [root@lyp config]# cat jvm.options
  5. -Xmx128m
  6. -Xms128m
  7. [root@lyp config]# cat logstash.conf
  8. input {
  9. beats {
  10. port => 5044
  11. }
  12. }
  13. output {
  14. elasticsearch { hosts => ["127.0.0.1::9200"] }
  15. index => "logstash-%{+YYYY.MM.dd}"
  16. }
  17. stdout { codec => rubydebug }
  18. }
  19. [root@lyp config]# cat logstash.yml
  20. node.name: logstash-203
  21. # 日志文件目录配置
  22. path.logs: /usr/share/logstash/logs
  23. # 验证配置文件及存在性
  24. config.test_and_exit: false
  25. # 配置文件改变时是否自动加载
  26. config.reload.automatic: false
  27. # 重新加载配置文件间隔
  28. config.reload.interval: 60s
  29. # debug模式 开启后会打印解析后的配置文件 包括密码等信息 慎用
  30. # 需要同时配置日志等级为debug
  31. config.debug: true
  32. log.level: debug
  33. # The bind address for the metrics REST endpoint.
  34. http.host: 0.0.0.0
  35. # 日志格式 json/plain
  36. log.format: json
  37. # 启动logstash
  38. 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
  39. # 报错了,没有足够的大小,如果没有设置JVM 参数就会报错内存不够用
  40. [root@lyp config]# docker logs -f --tail=400 b618244d6c73
  41. OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
  42. OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Not enough space' (errno=12)
  43. # 查看logstash.yml
  44. [root@lyp config]# cat logstash.yml
  45. input {
  46. beats {
  47. port => 5044
  48. }
  49. }
  50. output {
  51. elasticsearch { hosts => ["127.0.0.1::9200"] }
  52. stdout { codec => rubydebug }
  53. }
  54. [root@lyp config]# docker start 49d6d914ecce
  55. 49d6d914ecce
  56. // 报错了 yal 格式不对
  57. [root@lyp config]# docker logs -f --tail=200 49d6d914ecce
  58. 2021/06/15 01:31:30 error: yaml: unmarshal errors:
  59. line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
  60. 2021/06/15 01:41:58 error: yaml: unmarshal errors:
  61. line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
  62. 2021/06/15 01:46:59 error: yaml: unmarshal errors:
  63. line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
  64. 2021/06/15 01:47:36 error: yaml: unmarshal errors:
  65. line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
  66. 2021/06/17 03:29:13 error: yaml: unmarshal errors:
  67. line 1: cannot unmarshal !!str `input {...` into map[string]interface {}
  68. # 安装结束
  69. [root@lyp config]# docker ps
  70. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  71. 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
  72. 00f985052fc7 kibana:7.6.2 "/usr/local/bin/dumb…" 13 days ago Up About an hour 0.0.0.0:5601->5601/tcp kibana
  73. 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

安装小结

  1. # docker 手册
  2. docker run #运行
  3. --rm #退出删除
  4. -it #后台运行
  5. -v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf#挂载日志收集配置文件
  6. -v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml#挂载logstash配置文件默认主机是elasticsearch
  7. docker.elastic.co/logstash/logstash:6.6.2#使用的镜像

使用docker compones 脚本拉起

安装步骤

结果验证

  1. [root@lyp config]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 00f985052fc7 kibana:7.6.2 "/usr/local/bin/dumb…" 13 days ago Up 10 days 0.0.0.0:5601->5601/tcp kibana
  4. 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