部署ELK日志分析系统

时间:2024-03-12 12:53:18

简介

        在大型运维环境中,管理员通常面对大量的服务器,对于这些服务器的维护,一个很重要的工作就是查看每台服务器的日志信息,而每天逐台检查的方式显然效率比较低下。传统的方式是通过搭建日志服务器,将所有服务器的日志收集到日志服务器统一查看。但是面对众多的日志数据很难去分析以及查找所需要的内容,即很难快速定位是否出现故障,以及哪些机器哪些服务存在故障。而ELK 可以很好地解决这一问题。

一、Elasticsearch 介绍

        Elasticsearch是一个基于Lucene的搜索服务器。它稳定、可靠、快速,而且具有比较好的水平扩展能力,为分布式环境设计,在云计算中被广泛应用。Elasticsearch提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口,通过该接口,用户可以通过浏览器和Elasticsearch 通信。Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,Wikipedia、Stack、Overflow、GitHub等都基于Elasticsearch来构建搜索引擎,具有实时搜索、稳定,可靠、快速、安装使用方便等特点。

二、Logstash 介绍

        Logstash 由 JRuby 语言编写,运行在Java虚拟机(JVM)上,是一款强大的数据处理工具,可以实现数据传输、格式处理、格式化输出。Logstash具有强大的插件功能,常用于日志处理。LogStash可配置单一的代理端,与其他开源软件结合,以实现不同的功能。
        Logstash的理念很简单,它只做三件事情:数据输入,数据加工(如过滤,改写等)以及数据输出。通过组合输入和输出,可以实现多种需求。Logstash处理日志时,典型的部署架构图。

三、Kibana 介绍

        Kibana是一个针对Elasticsearch的开源分析及可视化平台,主要设计用来和Elasticsearch一起工作,可以搜索,查看存储在Elasticsearch索引中的数据,并通过各种图表进行高级数据分析及展示。Kibana 可以让数据看起来一目了然。它操作简单,基于浏览器的用户界面可以让用户在任何位置都可以实时浏览。Kibana 可以快速创建仪表板(dashboard)实时显示Elasticsearch查询动态。Kibana使用非常简单,只需要添加索引就可以监测Elasticsearch索引数据。

四、实验案例

实验环境

虚拟机 3台 centos7.9\网卡NAT模式 数量 1

  • 组件包:elasticsearch-5.5.0.rpm、elasticsearch-head.tar.gz、node-v8.2.1.tar.gz       、phantomjs-2.1.1-linux-x86_64.tar.bz2  、logstash-5.5.1.rpm、kibana-5.5.1-x86_64.rpm

设备

IP

备注

Centos01

192.168.160.51

Node1  elasticsearch

Centos02

192.168.160.52

Node2  kibana

Centos03

192.168.160.53

Node3  logstash+httpd

1.安装并编译elasticsearch

Node1 Node2 都配置

cat << EOF >> /etc/hosts
192.168.160.51 node1
192.168.160.52 node2
EOF

上传安装包 elasticsearch-5.5.0.rpm

[root@love ~]# rpm -ivh elasticsearch-5.5.0.rpm

编辑elasticsearch 配置文件

[root@love ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster	 #群集名称
node.name: node1				 #节点名称,不同节点修改编号
path.data: /data/elk_data	 	 #日志收集目录
path.logs: /data/elk_log   	 	 #日志存放路径
bootstrap.memory_lock: false	 #不锁定内存
network.host: 0.0.0.0			 #监听IP
http.port: 9200				     #监听端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"]  #单播实现群集

创建日志文件夹

[root@love ~]# mkdir -p /data/elk_data
[root@love ~]# mkdir -p /data/elk_log
[root@love ~]# chown -R elasticsearch:elasticsearch /data
[root@love ~]# systemctl start elasticsearch

查看端口是否启动

2.Node1部署elasticearch-head插件

上传并安装插件:node-v8.2.1.tar.gz、elasticsearch-head.tar.gz、phantomjs-2.1.1-linux-x86_64.tar.bz2

安装node-v8.2.1.tar.gz
[root@love ~]# tar zxf node-v8.2.1.tar.gz
[root@love node-v8.2.1]# ./configure && make && make install

安装elasticsearch-head.tar.gz
[root@love ~]# yum -y install bzip2
[root@love ~]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@love ~]# mv phantomjs-2.1.1-linux-x86_64 /usr/src/phantomjs2.1
[root@love ~]# ln -s /usr/src/phantomjs2.1/bin/* /usr/local/bin/

安装phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@love ~]# tar zxf elasticsearch-head.tar.gz 
[root@love ~]# cd elasticsearch-head/
[root@love elasticsearch-head]# npm install
[root@love elasticsearch-head]# cd 
[root@love ~]# cat << EOF >> /etc/elasticsearch/elasticsearch.yml
> http.cors.enabled: true
> http.cors.allow-origin: "*"
> http.cors.allow-headers: Authorization,Content-Type
> EOF

启动服务

[root@love ~]# systemctl restart elasticsearch


[root@love elasticsearch-head]# npm run start &
[1] 110314
测试连接http://192.168.19.10:9100

3.部署httpd+ logstash(Node3)

上传安装包  logstash-5.5.1.rpm

[root@love22 ~]# yum -y install httpd
[root@love22 ~]# rpm -ivh logstash-5.5.1.rpm
[root@love22 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/sbin/

编辑自定义提交日志配置

[root@love22 ~]# vim /etc/logstash/conf.d/httpd_log.conf
input {
        file {
          path => "/var/log/httpd/access_log"
          type => "access"
          start_position => "beginning"
        }
        file {
          path => "/var/log/httpd/error_log"
          type => "error"
          start_position => "beginning"
        }
}
output {
        if [type] == "access" {
        elasticsearch {
          hosts => ["192.168.19.10:9200"]
          index => "httpd_access-%{+YYYY.MM.dd}"
        }
     }
        if [type] == "error" {
        elasticsearch {
          hosts => ["192.168.19.20:9200"]
          index => "httpd_error-%{+YYYY.MM.dd}"
        }
     }
}

启动日志传递

[root@love22 ~]# nohup logstash -f /etc/logstash/conf.d/httpd_log.conf &
[1] 65183
4.安装kibana图形化查看工具

上传安装包 kibana-5.5.1-x86_64.rpm

[root@love11 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm

[root@love11 ~]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.19.10:9200"
kibana.index: ".kibana"

[root@love11 ~]# systemctl enable kibana --now