• ELK日志收集(一)


    一:ELK简介

    ELK=Elasticsearch+Logstash+kibana

    Elasticsearch简称ES,是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。

    二:ELK单节点部署

    1.时间同步

    [root@node_01 ~]# ntpdate time1.aliyun.com          

    2. 准备java环境

    [root@node_01 ~]# java-version         #验证jiava环境是否准备好

    3.ES官网下载ES软件包,顺带将filebeat,kibana的rpm包一并下载

    友情提示:ES,filebeat,kibana三者在下载时注意版本保持一致。

    4.单节点部署

    [root@node_01 ~]# rpm -ivh elasticsearch-6.8.13.rpm

    [root@node_01 ~]# systemctl daemon-reload

    [root@node_01 ~]# systemctl enable elasticsearch.service          # 加入开机自启

    [root@node_01 ~]# systemctl start elasticsearch.service             #启动服务

    [root@node_01 ~]# netstat -lntp |grep java                               #注意,服务启动后养成习惯查看是否启动成功

    [root@node_01]# curl 127.0.0.1:9200                                        #出现一下内容证明安装成功
    {
    "name" : "wUdyBOT",
    "cluster_name" : "elasticsearch",
    "cluster_uuid" : "okeoXx9-QWefW6jCVhU1Xw",
    "version" : {
    "number" : "6.8.13",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
    },
    "tagline" : "You Know, for Search"
    }

    5.配置文件

    #查看ES相关配置文件

    [root@node_01 ~]#  rpm -qc elasticsearch
    /etc/elasticsearch/elasticsearch.yml            #主配置文件
    /etc/elasticsearch/jvm.options                    #虚拟内存设置文件
    /etc/elasticsearch/log4j2.properties            #日志配置
    /etc/elasticsearch/role_mapping.yml           #索引的规则文件
    /etc/elasticsearch/roles.yml                       #规则文件
    /etc/init.d/elasticsearch                            #启动脚本
    /etc/sysconfig/elasticsearch                      #es的系统配置
    /usr/lib/sysctl.d/elasticsearch.conf             #库文件的配置
    /usr/lib/systemd/system/elasticsearch.service      #systemd管理启动程序

    6.修改虚拟内存设置文件

    [root@es01 ~]# vim /etc/elasticsearch/jvm.options
    ······
    -Xms1g      
    -Xmx1g

    注意,这里的内存设置一般是机器内存的一半,但是最大不要超过32G。

    7.修改.yml配置文件

    [root@es01 ~]# vim /etc/elasticsearch/elasticsearch.yml

    #cluster.name: my-application     #集群名称【单节点不需要配置】

    node.name: es-1                        #节点名字

    path.data: /data/es/data            #数据存放目录

    path.logs: /data/es/log              #日志存放路径

    bootstrap.memory_lock: true       ##开启内存锁(在CentOS7中支持内存锁并且要修改启动脚本)

    network.host: 10.0.0.71  172.16.1.71    #ES监听地址

    http.port: 9200                               #ES监听端口

    注意:为什么要开启内存锁?
    在elasticsearch配置文件中,如果没有修改bootstrap.memory_lock 参数的话,默认为false,会导致elasticsearch缓存的文件频繁的被交换出去,从而导致在查询过程中频繁的读取磁盘,磁盘IO很高。
    所以,我们需要手动将bootstrap.memory_lock: true。

    ##最终配置:
    [root@es01 ~]# grep '^[a-z]' /etc/elasticsearch/elasticsearch.yml
    node.name: es-1
    path.data: /data/es/data
    path.logs: /data/es/log
    bootstrap.memory_lock: true
    network.host: 10.0.0.71  172.16.1.71
    http.port: 9200

    8.根据修改后的配置文件创建数据目录和日志目录

    [root@es01 ~]# mkdir  /data/es/{data,log} -p

    #授权
    [root@es01 ~]# chown -R elasticsearch.elasticsearch /data/

    9.重启服务

    此时,我们重启服务发现启动失败。查看日志确定报错原因

    [root@es01 ~]# less /data/es/log/elasticsearch.log
    [2020-11-30T16:36:12,351][ERROR][o.e.b.Bootstrap ] [es-1] node validation exception
    [1] bootstrap checks failed
    [1]: memory locking requested for elasticsearch process but memory is not locked
    ##报错说内存没有锁定

    10.解决报错

    ##修改启动脚本
    [root@es01 ~]# vim /usr/lib/systemd/system/elasticsearch.service
    ... ...
    [Service]
    ... ...
    #修改内存限制
    LimitMEMLOCK=infinity

    #重新加载启动脚本
    [root@es01 ~]# systemctl daemon-reload

    [root@es01 ~]# systemctl restart elasticsearch

    启动后检查,服务启动成功。

    三.与ES进行交互

    ##1.使用curl命令与ES进行交互

    特点:

    1. 使用不方便,容易出错,命令复杂
    2.不需要安装任何服务和插件,只需要curl命令

    使用方式:

    ###1>创建索引(建库)

    [root@es01 ~]# curl -XPUT '10.0.0.71:9200/student?pretty'
    {
    "acknowledged" : true,
    "shards_acknowledged" : true,
    "index" : "student"
    }
    ```

    ###2>插入数据

    [root@es01 ~]# curl -XPUT '10.0.0.71:9200/student/user/1?pretty' -H 'Content-Type: application/json' -d '{"name": "lhd","sex":"man","age":"18","about":"good good study","interests":["chinese","english"]}'
    {
    "_index" : "student",
    "_type" : "user",
    "_id" : "1",
    "_version" : 1,
    "result" : "created",
    "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
    },
    "_seq_no" : 0,
    "_primary_term" : 1
    }

    ### 3>查看数据

    [root@es01 ~]# curl -GET '10.0.0.71:9200/student/user/1?pretty'
    {
    "_index" : "student",
    "_type" : "user",
    "_id" : "1",
    "_version" : 3,
    "_seq_no" : 2,
    "_primary_term" : 1,
    "found" : true,
    "_source" : {
    "name" : "lhd",
    "sex" : "man",
    "age" : "18",
    "about" : "good good study",
    "interests" : [
    "chinese",
    "english"
    ]
    }
    }

    ##2.使用插件的方式进行交互

      插件是为了完成不同的功能,官方提供了一些插件但大部分是收费的,另外也有一些开发爱好者提供的插件,可以实现对elasticsearch集群的状态监控与管理配置等功能,我们现在要安装的是Elasticsearch的head插件,此插件提供elasticsearch的web界面功能。

    安装Elasticsearch的head插件时,要安装npm,npm的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载、安装、上传以及管理已经安装的包。

    在Elasticsearch 5.x版本以后不再支持直接安装head插件,而是需要通过启动一个服务方式。
    Github地址:https://github.com/mobz/elasticsearch-head

    特点

    1.查看数据简单,操作简单

    2.需要安装nodejs,安装复杂费时

    安装插件方式一:

    #安装npm(只需要在一个节点安装即可,如果前端还有nginx做反向代理可以每个节点都装)
    [root@elkstack01 ~]# yum install -y npm
    #进入下载head插件代码目录
    [root@elkstack01 src]# cd /usr/local/
    #从GitHub上克隆代码到本地
    [root@elkstack01 local]# git clone git://github.com/mobz/elasticsearch-head.git
    #克隆完成后,进入elasticsearch插件目录
    [root@elkstack01 local]# cd elasticsearch-head/
    #清除缓存
    [root@elkstack01 elasticsearch-head]# npm cache clean -f
    #使用npm安装n模块(不同的项目js脚本所需的node版本可能不同,所以就需要node版本管理工具)
    [root@elkstack01 elasticsearch-head]# npm install -g n
    #安装最新版本n模块
    [root@elkstack01 elasticsearch-head]# n stable
    #生成grunt
    [root@elkstack01 elasticsearch-head]# npm install grunt -save
    #确认生成grunt文件
    [root@elkstack01 elasticsearch-head]# ll node_modules/grunt
    #执行安装grunt
    [root@elkstack01 elasticsearch-head]# npm install
    #后台启动head插件(切记,必须在插件目录下执行启动命令)
    [root@elkstack01 elasticsearch-head]# npm run start &
    #验证端口是否启动成功
    [root@elkstack01 elasticsearch-head]# netstat -lntup
    tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 11293/grunt
    #启动成功后,修改elasticsearch配置文件
    [root@elkstack01 elasticsearch-head]# vim /etc/elasticsearch/elasticsearch.yml
    #添加如下两行,开启跨域访问支持(添加在配置文件最后即可)
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    #重启elasticsearch
    [root@elkstack01 elasticsearch-head]# /etc/init.d/elasticsearch restart

    插件安装方式二

    1.windows下创建一个目录
    2.将插件解压到目录下
    3.谷歌浏览器,右上角三个点或者是哪个竖线或者箭头
    4.更多工具 -> 扩展程序
    5.打开开发者模式
    6.加载已解压的扩展程序,选中解压包的目录
    7.使用时,直接点击搜索框后面的放大镜

     方式三使用kibana进行交互

    1.安装kibana

    1).上传包
    [root@es01 ~]# rz kibana-6.6.0-x86_64.rpm
    [root@es01 ~]# ll
    -rw-r--r-- 1 root root 185123116 Jan 29 2019 kibana-6.6.0-x86_64.rpm

    2).安装
    [root@es01 ~]# rpm -ivh kibana-6.6.0-x86_64.rpm

    3)配置

    [root@es01 ~]# grep '^[a-z]' /etc/kibana/kibana.yml
    server.port: 5601
    server.host: "10.0.0.71"
    elasticsearch.hosts: ["http://172.16.1.71:9200"]

    4)启动

    [root@es01 ~]# systemctl start kibana

    #验证
    [root@es01 ~]# netstat -lntp
    tcp 0 0 10.0.0.71:5601

    5)访问测试

    http://10.0.0.71:5601

  • 相关阅读:
    计算机中的进制和编码
    操作系统简史
    电脑结构和CPU、内存、硬盘三者之间的关系
    电脑简史
    使用开源my-deploy工具实现开发环境的代码自动化部署
    使用Let’s Encrypt创建nginx免费SSL证书
    VM ESXI 服务器虚拟化资料积累
    python mysql连接函数
    python日期格式转换小记
    Python模块学习
  • 原文地址:https://www.cnblogs.com/wzj-qwerty/p/14119473.html
Copyright © 2020-2023  润新知