ELK日志分析系统 

ELK日志分析系统
--------------------------------------------------------
Elasticsearch 端口9200
实验环境:
     IP地址  主机名               备注
192.168.200.67         elk-node1       (至少)2G内存
192.168.200.68         elk-node2      (至少)2G内存
192.168.200.69         apache             1G内存
------------------------------------------------------------------------
ELK环境的搭建:
创建多台Elasticsearch节点的目的是存放数据的多个副本,在实际生产环境中,节点的数量可能更多,在本实验中,Elasticsearch 和kibana 集中部署在node1节点上,也可以采用分布式部署,即Logstash、Elasticsearch 、kibana 分别部署在不同服务器上。
在公司里面,像一些直播公司、地图公司较常用。
-------------------------------------------------------------------
环境准备
所有机器关闭防火墙安全机制
iptables -F
setenforce 0
systemctl stop firewalld
【1】在2个ELK节点上配置名称解析,通过本地/etc/hosts文件实现
--------
67 主机 ELK-node1 配置
hostname elk-node1
bash
vim /etc/hostname
elk-node1
vim /etc/hosts
192.168.200.67 elik-node1
192.168.200.68 elik-node2
保存退出
---------
68主机 ELK-node2 配置
hostname elk-node2
bash
vim /etc/hostname
elk-node2
vim /etc/hosts
192.168.200.67 elik-node1
192.168.200.68 elik-node2
保存退出
---------
【2】配置2台elk-node 的Java环境
java -version   //系统自带的环境也可以。
【3】安装elasticsearch 软件
      【3.1】elasticsearch 可以通过yum安装、源码安装都可以,这里通过rpm包进行安装,2个elk-node节点都要安装
-------67主机操作------
rpm -ivh elasticsearch-5.5.0.rpm
-------68主机操作------
rpm -ivh elasticsearch-5.5.0.rpm
----------------
       【3.2】通过执行命令配置系统服务并设置自动开机启动,2个node都要做 ,并且更改主配置文件
-------67主机操作------
systemctl daemon-reload
systemctl enable elasticsearch.service
vim /etc/elasticsearch/elasticsearch.yml
 17 cluster.name: my-elk-cluster       #集群名字,名字相同才会分到相同集群
 23 node.name: elk-node1       #节点名字
 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地址,0.0.0.0代表所有
 59 http.port: 9200             #指定监听端口
 68 discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]  #集群中的实例名
##注意(末行添加的内容node1与node2此处不同)
 http.cors.enabled: true         #开启跨区域传送
 http.cors.allow-origin: "*"        #跨区域访问允许的域名地址
保存退出
-------68主机操作------
systemctl daemon-reload
systemctl enable elasticsearch.service
vim /etc/elasticsearch/elasticsearch.yml
 17 cluster.name: my-elk-cluster
 23 node.name: elk-node2
 33 path.data: /data/elk_data
 37 path.logs: /var/log/elasticsearch
 43 bootstrap.memory_lock: false
 55 network.host: 0.0.0.0
 59 http.port: 9200
 68 discovery.zen.ping.unicast.hosts: ["elk-node1", "elk-node2"]
保存退出
【4】2台node建数据存放路径并授权
-------67主机操作------
mkdir -p /data/elik_data
chown elasticsearch:elasticsearch /data/elk_data/
-------68主机操作------
mkdir -p /data/elik_data
chown elasticsearch:elasticsearch /data/elk_data/
【5】2个node节点,启动 elasticsearch并查看是否成功开启。
-------67主机操作------
systemctl start elasticsearch.service
netstat -antp |grep 9200
#首次启动如果确定步骤,未错的情况下,但是没有端口,等待一会再过滤试一下
netstat -antp |grep 9200
-------68主机操作------
systemctl start elasticsearch.service
netstat -antp |grep 9200
elasticsearch默认的对外服务的HTTP端口是9200,节点之间交互的TCP端口是9300
【6】通过浏览器去访问节点,可以看到节点信息
192.168.200.67:9200
192.168.200.68:9200
【7】查看集群健康情况 可以看到status为green绿色
http://192.168.200.67:9200/_cluster/health?pretty
http://192.168.200.68:9200/_cluster/state?pretty
【8】以上信息查看集群状态不直观,安装elasticsearch-head 插件,以便方便管理集群 源码安装会很慢,这里是二进制安装
   【8.1】安装elasticsearch-head插件(是基于Chrome V8引擎的JavaScript运行环境) ,需要作为独立服务进行安装,需要一个npm命令  2个节点都要进行操作
-------67主机操作------
tar xf node-v8.2.1-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/node-v8.2.1-linux-x64/bin/node /usr/bin/node
ln -s /usr/local/node-v8.2.1-linux-x64/bin/npm /usr/local/bin
node -v   
v8.2.1    #能够查看版本
npm -v
5.3.0    #能够查看版本
-------68主机操作------
tar xf node-v8.2.1-linux-x64.tar.gz -C /usr/local/
ln -s /usr/local/node-v8.2.1-linux-x64/bin/node /usr/bin/node
ln -s /usr/local/node-v8.2.1-linux-x64/bin/npm /usr/local/bin
node -v   
v8.2.1    #能够查看版本
npm -v
5.3.0    #能够查看版本
------------------
   【8.2】安装elasticsearch-head 作为独立节点并后台启动,
