elk日志收集系统
目录
前言
一、概述
二、案例
(一)、环境配置
安装node1与node2节点的elasticsearch
node1的elasticsearch-head插件
(二)、node1服务器安装logstash
测试1: 标准输入与输出
测试2:使用rubydebug解码
测试3:输出到elasticsearch
(三)、node1节点安装kibana
(四)、企业案例
总结
前言
日志对于分析系统、应用的状态十分重要,但一般日志的量会比较大,并且比较分散。
如果管理的服务器或者程序比较少的情况我们还可以逐一登录到各个服务器去查看、分析。但如果服务器或者程序的数量比较多了之后这种方法就显得力不从心。基于此,一些集中式的日志系统也就应用而生。目前比较有名成熟的有,Splunk(商业)、FaceBook 的Scribe、Apache的Chukwa Cloudera的Fluentd、还有ELK等等。
一、概述
ELK由三个组件构成
| elasticsearch | 日志分析 |
| logstash | 日志收集 |
| kibana | 日志可视化 |
| elasticsearch | 是一种开源的日志收集、分析、存储程序 |
| 具有以下特点 | 分布式 |
| 零配置 | |
| 自动发现 | |
| 索引自动分片 | |
| 索引副本机制 | |
| Restful风格接口 | |
| 多数据源 | |
| 自动搜索负载 |
| logstash | 搜集、分析、过滤日志的工具 |
| 工作过程 | Inputs → Filters → Outputs |
| 输入-->过滤-->输出 |
一般工作方式为c/s架构,Client端安装在需要收集日志的服务器上,Server端负责将收到的各节点日志进行过滤、修改等操作,再一并发往Elasticsearch上去
kibana,日志可视化。
为Logstash和ElasticSearch在收集、存储的日志基础上进行分析时友好的Web界面,可以帮助汇总、分析和搜索重要数据日志。
二、案例
192.168.238.145(httpd)
192.168.238.146(node1)
192.168.238.147(node2)
注意:node服务器建议给4G内存4G处理器,否则elasticsearch可能服务端口启动异常,因为elasticsearch服务器会占用大量的内存,内存会不足。
安装好elasticsearch服务器后记得daemon-reload加载system的配置文件,否则可能导致服务访问异常,集群id不同,后续将无法操作。
node1与node2节点要有Java环境,Java -version查看版本(1.8.0即可),没有要安装Java环境
Yum install -y java-1.8.0-openjdk
(一)、环境配置
node1与node2修改主机名,本地host文件。
hostnamectl set-hostname node1
vim /etc/hosts
192.168.238.146 node1
192.168.238.147 node2
bash刷新
互相ping通测试通信
node1安装elasticsearch-head插件
tar xf node-v8.2.1.tar.gzcd node-v8.2.1./configure && make && make install
等待安装完毕即可(过程较长)
安装node1与node2节点的elasticsearch
rpm -ivh elasticsearch-5.5.0.rpmvim /etc/elasticsearch/elasticsearch.yml



network.host:也可以是本机IP
node2同此操作只需将node.name修改成node2
分别启动服务
systemctl start elasticsearch
查看端口是否启动
netstat -anput | grep :9200
查看节点信息
192.168.238.146:9200

192.168.238.147:9200

可以查看集群状态
192.168.238.146:9200/_cluster/health

Green 健康 yellow 警告 red 集群不可用,严重错误
node1的elasticsearch-head插件
tar xf phantomjs-2.1.1-linux-x86_64.tar.bz2cd phantomjs-2.1.1-linux-x86_64/bincp phantomjs /usr/local/bin
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
安装elasticsearch-head
tar xf elasticsearch-head.tar.gz
cd elasticsearch-head
npm install
npm run start &
要在当前目录下启动后台


访问192.168.238.146:9100进行连接

测试,在node1的终端中输入
curl -XPUT '192.168.238.146:9200/index-demo/test/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

刷新浏览器可以看到对应信息即可

(二)、node1服务器安装logstash
rpm -ivh logstash-5.5.1.rpm
systemctl start logstash.service


测试1: 标准输入与输出
logstash -e 'input{ stdin{} }output { stdout{} }'

测试2:使用rubydebug解码
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'


测试3:输出到elasticsearch
logstash -e 'input{ stdin{} }output{ elasticsearch{ hosts=>["192.168.238.146:9200"]} }'


