ELK的安装配置及使用

ELK:

  • Elasticsearch:负责日志检索和存储
  • Logstash:负责日志的收集、分析和处理
  • Kibana:负责日志的可视化
    ELK架构图:
    ELK的安装配置及使用_第1张图片
    ELK组件在海量日志系统的运维中,可用于解决:
    (1)分布式日志数据集中式查询和管理
    (2)系统监控,包含系统硬件和应用各个组件的监控
    (3)故障排查
    (4)安全信息和事件管理
    (5)报表功能
    Elasticsearch主要特点:
  • 实时分析
  • 分布式实时文件存储,并将每一个字段都编入索引
  • 文档导向,所有的对象全部是文档
  • 高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards和Replicas)
  • 接口友好,支持JSON
    Elasticsearch是一种面向文档的数据库,与关系型数据库的对比
    DB(关系型)–>Databases(数据库)–>Tables(表)–>Rows(行)–>Columns(列)
    ES(ES)–>Indices(索引或称库名)–>Types(类型)–>Documents(文档)–>Fields(域或字段)
    ES集群安装
    1、准备5台虚拟机
    192.168.8.41 es1
    192.168.8.42 es2
    192.168.8.43 es3
    192.168.8.44 es4
    192.168.8.45 es5
    2、配置yum
[root@room9pc01 ~]# ls /var/ftp/elk/
filebeat-1.2.3-x86_64.rpm
elasticsearch-2.3.4.rpm
kibana-4.5.2-1.x86_64.rpm
logstash-2.3.4-1.noarch.rpm
elasticsearch-kopf-master.zip
elasticsearch-head-master.zip
bigdesk-master.zip 
[root@room9pc01 ~]#createrepo /var/ftp/elk/
[root@room9pc01 ~]#createrepo --update /var/ftp/elk/
[root@es1 ~]# vim /etc/yum.repos.d/dvd.repo
[elk]
name=elk
baseurl=ftp://192.168.8.254/elk/
enabled=1
gpgcheck=0
[rhel7]
name=rhel7
baseurl=ftp://192.168.8.254/rhel7/
enabled=1
gpgcheck=0

3、安装并配置Elasticsearch(以es1为例,其余es主机类似)

