虽然用了ELK很久了,但一直苦于没有自己尝试搭建过,所以想抽时间尝试尝试。原本打算按照教程 《ELK集中式日志平台之二 — 部署》(作者:樊浩柏科学院) 进行测试的,没想到一路出了很多坑,所以又按照自己成功搭建的流程写了本文。

《ELK集中式日志平台之二 — 部署》一文参考价值非常大,图文并茂,大家可以在学习过程中参考参考。作者一上来就安装ELK插件,实际可以按需选择安装,但作为初学者,无疑增加了复杂度。ELK插件后续我会单独拿出来讲解,本文略过。

简介

ELK 指的是一套解决方案,是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写,Beats 是 ELK 协议栈的新成员。

  • E:代表 Elasticsearch,负责日志的存储和检索;
  • L:代表 Logstash,负责日志的收集、过滤和格式化;
  • K:代表 Kibana,负责日志数据的可视化;
  • Beats:是一类轻量级数据采集器;

本来ELK是没有Beats的。

最开始的架构中,由 Logstash 承担数据采集器和过滤功能,并部署在应用服务器。由于 Logstash 对大量日志进行过滤操作,会消耗应用系统的部分性能,带来不合理的资源分配问题;另一方面,过滤日志的配置,分布在每台应用服务器,不便于集中式配置管理。

所以就有了Beats。

由于 Beats 的系统性能开销更小,所以应用服务器性能开销可以忽略不计;另一方面,Beats 可以作为数据采集插件形式工作,可以按需启用 Beats 下不同功能的插件,更灵活,扩展性更强。例如,应用服务器只启用 Filebeat,则只收集日志文件数据,如果某天需要收集系统性能数据时,再启用 Metricbeat 即可,并不需要太多的修改和配置。

其中,目前 Beats 家族根据功能划分,主要有:

  • Filebeat

    Real-time insight into log data.

    负责收集文件数据。

  • Packetbeat

    Analyze network packet data.

    负责收集网络流量数据。

  • Winlogbeat

    Analyze Windows event logs.

    负责收集 Windows 事件日志数据。

  • Metricbeat

    Ship and analyze metrics.

    负责收集系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据。

  • Heartbeat

    Ping your Infrastructure.

  • Auditbeat

    Send audit data to Elasticsearch.

如果日志量巨大,可能还会引入Kafka用以均衡网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性;另一方面,这样可以系统解耦,具有更好的灵活性和扩展性。

环境说明

环境:CentOS6.8

elk版本

ELK各自版本最好都是一致的,否则可能会有兼容性问题

本次都是使用5.6.2版本。截止到2018-09-23,官网的最新版本是6.4.1。

官网下载地址:

https://www.elastic.co/downloads

历史版本汇集页:

https://www.elastic.co/downloads/past-releases

安装方式

安装有两种方法:

  • yum安装
  • 二进制包手动安装

建议第二种方法,可以自由安装版本及定义安装目录。

启动方式

另外需要注意的是:ELK系列软件启动服务的时候不允许以root用户启动。这里我们统一建立用户 elk

  1. useradd elk

Mac因为默认用户就不是root,可以忽略这一步。

启动软件的时候,有2种方式启动:

  • 切换到elk用户执行命名
  • 配置service,使用service启动

测试的时候建议以第一种,这样可以及时查看错误日志。生产环境可以配置service启动。

特点

1、ElasticSearch、Kibana都支持安装插件:例如x-pack。

2、ElasticSearch、Kibana的配置文件一般在安装目录的config里(yml格式),二进制文件在bin里。ElasticSearch和Logstatsh config目录都有jvm.options,测试环境建议修改:

  1. -Xms256m
  2. -Xmx1g

默认可能是2g,测试环境改小一点。后面这点还会说明。

配置JDK

安装JDK1.8:

  1. yum install -y java-1.8.0-openjdk

配置环境变量:

  1. vi /etc/profile

增加:

  1. JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el6_10.x86_64
  2. PATH=$JAVA_HOME/bin:$PATH
  3. CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  4. JAVACMD=/usr/bin/java
  5. export JAVA_HOME JAVACMD CLASSPATH PATH

然后使之生效:

  1. source /etc/profile

