服务(第三十篇)elk-elasticsearch、logstash、kiabana

这篇具有很好参考价值的文章主要介绍了服务(第三十篇)elk-elasticsearch、logstash、kiabana。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

rsyslog

服务器较少时使用,rsyslog日志收集,统一存放在专门存放日志的收集器中;

ELK 简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求

ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志;(用来存储日志数据和创建全文索引);

Kiabana:Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据;(用来实现可视化的日志监控);

Logstash:作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。
Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理;(数据收集、数据过滤、格式化统一)。

完整日志系统基本特征
收集:能够采集多种来源的日志数据
传输:能够稳定的把日志数据解析过滤并传输到存储系统
存储:存储日志数据
分析:支持 UI 分析

ELK 的工作原理:
(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
(2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
(3)Elasticsearch 对格式化后的数据进行索引和存储。
(4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。

服务(第三十篇)elk-elasticsearch、logstash、kiabana

安装elasticsearch:

①环境监测:

设置Java环境

java -version                                        #如果没有安装,yum -y install java服务(第三十篇)elk-elasticsearch、logstash、kiabana

1)部署 Elasticsearch 软件

cd /opt
rpm -ivh elasticsearch-6.7.2.rpm
服务(第三十篇)elk-elasticsearch、logstash、kiabana

2)修改elasticsearch主配置文件(vim /etc/elasticsearch/elasticsearch.yml)

cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak 做个备份

--17--取消注释,指定集群名字
cluster.name: my-elk-cluster
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
node.master: true        #是否master节点,false为否
node.data: true            #是否数据节点,false为否
--33--取消注释,指定数据存放路径
path.data: /var/lib/elasticsearch
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch
--43--取消注释,避免es使用swap交换分区
bootstrap.memory_lock: true
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200                    #指定es集群提供外部访问的接口
transport.tcp.port: 9300        #指定es集群内部通信接口
--68--取消注释,集群发现通过单播实现,指定要发现的节点
discovery.zen.ping.unicast.hosts: ["192.168.169.10:9300", "192.168.169.30:9300"]

grep -v "^#" /etc/elasticsearch/elasticsearch.yml 过滤监测有效信息

服务(第三十篇)elk-elasticsearch、logstash、kiabana

3)es 性能调优参数

vim /etc/security/limits.conf

*  soft    nofile             65536
*  hard    nofile            65536
*  soft    nproc             32000
*  hard    nproc            32000
*  soft    memlock        unlimited
*  hard    memlock       unlimited

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 vim /etc/systemd/system.conf

DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

服务(第三十篇)elk-elasticsearch、logstash、kiabana

需重启系统生效reboot!!!!!

vim /etc/sysctl.conf
#一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)
vm.max_map_count=262144

sysctl -p
sysctl -a | grep vm.max_map_count

服务(第三十篇)elk-elasticsearch、logstash、kiabana

4)启动elasticsearch是否成功开启
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp | grep 9200

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 ③测试:http://192.168.169.10:9200 和 http://192.168.169.10:9200/_cluster/health?pretty 和http://192.168.169.10:9200/_cluster/state?pretty

服务(第三十篇)elk-elasticsearch、logstash、kiabana

服务(第三十篇)elk-elasticsearch、logstash、kiabana

服务(第三十篇)elk-elasticsearch、logstash、kiabana

使用上述方式查看群集的状态对用户并不友好,可以通过安装 Elasticsearch-head 插件,可以更方便地管理群集:

安装 Elasticsearch-head 插件
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到;

编译安装 node(时间较久,建议提前安装):

#上传软件包 node-v8.2.1.tar.gz 到/opt
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
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

安装 Elasticsearch-head 数据可视化工具
#上传软件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd /opt/elasticsearch-head-master/
npm install         //安装依赖包

服务(第三十篇)elk-elasticsearch、logstash、kiabana

修改 Elasticsearch 主配置文件(vim /etc/elasticsearch/elasticsearch.yml)

--末尾添加以下内容--
http.cors.enabled: true                #开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"

然后systemctl restart elasticsearch

启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /opt/elasticsearch-head-master
npm run start &

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 netstat -natp |grep 9100服务(第三十篇)elk-elasticsearch、logstash、kiabana

 测试:

