ELK详细安装部署

一、前言

? 日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。分析日志可以更清楚的了解服务器的状态和系统安全状况,从而可以维护服务器稳定运行。

? 但是日志通常都是存储在各自的服务器中。如果管理数十台服务器, 查阅日志需要依次登陆不同的服务器,查看过程就会很繁琐从而导致工作效率低下。虽然可以使用 rsyslog 服务将日志汇总。但是统计一些日志中的数据或者检索也是很麻烦的,一般使用grep、awk、wc、sort等Linux命令来统计和检索。如果对数量巨大的日志进行统计检索,人工的效率还是十分低下。

? 通过我们对日志进行收集、汇总到一起,完整的日志数据具有非常重要的作用:

  1. 信息查找。通过检索日志信息,查找相应的报错,可以快速的解决BUG。
  2. 数据分析。如果是截断整理格式化后的日志信息,可以进一步对日志进行数据分析和统计,可以选出头条,热点,或者爆款。
  3. 系统维护。对日志信息分析可以了解服务器的负荷和运行状态。可以针对性的对服务器进行优化。

二、ELK简介

? ELK实时日志收集分析系统可以完美的解决以上问题。ELK作为一款开源软件可以免费使用,也有强大的团队和社区对它实时更新。

? ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

Elasticsearch?:分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。

在elasticsearch中,所有节点的数据是均等的。

Logstash?:数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

Kibana?:可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。

Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。

版本说明:

Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

ELK工作演示图:

  1. Filebeat在APP Server端收集日志
  2. Logstash处理过滤Filebeat收集过来的日志
  3. Elasticsearch存储Logstash提供的处理之后的日志,用以检索、统计
  4. Kibana提供web页面,将Elasticsearch的数据可视化的展示出来

三、ELK安装部署

1 . 首先配置JDK环境

 #自行下载jdk
 rpm -ivh  jdk-8u144-linux-x64.rpm
 #或者 yum install java-1.8.0-openjdk*
 vim /etc/profile.d/java.sh
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
    export PATH=$JAVA_HOME/jre/bin:$PATH

 source /etc/profile.d/java.sh

2 . 配置ELK yum源

vim /etc/yum.repo.d/ELK.repo
[ELK]
name=ELK-Elasticstack
baseurl=https://mirrors.tuna.tsinghua.edu.cn/elasticstack/yum/elastic-6.x/
gpgcheck=0
enabled=1

#关闭selinux
setenforce 0
sed -i.bak  's@^SELINUX=\(.*\)@SELINUX=disabled@p' /etc/selinux/config

#关闭防火墙
#Centos7
systemctl disable firewalld
systemctl stop firewalld
#CentOS6
service iptables stop
service iptables disable

3 . 部署elasticsearch

1. 安装elasticsearch

yum install elasticsearsh

# 修改系统配置文件属性
#   vim  /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
elasticsearch soft nofile 65536
elasticsearch hard nofile 131072

2. 修改配置文件

#  vim /etc/elasticsearch/elasticsearch.yml
#集群名称
cluster.name: els
#节点名称
node.name: els-1
#数据存放路径
path.data: /data/els_data
#日志存放路径
path.logs: /data/log/els
#锁定jvm.options指定的内存,不交换swap内存
bootstrap.memory_lock: true
#绑定IP地址
network.host: 172.16.1.49
#端口号
http.port: 9200

#配置集群配置,填写集群节点,会自动发现节点
#  discovery.zen.ping.unicast.hosts: ["host1", "host2"]
# 集群配置 只需要修改节点名,和绑定ip地址即可

#  vim /etc/elasticsearch/jvm.options
-Xms1g  #指定占用内存大小,两个数字要一致 都是1g
-Xmx1g

3. 创建数据目录

#创建elasticsearch数据库目录,并且修改属主为elasticsearch·
mkdir /data/els_data
mkdir /data/log/els
chown -R elasticsearch.elasticsearch /data/els_data
chown -R elasticsearch.elasticsearch /data/log/els

4. 启动elasticsearch

systemctl start elasticsearch
# 启动后自动关闭
#报错
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

#将配置文件中的 bootstrap.memory_lock: true 注释掉,不使用;即可启动成功

报错

启动成功后

访问172.16.1.49:9200