查看结果: 192.168.238.146.9100(刷新)

logstash日志收集文件格式(默认存储在/etc/logstash/conf.d)
Logstash配置文件基本由三部分组成:input、output以及 filter(根据需要)。
标准的配置文件格式如下:
| input{...} | 输入 |
| filter {...} | 过滤 |
| output {...} | 输出 |
案例: 通过logstash收集系统信息日志

chmod o+r /var/log/messages
vim /etc/logstash/conf.d/system.conf(文件名自定义最好起通俗易懂的)
input {
file{
path =>"/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.238.146:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
重启日志服务: systemctl restart logstash


(三)、node1节点安装kibana
rpm -ivh kibana-5.5.1-x86_64.rpm
vim /etc/kibana/kibana.yml
修改配置


启动kibana
systemctl start kibana
访问kibana 192.168.238.146:5601
首次访问需要添加索引,我们添加前面已经添加过的索引:system-*,没有索引无法添加


(四)、企业案例
192.168.238.145(httpd)
收集httpd访问日志信息
在httpd服务器上安装logstash,参数上述安装过程,可以不进行测试
logstash在httpd服务器上作为agent(代理),不需要启动。
安装httpd,启动服务
编写httpd日志收集配置文件
vim /etc/logstash/conf.d/httpd.conf
input {
file{
path =>"/var/log/httpd/access_log"
type => "access"
start_position => "beginning"
}
}
output {
elasticsearch{
hosts =>["192.168.238.146:9200"]
index => "httpd-ok%{+YYYY.MM.dd}"
}
}
使用logstash命令导入配置
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/httpd.conf
等待显示成功,不做任何操作

访问192.168.238.146:9100查看新建的索引

使用kibana查看即可! 192.168.238.146:5601
查看时在mangement选项卡创建索引httpd_access-* 即可!



总结
内容不难,重点要先理解后才更好上手操作,注意事项尽量避免,多数是服务端口无法正常启动或服务启动后集群异常的问题。有兴趣的小伙伴可以去拓展下ELKK、ELFK、ELFKK、EFK等模式。
相关文章:
elk日志收集系统
目录 前言 一、概述 二、案例 (一)、环境配置 安装node1与node2节点的elasticsearch node1的elasticsearch-head插件 (二)、node1服务器安装logstash 测试1: 标准输入与输出 测试2:使用rubydebug解…...
perl 语言中 AUTOLOAD 的用法
这里的 AUTOLOAD可以理解为自动加载。具体来说就是,在正常情况下,我们不能调用一个尚未定义的函数(子例程)。不过,如果在未定义函数的包中有一个名为 AUTOLOAD的函数,那么对未定义函数的调用都会路由至这个…...
服务器放在香港好用吗?
相较于国内服务器,将网站托管在香港服务器上最直观的好处是备案层面上的。香港服务器上的网站无需备案,因此更无备案时限,购买之后即可使用。 带宽优势 香港服务器的带宽一般分为香港本地带宽和国际带宽、直连中国骨干网 CN2三种。香港…...
C++设计模式_01_设计模式简介(多态带来的便利;软件设计的目标:复用)
文章目录 本栏简介1. 什么是设计模式2. GOF 设计模式3. 从面向对象谈起4. 深入理解面向对象5. 软件设计固有的复杂性5.1 软件设计复杂性的根本原因5.2 如何解决复杂性 ? 6. 结构化 VS. 面向对象6.1 同一需求的分解写法6.1.1 Shape1.h6.1.2 MainForm1.cpp 6.2 同一需求的抽象的…...
Docker技术--WordPress博客系统部署初体验
如果使用的是传统的项目部署方式,你要部署WordPress博客系统,那么你需要装备一下的环境,才可以部署使用。 -1:操作系统linux -2:PHP5.6或者是更高版本环境 -3:MySQL数据环境 -4:Apache环境 但是如果使用Docker技术,那么就只需要进行如下的几行简单的指令: docker run …...
提高代码可读性和可维护性的命名建议
当进行接口自动化测试时,良好的命名可以提高代码的可读性和可维护性。以下是一些常用的命名建议: 变量和函数命名: 使用具有描述性的名称,清晰地表达变量或函数的用途和含义。使用小写字母和下划线来分隔单词,例如 log…...
Docker基础入门:Docker网络与微服务项目发布
Docker基础入门:Docker网络与微服务项目发布 一、前言二、Docker0理解2.1 ip a查看当前网络环境2.2 实战--启动一个tomact01容器(查看网络环境)2.3 实战--启动一个tomact02容器(查看网络环境)2.4 容器与容器之间的通信…...
Docker安装详细步骤
Docker安装详细步骤 1、安装环境准备 主机:192.168.40.5 zch01 设置主机名 # hostnamectl set-hostname zch01 && bash 配置hosts文件 [root ~]# vi /etc/hosts 添加如下内容: 192.168.40.5 zch01 关闭防火墙 [rootzch01 ~]# systemct…...
十六、pikachu之SSRF
文章目录 1、SSRF概述2、SSRF(URL)3、SSRF(file_get_content) 1、SSRF概述 SSRF(Server-Side Request Forgery:服务器端请求伪造):其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能&…...
最新PHP短网址生成系统/短链接生成系统/URL缩短器系统源码
全新PHP短网址系统URL缩短器平台,它使您可以轻松地缩短链接,根据受众群体的位置或平台来定位受众,并为缩短的链接提供分析见解。 系统使用了Laravel框架编写,前后台双语言使用,可以设置多域名,还可以开设套…...
漱玉平民大药房:多元化药店变革的前夜
作者 | 王聪彬 编辑 | 舞春秋 来源 | 至顶网 本文介绍了漱玉平民大药房在药品零售领域的数字化转型和发展历程。通过技术创新, 漱玉平民 建设了覆盖医药全生命周期的大健康生态圈,采用混合云架构和国产分布式数据库 TiDB,应对庞大的会员数据处…...
如何实现AI的矢量数据库
推荐:使用 NSDT场景编辑器 助你快速搭建3D应用场景 然而,人工智能模型有点像美食厨师。他们可以创造奇迹,但他们需要优质的成分。人工智能模型在大多数输入上都做得很好,但如果它们以最优化的格式接收输入,它们就会真正…...
Java与Modbus-TCP/IP网络通讯
1.需求样例 举例5:浮点数参数读取(读取温度测量值)查看参数列表,温度测量值地址为320,根据Modbus协议,读取参数地址转换为16进制为:00H A0H,读取长度为2个字:00H 02H。 …...
音视频 ffmpeg命令图片与视频互转
截取一张图片 ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.bmp -i 输入 -y 覆盖 -f 格式 image2 一种格式 -ss 起始值 -vframes 帧 如果大于1 那么 输出加%03d t…...
C++的基类和派生类构造函数
基类的成员函数可以被继承,可以通过派生类的对象访问,但这仅仅指的是普通的成员函数,类的构造函数不能被继承。构造函数不能被继承是有道理的,因为即使继承了,它的名字和派生类的名字也不一样,不能成为派生…...
C语言中对json格式数据的解析和封装
首先需要调库:#include <cJSON.h> Json的数据结构介绍: /* The cJSON structure: */ typedef struct cJSON { /*next/prev允许您遍历数组/对象链。或者,使用GetArraySize/GetArrayItem/GetObjectItem */ struct cJSON *next; struct c…...
RT-Thread自动初始化机制
自动初始化机制是指初始化函数不需要被显示调用,只需要在函数定义处通过宏定义的方式进行申明,就会在系统启动过程中被执行。 int rt_hw_usart_init(void) {rt_hw_serial_register(&serial1, "uart1",RT_DEVICE_FLAG_RDWR | RT_DEVICE_FL…...
在本地搭建Jellyfin影音服务器,支持公网远程访问影音库的方法分享
文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及,各种各样的使用需求也被开发出来&…...
强盛集团面试题实战(持续更新)
目录 第一章、面试题1.1)王:8月301.2)1.3) 第二章、2.1)2.2)2.3) 第三章、3.1)3.2)3.3) 第四章、4.1)4.2)4.3) 友情提醒:先…...
golang 协程的实现原理
核心概念 要理解协程的实现, 首先需要了解go中的三个非常重要的概念, 它们分别是G, M和P, 没有看过golang源代码的可能会对它们感到陌生, 这三项是协程最主要的组成部分, 它们在golang的源代码中无处不在. G (goroutine) G是goroutine的头文字, goroutine可以解释为受管理的…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
