elk 学习

在这里插入图片描述

1、elk简介
elk是一套软件的组合,由三部分组成,分别是elasticsearch、logstash、kibana
官方网址:https://www.elastic.co/cn/

1.1 elasticsearch简介
ElasticSearch基于Lucen用java做二次封装的搜索服务,它提供了一个分布式多用户能力的全文搜索引擎;
功能:
是用来数据存储、数据搜索、数据分析、
    讲解一下什么是倒排索引
1.1.1数据库的分类
1.1.1.1关系型数据库
当前主流的关系型数据库有Oracle、SQL Server、MySQL等
1.1.1.2非关系型数据库
redis、MongodDB、HBase、elasticsearch等
1.2 elasticsearch数据库的特点
1.2.1可扩展
支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群。
1.2.2高可用
在一个集群的多个节点中进行分布式存储,索引支持shards(分片)和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。
分片(shards):
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。
分片的数量只能在索引创建前指定,并且索引创建后不能更改。5.X默认不能通过配置文件定义分片
副本(replicas):
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。
1.2.3访问方式简单,采用Restful封装风格
通过http对API接口发起操作数据的请求,操作的动作有put、get、delete等
http://10.0.0.241:9200/kecheng/ke_cheng/1?pretty 查看这个索引下面的信息
http://10.0.0.241:9200/_settings?pretty  查看副本数量
2、安装前环境准备
2.1环境及角色划分 
系统环境:centos7.5
ec01 10.0.0.241
ec01 10.0.0.242
web 10.0.0.243
2.2关闭防火墙和selinux
systemctl stop firewalld 
systemctl disable firewalld
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
setenforce 0
2.3配置yum源
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
2.4安装jdk
yum install java-1.8.0-openjdk -y
2.4.1检查是否安装成功
java -version

在这里插入图片描述

3 、elasticsearch安装
3.1分别在es01和es02安装elasticsearch
yum localinstall elasticsearch-6.4.1.rpm
3.2修改elasticsearch的配置文件
grep ^[a-z] /etc/elasticsearch/elasticsearch.yml 
cluster.name: mycluster        #集群名称
node.name: node-2            #所在节点名称
path.data: /var/lib/elasticsearch  #数据目录,如果这个目录是自定义的需要修改目录的用户和用户组
path.logs: /var/log/elasticsearch  #日志文件
network.host: 10.0.0.242        #根据每台主机的实际情况来配置
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.0.0.241","10.0.0.242"] 
#集群内部可相互发现
discovery.zen.minimum_master_nodes: 1
#其它N个有master资格的节点.默认为1,对于大的集群来说,可以设置大一点的值(2-4)