Elasticsearch API

  • 集群状态:http:// 172.16.1.100:9200/_cluster/health?pretty
  • 节点状态:http:// 172.16.1.100:9200/_nodes/process?pretty
  • 分片状态:http:// 172.16.1.100:9200/_cat/shards
  • 索引分片存储信息:http:// 172.16.1.100:9200/index/_shard_stores?pretty
  • 索引状态:http:// 172.16.1.100:9200/index/_stats?pretty
  • 索引元数据:http:// 172.16.1.100:9200/index?pretty

4. 部署Kibana

Kibana是node.js 编写的,不需要java环境。直接安装即可

1. 安装Kibana

yum install kibana
# 版本号需要和Elasticsearch 相同

2. 配置Kibana

vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "172.16.1.50"
elasticsearch.url: "http://172.16.1.49:9200"
kibana.index: ".kibana"
logging.dest: /data/log/kibana/kibana.log # 配置kibana日志输出到哪里

# 创建日志目录文件
mkdir -p /data/log/kibana/
touch /data/log/kibana/kibana.log
chmod o+rw  /data/log/kibana/kibana.log

访问172.16.1.50:5601

出现 Kibana server is not ready yet

说明kibanaElasticsearch版本号不一致

# 查看版本号
rpm -qa elasticsearch kibana

如果版本号一模一样,那就多刷新几次页面吧。。。。

启动成功后,访问页面可以看到:

5. 部署Logstash

配置与Elasticsearch相同的Java环境,版本为8以上的Java环境。

1. 安装Logstash

yum install logstash-"Version"

2. 修改配置文件

http.host: "172.16.1.229"
http.port: 9600-9700

3. 配置收集nginx日志配置文件

  1. 修改nginx的日志格式
log_format main '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"request":"$request",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"referer":"$http_referer",'
'"agent":"$http_user_agent",'
'"status":"$status"}';

access_log /var/log/nginx/access_test.log  main;
  1. 配置Lostash收集日志配置文件
input {
        file {
                type =>"nginx-log"
                path => ["/var/log/nginx/access.log"]
                start_position => "beginning"
                sincedb_path => "/dev/null"
                }
}

output {
        elasticsearch {
                hosts => ["172.16.1.49:9200"]
                index => "nginx-log-%{+YYYY.MM}"
        }
}

4. 测试配置文件可用性

cd /usr/share/logstash/bin
./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf  --config.test_and_exit

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
Sending Logstash logs to /var/log/logstash which is now configured via log4j2.properties
[2019-02-20T17:34:29,949][WARN ][logstash.config.source.multilocal] Ignoring the 'pipelines.yml' file because modules or command line options are specified
Configuration OK # 配置文件OK 可以使用
[2019-02-20T17:34:39,048][INFO ][logstash.runner          ] Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

WARN报错不影响运行

直接使用命令

./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf

就可以直接运行logstash

6. 部署filebeat

? Logstash的数据都是从Beats中获取,Logstash已经不需要自己去数据源中获取数据了。

? 以前我们使用的日志采集工具是logstash,但是logstash占用的资源比较大,没有beats轻量,所以官方也推荐使用beats来作为日志采集工具。而且beats可扩展,支持自定义构建。

yum install filebeat-6.6.0

1. 修改filebeat配置文件

vim /etc/filebeat/filebeat.yml

- type: log
    paths:
        - /Log_File #/var/log/messages

#output.elasticsearch: #注释掉输出到elasticsearch的配置
    # hosts: ["localhost:9200"]

output.console: #添加输出到当前终端的配置
    enable: true

2. 测试filebeat

/usr/share/filebeat/bin/filebeat -c  /etc/filebeat/filebeat.yml #运行filebeat,可以看见日志输出在当前终端

3. 修改配置将日志输出到elasticsearch中

- type: log
    paths:
        - /Log_File #/var/log/messages

output.elasticsearch: #注释掉输出到elasticsearch的配置
    hosts: ["172.16.1.49:9200"]

启动 filebeat systemctl start filebeat

运行curl ‘172.16.1.49:9200/_cat/indices?v‘,查看日志索引

4. 在Kibana中配置索引

即可查看到日志

5. 将日志输出到logstash中

