EKL集群

理论:

ELK特点:

处理方式灵活;检索性搞笑;配置简单;集群现行扩展;前端操作多样。

处理方式灵活。Elasticsearch 是实时全文索引,不需要像 storm 那样预先编程才能使用;
    配置简易上手。Elasticsearch 全部采用 JSON 接口,Logstash 是 Ruby DSL 设计,都是目前业界最通用的配置语法设计;
    检索性能高效。虽然每次查询都是实时计算,但是优秀的设计和实现基本可以达到全天数据查询的秒级响应;
    集群线性扩展。不管是 Elasticsearch 集群还是 Logstash 集群都是可以线性扩展的;
    前端操作炫丽。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
ELK Stack 加入 Beats 中的 filebeat 之后更加优秀, filebeat 是一个轻量级的日志收集处理工具Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

ELK Stack的组成

通常情况下的ELK是由ElasticsearchLogstashKibana组成

  • L:信息的收集,主要是对日志进行搜集、分析、过滤,支持大量数据的获取,一般为c/s架构,,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
  • E(Elasticsearch)作为数据的保存者,保存来自L(Logstash)收集的系统日志数据,并建立索引,以及提供之后对数据的检索。
  • K(Kibana)作为展示者,主要是将ES上的数据通过页面可视化的形式展现出来。包括可以通过语句查询、安装插件对指标进行可视化等。

Elasticsearch

是基于LUCENE的搜索服务,提供搜索、分析、存储数据三大功能,是一个属于文本数据库,具有强大的搜索功能,相比与mysql搜索速度更加快捷。

Elasticsearch的特点:

