ELK的搭建

ELK日志分析及操作步骤:

  一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大的场景 中,此方法效率低下,面临问题包括日志量太大如何归档、文本 搜索太慢怎么办、如何多维度查询。需要集中化的日志管理,所 有服务器上的日志收集汇总。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问。

  一般大型系统是一个分布式部署的架构,不同的服务模块部署在 不同的服务器上,问题出现时,大部分情况需要根据问题暴露的 关键信息,定位到具体的服务器和服务模块,构建一套集中式日 志系统,可以提高定位问题的效率。

一个完整的集中式日志系统,需要包含以下几个主要特点:

  1. 收集-能够采集多种来源的日志数据
  2. 传输-能够稳定的把日志数据传输到中央系统 存储-如何存储日志数据
  3. 分析-可以支持 UI 分析
  4. 警告-能够提供错误报告,监控机制


ELK提供了一整套解决方案,并且都是开源软件,之间互相配合 使用,完美衔接,高效的满足了很多场合的应用。目前主流的一 种日志系统。

ELK的核心套件:
ElasticSearch是实时全文搜索和分析引擎,提供搜集、分析、存 储数据三大功能;是一套开放REST和JAVA API等结构提供高效 搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜 索引擎库之上。

Logstash是一个用来搜集、分析、过滤日志的工具。它支持几 乎任何类型的日志,包括系统日志、错误日志和自定义应用程序 日志。它可以从许多来源接收日志,这些来源包括 syslog、消 息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数 据,包括电子邮件、websockets和Elasticsearch。

Kibana是一个基于Web的图形界面,用于搜索、分析和可视化 存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch 的REST接口来检索数据,不仅允许用户创建他们自己的数据的 定制仪表板视图,还允许他们以特殊的方式查询和过滤数据。

filebeat 会给服务器logstash传日志
logstash  负责日志收集、过滤、存储日志
elasticsearch 负责搜索处理
kibana  提供web界面展现

ELK的搭建:

0、环境构建

logstash      # 负责日志收集、过滤、存储日志
elasticsearch   # 负责搜索处理
kibana        # 提供web界面展现

@1 192.168.99.104

1、安装elasticsearch及其配置
#elasticsearch需要java的运行环境,需要安装jdk

yum -y install jdk

JDK是 Java 语言的软件开发工具包,它包含了JAVA的运行环境(JVM+Java系统类)
库)和JAVA工具。

java -version                 #查看java版本
yum -y install elasticsearch
vim /etc/elasticsearch/elasticsearch.yml

注:内存不充足时:

bootstrap.memory_lock: false                   #把true改成false去掉注释,(开机锁定部分专属内存,配置内存使用交换分区)

http.port: 9200                    #监听端口,去掉注释
systemctl enable elasticsearch
systemctl start elasticsearch
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent
netstat -anp | grep 9200

2、安装 logstash

yum -y install logstash
systemctl start logstash
systemctl enable logstash

3、安装kibana
# 提供web界面展现

yum -y install kibana
vim /etc/kibana/kibana.yml
########################
server.port: 5601                                 #访问端口,去掉注释
server.host: "0.0.0.0"                            #访问主机,去掉注释
elasticsearch.url: "http://localhost:9200"        #本机访问端口,去掉注释
############################
systemctl restart kibana
systemctl enable kibana
firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent
netstat -anp | grep 5601

4、安装filebeat
logstash收集日志没有filebeat方便

yum -y install filebeat
vim /etc/filebeat/filebeat.yml
##############################
- /var/log/*/*.log #其他软件的日志
- /var/log/messages #系统日志
因为Linux软件日志有自己的目录,所以/*/*.log
paths:
elasticsearch:              #注释掉
hosts:["localhost:9200"]        #注释掉
logstash:                 # 取消注释
hosts:["localhost:5044"]        #取消注释
#############################
systemctl enable filebeat
systemctl start filebeat
firewall-cmd --add-port=5044/tcp
firewall-cmd --add-port=5044/tcp --permanent

 

5、编辑logstash

cd /etc/logstash/conf.d
vim 随便.conf
#######################
#监听5044端口作为输入
input {
beats {
port => "5044"
}
}
#数据过滤
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
geoip {
source => "clientip"
}
}
#输出配置为本机的9200端口,即ElasticSerach服务的监听端口。
output {
elasticsearch {
hosts => ["127.0.0.1:9200"] #ElasticSerach地址/端口
index => "1906-h104-%{+YYYY.MM.dd}" #输出的文件名称 
}
}
#################################
systemctl restart logstash

6、加密(此时任何人都能访问)
暂时完成效果图:

 此时任何人都能访问,所以需要加密:

yum -y install nginx
vim /etc/kibana/kibana.yml
########################
server.host: "localhost" #只允许主机访问,去掉注释
server.host: "0.0.0.0" #任何主机都能访问,注释掉
########################
vim /etc/nginx/nginx.conf
sed -i '38,88d' /etc/nginx/nginx.conf
vim /etc/nginx/conf.d/elk(随便).conf
########################
server {
listen 8081;
auth_basic "Restricted Access"; #验证方式
auth_basic_user_file /etc/nginx/.kibana-user; #验证文件(隐藏文件)
location / {
proxy_pass http://127.0.0.1:5601;
}
}
####################
#生成文件需要htpasswd
yum -y install httpd
htpasswd -c /etc/nginx/.kibana-user elk
###
123
123
###
nginx -t
systemctl enable nginx
systemctl restart nginx
firewall-cmd --add-port=80/tcp
firewall-cmd --add-port=80/tcp --permanent

@2 192.168.99.105

setenforce 0
yum -y install jdk
yum -y install logstash filebeat
(安装之前必须检查是否有Java环境,如果已经安装报错,需要卸载重新安装)
cd /etc//filebeat/
scp 192.168.59.104:$PWD/filebeat.yml ./
cd /etc/logstash/conf.d
scp 192.168.59.104:$PWD/* ./
vim 随便.conf
#######################
修改:
hosts => ["192.168.59.105:9200"] 
index => "1906-h105-%{+YYYY.MM.dd}" 
#################################
systemctl restart logstash

@1 192.168.99.104

vim /etc/elasticsearch/elasticsearch.yml
##############
network.host 0.0.0.0(192.168.59.0)            #加入监听其他主机(全部/网段)
##############
systemctl restart elasticsearch
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent
原文地址:https://www.cnblogs.com/twoo/p/11909886.html