ELk简介

Elasticsearch,Logstash 和 Kibana简称ELK,是当下最流行的日志监控系统

Kibana友好的web界面,强大的实时的分布式搜索和分析引擎Elasticsearch,以及Logstash强大搜集,解析日志功能,让你初识ELK就深深的爱上它。

ELK官网https://www.elastic.co/

ELK组件

如上面所言,ELK是三个软件组成的日志监控解决方案。每一个软件提供不同功能

组件功能
Kibana是一款基于Apache开源协议,使用javaScript编写的,为Elasticsearch提供提供分析和可视化Web页面展示平台,它可以在Elasticsearch的索引中查找,交互数据,并且生成各种维度的表图
ElasticsearchElasticsearch是一款实时分布式的搜索和分析引擎,它可以用于全文搜索,结构化搜索和分析,他是一个建立再全文搜索引擎Apache Lucene基础上的搜索引擎,使用Java编写,
Logstash是一个具有实时渠道能力的数据收集引擎,使用Jruby编写,其作者是世界著名运维工程师乔丹西塞

ELK套件部署

我记录了我所操作的每一步,理论上来说你按照我这个是文档是没有问题的,但受于系统,版本的影响请灵活变更

ELk整套架构不小,但是部署起来确是非常简单,甚至比一个web环境更加轻松。本文采用的是从官网下载的解压包直接运行的,你也可选RPM还在DEB安装,windows下也有解压缩和MSI
截至本文编写,ELk整体以及更新到了7.3.2(非常快了),所以本文用的包也全部都是官网下载的最新版

[root@elk ~]# ls
elasticsearch-7.3.2-linux-x86_64.tar.gz  kibana-7.3.2-linux-x86_64.tar.gz  logstash-7.3.2.tar.gz

把压缩包全部解压到你的ELK目录,我的目录结构。

[root@elk opt]# tree -l /opt
/opt
├── elasticsearch
├── kibana
└── logstash

elasticsearch,和kibana不允许使用root用户启动,创建一个普通用户管理ELK(没有为什么),logstash没有强制要求使用普通用户,你可能会想全部用普通用户管理,但我并不推荐logstash使用普通用户,因为logstash是负责收集和处理日志的,会有很多麻烦的权限问题,所以我这里关于logstash的操作还是用的root,ek用的elk用户

[root@elk ~]# useradd elk
[root@elk opt]# chown elk:elk /opt/kibana /opt/elasticsearch -R

ES与logstash都需要JDK环境,先安装JDK1.8或者以上的。(centos7源里有java1.8)

[root@elk config]# yum install java -y 

然后一系列设置系统方面的参数,少一个启动elasticsearch启动就有可能报错

# 设置虚拟内存
[root@elk ~]# echo "vm.max_map_count=655360" >> /etc/sysctl.conf 
[root@elk ~]# sysctl -p
vm.max_map_count = 655360

# 修改系统最大文件打开数
[root@elk ~]# echo "* soft nofile 655350" >>  /etc/security/limits.conf
[root@elk ~]# echo "* hard nofile 655350" >>  /etc/security/limits.conf

# 修改系统最大进程数为4096
[root@elk ~]# vim /etc/security/limits.d/20-nproc.conf 
*          soft    nproc     4096
root       soft    nproc     unlimited

[root@elk ~]# reboot #重启

安装elasticsearch

修改elasticsearch配置文件

[root@elk opt]# cd elasticsearch/config/
[root@elk config]# vim elasticsearch.yml 
# 定义elasticsearch 集群名字
 17 cluster.name: my-elk

# 定义本机在集群中的名字
 21 # Use a descriptive name for the node:


#修改当前elasticsearch数据和日志存放目录,默认是在安装目录下面,我这里就不修改了(你要是修改了注意elk对存储目录有没有权限)
 33 #path.data: /path/to/data
 34 #
 35 # Path to log files:
 36 #
 37 #path.logs: /path/to/logs
 38 #

# 修改elasticsearch绑定的地址为0.0.0.0,我这里是单机部署的所以不修改也没影响,但你要是分布式这里不修改就访问不了elasticsearch
 55 network.host: 0.0.0.0

# 定义初始化程序是机器中的 elasticsearch机器名字
 72 cluster.initial_master_nodes: node-1
 
# 定义当前集群中的 elasticsearch机器数量
 80 gateway.recover_after_nodes: 1

# 解决跨域问题,在配置文件尾部添加
http.cors.enabled: true
http.cors.allow-origin: "*"

elasticsearch基本配置完成,启动,elasticsearch

[root@elk config]# su - elk
上一次登录:五 9月 20 17:19:53 CST 2019pts/0 上
[elk@elk ~]$ cd /opt/
[elk@elk opt]$ ./elasticsearch/bin/elasticsearch #检查日志输出,没有错误放入后台运行
[elk@elk opt]$ nohup ./elasticsearch/bin/elasticsearch &

部署logstash

配置logstash监控nginx 日志

这里先使用NGINX默认的日志格式

配置nginx的logstash配置文件

[root@elk config]# cd /opt/logstash/config
[root@elk config]# vim nginx.yml 

input {
    file {
        type => "nginx-access"
        path => "/var/log/nginx/access.log"
        }
}
output {
    elasticsearch {
        hosts => "192.168.1.118:9200"
        index => "nginx_test1_%{+YYYY.MM.dd}"
        }
}

启动logstash

[root@elk config]# /opt/logstash/bin/logstash -f nginx.yml  # 输出没有报错,就放在后台启动
[root@elk config]# nohup /opt/logstash/bin/logstash -f nginx.yml  &

部署kibana

修改配置文件

[elk@elk opt]$ vim kibana/config/kibana.yml 
  7 server.host: "192.168.1.118" # kibana监听地址
114 i18n.locale: "zh-CN"        # 修改web界面为中文

启动kibana

[elk@elk opt]$ nohup /opt/kibana/bin/kibana &

访问WEB界面http://192.168.1.118:5601配置索引

这里可以看见logstash搜集过来的nginx日志

索引的命名规则是nginx_test1_%{+YYYY.MM.dd},所有我们这里的索引名字就叫nginx_test1_*
a1.png
时间筛选字段名称@timestamp

a2.png
查看数据

a3.png
a4.png

至此 ELK最基础的架构就部署完成了~

Last modification:November 8th, 2019 at 01:56 pm