实时分析
分布式实时文档存储,并将每一个字段都编入索引
文档导向,所有的对象全是文档
高可用性,易扩展,支持集群( cluster )、分片和复制( Shards Replicas
接口友好,支持JSON

ES数据架构(与关系型数据库mysql对比

Mysql

Elasticsearch

Database

Index

Table

Type

Row

Document

Column

Field

Schema

Mapping

Index

Everything is indexed

SQL

Query DSL

SELECT * FROM table

GET http://......

UPDATE table SET

PUT http://.......

  • 关系型数据库中的数据库(DataBase),等价于ES中的索引(Index)
  • 一个数据库下面有N张表(Table),等价于1个索引Index下面有N多类型(Type),
  • 一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。
  • 在一个关系型数据库里面,schema定义了表、每个表的字段,还有表和字段之间的关系。 与之对应的,在ES中:Mapping定义索引下的Type的字段处理规则,即索引如何建立、索引类型、是否保存原始索引JSON文档、是否压缩原始JSON文档、是否需要分词处理、如何进行分词处理等。
  • 在数据库中的增insert、删delete、改update、查search操作等价于ES中的增PUT/POST、删Delete、改_update、查GET.

kibana:

属于前端日志只能是框架,可以详细的将日志转化为各种图标,为用户提供强大的数据可视化。

RedisKafkaRabbitmq的对比

Redis是一个高性能的key-value数据库,多用于实时性较高的消息推送,并不保证可靠。redis的特征就是快,由于其数据是存储在内存中的,处理速度相对另外两者快了不少。通过使用redis可以实现一个简单具有实时通信功能的聊天室。

Kafka是一种分布式的,基于发布/订阅的消息系统。它遵从一般的MQ结构,producer,broker,consumer,以consumer为中心,消息的消费信息保存的客户端consumer上,consumer根据消费的点,从broker上批量pull数据;无消息确认机制。Kafka开发语言为Scala,支持跨平台。Kafka具有分布式高可扩展。性能。容错。高吞吐量。

RabbitMQ是开源,由以高性能、可伸缩性出名的Erlang写成。RabbitMQ的broker由Exchange,Binding,queue组成,其中exchange和binding组成了消息的路由键;客户端Producer通过连接channel和server进行通信,Consumer从queue获取消息进行消费(长连接,queue有消息会推送到consumer端,consumer循环从输入流读取数据)。rabbitMQ以broker为中心;有消息的确认机制。RabbitMQ Server适用的OS有:Windows、Linux/Unix和Mac OS X。

AMQP协议主要有3个组件:

    交换器(Exchange):它是发送消息的实体

    队列(Queue):它是接收消息的实体

    绑定器(Bind):将交换器和队列连接起来,并且封装消息的路由信息

   rabbitMQ在吞吐量方面稍逊于kafka,他们的出发点不一样,rabbitMQ支持对消息的可靠的传递,支持事务,不支持批量的操作;基于存储的可靠性的要求存储可以采用内存或者硬盘。

Logstash:

主要是用来日志的搜集、分析、过滤日志的工具。用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如搜索、存储等。

Kafka

数据缓冲队列。作为消息队列解耦合处理过程,同时提高了可扩展性。具有峰值处理能力,使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

- 1.发布和订阅记录流,类似于消息队列或企业消息传递系统。
- 2.以容错持久的方式存储记录流。
- 3.处理记录发生的流。

 Filebeat: 

​    隶属于Beats,轻量级数据收集引擎。基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择,目前Beats包含四种工具:

- 1.Packetbeat(搜集网络流量数据)
- 2.Metricbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据。通过从操作系统和服务收集指标,帮助您监控服务器及其托管的服务。)
- 3.Filebeat(搜集文件数据)
- 4.Winlogbeat(搜集 Windows 事件日志数据)

操作:

Elasticsearch集群部署

服务器最低要求

安装软件主机名IP地址系统版本配置
ElasticsearchEs110.35.186.120centos7.5.18042核4G
ElasticsearchEs110.35.186.154centos7.5.18042核3G
ElasticsearchEs210.35.186.155centos7.5.18042核3G

此次安装版本为:elasticsearch-7.13.2.tar.gz,版本属于5以上,不需要另外安装java。

创建es普通用户并配置密码

useradd es

echo "123" |passwd --stdin "es"

安装配置ES

 tar zxvf /usr/local/package/elasticsearch-7.13.2-linux-x86_64.tar.gz -C /usr/local/
mv /usr/local/elasticsearch-7.13.2 /usr/local/es


vim /usr/local/es/config/elasticsearch.yml
cluster.name: bjbpe01-elk
cluster.initial_master_nodes: ["192.168.1.101","192.168.1.102","192.168.1.103"] # 单节点模式这里的地址只填写本机地址
node.name: elk01
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
# 单节点模式下,将discovery开头的行注释
discovery.seed_hosts: ["192.168.1.102","192.168.1.103"]
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"

 各个配置的含义:

cluster.name    集群名称,各节点配成相同的集群名称。
cluster.initial_master_nodes 集群ip,默认为空,如果为空则加入现有集群,第一次需配置
node.name       节点名称,各节点配置不同。
node.master     指示某个节点是否符合成为主节点的条件。
node.data       指示节点是否为数据节点。数据节点包含并管理索引的一部分。
path.data       数据存储目录。
path.logs       日志存储目录。
bootstrap.memory_lock       内存锁定,是否禁用交换,测试环境建议改为false。
bootstrap.system_call_filter    系统调用过滤器。
network.host    绑定节点IP。
http.port       rest api端口。
discovery.seed_hosts    提供其他 Elasticsearch 服务节点的单点广播发现功能,这里填写除了本机的其他ip
discovery.zen.minimum_master_nodes  集群中可工作的具有Master节点资格的最小数量,官方的推荐值是(N/2)+1,其中N是具有master资格的节点的数量。
discovery.zen.ping_timeout      节点在发现过程中的等待时间。
discovery.zen.fd.ping_retries        节点发现重试次数。
http.cors.enabled               是否允许跨源 REST 请求,用于允许head插件访问ES。
http.cors.allow-origin              允许的源地址。

设置JVM堆大小 #7.0默认为4G

sed -i 's/## -Xms4g/-Xms4g/' /usr/local/es/config/jvm.options 
sed -i 's/## -Xmx4g/-Xmx4g/' /usr/local/es/config/jvm.options

创建ES数据及日志存储目录

mkdir -p /data/elasticsearch/{}data,logs}     

修改安装目录及存储目录权限

chown -R es.es /data/elasticsearch && chown -R es.es /usr/local/es

增加最大文件打开数/进程数/内存映射数

echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* soft nproc 65536" >> /etc/security/limits.conf
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

刷新文件

sysctl -p

启动ES:

su - es -c "cd /usr/local/es && nohup bin/elasticsearch &"

安装配置head监控插件

安装node

wget https://npm.taobao.org/mirrors/node/latest-v10.x/node-v10.0.0-linux-x64.tar.gz
tar -zxf node-v10.0.0-linux-x64.tar.gz -C /usr/local