通过命令插入一个测试索引,索引为 index-demo,类型为 test。
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
//输出结果如下:
{
"_index" : "index-demo",
"_type" : "test",
"_id" : "1",
"_version" : 1,
"result" : "created",
"_shards" : {
"total" : 2,
"successful" : 2,
"failed" : 0
},
"created" : true
}
 

Logstash 部署(apache):

①安装Apahce服务(httpd)
yum -y install httpd
systemctl start httpd

②java -version

③安装logstash
#上传软件包 logstash-6.7.2.rpm 到/opt目录下
cd /opt
rpm -ivh logstash-6.7.2.rpm                          
systemctl start logstash.service                      
systemctl enable logstash.service

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

测试:logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

服务(第三十篇)elk-elasticsearch、logstash、kiabana
服务(第三十篇)elk-elasticsearch、logstash、kiabana

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 ELK Kiabana 部署:

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

服务(第三十篇)elk-elasticsearch、logstash、kiabana

设置 Kibana 的主配置文件 vim /etc/kibana/kibana.yml

--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--28--取消注释,配置es服务器的ip,如果是集群则配置该集群中master节点的ip
elasticsearch.url:  ["http://192.168.80.10:9200","http://192.168.80.11:9200"] 
--37--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
--96--取消注释,配置kibana的日志文件路径(需手动创建),不然默认是messages里记录日志
logging.dest: /var/log/kibana.log

创建日志文件,启动 Kibana 服务

touch /var/log/kibana.log
chown kibana:kibana /var/log/kibana.log

服务(第三十篇)elk-elasticsearch、logstash、kiabana

服务(第三十篇)elk-elasticsearch、logstash、kiabana

测试:

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 Filebeat+ELK 部署:

/opt

tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64/ /usr/local/filebeat

设置 filebeat 的主配置文件
cd /usr/local/filebeat