3.3让 head管理集群中每个节点需要在/etc/elasticsearch/elasticsearch.yaml文件中加入下面内容
http.cors.enabled: true
http.cors.allow-origin: "*"
3.4每个配置文件的作用
/etc/elasticsearch/elasticsearch.yml #主配置文件
/etc/elasticsearch/jvm.options      #可设置内存大小
/etc/elasticsearch/log4j2.properties
/etc/elasticsearch/role_mapping.yml
/etc/elasticsearch/roles.yml
/etc/elasticsearch/users
/etc/elasticsearch/users_roles
/etc/init.d/elasticsearch
/etc/sysconfig/elasticsearch
/usr/lib/sysctl.d/elasticsearch.conf
3.5 检查端口是否正常开启
正常开启的端口为9200 和9300
3.6 yum安装和源码安装的区别
. yum安装后路径比较分散,但是可以不用创建用户及配置启动项
. tar包解压后易管理,但是需要手动创建对应的用户和组,配置相关的启动项
3.7 可以使用命令检查是否安装成功
curl -i -XGET '10.0.0.241:9200/?pretty'
[root@es01 ~]# curl -i -XGET '10.0.0.241:9200/?pretty'
HTTP/1.1 200 OK
content-type: application/json; charset=UTF-8
content-length: 488
{
  "name" : "node-1",
  "cluster_name" : "mycluster",
  "cluster_uuid" : "EVFyfRMPRFmX7FjYiGaPag",
  "version" : {
    "number" : "6.4.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "e36acdb",
    "build_date" : "2018-09-13T22:18:07.696808Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
3.8 检查集群的健康状态
curl '10.0.0.241:9200/_cluster/health?pretty'
[root@es01 ~]# curl '10.0.0.241:9200/_cluster/health?pretty'
{
  "cluster_name" : "mycluster",
  "status" : "green",     #健康状态
  "timed_out" : false,
  "number_of_nodes" : 2, #表示当前集群有2个节点
  "number_of_data_nodes" : 2,#存储数据的节点数
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
4、安装head插件来管理集群
4.1 配置epel源,可以通过下面的链接下载
wget http://mirrors.aliyun.com/repo/epel-7.repo
4.2安装nodejs  npm  openssl  screen
yum install nodejs npm openssl screen -y
4.3查看版本信息
node -v
npm  -v

在这里插入图片描述

4.4安装cnpm,如下图所示
npm install -g cnpm --registry=https://registry.npm.taobao.org

在这里插入图片描述

4.5安装git工具,并把elasticsearch-head下面的文件克隆到本地
yum install git -y
cd /opt/
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
cnpm install
screen -S es-head
cnpm run start
Ctrl+A+D  #切换快捷键

如果正常启动,开启的端口是9100,可以在浏览器中输入http://10.0.0.241:9100访问,如下图所示:

在这里插入图片描述

4.6 集群的健康状态有三种
绿色:表示集群健康
黄色:表示亚健康状态,勉强可以运行
红色:表示很危险,有可能数据已经丢失
5、elasticsearch数据库的操作
curl -XPUT '10.0.0.241:9200/megacorp/employee/1?pretty' -H 'Content-Type: application/json' -d'
    {
        "first_name" : "Li",
        "last_name": "si",
        "age" : 28,
        "about" : "I love cat", "interests": [ "swimming" ]
    }
'
curl -XPUT '10.0.0.241:9200/megacorp/employee/2?pretty' -H 'Content-Type: application/json' -d'
    {
        "first_name" : "Zhang",
        "last_name": "san",
        "age" : 22,
        "about" : "I love dog", "interests": [ "swimming" ]
    }
    '
curl -XPUT '10.0.0.241:9200/megacorp/employee/3?pretty' -H 'Content-Type: application/json' -d'
    {
        "first_name" : "Wang",
        "last_name": "wu",
        "age" : 30,
        "about" : "I love beautiful girl", "interests": [ "swimming" ]
    }
    '

5.1数据插入成功后可以通过数据浏览来查看

在这里插入图片描述

5.2数据分析
es数据库                          mysql数据库
index(索引)                      database(数据库)
type (类型)                      tables(数据库中的表)
id   (id号)                      对应表中的字段
5.3如何查询一条数据
curl -XGET '10.0.0.241:9200/megacorp/employee/1?pretty'

在这里插入图片描述

5.4如何删除一条数据
curl -XDELETE '10.0.0.241:9200/megacorp/employee/1?pretty'
5.5创建一个索引
curl -XPUT '10.0.0.241:9200/student_message?pretty'
创建一个索引为my_temp_index,分片为2,副本为1
curl -XPUT '10.0.0.241:9200/my_temp_index?pretty' -H 'Content-Type: application/json' -d' {
"settings": {
        "number_of_shards" : 2,
        "number_of_replicas" : 1
    }
}
'
5.5.1再往新创建的索引中写入数据
curl -XPUT '10.0.0.241:9200/student_message/glass_one/1?pretty'  -H 'Content-Type: application/json' -d'
{
"name": "小明",
"sex" : "男",
"age" : 10,
"addr" : "北京市一环"
}
'
5.6删除索引
5..6.1通过命令删除一索引

在这里插入图片描述

6、kibana安装配置
6.1采用本地安装的方式安装
cd /opt/es_software
yum localinstall kibana -y
6.2修改配置文件
vim /etc/kibana/kibana.yml
[root@es01 kibana]# grep ^[a-z] kibana.yml
server.port: 5601
server.host: "10.0.0.241"
elasticsearch.url: "http://10.0.0.241:9200"  
elasticsearch.pingTimeout: 30000000
logging.dest: /var/log/kibana/kibana.log  #如果指定日志存储路径,需要修改文件的所有者及所属组
6.3开启服务并加入开机自启动
systemctl start kibana
systemctl enable kibana
6.4检查端口和web界面是否正常
ss -lnt

在这里插入图片描述

7、部署web服务器
7.1安装并配置nginx软件
7.1.1配置nginx的yum源
vim nginx.repo
[root@web yum.repos.d]# cat nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum install nginx -y
7.1.2修改nginx配置文件
vim /etc/nginx/conf.d/elk.conf
[root@web conf.d]# cat elk.conf 
server {
      listen 80;
      server_name elk.test.com;
      location / {
          proxy_pass      http://10.0.0.241:5601;
          proxy_set_header Host   $host;
          proxy_set_header X-Real-IP      $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
      access_log  /var/log/nginx/elk_access.log main;
7.1.3修改nginx.conf配置文件,增加nginx收集json格式的日志文件
vim /etc/nginx/nginx.conf
log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'
        '"http_host":"$host",'
        '"url":"$uri",'
        '"domain":"$host",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"status":"$status"}';
    access_log  /var/log/nginx/access_json.log  access_json;
7.1.4启动nginx服务并加入开机自启
检查配置文件是否有错误
nginx -t
systemctl start nginx
systemctl enable nginx
检查日志收集是否正常

在这里插入图片描述

7.2在web安装并配置logstash软件
7.2.1首先要安装java环境
yum install java-1.8.0-openjdk -y
7.2.2安装logstash并修改配置文件
yum localinstall logstash-6.4.1.rpm  -y
vim /etc/logstash/logstash.yml
[root@web logstash]# egrep -v '^#|^$' logstash.yml 
path.data: /var/lib/logstash
http.host: "10.0.0.243"
http.port: 9600
path.logs: /var/log/logstash

7.2.3在此目录下面/etc/logstash/conf.d/新增nginx_access.conf配置文件
vim /etc/logstash/conf.d/nginx_access.conf
[root@web conf.d]# cat nginx_access.conf 
input {
  file {
    path => "/var/log/nginx/access_json.log"
    start_position => "end"
    type => "nginx_access"
    codec => json
  }
}

output {
    elasticsearch {
      hosts => ["10.0.0.241:9200"]
      index => "nginx_access-%{+YYYY.MM.dd}"
   }
}

7.2.3 启动logstash并加入开机自启动
systemctl start logstash
systemctl enable logstash

在这里插入图片描述
检查elasticsearch能否收到日志
在这里插入图片描述

filebeat.yml

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/nginx/access_json.log


filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml

  # Set to true to enable config reloading
  reload.enabled: false


output.redis:
   hosts: ["10.0.0.237"]
   port: 6379
   key: "nginx-log"
   db: 0
   timeout: 5

配置logstash 连接redis

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值