首页 > 其他分享 >ELK日志分析系统

ELK日志分析系统

时间:2024-07-19 15:07:56浏览次数:8  
标签:opt ELK 系统 kibana elasticsearch node1 日志 root node6

一、ELK介绍

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

1. Elasticsearch

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索。搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。Elasticsearch 使用 Java 语言开发,是建立在全文搜索引擎 Apache Lucene 基础之上的搜索引擎。

Elasticsearch 的特点:

  • 实时搜索、实时分析

  • 分布式架构、实时文件存储

  • 文档导向,所有对象都是文档

  • 高可用,易扩展,支持集群,分片与复制

  • 接口友好,支持 json

2. Logstash

Logstash 是一个具有实时传输能力的数据收集引擎,其可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json 格式的日志解析,最终把经过处理的日志发送给 elasticsearch。

3. Kiabana

Kibana 为 elasticsearch 提供一个查看数据的web界面,其主要是通过elasticsearch的API接口进行数据查找,并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。

4. ELK 工作原理

1.在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

2.Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

3.Elasticsearch 对格式化后的数据进行索引和存储。

4.Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

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

二、安装部署ELK

1.服务器角色以及配置

点击查看代码
node1节点(8C/8G): 7-6/192.168.204.60		 Elasticsearch
node2节点(8C/8G): 7-7/192.168.204.70		 Elasticsearch
Apache节点(4C/4G):7-1/192.168.91.103		 Logstash  Kibana  Apache

2.前提准备

关闭防火墙

点击查看代码
systemctl disable --now firewalld
setenforce 0

[root@node1 ~]#  vim /etc/selinux/config
SELINUX=disabled

java环境

点击查看代码
[root@node1 ~]#  java -version  //如果没有安装,yum -y install java
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

****3.安装部署Elasticsearch软件(node1和node2)

安装 Elasticsearch 软件

点击查看代码
[root@node6 ~]#  cd /opt   //切换到opt目录,上传安装包
[root@node6 opt]#  ls
elasticsearch-6.7.2.rpm  rh
[root@node6 opt]#  rpm -ivh elasticsearch-6.7.2.rpm  //安装

[root@node6 opt]#  cd /etc/elasticsearch/
[root@node6 elasticsearch]#  mkdir bak
[root@node6 elasticsearch]#  ls
bak  elasticsearch.keystore  elasticsearch.yml  jvm.options  log4j2.properties  role_mapping.yml  roles.yml  users  users_roles
[root@node6 elasticsearch]#  cp -a *.yml bak/  //备份

修改配置文件

点击查看代码
[root@node6 elasticsearch]#  vim elasticsearch.yml
 17 cluster.name: my-elk-cluster  //修改集群名字
 23 node.name: node1    //设置节点名称 主从之间不能一致
 24 node.master: true   //作为主节点
 25 node.data: true     //作为数据节点
 45 bootstrap.memory_lock: true   //内存锁开启,禁止使用swap
 57 network.host: 0.0.0.0   //监听地址
 61 http.port: 9200            //默认使用端口
 62 transport.tcp.port: 9300   //内部传输端口
 71 discovery.zen.ping.unicast.hosts: ["192.168.204.60:9300", "192.168.204.70:9300"] //自动集群发现,加入主机名,使用单播 类似心跳线

点击查看代码
[root@node6 elasticsearch]#  scp elasticsearch.yml 192.168.204.70:/etc/elasticsearch/
//把配置文件拷贝给7-7
[root@node7 ~]# vim /etc/elasticsearch/elasticsearch.yml
node.name: node2  //只需修改这一处

修改系统配置

性能调优参数

点击查看代码
[root@node6 elasticsearch]#  vim /etc/security/limits.conf
......
*  soft    nofile          65536
*  hard    nofile          65536
*  soft    nproc           32000
*  hard    nproc           32000
*  soft    memlock         unlimited
*  hard    memlock         unlimited

修改systemd服务管理器

点击查看代码
[root@node6 elasticsearch]#  vim /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

修改内核参数

点击查看代码
[root@node6 elasticsearch]#  vim /etc/sysctl.conf
vm.max_map_count=262144   
//一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)

[root@node6 elasticsearch]#  sysctl -p

重启服务器 启动 elasticsearch

点击查看代码
[root@node6 elasticsearch]#  reboot
[root@node6 ~]#  systemctl start elasticsearch.service
[root@node6 ~]#  systemctl status elasticsearch.service
[root@node6 ~]#  ss -natp | grep 9200
LISTEN     0      128         :::9200                    :::*                   users:(("java",pid=2602,fd=283))

查看节点信息

点击查看代码
浏览器访问  
http://192.168.204.60:9200  
http://192.168.204.70:9200 
//查看节点 Node1、Node2 的信息

浏览器访问 
http://192.168.204.60:9200/_cluster/health?pretty  
http://192.168.204.70:9200/_cluster/health?pretty
//查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

浏览器访问 http://192.168.204.60:9200/_cluster/state?pretty  
//检查群集状态信息

安装插件

方法1:谷歌浏览器插件

谷歌浏览器应用商城搜索 Elasticsearch-head 插件进行安装

方法2:编译安装 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。

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

  • node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。

  • phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。

  1. 编译安装node组件
点击查看代码
//上传软件包 node-v8.2.1.tar.gz 到/opt
[root@node6 elasticsearch]#  yum install gcc gcc-c++ make -y
[root@node6 elasticsearch]#  cd /opt
[root@node6 opt]#  tar xf node-v8.2.1.tar.gz
[root@node6 opt]#  cd node-v8.2.1/
[root@node6 node-v8.2.1]#  ./configure
[root@node6 node-v8.2.1]#  make -j4 && make install

  1. 安装 phantomjs
