部署ELK分布式日志分析平台

一、ELK应用背景:

在这里插入图片描述
需求背景:生产环境中业务发展越来越庞大,服务器越来越多,各种访问日志、应用日志、错误日志量越来越多,导致运维人员无法很好的去管理日志,开发人员排查问题,需要到服务器上查日志,不方便,运营人员需要一些数据,需要我们运维到服务器上分析日志;

**解决的问题:**一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的场景中,此方法效率低下,面临问题包括日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问;

**日志系统:**大型系统通常都是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率;
一个完整的集中式日志系统,需要包含以下几个主要特点:
1.收集-能够采集多种来源的日志数据;
2.传输-能够稳定的把日志数据传输到中央系统;
3.存储-如何存储日志数据;
4.分析-可以支持 UI 分析;
5.警告-能够提供错误报告,监控机制;

二、ELK平台概述

**概述:**Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能;ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack。而ELK则提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用;
**特点:**分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

三、ELK核心组件:

  • Logstash:通过对日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去;
  • ElasticSearch:是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。在elasticsearch中,所有节点的数据是均等的;
  • Kibana :是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志;
  • Filebeat:隶属于Beats。目前Beats包含四种工具:
    Packetbeat(搜集网络流量数据);
    Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据);
    Filebeat(搜集文件数据);
    Winlogbeat(搜集 Windows 事件日志数据);

四、开始部署

角色所需服务
node1(192.168.100.137)Elasticsearch、Kibana
node2(192.168.100.141)Elasticsearch、Kibana
Apache(192.168.100.131)Logstash

一、配置elasticserach环境
(1)修改hosts文件

vim /etc/hosts
192.168.100.137 node1
192.168.100.141 node2

(2)关闭防火墙

systemctl stop firewalld.service 
setenforce 0

二、部署安装elasticsearch软件
(1)安装

rpm -ivh elasticsearch-5.5.0.rpm        //安装
systemctl daemon-reload                 //重新加载服务配置文件
systemctl enable elasticsearch.service   //设置为开机自启动
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

(2)、修改配置文件

vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: my-elk-cluster              ##集群名称
 23 node.name: node-1                          ##节点名字
33 path.data: /data/elk_data		##数据存放路径
37 path.logs: /var/log/elasticsearch/	##日志存放路径
43 bootstrap.memory_lock: false	##不在启动的时候锁定内存
55 network.host: 0.0.0.0		##提供服务绑定的IP地址
 59 http.port: 9200			##监听端口为9200
 68 discovery.zen.ping.unicast.hosts: ["node1", "node2"]   ##级群发现通过单播实现

(3)创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

(4)开启服务

systemctl start elasticsearch.service
netstat -natp | grep 9200

在这里插入图片描述
1、浏览器输入网址,查看健康状态
在这里插入图片描述
在这里插入图片描述
三、安装elasticsearch-head插件
(1)安装依赖包

yum install gcc gcc-c++ make -y

(2)编译安装 node 组件

tar zvxf node-v8.2.1.tar.gz -C /opt/
cd /opt/node-v8.2.1/
./configure 
make      //这步耗时较长,耐心等待
make install

(3)安装 phantomjs 前端框架

tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /opt/
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin/

(4)安装 elasticsearch-head 数据可视化工具

tar zvxf elasticsearch-head.tar.gz -C /opt/
cd /opt/elasticsearch-head/
npm install

(5)修改主配置文件

vim /etc/elasticsearch/elasticsearch.yml
末尾插入以下两行代码:
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述
(6)启动 elasticsearch-head

cd /opt/elasticsearch-head/
npm run start &  //放在后台运行

检查9100和9100端口

netstat -lnupt |grep 9100

netstat -lnupt |grep 9200

在这里插入图片描述
四、创建索引
输入192.168.100.131:9100可以看到Elasticsearch主页面
在这里插入图片描述
创建索引
在这里插入图片描述
也可以使用命令创建索引

curl -XPUT '192.168.100.137:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

浏览器刷新下,可以看到新创建的索引
在这里插入图片描述
在这里插入图片描述
五、安装Logstash并搜索日志输入到elasticsearch

(1)安装Apache服务

systemctl stop firewalld.service
setenforce 0
yum install httpd -y
systemctl start httpd.service

(2)安装 logstash

rpm -ivh logstash-5.5.1.rpm
systemctl start logstash
systemctl enable logstash
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/    //创建软连接到bin目录下
测试logstash与apache功能是否正常做对接测试
Logstash
-f :通过这个选择可以指定logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串 该字符串可以被当作logstash的配置(如果是"  ",则默认使用stdin作为输入、stdout作为输出)

输入采用标准输入、输出采用标准输出

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.100.137:9200"] } }'

在这里插入图片描述
登录Apache主机,做对接配置
logstash 配置文件主要由三部分组成:input、output、filter

chmod o+r /var/log/messages  ##给日志文件授权
创建并编辑配置文件
vim /etc/logstash/conf.d/system.conf
input {
      file{
        path => "/var/log/messages"
	    type => "system"
	    start_position => "beginning"
          }
       }
output {
        elasticsearch {
         hosts => ["192.168.100.137:9200"]
         index => "system-%{+YYYY.MM.dd}"
         }
 }
systemctl restart logstash.service

在这里插入图片描述
六、node1主机安装 kibana

rpm -ivh kibana-5.5.1-x86_64.rpm 
cd /etc/kibana/
cp kibana.yml kibana.yml.bak
vim kibana.yml
2 server.port: 5601		#打开端口
 7 server.host: "0.0.0.0"	#监听地址
 21 elasticsearch.url: "http://192.168.100.137"	#和elasticsearch建立联系指向本地
 30 kibana.index: ".kibana"	#在elasticsearch中添加 kibana服务
 重启服务
systemctl start kibana.service 
 systemctl enable kibana.service

浏览器访问:192.168.100.137:5601
在这里插入图片描述
在这里插入图片描述
对接Apache主机的Apache 日志文件

cd /etc/logstash/conf.d/

vim apache_log.conf  //创建配置文件,添加以下代码:

input {
      file{
       path => "/etc/httpd/logs/access_log"
       type => "access"
       start_position => "beginning"
       }
      file{
       path => "/etc/httpd/logs/error_log"
       type => "error"
       start_position => "beginning"
       }
}
output {
        if [type] == "access" {
        elasticsearch {
             hosts => ["192.168.220.136:9200"]
             index => "apache_access-%{+YYYY.MM.dd}"
            }
        }
         if [type] == "error"{
        elasticsearch {
             hosts => ["192.168.100.137:9200"]
             index => "apache_error-%{+YYYY.MM.dd}"
            }
        }
}

重启服务

/usr/share/logstash/bin/logstash -f apache_log.conf

再在可视化界面上, 创建两个索引

1、apache_access-*
2、apache_error-*
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值