[root@es1 ~]#yum -y install java-1.8.0-openjdk
[root@es1 ~]#yum -y install elasticsearch
[root@es1 ~]# vim /etc/hosts
192.168.8.41 		es1
192.168.8.42 		es2
192.168.8.43 		es3
192.168.8.44 		es4
192.168.8.45 		es5
[root@es1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17 cluster.name: nsd1812
23 node.name: es1
54 network.host: 0.0.0.0
68 discovery.zen.ping.unicast.hosts: ["es1", "es2", "es3"]
[root@es1 ~]# systemctl start elasticsearch
[root@es1 ~]# systemctl enable elasticsearch
[root@es1 ~]# netstat -ntulap |grep :9200		//查看服务是否启动(9200为客户端访问端口)
[root@es1 ~]# netstat -ntulap |grep :9300		//查看服务是否启动(9300为集群访问端口)
[root@es1 ~]# firefox http://192.168.8.41:9200		//访问9200端口查看是否安装成功
[root@es1 ~]# firefox http://192.168.8.44:9200/_cluster/health?pretty		//ES集群验证,显示5台节点
...
"cluster_name" : "nsd1812",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 5,
  "number_of_data_nodes" : 5,
...

4、curl命令的使用
系统命令curl:是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具,它支持多种请求模式、自定义请求头等等强大功能,是一款综合工具
curl常用参数介绍:
-A 修改请求头
-X设置请求方法
-i显示返回头信息
例如:

[root@es1 ~]# curl -X GET http://192.168.8.42:9200/_cat		//索引的分片信息
[root@es1 ~]# curl -X GET http://192.168.8.42:9200/_cat/health?v		//显示health的详细信息
[root@es1 ~]# curl -X GET http://192.168.8.42:9200/_cat/nodes?help		//查看nodes的帮助

5、部署插件(插件部署在那一台机器上,只能在那台机器上使用,这里以安装在es5上为例)

[root@es5 ~]# cd /usr/share/elasticsearch/bin/
[root@es5 bin]#  ./plugin install ftp://192.168.8.254/elk/elasticsearch-head-master.zip
[root@es5 bin]#  ./plugin install ftp://192.168.8.254/elk/elasticsearch-kopf-master.zip
[root@es5 bin]# ./plugin install ftp://192.168.8.254/elk/bigdesk-master.zip
[root@es5 bin]# ./plugin list		//查看安装的插件
[root@room9pc01 ~]# firefox http://192.168.8.45:9200/_plugin/head/		//真机访问es5的head插件
[root@room9pc01 ~]# firefox http://192.168.8.45:9200/_plugin/kopf/		//真机访问es5的kopf插件
[root@room9pc01 ~]# firefox http://192.168.8.45:9200/_plugin/bigdesk/		//真机访问es5的bigdesk插件

6、使用curl实现ES数据库的增、删、改、查
增 PUT
curl -XPUT http://es3:9200/索引/类型/id -d ‘json数据’
改 POST
curl -XPOST http://es3:9200/索引/类型/id/_update -d ‘json数据’
查 GET
curl -XGET http://es3:9200/索引/类型/id?pretty
删除 DELETE
curl -XDELETE http://es3:9200/索引/类型/id?pretty
例如:

[root@es5 ~]# curl -XPUT http://es3:9200/tea -d '{"settings":{"index":{"number_of_shards":5,"number_of_replicas":1}}}'		//创建索引tedu
[root@es5 ~]# curl -XPUT http://es3:9200/tea/teacher/1 -d '{ "姓名": "张三","爱好": "篮球","阶段": "2阶段","年龄": "22" }'		//增加数据1
[root@es5 ~]# curl -XPUT http://es3:9200/tea/teacher/2 -d '{ "姓名": "李四","爱好": "足球","阶段": "3阶段","年龄": "25" }'		//增加数据2
[root@es5 ~]# curl -XPUT http://es3:9200/tea/teacher/3 -d '{ "姓名": "王五","爱好": "乒乓球","阶段": "2阶段","年龄": "23" }'		//增加数据3
[root@es5 ~]# curl -XPOST http://es3:9200/tea/teacher/3/_update -d '{"doc":{"年龄":""20"}}'		//修改王五的年龄为20
[root@es5 ~]# curl -XGET http://es3:9200/tea/teacher/3?pretty		//查询id为3的数据信息
[root@es5 ~]# curl -XDELETE http://es3:9200/tea/teacher/3?pretty		//删除id为3的数据信息
[root@es5 ~]# curl -XDELETE http://es3:9200/*	//删除所有索引

7、安装kibana(192.168.8.40,yum源与前面es主机一致)

[root@kibana ~]# vim /etc/hosts
192.168.8.40 kibana
192.168.8.41 es1
192.168.8.42 es2
192.168.8.43 es3
192.168.8.44 es4
192.168.8.45 es5
[root@kibana ~]# yum -y install kibana
[root@kibana ~]# vim /opt/kibana/config/kibana.yml
2 server.port: 5601		//服务端口
5 server.host: "0.0.0.0"		//服务器监听地址
15 elasticsearch.url: "http://192.168.8.41:9200"		//声明地址,集群群中任意一个
23 kibana.index: ".kibana"		//kibana自己创建的索引
26 kibana.defaultAppId: "discover"		//打开kibana页面时,默认打开的叶页面discover
53 elasticsearch.pingTimeout: 1500		//ping检测超时时间
57 elasticsearch.requestTimeout: 30000		//请求超时
64 elasticsearch.startupTimeout: 5000		//启动超时
[root@kibana ~]# systemctl start kibana
[root@kibana ~]# systemctl enable kibana
[root@room9pc01 ~]# firefox http://192.168.8.40:5601/		//访问kibana,点击status,全部是绿色的对勾,说明安装成功

8、调试导入数据

[root@es5 ~]# ls
accounts.json  logs.jsonl  shakespeare.json
[root@es5 ~]# curl -XPOST http://es2:9200/_bulk --data-binary @shakespeare.json 
[root@es5 ~]# curl -XPOST http://es2:9200/_bulk --data-binary @accounts.json
[root@es5 ~]# curl -XPOST http://es2:9200/_bulk --data-binary @logs.jsonl

9、安装logstash(192.168.8.47,yum源同es主机)

[root@logstash ~]# yum -y install java-1.8.0-openjdk
[root@logstash ~]# yum -y install logstash
[root@logstash ~]# vim /etc/hosts
192.168.8.41 es1
192.168.8.42 es2
192.168.8.43 es3
192.168.8.44 es4
192.168.8.45 es5
192.168.8.40 kibana
192.168.8.47 logstash

配置文件(编写配置文件帮助文档https://www.elastic.co/guide/en/logstash/current/index.html)

[root@logstash ~]# vim /etc/logstash/logstash.conf
input{
      beats{
        port => "5044"			//配置接收filebeat传输的数据,默认端口
     }
     stdin{ codec=> "json" }		//声明输入数据格式为json格式
     file {
     path => ["/tmp/a.log"]		//自定义日志文件的读取路径(多个日志用“,”隔开)
     sincedb_path => "/var/lib/logstash/since.db"		//定义指针记录文件,记录读取日志文件的位置
     start_position => "beginning"		//配置第一次读取日志文件时从什么地方开始
     type => "nsd1812"		//自定义日志类型(nginx日志、apache日志或者mysql日志等)
     }
   tcp {			//配置日志文件远程读写
      mode => "server"		//mode为server时,表示监听客户端的连接;mode为client时,表示连接服务器
      host => "0.0.0.0"		//mode为server时,表示监听的地址;mode为client时,表示要连接的服务器地址
      port => 8888		//自定义监听端口号
      type => "tcplog"		//自定义接收日志的协议标签
   }
   udp {			//配置日志文件远程读写
      port => 8888		//与tcp共用同一端口号(通信五元素:源地址、目标地址、源端口、目标端口,协议,只要有一个不一样,都可以共用同一个端口)
      type => "udplog"		//自定义接收日志的协议标签
   }
   syslog {
   type => "syslog"		//配置前端web服务器向logstash主机远程发送系统日志数据(默认监听端口号为514),与web服务器的配置文件/etc/rsyslog.conf相关
   }
filter{
  if [type]== "apache_log" {		//判断是否为apache日志
  grok {					//grok模块用于从语法上分析非结构化日志数据并将其结构化
       match => {
         "message" => "%{COMBINEDAPACHELOG}"		//正则匹配apache日志数据的宏COMBINEDAPACHELOG
       }}
  }
}
output{
   #stdout{ codec=> "rubydebug" }		//用于调试,这里注释掉
   if [type] == "apache_log"{
   elasticsearch {				//指定向elasticsearch服务器输出数据
     hosts => ["es1:9200", "es2:9200", "es3:9200"]		//指定elasticsearch服务器地址(至少保证一台不宕机)
     index => "weblog"		//自定义输出的索引(库名)
     flush_size => 2000		//参数调优,数据达到2000字节时开始写入
     idle_flush_time => 10		//参数调优,写入空闲时间
   }}
}
[root@logstash ~]# cd /etc/logstash/
[root@logstash logstash]# /opt/logstash/bin/logstash -f logstash.conf    //启动logstash
[root@logstash logstash]# ss -ltun 		//查看监听端口号(5044、514、8888)

10、准备一台web服务器(192.168.8.46,yum源同上),安装filebeat(负责发送日志至logstash)

[root@web46 ~]# vim /etc/rsyslog.conf
local0.notice                    @@192.168.8.47:514		//配置web服务器向logstash主机远程发送系统日志数据
[root@web46 filebeat]# yum -y install filebeat httpd
[root@web46 filebeat]# cd /etc/filebeat
[root@web46 filebeat]# vim filebeat.yml
14       paths:
15         - /var/log/httpd/access_log			//要传输至logstash的日志
72       document_type: apache_log		//对应logstash配置文件output指定的type
(183和188行加注释)		//取消输出数据至elasticsearch
278     logstash:		//输出数据至logstash
280     hosts: ["192.168.8.47:5044"]

11、测试ELK数据连通性
不同客户端192.168.8.254和192.168.8.31通过浏览器访问web主机(192.168.8.46)的index.html和abc.html主页,访问请求次数在kibana中的统计结果如下图:
ELK的安装配置及使用_第2张图片

你可能感兴趣的:(Linux笔记总结,elk)