验证版本信息:

  1. # java -version
  2. openjdk version "1.8.0_181"
  3. OpenJDK Runtime Environment (build 1.8.0_181-b13)
  4. OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

安装 ElasticSearch

二进制安装

  1. wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.2.tar.gz

大小32.2M。安装很简单,解压即可:

  1. mkdir -p /usr/local/elk
  2. tar zxvf elasticsearch-5.6.2.tar.gz -C /usr/local/elk
  3. mv /usr/local/elk/elasticsearch-5.6.2 /usr/local/elk/elasticsearch

配置权限:

  1. chown -R elk:elk /usr/local/elk/elasticsearch

简单配置

对目录/usr/local/elk/elasticsearch的增删改操作建议使用上面创建的elk用户,否则还要使用chown命令修改权限。

  1. su -e elk

修改config/jvm.options

  1. vi /usr/local/elk/elasticsearch/config/jvm.options

根据实际情况修改:默认是2g:

  1. # 最小值
  2. -Xms256m
  3. #最大值
  4. -Xmx1g

我测试的时候忘记修改了,测试机器卡死了。

启动

如果没有配置service启动方式,需要切换用户。

  1. su - elk
  2. # -d表示后台运行
  3. /usr/local/elk/elasticsearch/bin/elasticsearch -d

查看是否已运行:

  1. $ netstat -tulnp | grep 9200
  2. tcp 0 0 127.0.0.1:9200 0.0.0.0:* LISTEN 121/java

测试

默认是 9200 端口。如果需要修改,可以编辑config/elasticsearch.yml

  1. $ curl http://127.0.0.1:9200
  2. {
  3. "name" : "6e1PMnr",
  4. "cluster_name" : "elasticsearch",
  5. "cluster_uuid" : "Uahv9iLnSLyMjIxX57lbMQ",
  6. "version" : {
  7. "number" : "5.6.2",
  8. "build_hash" : "bd92e7f",
  9. "build_date" : "2017-12-17T20:23:25.338Z",
  10. "build_snapshot" : false,
  11. "lucene_version" : "7.1.0",
  12. "minimum_wire_compatibility_version" : "5.6.0",
  13. "minimum_index_compatibility_version" : "5.0.0"
  14. },
  15. "tagline" : "You Know, for Search"
  16. }

防盗版声明:本文系原创文章,发布于公众号飞鸿影的博客(fhyblog)及博客园,转载需作者同意。


安装 Kibana

Kibana负责日志数据的可视化。Kibana从ElasticSearch里读取数据。

二进制安装

  1. wget https://artifacts.elastic.co/downloads/kibana/kibana-5.6.2-linux-x86_64.tar.gz

大小48.5M。同样是解压:

  1. tar zxvf kibana-5.6.2-linux-x86_64.tar.gz -C /usr/local/elk/
  2. mv /usr/local/elk/kibana-5.6.2-linux-x86_64 /usr/local/elk/kibana
  3. chown -R elk:elk /usr/local/elk/kibana

简单配置

对目录/usr/local/elk/kibana的增删改操作建议使用上面创建的elk用户,否则还要使用chown命令修改权限。

  1. su -e elk

修改配置:

  1. vim /usr/local/elk/kibana/config/kibana.yml

默认配置都是注释了的,默认端口是5601,默认访问 elasticsearch 的9200端口。我们可以按需修改。例如:

  1. server.port: 5601 # 监听端口
  2. server.host: "0.0.0.0" # 绑定地址
  3. #server.name: "elk.fanhaobai.com" # 域名
  4. #elasticsearch.url: "http://127.0.0.1:9200" # es
  5. #kibana.index: ".kibana" # 索引名
  6. #elasticsearch.username: "elastic" # 用户名
  7. #elasticsearch.password: "changeme" # 密码

这里修改了server.host,默认是localhost

启动kibana

  1. /usr/local/elk/kibana/bin/kibana

注意:默认是前台运行的,如果需要后台运行:

  1. nohup /usr/local/elk/kibana/bin/kibana &

可以使用前台运行的方式,没有报错误,然后使用后台运行的方式。

查看是否已运行:

  1. $ netstat -tulnp | grep 5601
  2. tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 248/./kibana/bin/..