echo "
NODE_HOME=/usr/local/node-v10.0.0-linux-x64
PATH=\$NODE_HOME/bin:\$PATH
export NODE_HOME PATH
" >>/etc/profile
source /etc/profile

检查node版本号

 node --version

下载head插件

wget https://github.com/mobz/elasticsearch-head/archive/master.zip
unzip -d /usr/local elasticsearch-head-master.zip

安装grunt

cd /usr/local/elasticsearch-head-master
npm install -g grunt-cli
grunt -version

修改head源码

sed -i "s/keepalive: true/keepalive: true,/" /usr/local/elasticsearch-head-master/Gruntfile.js
sed -ir "s/keepalive: true,/hostname:"*"/"/usr/local/elasticsearch-head-master/Gruntfile.js
sed -i "s#http://localhost:9200#http://10.35.186.120:9200#" /usr/local/elasticsearch-head-master/_site/app.js 

下载head必要的文件

wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2

yum -y install bzip2
mkdir /tmp/phantomjs
mv phantomjs-2.1.1-linux-x86_64.tar.bz2 /tmp/phantomjs/
chmod 777 /tmp/phantomjs -R

运行head

cd /usr/local/elasticsearch-head-master/

npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
npm install 
nohup /usr/local/elasticsearch-head-master/grunt server &
ss -tnlp

运行 pm install 出现错误时候,用npm install phantomjs-prebuilt@2.1.16 --ignore-scripts执行 。

Kibana部署

安装

tar zxf kibana-7.13.2-linux-x86_64.tar.gz -C /usr/local/

 配置

echo '
server.port: 5601
server.host: "10.3.145.14" #修改为安装机器的ip
elasticsearch.hosts: ["http://10.3.145.14:9200"] #需要配置的为安装机器的ip
kibana.index: ".kibana"
i18n.locale: "zh-CN"
'>>/usr/local/kibana-7.13.2-linux-x86_64/config/kibana.yml

server.port kibana服务端口,默认5601
server.host kibana主机IP地址,默认localhost
elasticsearch.url   用来做查询的ES节点的URL,默认http://localhost:9200
kibana.index        kibana在Elasticsearch中使用索引来存储保存的searches, visualizations和dashboards,默认.kibana

启动

/usr/local/kibana-7.13.2-linux-x86_64/nohup/bin/kibana &

Logstash部署

安装

tar zxf /usr/local/package/logstash-7.13.2.tar.gz -C /usr/local/
mv /usr/local/logstash-7.13.2 /usr/local/logstash

创建测试文档

mkdir -p /usr/local/logstash/conf

测试文件内容:

vim /usr/local/logstash/conf/logshash.conf
input {
	tcp {
		port => 8888
	}
}
filter {
	grok {
		match => {"message" => "%{DATA:key} %{NUMBER:value:int}"} 	
	}
}
output {
	stdout {
		codec => rubydebug
	}
	elasticsearch {
      hosts => ["10.3.145.14","10.3.145.56","10.3.145.57"]
      index => 'logstash-debug-%{+YYYY-MM-dd}'
    }
}

测试2:直接传输nginx的日志文件,要求nginx和logstash在同一台服务器上

input {
	file {
		type => "nginx-log"
		path => "/var/log/nginx/error.log"
		start_position => "beginning"
	}
}
filter {
    grok {
        match => { "message" => '%{DATESTAMP:date} [%{WORD:level}] %{DATA:msg} client: %{IPV4:cip},%{DATA}"%{DATA:url}"%{DATA}"%{IPV4:host}"'}    
    }    
    date {
        match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]    
    }    
}

output {
  if [type] == "nginx-log" {
        elasticsearch {
      		hosts => ["192.168.249.139:9200","192.168.249.149:9200","192.168.249.159:9200"]
      		index => 'logstash-audit_log-%{+YYYY-MM-dd}'
      }
    }
  }

#标准输入

input {
    tcp {
        port => 8888   #输入内容的ip识别端口
    }
}
filter {
    grok {
        match => {"message" => "%{DATA:key} %{NUMBER:value:int}"}     #正则表达式,message为输入内容识别,"%{DATA:key} %{NUMBER:value:int}"创建识别日志的分段方式和每段的自定义名称,DATA正则表达式,key 自定义名称。
    }
}

#标准输出

output {
    stdout {
        codec => rubydebug
    }
    elasticsearch {
      hosts => ["10.3.145.14","10.3.145.56","10.3.145.57"]  #需要识别接收输入内容的ip
      index => 'logstash-debug-%{+YYYY-MM-dd}'  #日志上传后的分类名称,这个可以根据上传的日志进行更改。
    }
}