这将启动运行在9100上的本地web服务器,该端口服务于elasticsearch-head
-------67主机操作------
tar xf elasticsearch-head.tar.gz -C /data/elk_data/   #在之前安装elasticsearch时修改配置文件的数据的位置
cd /data/elk_data/
chown -R elasticsearch:elasticsearch elasticsearch-head/
cd /data/elk_data/elasticsearch-head/
npm install
#报错为正常现象,忽略即可
cd _site/
pwd
cp app.js{,.bak}
vim app.js
4329      this.base_uri=this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.67:9200";   ##更改为自身的ip
保存退出
npm run start &
systemctl start elasticsearch.service
netstat -anpt |grep 9100
-------68主机操作------
tar xf elasticsearch-head.tar.gz -C /data/elk_data/   #在之前安装elasticsearch时修改配置文件的数据的位置
cd /data/elk_data/
chown -R elasticsearch:elasticsearch elasticsearch-head/
cd /data/elk_data/elasticsearch-head/
npm install
#报错为正常现象,忽略即可
cd _site/
pwd
cp app.js{,.bak}
vim app.js
4329       this.base_uri=this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.200.68:9200";   ##更改为自身的ip
保存退出
npm run start &
systemctl start elasticsearch.service
netstat -anpt |grep 9100
   【8.3】浏览器测试
http://192.168.200.67:9100
http://192.168.200.68:9100
    【8.4】为浏览器测试页面插入一个测试索引,索引为index-demo,类型为test ,可以看到成功创建,在一台机器上创建即可,一般工作中不用我们来编写,开发会做成的
-------67主机操作------
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type:application/json' -d '{ "user": "zhangsan","mesg":"hello world" }'
    【8.5】刷新浏览器页面就可以看到了
http://192.168.200.67:9100
【9】安装logstash
logstash一般部署在需要监控其日志的服务器中,在本实验中,logstash部署在apache服务器上,用于搜集apache服务器的日志信息并发送到elasticsearch中,在正式部署之前,先在node1上部署logstash,logstash也需要java环境。
【9.1】在elk-node1上安装
-------67主机操作------
rpm -ivh logstash-5.5.1rpm
systemctl start logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
【9.2】logstash命令使用
logstash使用管道的方式进行日志的搜集处理和输出,有点类似linux系统的管道命令  xxx|ccc|ddd ,xxx执行完了会执行ccc,然后执行ddd
在logstash中,包括了3个阶段
输入input
-f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
-e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“”则默认使用 stdin作为输入,stdout作为输出)
-t:测试配置文件是否正确,然后退出
-------67主机操作------
logstash -e 'input { stdin{} } output { stdout{} }'
###出现警告信息不用管,#出现9600时表示成功,上面出错信息可以忽略  ,在进行输入
www.baidu.com
www.sina.com.cn
最后CTRL+C 退出
------------
logstash -e 'input { stdin{} } output { student{ codec=>rubydebug} }'
#出现9600时表示成功,在进行输入
www.baidu.com
www.sina.com.cn
-------67主机操作------
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.200.67:9200"]} }'
#在里面输入3行
www.baidu.com
www.sina.com.cn
www.google.com
【10】在浏览器中检测
192.168.200.67:9100  
//查看是否有www.baidu.com
www.sina.com.cn
www.google.com访问信息
【11】logstash 配置文件使用
logstash配置文件基本上由三部分组成,input、output以及用户需要才添加的filter,因此标准的配置文件格式如下:
input{..}.
filter{...}
output{...}
在每个部分中,也可以指定多个访问方式,例如我想要指定两个日志来源文件,则可以这样写:
input{
file{path =>"/var/log/messages"type =>"syslog"}
file{path =>"/var/log/apache/access.log"type =>"apache"}
}
【12】配置收集系统日志
将system.conf放到/etc/logstash/conf.d/目录中,logstash启动时便会加载
-------67主机操作------
cd /etc/logstash/conf.d
vim system.conf
input {
 file {
     path => "/var/log/messages"
          type => "system"
     start_position => "beginning"
  }
}
output {
 elasticsearch {
  hosts => ["192.168.200.67:9200"]
  index => "system-%{+YYYY.MM.dd}"
 }
}
保存退出
systemctl restart logstash
cd
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/system.conf     //加载文件
【13】在浏览器中进行查看
192.168.200.67:9100 //查看索引
【14】安装kibana
-------67主机操作------
rpm -ivh kibana-5.5.1-x86_64.rpm
systemctl enable kibana.service
vim /etc/kibana/kibana.yml
2 server.port: 5601
7 server.host: "0.0.0.0"
21 elasticsearch.url: "http://192.168.200.67:9200"
30 kibana.index: ".kibana"
保存退出
systemctl start kibana.service
netstat -lnpt | grep 5601
【15】在浏览器中进行访问
192.168.200.67:9100 //查看索引
http://192.168.200.67:5601  //看到kibana日志分析结果
-------------------------
【16】apache访问日志
-------在主机69操作-------------
 注意:谁被采集日志就需要安装logstash
iptables -F
setenforce 0
systemctl stop firewalld
hostname apache
bash
yum -y install httpd
java -version
rpm -ivh logstash-5.5.1.rpm
systemctl enable logstash.service
systemctl start httpd.service
cd  /etc/logstash/conf.d/
vim apache_log.conf
input {
 file {
       path => "/var/log/httpd/access_log"   #指定apache的访问日志位置
           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.200.67:9200"]
  index => "apache_access-%{+YYYY.MM.dd}"
        }
   }
    if [type] == "error" {
   elasticsearch {
  hosts => ["192.168.200.67:9200"]
  index => "apache_error-%{+YYYY.MM.dd}"
       }
   }
      }
保存退出
/usr/share/logstash/bin/logstash -f apache_log.conf
##等出现9600
在浏览器中访问apache
192.168.200.69
在看192.168.200.67:9200就会发现多了一个apache的访问日志
在kibana中为apache添加索引

------------------实验完成!!!!!!!!-------------
 
 

猜你喜欢

转载自www.cnblogs.com/elin989898/p/12011113.html