ELK日志分析系统

目录

1.简介

2.组成

3.作用

4.工作原理

5.案例

[部署 Elasticsearch 软件](#部署 Elasticsearch 软件)

[ELK Logstash 部署](#ELK Logstash 部署)

[ELK Kiabana 部署](#ELK Kiabana 部署)


1.简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个

开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

2.组成

日志主要包括系统日志、应用程序日志和安全日志。

3.作用

收集:能够采集多种来源的日志数据

传输:能够稳定的把日志数据解析过滤并传输到存储系统

存储:存储日志数据

分析:支持 UI 分析

警告:能够提供错误报告,监控机制

4.工作原理

在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器

上,在日志服务器上部署 Logstash。

Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

Elasticsearch 对格式化后的数据进行索引和存储。

Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

5.案例

部署 Elasticsearch 软件

安装elasticsearch---rpm包 上传elasticsearch-5.5.0.rpm到/opt目录下

cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

加载系统服务

                systemctl daemon-reload    
                systemctl enable elasticsearch.service

修改elasticsearch主配置文件

先备份 cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak

vim /etc/elasticsearch/elasticsearch.yml
--17--
cluster.name: my-elk-cluster
--23--
node.name: node1
--33--
path.data: /data/elk_data
--37--
path.logs: /var/log/elasticsearch/
--43--
bootstrap.memory_lock: false
--55--
network.host: 0.0.0.0
--59--
http.port: 9200
--68--
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml 查看内容

创建数据存放路径并授权

mkdir -p /data/elk_data

chown elasticsearch:elasticsearch /data/elk_data/

启动elasticsearch是否成功开启

systemctl start elasticsearch.service

netstat -antp | grep 9200

查看节点信息

浏览器访问 http://192.168.177.104:9200http://192.168.177.106:9200 查看节点 Node1、Node2 的信息。

浏览器访问 http://192.168.177.104:9200/_cluster/health?pretty

此时遇到了一个问题 显示yellow而不是green

常见的ES集群有三种状态

Green:主/副分片都已经分配好且可用;集群处于最健康的状态100%可用

Yellow:主分片可用,但是副分片不可用。这种情况ES集群所有的主分片都是已经分配好了的,但是至少有一个副本是未分配的。这种情况下数据也是完整的;但是集群的高可用性会被弱化

Red:存在不可用的主分片。此时只是部分数据可以查询,已经影响到了整体的读写,需要重点关注。这种情况ES集群至少一个主分片(以及它的全部副本)都缺失

1.磁盘满 扩容 (这里是干净的测试环境 不存在)

2.分配文档超过最大限制 向新索引中写入数据,并合理设置分片大小

3.主分片所在节点掉线 找到节点掉线的原因并重新其中节点加入集群,等待分片恢复

4.索引属性与节点属性不匹配 重新设置索引的冷热属性,和节点保持一致;若要修改节点属性,则需要重启节点

5.节点长时间掉线后再次加入集群 导致引入脏数据 使用 reroute API

6.未分配的分片太多 导致达到了分片恢复的最大阈值 其他分片需要排队等待 使用cluster/settings调大分片恢复的并发度和速度 (找到了问题 有五个在等待)

安装 Elasticsearch-head 插件

yum install gcc gcc-c++ make -y
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install 

安装 phantomjs

上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2

cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

安装 Elasticsearch-head 数据可视化工具

上传软件包 elasticsearch-head.tar.gz 到/opt

cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml
        ###末尾添加
    http.cors.enabled: true
    http.cors.allow-origin: "*"

启动 elasticsearch-head 服务

cd /usr/local/src/elasticsearch-head/
npm run start &

浏览器访问 http://192.168.177.104:9100/

插入索引

curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

ELK Logstash 部署

安装Apahce服务(httpd)

yum -y install httpd
systemctl start httpd

安装Java环境并检查

yum -y install java
java -version

安装logstash

上传软件包 logstash-5.5.1.rpm 到/opt目录下

cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                      
systemctl enable logstash.service

ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

测试 Logstash 等好了以后输入www.baidu.com

会得到 2020-12-22T03:58:47.799Z localhost www.baidu.com

logstash -e 'input { stdin{} } output { stdout{} }'

ELK Kiabana 部署

安装 Kiabana

上传软件包 kibana-5.5.1-x86_64.rpm 到/opt目录

cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

设置 Kibana 的主配置文件

vim /etc/kibana/kibana.yml
--2--
server.port: 5601
--7--
server.host: "0.0.0.0"
--21--
elasticsearch.url: "http://192.168.177.104:9200" 
--30--
kibana.index: ".kibana"

启动服务 检查端口

systemctl start kibana.service
systemctl enable kibana.service

netstat -natp | grep 5601

验证 Kibana

浏览器访问 http://192.168.177.104:5601

第一次登录需要添加一个 Elasticsearch 索引:

Index name or pattern

//输入:system-* #在索引名中输入之前配置的 Output 前缀"system"

单击 "create" 按钮创建,单击 "Discover" 按钮可查看图表信息及日志信息。

数据展示可以分类显示,在"Available Fields"中的"host",然后单击 "add"按钮,可以看到按照"host"筛选后的结果

将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示

vim /etc/logstash/conf.d/apache_log.conf
input {
    file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
    }
    file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
    }
}
output {
    if [type] == "access" {
        elasticsearch {
            hosts => ["192.168.177.104:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
	if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.177.104:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }
}

cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf

浏览器访问 http://192.168.177.104:9100 查看索引是否创建

相关推荐
Karoku0661 天前
【企业级分布式系统】ELK-企业级日志分析系统
运维·数据库·redis·mysql·elk·缓存
一名技术极客2 天前
徒手从零搭建一套ELK日志平台
elk
jun7788954 天前
SpringBoot整合ELK使用详解
spring boot·后端·elk
yueqingll4 天前
023、ELK 从入门到实践
elk
abandondyy4 天前
ELK Elasticsearch 集群部署
大数据·elk·elasticsearch
小李叭叭叭4 天前
ELK8.15.4搭建开启安全认证
运维·elk·elasticsearch·kibana
光仔December12 天前
【Elasticsearch入门到落地】1、初识Elasticsearch
大数据·elk·elasticsearch·搜索引擎·lucene
太空眼睛13 天前
【EFK】Linux集群部署Elasticsearch最新版本8.x
linux·elk·elasticsearch·efk·master·8.15.3·node.roles
Shenqi Lotus16 天前
ELK-ELK基本概念_ElasticSearch的配置
elk·elasticsearch