vim filebeat.yml
filebeat.inputs:
- type: log         #指定 log 类型,从日志文件中读取消息
  enabled: true
  paths:
    - /var/log/httpd/access_log       #指定监控的日志文件
    - /var/log/*.log
  tags: ["filebeat"]        #设置索引标签  自己添加
  fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
    service_name: httpd
    log_type: access
    from: 192.168.169.60

--------------Elasticsearch output-------------------
(全部注释掉)

----------------Logstash output---------------------
output.logstash:
  hosts: ["192.168.80.12:5044"]      #指定 logstash 的 IP 和端口

服务(第三十篇)elk-elasticsearch、logstash、kiabana

然后去logstash里面去做日志的输入输出过滤流:

filter {
  grok {
    match => ["message", "(?<remote_addr>%{IPV6}|%{IPV4})[\s\-]+\[(?<logTime>.*)\]\s+\"(?<method>\S+)\s+(?<url_path>.+)\"\s+(?<rev_code>\d+) \d+ \"(?<req_addr>.+)\" \"(?<content>.*)\""]
  }
}

output {
    elasticsearch {
        hosts => ["192.168.169.20:9200","192.168.169.50:9200"]
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}

服务(第三十篇)elk-elasticsearch、logstash、kiabana

 然后施行:logstash -f filebeat.conf进行日志的事件创建

filter的四个插件:

①grok:大字段分割成小字段(可以使用内置正则,也可以使用自定义的正则)
match => {"大字段名"} => ".* \- \- \[(?<log_time>.+)\].+"

②date:对数据中的时间格式进行统一和格式化,把日志生成时间和事件生成时间统一
先做grok 
然后match => ["acess_time(这是grok分割出的时间小字段)" ...]
target => "@timestamp" (默认也是他)
timezone => "Asia/Shanghai"

③mutate:对字段增删改查
add_field  添加新字段
remove_field 删除字段
replace     替换字段
rename      重命名
gsub        使用正则


④mutiline:对多行数据进行统一
pattern => "n\d..." 匹配第一行的信息
negate => true  取反
what => "previous"  向上合并  next向下合并文章来源地址https://www.toymoban.com/news/detail-477160.html

到了这里,关于服务(第三十篇)elk-elasticsearch、logstash、kiabana的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ELK:Windows下将Elasticsearch、Logstash、Kibana添加为后台服务

    目录 1.elasticsearch添加后台服务 2.Logstash添加为后台服务 3.kibana添加为后台服务 管理员模式 运行CMD窗口,进入elasticsearch的bin目录,运行: ,运行后显示如下。  显示服务已经安装,这时进入windows下的服务窗口就能看到安装的elasticsearch服务了。 Logstash 添加后台服务用的是 N

    2024年02月17日
    浏览(32)
  • 第三十九天 Java基础学习(三十三)

    一、Servlet Java类。由Servlet容器(Tomcat)进行编译-.class -运行 产生响应结果返回给客户端浏览器。 生命周期:(方法调用流程) init:初始化方法。在第一次访问servlet时被调用一次。 service:完成servlet所做功能。每次访问servlet时都会被调用。 doGet0:只有get请求。才能访问。 doPos

    2024年02月15日
    浏览(32)
  • 微服务开发系列 第十篇:Gateway

    A、技术栈 开发语言:Java 1.8 数据库:MySQL、Redis、MongoDB、Elasticsearch 微服务框架:Spring Cloud Alibaba 微服务网关:Spring Cloud Gateway 服务注册和配置中心:Nacos 分布式事务:Seata 链路追踪框架:Sleuth 服务降级与熔断:Sentinel ORM框架:MyBatis-Plus 分布式任务调度平台:XXL-JOB 消息中间

    2024年02月09日
    浏览(36)
  • C语言(第三十五天)

    3. 移位操作符 左移操作符 右移操作符 注:移位操作符的操作数只能是整数。 3.1 左移操作符 移位规则:左边抛弃、右边补0 3.2 右移操作符 移位规则:首先右移运算分两种: 1. 逻辑右移:左边用0填充,右边丢弃 2. 算术右移:左边用原该值的符号位填充,右边丢弃 警告⚠️

    2024年02月10日
    浏览(28)
  • 【Linux】第三十三站:日志

    我们运行代码的时候,我们希望有各种各样的运行时候的一些信息。这也就是日志 它一半有日志时间,日志的等级,日志的内容,文件的名称和行号。 对于日志等级一半有如下的 Info : 常规消息 Warning : 报警信息 Error : 比较严重了,可能需要立即处理 Fatal : 致命的 Debug : 调试

    2024年01月22日
    浏览(36)
  • C语言(第三十二天)

    1. 递归是什么? 递归是学习C语言函数绕不开的一个话题,那什么是递归呢? 递归其实是一种解决问题的方法,在C语言中,递归就是函数自己调用自己。 写一个史上最简单的C语言递归代码: 上述就是一个简单的递归程序,只不过上面的递归只是为了演示递归的基本形式,不

    2024年02月11日
    浏览(24)
  • ISIS技术(第三十七课)

    官网地址: https://support.huawei.com/hedex/hdx.do?docid=EDOC1000105967id=ZH-CN_CONCEPT_0000001501534705 -直连路由 直接连接的路由,且配置了IP地址之后(在同一网段内),就是直连路由。 -非直连路由 -静态路由

    2024年02月13日
    浏览(27)
  • 第三十二章:MySQL事务日志

    事物有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事物的隔离性有锁机制实现。 而事物的原子性、一致性和持久性由事物的 redo 日志和 undo 日志来保证。 REDO LOG 称为重做日志,提供再写入操作,恢复提交事物修改的页操作

    2024年02月15日
    浏览(29)
  • 第三十四课.模糊神经网络

    在本篇内容中,我们将了解模糊神经网络(Fuzzy Neural Network),在此之前,先了解模糊理论。现实世界总是充满不确定性。因此,在建模系统的时候,我们需要考虑这种不确定性。我们之前其实已经在概率论中接触过这种不确定的建模形式。类似于概率论,Zadeh开发了一种不同

    2023年04月23日
    浏览(33)
  • 第三十一章 Unity骨骼动画

    关于骨骼动画的原理,我们这里不再详细介绍,有不清楚的可以回去看DirectX课程和3dsMAX课程。接下来,我们来讲解一下Unity的骨骼动画系统。Unity 的动画系统基于动画剪辑(Animation Clip)的概念,它的本质就是一小段动画,代表了一个游戏角色的动作,例如:走路,跑步,攻

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包