centos7搭建ELK6.6.0(上)
什么是ELK?
通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 、filebeat三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又称为ELK stack,官方域名为stactic.co,ELK stack的主要优点有如下几个:
处理方式灵活: elasticsearch是实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单
什么是Elasticsearch:
是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如Nginx、Tomcat、系统日志等功能。
什么是Logstash
可以通过插件实现日志收集和转发,支持日志过滤,支持普通log、自定义json格式的日志解析。
什么是kibana:
主要是通过接口调用elasticsearch的数据,并进行前端数据可视化的展现。
什么是Beats
Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比 Logstash,Beats所占系统的CPU和内存几乎可以忽略不计
image.png
为什么使用 ELK?
ELK组件在海量日志系统的运维中,可用于解决以下主要问题:
- 分布式日志数据统一收集,实现集中式查询和管理
- 故障排查
- 安全信息和事件管理
- 报表功能
ELK组件在大数据运维系统中,主要可解决的问题如下:
- 日志查询,问题排查,故障恢复,故障自愈
- 应用日志分析,错误报警
- 性能分析,用户行为分析
一、elasticsearch部署:
去百度如何创建普通用户
1.1:环境初始化:
IP:命令行敲ifconfig
自己瞅,瞅完记住
主机名:node-1
系统:CentOS 7
Java:1.8.0_172
elasticsearch:6.6.0
1.2: 获取elasticsearch-6.6.0
https://www.elastic.co/downloads/
下载安装ELK组件
[root@mha-master data]# wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz
[root@mha-master data]# wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.0-linux-x86_64.tar.gz
[root@mha-master data]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.0.tar.gz
[root@mha-master data]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.0-linux-x86_64.tar.gz
如果没按照我的方法安装,一定要记得你这三个用的版本要一致!
然后看机器上有没有java
java -version
显示为1.8以上就可以了,如果没有的话就按照下面这行去安装
yum install -y java-1.8.0-openjdk-devel java-1.8.0-openjdk
然后开始解压安装然后配置
tar xf elasticsearch-6.6.0.tar.gz
cd elasticsearch-6.6.0/config
vi elasticsearch.yml # 编辑内容
编辑后看到所有行都被注释掉了内容改为
cluster.name: my-ELK
node.name: node-1
path.data: /data/ELK/elasticsearch/data #当然这个目录可以你自己定
path.logs: /data/ELK/elasticsearch/log #当然这个目录可以你自己定
network.host: 你这台的ip
http.port: 9200
discovery.zen.ping.unicast.hosts: ["你的ip"]
http.cors.enabled: true # 开放插件head访问
http.cors.allow-origin: "*" # 开放插件head访问
那么现在文件夹都指定了,这两个文件夹还没有呢,所以现在开始建文件夹
mkdir -p /data/ELK/elasticsearch/data
mkdir -p /data/ELK/elasticsearch/log
如果创建失败,说明你这个账户没有动/data
目录的权限
sudo chown -R 你的用户名:你的用户组名 /data
然后打开文件夹并启动
cd elasticsearch-6.6.0
./bin/elasticsearch &
可能会出现异常
image.png一、
- max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
- 异常原因:单进程可打开文件数不够
- 解决办法:
sudo vim /etc/security/limits.conf
在最下面一行添加(具体数值看你报错的数,按照他推荐的来):
elastic soft nofile 65536 # 软限制,小于等于下面的数值
elastic hard nofile 65536 # 硬限制
返回后重新登录该账户(不然数量不变化)
ulimit -Hn # 查看数量是否为65536
二、
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
- 异常原因:jvm最大进程数低
- 解决办法:
sudo vim /etc/sysctl.conf
然后添加下面这行
vm.max_map_count=655360
保存退出,然后查看
sysctl -p # 显示的数量为更改后的就没问题了
三、(我的服务器并未报这个异常)
- memory locking requested for elasticsearch process but memory is not locked
- 解决办法:
vim /etc/security/limits.conf
elastic - memlock unlimited
四、(我的服务器并未报这个异常)
- max number of threads [3802] for user [elastic] is too low, increase to at least [4096]
- 解决办法:
$ vim /etc/security/limits.d/20-nproc.conf
elastic - nproc 4096
最后敲下面这行命令如果显示下面这样的json就算成功了
curl http://192.168.1.58:9200
{
"name" : "node-1",
"cluster_name" : "my-ELK",
"cluster_uuid" : "Frii070FSEKiOSYlE86lOg",
"version" : {
"number" : "6.6.0",
"build_flavor" : "default",
"build_type" : "tar",
"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"
}
安装head插件(安装完就可以在浏览器显示了)
安装git
检查是否已安装
git --version
如果啥也没有则安装:
yum install -y git
安装npm
检查是否已安装
npm -v
如果啥也没有则安装:
yum install -y npm
该有的都有了之后开始安装
git clone https://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
sudo npm install -g grunt-cli
sudo npm install # 这一步我报错了,安装phantomjs错误,但是无大碍。
修改Gruntfile.js:
connect: {
server: {
options: {
port: 9100,
hostname: "*", # 新增
base: '.',
keepalive: true
}
}
}
});
修改_site/app.js # 如果不好找这一行,进入vi后非编辑状态下输入/localhost就找到了
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://你的ip:9200"; # 修改为自己的服务
grunt server #启动命令
image.png
elasticsearch和插件部署完毕!
参考博客