启动logstash

/usr/local/logstash/bin/logstash -f /usr/local/logstash/conf/

备注:启动logstash需要再es和kibana/head启动的情况下启动。

日志传输方式

在需要将服务器上的日志进行上传的服务器上,使用

cat /var/log/mysql.log | nc 10.35.186.230 8888

 效果:

正则表达式的常用内容记录

正则表达式具体表达式内容
USERNAME  [a-zA-Z0-9._-]+
USER  %{USERNAME}
INT  (?:[+-]?(?:[0-9]+))
BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
NUMBER (?:%{BASE10NUM})
BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
BASE16FLOAT\b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\b
 
POSINT \b(?:[1-9][0-9]*)\b
NONNEGINT\b(?:[0-9]+)\b
WORD \b\w+\b  字符串
NOTSPACE \S+  数字
SPACE \s*
DATA .*?
GREEDYDATA .*
QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>`(?>\\.|[^\\`]+)+`)|``))
UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
MAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})
CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
IPV4 (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])
IP (?:%{IPV6}|%{IPV4}) 
HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
HOST %{HOSTNAME}
IPORHOST (?:%{HOSTNAME}|%{IP})
HOSTPORT %{IPORHOST}:%{POSINT}
# paths 
PATH (?:%{UNIXPATH}|%{WINPATH})
UNIXPATH (?>/(?>[\w_%!$:.,-]+|\\.)*)+
TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
WINPATH (?>[A-Za-z]+:|\\)(?:\[^\\?*]*)+
URIPROTO [A-Za-z]+(\+[A-Za-z+]+)?
URIHOST %{IPORHOST}(?::%{POSINT:port})?
URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=#%_\-]*)+
URIPARAM \?[A-Za-z0-9$.+!*'|(){},~#%&/=:;_?\-[]]*
URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
URI %{URIPROTO}://(?:%{USER}(?::[^]*)?
MONTH \b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b
MONTHNUM (?:0?[1-9]|1[0-2])
MONTHNUM2 (?:0[1-9]|1[0-2])
MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)
YEAR (?>\d\d){1,2}
HOUR (?:2[0123]|[01]?[0-9])
MINUTE (?:[0-5][0-9])
SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
ISO8601_TIMEZONE(?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
ISO8601_SECOND (?:%{SECOND}|60)
TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
DATE %{DATE_US}|%{DATE_EU}
DATESTAMP %{DATE}[- ]%{TIME}
TZ (?:[PMCE][SD]T|UTC)
DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
PROG (?:[\w._/%-]+)
SYSLOGPROG %{PROG:program}(?:[%{POSINT:pid}])?
SYSLOGHOST %{IPORHOST}
SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}
QS %{QUOTEDSTRING}
SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:
COMMONAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} [%{HTTPDATE:timestamp}] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
COMBINEDAPACHELOG %{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
LOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

常见问题解决:

ES启动过程中存在错误

错误1:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

解决:切换到root用户

vim /etc/security/limits.conf
hard nofile 65536
hard nproc 65536

重新启动elasticsearch,还是无效?
必须重新登录启动elasticsearch的账户才可以,例如我的账户名是elasticsearch,退出重新登录。
另外*也可以换为启动elasticsearch的账户也可以,* 代表所有,其实比较不合适

错误2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决:elasticsearch用户拥有的内存权限太小了,至少需要262114

sysctl -w vm.max_map_count=262144

错误3:

解决:JVM堆内存太大造成机器无法正常启动,设置的最小堆内存为3G

sed -i 's/## -Xms4g/-Xms3g/' /usr/local/es/config/jvm.options  
sed -i 's/## -Xmx4g/-Xmx3g/' /usr/local/es/config/jvm.options

启动grunt中存在的问题

问题:(图片丢失)提示npm版本过低,但是通过npm install -g npm@latest升级失败

解决:换个网络,网速过慢导致下载失败,失败造成错误报错。

脚本逻辑:

此程序不能使用单一的shell脚本进行相应应用的安装和启动,需要使用shell和ansible相结合使用。

应用服务

实验中所用到的所有应用服务的压缩包

链接:https://pan.baidu.com/s/1QyRd0IK5b84ikIFTfXpK9A 
提取码:6543 
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值