搭建ELK日志系统

日志是我们排查系统问题时最重要的途径,大家都有远程登录服务器下载日志然后CTRL+F到处搜索的经历,当系统越来越庞大时,日志也越来越多,这种原始的方式就显得效率低下。因此我们需要一个能统一收集和分析日志的系统ELK,这是个现在非常流行的日志系统。它由Elasticsearch+Kibana+filebeat(或者logstash)组成。

1.安装Elasticsearch

  1. 下载
    这边安装的是6.8.13版本,尽量保证Elasticsearch、Kibana、filebeat三个组件版本一致。
   wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.13.tar.gz
  1. 解压
   tar -zxvf elasticsearch-6.8.13.tar.gz
  1. 修改配置

  2. 启动
    注意es禁止使用root用户启动服务,所以需要切换到其他用户启动

   ./elasticsearch-6.8.13/bin/elasticsearch

测试启动是否成功,运行命令

   curl  http://localhost:9200
  1. 停止
   ps -ef|grep elastic
   kill [端口号]

2.安装 Kibana

Kibana 是一个为 Logstash 和 ElasticSearch 提供的日志分析的 Web 接口。可使用它对日志进行高效的搜索、可视化、分析等各种操作。

  1. 下载
   wget https://www.elastic.co/cn/downloads/past-releases/kibana-6-8-13
  1. 解压
   tar -zxvf kibana-6.8.13-linux-x86_64.tar.gz 
  1. 修改配置
    修改config下kibana.yml配置文件
   # 端口号
   server.port: 5601
   # 允许远程访问页面
   server.host: "0.0.0.0"
   # es的地址,我的es并未设置密码
   elasticsearch.hosts: ["http://localhost:9200"]
  1. 启动
   nohup ./bin/kibana &
  1. 停止
   ps -ef|grep kibana
   kill [端口号]

3. 安装filebeat

因为logstash是jvm跑的,资源消耗比较大,所以后来作者又用golang写了一个轻量级的logstash-forwarder。加入es公司以后,因为es公司本身还有另一个开源项目packetbeat,而这个项目专门就是用golang的,所以es公司干脆把logstash-forwarder的开发工作也合并到同一个golang团队来搞,于是新的项目就叫filebeat了。

  1. 下载
   wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.8.13-linux-x86_64.tar.gz
  1. 解压
   tar -zxvf filebeat-6.8.13-linux-x86_64.tar.gz 
  1. 修改配置
    修改 filebeat.yml 配置文件
   filebeat.inputs:
   - type: log
     enabled: true
     tags: ["project1"]  #tags区分不同日志来源
     paths:
       # 日志文件位置
       - /opt/project/project1/logs/spring.log
   - type: log
     enabled: true
     tags: ["project2"]  #tags区分不同日志来源
     paths:
       # 日志文件位置
       - /opt/project/project2/logs/spring.log 
   output.elasticsearch:
    # elasticsearch链接地址
    hosts: ["localhost:9200"]
  1. 启动
   nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &
  1. 停止
   ps -ef |grep filebeat
   kill [端口号]

4. 使用

登录kibana地址,在 logs 菜单中可以看到日志,kibana提供了很多查询的方式,比如根据之前filebeat中配置的tags查询
kibana1