配置web

默认打开浏览器 http://127.0.0.1:5601 就可以看到 kibana 的界面了:

也可以配置Nginx代理到别的域名:

  1. server {
  2. listen 80;
  3. server_name elk.cc; #当前主机名
  4. # auth_basic "Restricted Access";
  5. # auth_basic_user_file /usr/local/nginx/conf/htpasswd.users; #登录验证
  6. location / {
  7. proxy_pass http://127.0.0.1:5601; #转发到kibana
  8. proxy_http_version 1.1;
  9. proxy_set_header Upgrade $http_upgrade;
  10. proxy_set_header Connection 'upgrade';
  11. proxy_set_header Host $host;
  12. proxy_cache_bypass $http_upgrade;
  13. }
  14. }

到现在还没有数据可以展示,因为ES里我们还没有导入或者传入数据。接下来我们使用 Logstash+Filebeat 导入日志数据。

安装 Logstash

二进制方式安装

  1. wget https://artifacts.elastic.co/downloads/logstash/logstash-5.6.2.tar.gz
  2. tar zxvf logstash-5.6.2-linux.gz -C /usr/local/elk/
  3. mv /usr/local/elk/logstash-5.6.2/ /usr/local/elk/logstash
  4. chown -R elk:elk /usr/local/elk/logstash

logstash-5.6.2.tar.gz 大小96.8M。

简单配置

对目录/usr/local/elk/logstash的增删改操作建议使用上面创建的elk用户,否则还要使用chown命令修改权限。

  1. # 切换用户
  2. su - elk

1、修改 config/jvm.options

  1. vim /usr/local/elk/logstash/config/jvm.options

这里我修改为:

  1. -Xms128m
  2. -Xmx512m

2、修改 config/logstash.yml

  1. vim /usr/local/elk/logstash/config/logstash.yml

默认全是注释的,这里仅修改一处:

  1. path.config: /usr/local/elk/logstash/config/conf.d

这样就支持子配置了,我们可以把新建的配置都放在conf.d目录里。

注意:path.config:后面有一个空格。

然后创建子文件夹:

  1. mkdir /usr/local/elk/logstash/config/conf.d

测试logstash

由于现在我们还没有安装filebeat,也不打算直接使用logstash收集日志,所以先简单测试下标准输入输出,只要正常就行了:

  1. $ ./logstash/bin/logstash -e 'input { stdin { } } output { stdout {}}'