#------------------- Logstash output ----------------------
output.logstash:  #将输出到elasticsearch的配置注释
  # The Logstash hosts
  hosts: ["172.16.1.229:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

6. 配置logstash

vim /etc/logstash/conf.d/test.conf
input {
        beats {
                port =>5044
                }
}
#filter{}  #过滤器,自定义过滤日志中的一些数据
output {
        stdout {
                codec => rubydebug
        }
        elasticsearch {
                hosts => "172.16.1.49:9200"
                index => "test-log-%{+YYYY.MM.dd}"
        }
}

Elasticsearch上已经有了日志索引,在kibana上也可以查看到

yellow 表示没有副本节点可用,因为测试时没有搭建两台Elasticsearch

可以用filebeat监控个自定义文件,手动插入数据。

原文地址:https://www.cnblogs.com/arnoLixi/p/10402684.html

时间: 2024-10-04 16:08:02

ELK详细安装部署的相关文章

ceph详细安装部署教程(多监控节点)

一.前期准备安装ceph-deploy工具 所有的服务器都是用root用户登录的 1.安装环境 系统centos-6.5 设备:1台admin-node (ceph-ploy)  1台 monistor 2台 osd 2.关闭所有节点的防火墙及关闭selinux,重启机器. service iptables stop sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config chkconfig iptables off 3.编辑adm

Nginx详细安装部署教程

一.Nginx简介 Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤 二.Nginx安装 1.下载Nginx及相关组件 Linux系统是Centos 6.5 64位,我直接切换到root用户下安装 进入用户目录下载程序 下载相关组件 [[email protected] src]# wget http://nginx.org/download/nginx-1.10.2.tar.gz 省略安装内容.

Nginx Windows详细安装部署教程

一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点(俄文:Рамблер)开发的. 它也是一种轻量级的Web服务器,可以作为独立的服务器部署网站(类似Tomcat).它高性能和低消耗内存的结构受到很多大公司青睐,如淘宝网站架设. 先下载直接去官网 http://nginx.org/en/download.html 1.下载 2.解压

elk单机安装部署

解压 tar xf elasticsearch-7.1.0-linux-x86_64.tar.gz -C /data/ 配置 [[email protected] ~]# vim /etc/security/limits.conf * soft nofile 65536 * hard nofile 65536 [[email protected] ~]# vim /etc/sysctl.conf vm.max_map_count=655360 [[email protected] ~]# vim

ELK简单安装与配置

Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,它能帮助你搜索.分析和浏览数据:它是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架. 一.环境介绍 1.架构介绍 ELK是C/S架构的,所以这里列出server和client server : centos 6.6 x86_64 IP: 10.0.90.24 client : centos 6.6 x86_64 IP: 10.0.90.2

ELK部署logstash安装部署及应用(二)

Logstash 安装部署注意事项: Logstash基本概念: logstash收集日志基本流程: input-->codec-->filter-->codec-->output input:从哪里收集日志. filter:发出去前进行过滤 output:输出至Elasticsearch或Redis消息队列 codec:输出至前台,方便边实践边测试 数据量不大日志按照月来进行收集 如果通过logstash来采集日志,那么每个客户端都需要安装logstash 安装需要前置系统环境

Storm集群安装部署步骤【详细版】

作者: 大圆那些事 | 文章可以转载,请以超链接形式标明文章原始出处和作者信息 网址: http://www.cnblogs.com/panfeng412/archive/2012/11/30/how-to-install-and-deploy-storm-cluster.html 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章节以“注意事项”的形式给出. 1. Storm集群组件 Storm集群中包含两

GNS3实验环境的安装部署(详细教材0基础适用、结尾附安装包)

GNS3实验环境的安装部署 软件介绍: GNS3是一款具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS等)的网络虚拟软件.Cisco网络设备管理员或是想要通过CCNA,CCNP,CCIE等Cisco认证考试的相关人士可以通过它来完成相关的实验模拟操作.同时它也可以用于虚拟体验Cisco网际操作系统IOS或者是检验将要在真实的路由器上部署实施的相关配置. Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并

Sqoop-1.4.6安装部署及详细使用介绍

之所以选择Sqoop1是因为Sqoop2目前问题太多.无法正常使用,综合比较后选择Sqoop1. Sqoop1安装配置比较简单 一.安装部署 (1).下载地址:http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.6-cdh5.5.2.tar.gz 解压到/home/duanxz/sqoop tar -zxvf sqoop-1.4.6-cdh5.5.2.tar.gz (2).拷贝mysql的jdbc驱动包mysql-connector-java-5.1