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可以解释为受管理的…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
微服务通信安全:深入解析mTLS的原理与实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引言:微服务时代的通信安全挑战 随着云原生和微服务架构的普及,服务间的通信安全成为系统设计的核心议题。传统的单体架构中&…...