稍等几秒钟:

  1. Sending Logstash's logs to /usr/local/elk/logstash/logs which is now configured via log4j2.properties
  2. [2018-09-24T23:07:35,424][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"netflow", :directory=>"/usr/local/elk/logstash/modules/netflow/configuration"}
  3. [2018-09-24T23:07:35,434][INFO ][logstash.modules.scaffold] Initializing module {:module_name=>"fb_apache", :directory=>"/usr/local/elk/logstash/modules/fb_apache/configuration"}
  4. [2018-09-24T23:07:35,657][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
  5. [2018-09-24T23:07:35,683][INFO ][logstash.pipeline ] Pipeline main started
  6. The stdin plugin is now waiting for input:
  7. [2018-09-24T23:07:35,776][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
  8. hello
  9. 2018-09-24T15:07:42.760Z 2106567e5bce hello
  10. welcome
  11. 2018-09-24T15:07:49.501Z 2106567e5bce welcome

我们输入了hello、welcome,终端实时的输出了内容。后面的内容里,我们将会修改 stdin 为为beats,修改 stdout 为ElasticSearch。

如果新增配置,需要后台常驻运行,可以使用下列命令:

  1. /usr/local/elk/logstash/bin/logstash &

查看是否已运行(需要过10s左右,可以多刷几次):

  1. $ netstat -tulnp | grep 5044
  2. tcp 0 0 0.0.0.0:5044 0.0.0.0:* LISTEN 1040/java

安装 Filebeat

Filebeat不依赖JDK。

二进制安装

  1. wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.6.2-linux-x86_64.tar.gz

filebeat 8.4M。解压、设置 :

  1. mkdir /usr/local/elk/beats
  2. tar zxvf filebeat-5.6.2-linux-x86_64.tar.gz -C /usr/local/elk/beats/
  3. mv /usr/local/elk/beats/filebeat-5.6.2-linux-x86_64/ /usr/local/elk/beats/filebeat
  4. chown -R elk:elk /usr/local/elk/beats

注意:后续对目录/usr/local/elk/beats的增删改操作建议使用上面创建的elk用户,否则还要使用chown命令修改权限。

  1. # 切换用户
  2. su - elk

filebeat采集内容发送到ElasticSearch

为了让测试简单,我们手动模拟日志的生成:

  1. echo "test - test2" >> /tmp/test1.log
  2. echo "test - test2" >> /tmp/test2.log

生成了2个日志文件test1.logtest2.log,各有一行日志。

新建一个filebeat配置文件:

  1. cd /usr/local/elk
  2. vim beats/filebeat/filebeat.test.yml

配置内容:

  1. filebeat.prospectors:
  2. - type: log
  3. paths:
  4. - /tmp/test1.log
  5. tags: ["test1"]
  6. document_type: test1
  7. - type: log
  8. paths:
  9. - /tmp/test2.log
  10. tags: ["test2"]
  11. document_type: test2
  12. output.elasticsearch:
  13. hosts: ["127.0.0.1:9200"]
  14. index: "test-filebeat"

配置说明:

filebeat.prospectors:

  • type 日志类型,默认log
  • input_type 输入类型,默认log
  • paths 采集的日志,可以使用通配符。支持多个
  • tags 自定义标签,是个数组。自定义
  • document_type 自定义字段,用于Logsatsh区分来源,在Logsatsh里用变量type表示

一个-表示一个filebeat.prospector,这里设置了2个。日志发送到elasticsearch,索引index 是test-filebeat

我们运行 filebeat:

  1. # 修改权限
  2. chmod 600 beats/filebeat/filebeat.test.yml
  3. # 指定配置文件前台运行
  4. ./beats/filebeat/filebeat -c beats/filebeat/filebeat.test.yml

我们新开终端查看ES里是否新增了内容:

  1. curl http://127.0.0.1:9200/test-filebeat/_search?q=*
  2. {
  3. "took": 0,
  4. "timed_out": false,
  5. "_shards": {
  6. "total": 5,
  7. "successful": 5,
  8. "skipped": 0,
  9. "failed": 0
  10. },
  11. "hits": {
  12. "total": 2,
  13. "max_score": 1,
  14. "hits": [
  15. {
  16. "_index": "test-filebeat",
  17. "_type": "test2",
  18. "_id": "AWYL9s4WJzfnbYlB_DSO",
  19. "_score": 1,
  20. "_source": {
  21. "@timestamp": "2018-09-24T14:23:30.652Z",
  22. "beat": {
  23. "hostname": "2106567e5bce",
  24. "name": "2106567e5bce",
  25. "version": "5.6.2"
  26. },
  27. "input_type": "log",
  28. "message": "test - test2",
  29. "offset": 13,
  30. "source": "/tmp/test2.log",
  31. "tags": [
  32. "test2"
  33. ],
  34. "type": "test2"
  35. }
  36. },
  37. {
  38. "_index": "test-filebeat",
  39. "_type": "test1",
  40. "_id": "AWYL9s4WJzfnbYlB_DSP",
  41. "_score": 1,
  42. "_source": {
  43. "@timestamp": "2018-09-24T14:23:30.652Z",
  44. "beat": {
  45. "hostname": "2106567e5bce",
  46. "name": "2106567e5bce",
  47. "version": "5.6.2"
  48. },
  49. "input_type": "log",
  50. "message": "test - test2",
  51. "offset": 13,
  52. "source": "/tmp/test1.log",
  53. "tags": [
  54. "test1"
  55. ],
  56. "type": "test1"
  57. }
  58. }
  59. ]
  60. }
  61. }

新开命令行追加一行日志:

  1. echo "new msg" >> /tmp/test1.log
  1. curl http://127.0.0.1:9200/test-filebeat/_search?q=*&size=1&sort=@timestamp:desc
  2. {
  3. "took": 0,
  4. "timed_out": false,
  5. "_shards": {
  6. "total": 5,
  7. "successful": 5,
  8. "skipped": 0,
  9. "failed": 0
  10. },
  11. "hits": {
  12. "total": 3,
  13. "max_score": null,
  14. "hits": [
  15. {
  16. "_index": "test-filebeat",
  17. "_type": "test1",
  18. "_id": "AWYL-BjvJzfnbYlB_DSQ",
  19. "_score": null,
  20. "_source": {
  21. "@timestamp": "2018-09-24T14:24:55.654Z",
  22. "beat": {
  23. "hostname": "2106567e5bce",
  24. "name": "2106567e5bce",
  25. "version": "5.6.2"
  26. },
  27. "input_type": "log",
  28. "message": "new msg",
  29. "offset": 21,
  30. "source": "/tmp/test1.log",
  31. "tags": [
  32. "test1"
  33. ],
  34. "type": "test1"
  35. },
  36. "sort": [
  37. 1537799095654
  38. ]
  39. }
  40. ]
  41. }
  42. }

这说明直接使用filebeat,也是可以发送数据到ES的,为什么还用logstash呢?原因是filebeat采集的是原始日志内容,发送到ES的也是原始内容,如果不需要处理的话,使用filebeat也行。

我们可以看到返回的文档json里有一个字段 message ,这个是日志原始内容。filebeat还默认加了一些字段:

  • @timestamp 时间
  • beat filebeat相关信息,数组类型
  • input_type 日志类型,一般是log
  • message 日志原文
  • offset 当前采集的日志的偏移量
  • source 日志所在文件
  • tags 自定义标签,数组类型
  • type document_type字段定义的内容

kibana里查看

打开kibana web地址:http://127.0.0.1:5601,依次打开:Management

-> Kibana -> Index Patterns ,选择Create Index Pattern

a. Index pattern 输入:test-filebeat

b. Time Filter field name 选择 @timestamp

c. 点击Create。

然后打开Discover,选择 test-filebeat 就能看到日志数据了。

这时候我们去访问下自己配置了nginx日志的应用,这里能实时更新,再也不用去命令行使用tail查看了。

filebeat内容发送到logstash

接下来,我们将日志使用filebeat发送到logstash,然后通过logstash处理后发送到ElasticSearch。

首先我们要修改上一节里filebeat的配置:

  1. vim beats/filebeat/filebeat.test.yml

改为:

  1. filebeat.prospectors:
  2. - type: log
  3. paths:
  4. - /tmp/test1.log
  5. tags: ["test1"]
  6. document_type: test1
  7. - type: log
  8. paths:
  9. - /tmp/test2.log
  10. tags: ["test2"]
  11. document_type: test2
  12. output.logstash:
  13. hosts: ["127.0.0.1:5046"]
  14. #output.elasticsearch:
  15. # hosts: ["127.0.0.1:9200"]
  16. # index: "test-filebeat"

我们把output.elasticsearch注释了,新增了output.logstash

然后新增logstash配置:

  1. vim logstash/config/conf.d/filebeat.test.conf
  1. input {
  2. beats {
  3. port => 5046
  4. }
  5. }
  6. output {
  7. elasticsearch {
  8. hosts => ["127.0.0.1:9200"]
  9. index => "test-filebeat-%{type}"
  10. }
  11. stdout { codec => rubydebug }
  12. }

这里的type变量就是filebeat里面的document_type。端口指定为5046(自定义即可),和filebeat里面配置的一致。logstash可以有多个子配置,所以也就能配置多个端口。此时,logstash是作为服务端运行的,filebeat是客户端。

接下来我们启动logstash和filebeat:

  1. ./logstash/bin/logstash &

&表示后台运行:

  1. ./beats/filebeat/filebeat -c beats/filebeat/filebeat.test.yml

我们新开终端往日志里加点新内容:

  1. echo "new msg" >> /tmp/test2.log
  2. echo "new msg3" >> /tmp/test2.log

稍等几秒钟,我们可以查看ES里的数据:

  1. curl http://127.0.0.1:9200/test-filebeat-test2/_search?q=*&sort=@timestamp:desc
  2. {
  3. "took": 3,
  4. "timed_out": false,
  5. "_shards": {
  6. "total": 5,
  7. "successful": 5,
  8. "skipped": 0,
  9. "failed": 0
  10. },
  11. "hits": {
  12. "total": 2,
  13. "max_score": null,
  14. "hits": [
  15. {
  16. "_index": "test-filebeat-test2",
  17. "_type": "test2",
  18. "_id": "AWYMF-PeJzfnbYlB_DSo",
  19. "_score": null,
  20. "_source": {
  21. "@timestamp": "2018-09-24T14:59:38.188Z",
  22. "offset": 49,
  23. "@version": "1",
  24. "input_type": "log",
  25. "beat": {
  26. "name": "2106567e5bce",
  27. "hostname": "2106567e5bce",
  28. "version": "5.6.2"
  29. },
  30. "host": "2106567e5bce",
  31. "source": "/tmp/test2.log",
  32. "message": "new msg3",
  33. "type": "test2",
  34. "tags": [
  35. "test2",
  36. "beats_input_codec_plain_applied",
  37. "_grokparsefailure"
  38. ]
  39. },
  40. "sort": [
  41. 1537801178188
  42. ]
  43. },
  44. {
  45. "_index": "test-filebeat-test2",
  46. "_type": "test2",
  47. "_id": "AWYMF-PeJzfnbYlB_DSn",
  48. "_score": null,
  49. "_source": {
  50. "@timestamp": "2018-09-24T14:59:38.186Z",
  51. "offset": 40,
  52. "@version": "1",
  53. "input_type": "log",
  54. "beat": {
  55. "name": "2106567e5bce",
  56. "hostname": "2106567e5bce",
  57. "version": "5.6.2"
  58. },
  59. "host": "2106567e5bce",
  60. "source": "/tmp/test2.log",
  61. "message": "new msg",
  62. "type": "test2",
  63. "tags": [
  64. "test2",
  65. "beats_input_codec_plain_applied",
  66. "_grokparsefailure"
  67. ]
  68. },
  69. "sort": [
  70. 1537801178186
  71. ]
  72. }
  73. ]
  74. }
  75. }

本节里我们虽然用到了logstash,但没有发挥它的强大处理功能。仅仅是演示了将日志使用filebeat发送到logstash,然后通过logstash处理后发送到ElasticSearch。处理功能后续再做讲解。

提示:其实我们可以在logstash里根据filebeat里的document_type做条件判断:

  1. # 根据tags判断
  2. if "test1" in [tags] {
  3. # something
  4. }
  5. # type 就是filebeat里的document_type
  6. if [type] == 'test1'{
  7. }else if [type] == 'test2'{
  8. }

总结

ELK我们一共安装了4个软件:

  • elasticsearch-5.6.2
  • kibana-5.6.2-linux-x86_64
  • logstash-5.6.2
  • filebeat-5.6.2-linux-x86_64

其中es、kibana、logstash三者作为服务端安装在一起,filebeat安装在应用服务器,用于收集日志。

我们看一下共起了哪些端口:

  1. $ netstat -tulnp
  2. Active Internet connections (only servers)
  3. Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  4. tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 13/php-fpm
  5. tcp 0 0 127.0.0.1:9200 0.0.0.0:* LISTEN -
  6. tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 10/nginx
  7. tcp 0 0 0.0.0.0:5046 0.0.0.0:* LISTEN -
  8. tcp 0 0 127.0.0.1:9300 0.0.0.0:* LISTEN -
  9. tcp 0 0 127.0.0.1:9600 0.0.0.0:* LISTEN -
  10. tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN -
  • 9200 elasticsearch默认端口
  • 5601 kibana 默认端口
  • 5046 logstash 收集日志

参考

1、ELK集中式日志平台之二 — 部署 - 樊浩柏's Blog

https://www.fanhaobai.com/2017/12/elk-install.html

2、ElasticSearch 5学习(1)——安装Elasticsearch、Kibana和X-Pack - wuxiwei - 博客园

https://www.cnblogs.com/wxw16/p/6150681.html

3、Logstash Filebeat 安装配置之使用 Kibana 分析日志数据 - 任我乐

https://renwole.com/archives/661

4、ELK集中式日志平台之一 — 平台架构 - 樊浩柏's Blog

https://www.fanhaobai.com/2017/12/elk.html

5、ELK集中式日志平台之三 — 进阶 - 樊浩柏's Blog

https://www.fanhaobai.com/2017/12/elk-advanced.html

6、ELK+Filebeat 集中式日志解决方案详解

https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html

ELK实践(一):基础入门的更多相关文章

  1. 【原创 Hadoop&Spark 动手实践 5】Spark 基础入门,集群搭建以及Spark Shell

    Spark 基础入门,集群搭建以及Spark Shell 主要借助Spark基础的PPT,再加上实际的动手操作来加强概念的理解和实践. Spark 安装部署 理论已经了解的差不多了,接下来是实际动手实 ...

  2. Python+Selenium基础入门及实践

    Python+Selenium基础入门及实践 32018.08.29 11:21:52字数 3220阅读 23422 一.Selenium+Python环境搭建及配置 1.1 selenium 介绍 ...

  3. Linux 基础入门(新版)”实验报告一~十二

    实验报告 日期: 2015年9月15日 一.实验的目的与要求 熟练地使用 Linux,本实验介绍 Linux 基本操作,shell 环境下的常用命令. 二.主要内容 1.Linux 基础入门& ...

  4. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

  5. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  6. Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)

    Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...

  7. PHP基础入门(二)---入门必备哦!

    前言 在上一章中,我们初步了解了PHP的网页基础和PHP的入门基础,今天继续给大家分享更多有关PHP的知识. 理论知识看起来可能比较枯燥一些,但是我们的实践(敲代码)毕竟离不开它. 只有理论与实践相结 ...

  8. 王者荣耀是怎样炼成的(二)《王者荣耀》unity安装及使用的小白零基础入门

    转载请注明出处:http://www.cnblogs.com/yuxiuyan/p/7535345.html 工欲善其事,必先利其器. 上回书说到,开发游戏用到unity和C#.本篇博客将从零开始做一 ...

  9. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  10. React Native基础&入门教程:初步使用Flexbox布局

    在上篇中,笔者分享了部分安装并调试React Native应用过程里的一点经验,如果还没有看过的同学请点击<React Native基础&入门教程:调试React Native应用的一小 ...

随机推荐

  1. 理解存储引擎MyISAM与InnoDB

    1.MyISAM:默认表类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method (有索引的顺序访问方法) 的缩写,它是存储记录和文件的标准方法.不 ...

  2. servlet概述(作业11)

    1.什么是servlet. Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能 ...

  3. Linux目录/usr结构说明

    在 linux 文件结构中,有一个很神奇的目录 -- /usr. 讨论中,大部分观点认为: usr 是 unix system resources 的缩写: usr 是 user 的缩写: usr 是 ...

  4. python学习,excel操作之xlsxwriter常用操作

    from datetime import datetime import xlsxwriter #打开文件 workbook = xlsxwriter.Workbook('Expenses03.xls ...

  5. js实现图片查看器(图片的缩放、旋转、拖拽)

    一.关于图片查看器. 目前网络上能找到的图片查看器很多,谁便一搜就能出来.如:jquery.iviewer.js.Viewer.js这两个js文件,其中功能也足够满足大部分开发需求.但是单纯的就想实现 ...

  6. CentOS7安装OpenLDAP+MySQL+PHPLDAPadmin

    安装环境:CentOS 7 1.安装和设置数据库 在CentOS7下,默认安装的数据库为MariaDB,属于MySQL数据库的一个分支,所以我还是使用了MariaDB.安装命令为: [root@loc ...

  7. B - Big Event in HDU

    Nowadays, we all know that Computer College is the biggest department in HDU. But, maybe you don't k ...

  8. [转] An Introduction to Mutual SSL Authentication

    1. Introduction Mutual SSL authentication or certificate based mutual authentication refers to two p ...

  9. EmguCV使用Stitcher类来拼接图像

    using System; using System.Windows; using System.Collections.Generic; using System.ComponentModel; u ...

  10. Javascript高级编程学习笔记(78)—— 表单(6)HTML约束验证API

    自动切换焦点 使用JS可以极大地提升表单的易用性 其中最常用的一种就是当用户填写完当前字段后焦点自动切换到下一个字段 以下方的HTML代码为例: <input type="text&q ...