• 【ELK】日志系统&部署


    一、ELK日志分析系统

    1、ELK的组成

    • ElasticSearch
    • LogStash
    • Kibana

    ELK基于这三个开源日志的收集、存储、检索和可视化的解决方案;可帮助用户快速定位和分析应用程序的故障,监控应用程序性能和安全,以及提供丰富的数据分析和展示功能。

    2、完整日志系统特征

    ELK是一个完整的处理分析日志的系统

    收集:能够采集多种来源的日志数据
    传输:能够稳定的把日志数据解析过滤并传输到存储系统
    存储:存储日志数据
    分析:支持 UI 分析
    警告:能够提供错误报告,监控机制

    3、ELK的优点

    日志主要包括系统日志、应用程序日志和安全日志;运维人员经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

    单台机器的日志我们使用grep、awk等工具能实现简单分析,但当日志被分散的储存不同的设备上这样就很繁琐、效率低下,所以会将所有服务器上的日志集中化管理;但日志的统计和检索又成为一件比较麻烦的事情,所以构建一套集中式日志系统,可以提高定位问题的效率。

    4、ELK工作原理

    • 在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash
    • Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中
    • Elasticsearch 对格式化后的数据进行索引和存储
    • Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示

    input 数据采集、output 数据输出、filter 数据过滤

    logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理

    二、Elasticsearch概述

    提供一个分布式多用户功能的全文搜索引擎,对各类数据实时的索引和查询、高可用性和水平扩展性;存放各类日志,搜索各类大型文档。

    Elasticserach特性

    • 接近实时

    搜索速度非常的快,轻微的延迟。

    • 集群(cluster)

    将一个或多个节点组织在一起,组成一个cluster集群。
    集群有一个唯一标志的名字,默认Elasticasearch,每个节点基于集群名字加入到集群中,且在集群中使用自己的名字来身份标识。

    • 节点(node)

    每一个节点就是一台单台服务器。

    • 索引(index)

    一个索引由一个名字来标识(必须全部是小写字母),并且当我们要多对应这个索引中的文档进行索引、更新、删除的时候,都要使用到这个名字。

    • 类型(type)

    在一个索引中,你可以定义一个或多种类型。
    比如:当我们存储一个购物平台的数据时,可以定义一个用户数据类型,产品数据类型等。

    • 文档(document)

    一个文档是一个可被索引的基础信息单元

    三、Logstash概述

    数据处理工具,可以有多个来源采集数据,对数据进行过滤和转换增强,将数据发给Elasticsearch或其它目的地。

    Logstash组件

    • Shipper

    日志的收集者,并对其格式化

    • Indexer

    日志的存储者

    • Broker

    日志hub,hub——做链接作用

    • Search and Storage

    搜索和存储

    • Web Interface

    基于Web的展示界面

    四、Kibana概述

    针对ElasticSearch的数据可视化平台,可通过各种图表、仪表盘和地图来展示和搜索ElasticSearch的其中数据。

    它可以整合数据分析、接口灵活、可视化多数据源

    五、ELK系统部署

    1、部署环境

    主机名ip地址主要软件系统
    node1192.168.154.70ElasticSearh、KibanaCentos7.5
    node2192.168.154.60ElasticSearhCentos7.5
    Apache192.168.154.50Logstash、ApacheCentos7.5

    2、部署ElasticSearh(node1、2)

    关闭防火墙、修改主机名(所有主机)

    1. systemctl stop firewalld
    2. setenforce 0
    3. hostnamectl set-hostname node1
    4. hostnamectl set-hostname node2
    5. hostnamectl set-hostname logstash

    安装JDK,加载系统服务

    默认的是open jdk,不建议使用(ES是java开发的)

    1. java -version #如果没有安装,yum -y install java
    2. openjdk version "1.8.0_131"
    3. OpenJDK Runtime Environment (build 1.8.0_131-b12)
    4. OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

    修改elasticsearch主配置文件

    1. --17--取消注释,指定集群名字
    2. cluster.name: my-elk-cluster
    3. --23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
    4. node.name: node1
    5. --33--取消注释,指定数据存放路径
    6. path.data: /data/elk_data
    7. --37--取消注释,指定日志存放路径
    8. path.logs: /var/log/elasticsearch/
    9. --43--取消注释,改为在启动的时候不锁定内存
    10. bootstrap.memory_lock: false
    11. --55--取消注释,设置监听地址,0.0.0.0代表所有地址
    12. network.host: 0.0.0.0
    13. --59--取消注释,ES 服务的默认监听端口为9200
    14. http.port: 9200
    15. --68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
    16. discovery.zen.ping.unicast.hosts: ["node1", "node2"]

    创建数据存放路径并授权、开启ES服务

    查看节点信息

    使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集。

    2.1、安装 Elasticsearch-head 插件

    编译安装 node

    安装 Elasticsarch-head 需要提前安装好依赖软件 node 和 phantomjs

    1. yum -y install gcc gcc-c++ make
    2. cd /opt
    3. tar xzvf node-v8.2.1.tar.gz
    4. cd node-v8.2.1/
    5. ./configure
    6. make -j4 &&make install
    7. #安装会稍微久一点

    安装 phantomjs(前端的框架)

    1. #上传安装包上传到/opt目录下
    2. cd /opt
    3. tar -jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
    4. cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
    5. cp phantomjs /usr/local/bin

    安装 Elasticsearch-head 数据可视化工具

    1. #将包上传到/opt目录下
    2. tar -zxvf elasticsearch-head.tar.gz -C /usr/local/src/
    3. cd /usr/local/src/elasticsearch-head
    4. npm install

    修改 Elasticsearch 主配置文件

    1. --末尾添加以下内容--
    2. http.cors.enabled: true #开启跨域访问支持,默认为 false
    3. http.cors.allow-origin: "*" #指定跨域访问允许的域名地址为所有
    4. systemctl restart elasticsearch

    启动 elasticsearch-head 服务

    通过 Elasticsearch-head 查看 Elasticsearch 信息

    插入索引

    #通过命令插入一个测试索引,索引为 index-demo,类型为 test

    1. curl -X PUT 'localhost:9200/index-demo1/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
    2. #插入索引

    3、部署Logstash

    安装Apahce服务、Java环境

    1. yum -y install httpd
    2. systemctl start httpd
    3. yum -y install java
    4. java -version

    安装Logstash

    1. cd /opt
    2. rpm -ivh logstash-5.5.1.rpm
    3. systemctl start logstash.service
    4. systemctl enable logstash.service
    5. ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

    测试 Logstash

    修改 Logstash 配置文件

    让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中

    4、Kibana

    安装 Kiabana

    1. #上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录
    2. cd /opt
    3. rpm -ivh kibana-5.5.1-x86_64.rpm

    设置 Kibana 的主配置文件、并启动

    1. vim /etc/kibana/kibana.yml
    2. --2--取消注释,Kiabana 服务的默认监听端口为5601
    3. server.port: 5601
    4. --7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
    5. server.host: "0.0.0.0"
    6. --21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
    7. elasticsearch.url: "http://192.168.10.13:9200"
    8. --30--取消注释,设置在 elasticsearch 中添加.kibana索引
    9. kibana.index: ".kibana"

    验证 Kibana

    将 Apache 服务器的日志 添加到 Elasticsearch 并通过 Kibana 显示

    在Logstash服务器操作

    vim /etc/logstash/conf.d/apache_log.conf

  • 相关阅读:
    Linux下自动备份MySQL数据库并上传到远程FTP服务器
    离线环境harbor 搭建及使用
    后端知识语言算法复习笔记
    分布式ID生成算法——雪花算法
    Centos 8 stream x64安装KVM
    Vue.2x秘籍(下)
    微机原理与汇编语言-练习题
    怎么给图片添加贴纸?介绍几个简单的方法
    MySQL事务、索引、数据恢复和备份
    Java笔记六(面向对象:类与对象)
  • 原文地址:https://blog.csdn.net/khvbjhb/article/details/132963570