点击查看代码
//上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt
[root@node6 node-v8.2.1]#  cd /opt
[root@node6 opt]#  tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node6 opt]#  cd phantomjs-2.1.1-linux-x86_64/
[root@node6 phantomjs-2.1.1-linux-x86_64]#  ls
bin  ChangeLog  examples  LICENSE.BSD  README.md  third-party.txt
[root@node6 phantomjs-2.1.1-linux-x86_64]#  cd bin/
[root@node6 bin]#  ls
phantomjs
[root@node6 bin]#  ln -s /opt/phantomjs-2.1.1-linux-x86_64/bin/phantomjs  /usr/bin/

  1. 安装 Elasticsearch-head 数据可视化工具
点击查看代码
//上传软件包 elasticsearch-head-master.zip 到/opt
[root@node6 bin]#  cd /opt
[root@node6 opt]#  unzip elasticsearch-head-master.zip
[root@node6 opt]#  cd elasticsearch-head-master/
[root@node6 elasticsearch-head-master]#  npm install	 //安装依赖包

  1. 修改 Elasticsearch 主配置文件
点击查看代码
[root@node6 elasticsearch-head-master]#  vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true      //开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"  //指定跨域访问允许的域名地址为所有
[root@node6 elasticsearch-head-master]#  systemctl restart elasticsearch.service  //重启服务

  1. 启动 elasticsearch-head 服务

必须在解压后的 elasticsearch-head-master 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败

点击查看代码
[root@node6 elasticsearch-head-master]#  npm run start &  //注意要在elasticsearch-head-master目录下执行

4.在应用服务器部署Logstash

在Apache节点上操作

安装logstash

点击查看代码
[root@node1 ~]#  cd /opt  //切换到opt目录下,上传安装包
[root@node1 opt]#  ls
logstash-6.7.2.rpm  rh

[root@node1 opt]#  rpm -ivh logstash-6.7.2.rpm  //安装
[root@node1 opt]#  systemctl enable --now logstash.service  //开启服务
[root@node1 opt]#  ln -s  /usr/share/logstash/bin/logstash /usr/bin/  //做软链接

使用logstash 收集日志

Logstash 命令常用选项:

  • -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。

  • -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。

  • -t:测试配置文件是否正确,然后退出。

点击查看代码
[root@node1 opt]#  logstash -e 'input { stdin{} } output { stdout{} }'  
//在命令行中收集日志数据,输入采用标准输入,输出采用标准输出(类似管道),等待时间较长
//本地测试,不会在Elasticsearch中留下记录

使用 Logstash 将信息写入 Elasticsearch 中

点击查看代码
[root@node1 opt]#  logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.204.60:9200"] } }'
//结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.204.60:9100/ 查看索引信息和数据浏览

使用配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)

点击查看代码
[root@node1 opt]#  cd /etc/logstash/conf.d/
[root@node1 conf.d]#  vim system-log.conf
input {
    file {
      path => "/var/log/messages"    //path表示要收集的日志的文件位置
      type => "system"               //type是输入ES时给结果增加一个叫type的属性字段
      start_position => "beginning"  //start_position可以设置为beginning或者end,beginning表示从头开始读取文件
    }
}


output {
  elasticsearch {                     //输出到 elasticsearch
  hosts => [ "192.168.204.60:9200" ]  //指定 elasticsearch 服务器的地址和端口
  index => "system-%{+YYYY.MM.dd}"    //指定输出到 elasticsearch 的索引格式
  }
}

[root@node1 conf.d]#  chmod +r /var/log/messages      //添加权限
[root@node1 conf.d]#  logstash   -f  system-log.conf  //启动logstash

5.安装kibana

(无所谓安装在哪台服务器)此处安装在apache节点上

安装

点击查看代码
[root@node1 conf.d]#  cd /opt    //切换到opt目录下,上传安装包
[root@node1 opt]#  ls
kibana-6.7.2-x86_64.rpm  logstash-6.7.2.rpm  rh

[root@node1 opt]#  rpm -ivh kibana-6.7.2-x86_64.rpm  //安装

修改配置

点击查看代码
[root@node1 opt]#  cd  /etc/kibana/
[root@node1 kibana]#  ls
kibana.yml
[root@node1 kibana]#  cp -a kibana.yml  kibana.yml.bak

[root@node1 kibana]#  vim kibana.yml
  2 server.port: 5601        //打开端口
  7 server.host: "0.0.0.0"   //监听端口
 28 elasticsearch.hosts: ["http://192.168.204.60:9200"]  //el服务器地址
 37 kibana.index: ".kibana"  //打开索引
 96 logging.dest: /var/log/k.log  //指定日志文件, 需要手动建立文件
113 i18n.locale: "zh-CN"     //中文设置

[root@node1 kibana]#  touch /var/log/k.log   //创建文件
[root@node1 kibana]#  chown kibana:kibana /var/log/k.log

启动kibana

点击查看代码
[root@node1 kibana]#  systemctl start kibana.service
[root@node1 kibana]#  systemctl status kibana.service
[root@node1 kibana]#  ss -natp |grep 5601
LISTEN     0      128          *:5601                     *:*                   users:(("node",pid=10604,fd=19))

访问测试

点击查看代码
浏览器访问 192.168.204.10:5601

建立索引

标签:opt,ELK,系统,kibana,elasticsearch,node1,日志,root,node6
From: https://www.cnblogs.com/leikj/p/18311510

相关文章