ELK日志管理与应用

目录

一.ELK收集nginx日志

二.收集tomcat日志

三.Filebeat 


一.ELK收集nginx日志

1.搭建好ELK+logstash+kibana架构

2.关闭防火墙和selinux

systemctl stop firewalld
setenforce 0

3.安装nginx

[root@localhost ~]# yum install  epel-release.noarch -y 
[root@localhost ~]# yum install nginx -y

4.修改配置文件

修改nginx配置文件将nginx日志格式改为json格式

[root@localhost ~]# vim /etc/nginx/nginx.conf
http {
# 添加在 http  语句块中
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';

access_log  /var/log/nginx/access.log  access_json;'"status":"$status"}';
#修改默认  日志格式
systemctl  restart  nginx

5.添加 logstash 配置文件

[root@localhost ~]# vim /etc/logstash/conf.d/nginx-log.conf 

input{
   file {
    path =>  "/var/log/nginx/access.log"
    type =>  "nginx"
    start_position => "beginning"
    stat_interval => "3"
    codec =>  "json"
     }
}

output {
   elasticsearch  {
        hosts => [ "192.168.240.11:9200", "192.168.240.12:9200"]
        index => "nginx-%{+YYYY.MM.dd}"
     }
}

6.执行配置文件

logstash -f  /etc/logstash/conf.d/nginx-log.conf

二.收集tomcat日志

1.安装tomcat 服务

#!/bin/bash
#安装jdk
install_jdk () {
if [ -e jdk-8u201-linux-x64.rpm ]
then
rpm -ivh jdk-8u201-linux-x64.rpm  &> /dev/null
   if  [ $? -eq 0 ]
   then
   echo  -e "\E[1;32m jdk 安装成功 \E[0m"
   else
   echo -e "\E[1;31m jdk 安装失败 \E[0m"
   fi
else
echo "无jdk包"
fi
}

#修改环境变量 

bl () {
echo  "
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export CLASSPATH=\$JAVA_HOME/lib/tools.jar:\$JAVA_HOME/lib/dt.jar
export PATH=\$JAVA_HOME/bin:\$PATH"  >> /etc/profile

source  /etc/profile
}

install_jdk

bl

java -version


if [  -e   apache-tomcat-9.0.16.tar.gz ]
then 
tar zxvf apache-tomcat-9.0.16.tar.gz  &>/dev/null
cp -r apache-tomcat-9.0.16 /usr/local/tomcat  
useradd -s /sbin/nologin tomcat      
chown tomcat:tomcat /usr/local/tomcat/ -R

cat > /usr/lib/systemd/system/tomcat.service <<EOF
[Unit]
Description=Tomcat
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat

[Install]
WantedBy=multi-user.target

EOF


systemctl daemon-reload
systemctl start tomcat

if systemctl  status tomcat &>/dev/null 
then
echo  -e "\E[1;32m tomcat 启动成功 \E[0m"
else
echo -e "\E[1;31m tomcat 启动失败 \E[0m"
fi

else
echo  "无tomcat  安装包"
fi

ln -s /usr/local/tomcat/bin/*     /usr/bin

2. 修改tomcat 配置文件

[root@localhost data]# vim /usr/local/tomcat/conf/server.xml 
# 最后一行

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="tomcat_access_log" suffix=".log"
               pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;method&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;AgentVersion&quot;:&quot;%{User-Agent}i&quot;}"/>

directory="logs"    存放目录可以不改
prefix  改成  tomcat  开头
suffix  改成  log     结尾

3.重新启动tomcat服务,生成新的日志文件

tail -f  /usr/local/tomcat/logs/tomcat_access_log.2024-07-17.log

4.编辑tomcat日志的logstash配置文件

[root@localhost ~]# vim /etc/logstash/conf.d/tomcat.conf
input {
   file {
   path => "/usr/local/tomcat/logs/tomcat_access_log.*.log"
   type => "tomcat"
   start_position => "beginning"
   stat_interval => "3"
   codec =>  "json"
}}


output {
    elasticsearch {
    hosts => ["192.168.240.11:9200", "192.168.240.12:9200"]
    index => "tomcat-log-%{+YYYY.MM.dd}"
}}

5.给予tomcat日志文件可读权限,并执行logstash配置文件

chmod  +r  /usr/local/tomcat/logs/*

logstash -f /etc/logstash/conf.d/tomcat.conf

三.Filebeat 

Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中。

filebeat 结合 logstash 带来好处: 1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力 2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取 3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件 4)使用条件数据流逻辑组成更复杂的处理管道

●缓存/消息队列(redis、kafka、RabbitMQ等):可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦。

Fliebeat+ELK部署

1.安装Filebeat

#上传软件包 filebeat-6.7.2-linux-x86_64.tar.gz 到/opt目录
tar zxvf filebeat-6.7.2-linux-x86_64.tar.gz
mv filebeat-6.7.2-linux-x86_64/ /usr/local/filebeat

2.修改配置文件

[root@apache opt]# cd /usr/local/filebeat/
[root@apache filebeat]# vim filebeat.yml
enabled: ture
27   paths:
28     - /var/log/nginx/access.log
30   tags: ["filebeat"]
31   fields:
32      service_name: nginx
33      log_type: access
34      from: 192.168.240.13
注释以下行
151 #output.elasticsearch:
152   # Array of hosts to connect to.
153  # hosts: ["localhost:9200"]

164 output.logstash:
165   # The Logstash hosts
166   hosts: ["192.168.240.13:5044"]


filebeat.inputs:
- type: log         #指定 log 类型,从日志文件中读取消息
  enabled: true
  paths:
    - /var/log/messages       #指定监控的日志文件
    - /var/log/*.log
  tags: ["sys"]		#设置索引标签   这两行注意对齐否则启动不了
  fields:           #可以使用 fields 配置选项设置一些参数字段添加到 output 中
    service_name: filebeat
    log_type: syslog
    from: 192.168.80.13
    
--------------Elasticsearch output-------------------
(全部注释掉)

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

3.启动配置文件

nohup ./filebeat -e -c filebeat.yml > filebeat.out &
#-e:输出到标准输出,禁用syslog/文件输出
#-c:指定配置文件
#nohup:在系统后台不挂断地运行命令,退出终端不会影响程序的运行

4.对接logstash

cd /etc/logstash/conf.d
vim filebeat.conf
input{
   beats { port => "5044"}
}
output {
   elasticsearch  {
        hosts => [ "192.168.240.11:9200", "192.168.240.12:9200"]
        index => "system-%{+YYYY.MM.dd}"
     }

   stdout  {
     codec => rubydebug
    }
}

#启动 logstash
logstash -f filebeat.conf -t  检查语法
浏览器访问 http://192.168.240.13:5601 登录 Kibana
logstash -f filebeat.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/842839.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

因果推断 | 双重机器学习(DML)算法原理和实例应用

文章目录 1 引言2 DML算法原理2.1 问题阐述2.2 DML算法 3 DML代码实现3.1 策略变量为0/1变量3.2 策略变量为连续变量 4 总结5 相关阅读 1 引言 小伙伴们&#xff0c;好久不见呀。 距离上次更新已经过去了一个半月&#xff0c;上次发文章时还信誓旦旦地表达自己后续目标是3周更…

elementUI在手机端使用遇到的问题总结

之前的博客有写过用vue2elementUI封装手机端选择器picker组件&#xff0c;支持单选、多选、远程搜索多选&#xff0c;最终真机调试的时候发现有很多细节样式需要调整。此篇博客记录下我调试过程中遇到的问题和解决方法。 一、手机真机怎么连电脑本地代码调试&#xff1f; 1.确…

Spring通过工厂方法进行配置

在Spring的世界中&#xff0c; 我们通常会利用 xml配置文件 或者 annotation注解方式来配置bean实例&#xff01; 在第一种利用 xml配置文件 方式中&#xff0c; 还包括如下三小类 反射模式&#xff08;我们前面的所有配置都是这种模式&#xff09;工厂方法模式Factory Bean模…

linux shell脚本编程(分支语句、循环语句)

一、分支语句 1、语法结构 : if 表达式 then 命令表 fi 如果表达式为真 , 则执行命令表中的命令 ; 否则退出 if 语句 , 即执行 fi 后面的语句。 if 和 fi 是条件语句的语句括号 , 必须成对使用 ;命令表中的命令可以是一条 , 也可以是若干条。 2、语法结构为 : if 表达式 t…

CSS3实现提示工具的渐入渐出效果及CSS3动画简介

上一篇文章用CSS3实现了一个提示工具&#xff0c;本文介绍如何利用CSS3实现提示工具以渐入的方式呈现&#xff0c;以渐出的方式消失。 CSS3主要可以通过两个样式来实现动画效果&#xff1a;animation和transition。 其中&#xff0c;animation需要自己定义一组关键帧从而实现…

vue使用x6画流程图,简单使用

官网 https://x6.antv.antgroup.com/tutorial/getting-started 安装 npm install antv/x6 --save 使用 <template><div>3333<div id"container" style"width: 800px;height: 800px;"></div></div> </template> <…

详细分析Springboot自定义启动界面(附Demo)

目录 前言1. banner.text1.1 配置文件关闭1.2 启动类关闭1.3 命令行关闭 2. 自定义Banner类3. 自动配置类4. 总结 前言 实现自定义启动动画是一项有趣的任务&#xff0c;虽然Spring Boot本身不提供内置的动画功能&#xff0c;但可以通过一些技巧来实现 以下主要以Demo的形式展…

Linux系统学习日记——vim操作手册

Vim编辑器是linux下的一个命令行编辑器&#xff0c;类似于我们windows下的记事本。 目录 打开文件 编辑 保存退出 打开文件 打开 hello.c不存在也可以打开&#xff0c;保存时vim会自动创建。 效果 Vim打开时&#xff0c;处于命令模式&#xff0c;即执行命令的模式&#x…

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块&#xff0c;只能说每个人画都有自己的理由&#xff1a; 电源&#xff1a;从外部接入电源&#xff0c;5V接到中间&#xff0c;向上变成4V供给无线&#xff0c;向下变成3V供给下面的接口&#xff08;也刻意放…

分布式搜索引擎ES-Elasticsearch进阶

1.head与postman基于索引的操作 引入概念&#xff1a; 集群健康&#xff1a; green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行&#xff0c;但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…

dd命令参数

GPT-4 (OpenAI) dd 是一个用于在 Unix 和 Unix 类操作系统中转换和复制文件的命令行工具。虽然它的名字听起来可能很简单&#xff0c;但是 dd 拥有很多功能强大的选项。下面列出了一些常见的 dd 参数&#xff08;选项&#xff09;&#xff1a; 1. if<文件名>&#xff…

mysql存储引擎和备份

索引 事务 存储引擎 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储引擎。存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实际上操作的&#xff0c;执行的就是数据的读写I/O。…

【ARM】MDK-解决CMSIS_DAP.DLL missing报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录解决CMSIS_DAP.DLL missing的报错情况&#xff0c;对应相关报错信息&#xff0c;供后续客户参考&#xff0c;快速解决客户问题。 2、 问题场景 客户进行硬件调试时&#xff0c;发现Target设置内有CMSIS_DAP.DL…

趣谈linux操作系统 9 网络系统-读书笔记

文章目录 网络协议栈基础知识回顾网络分层网络分层的目的各层作用简介延伸-ip地址,有类,无类,cidr socket实现分析tcp/udp回顾socket编程回顾TCP编程回顾UDP编程回顾差异 socket相关接口实现浅析sokcet实现解析创建socket的三个参数socket函数定义及其参数创建socket结构体关联…

StarRocks on AWS Graviton3,实现 50% 以上性价比提升

在数据时代&#xff0c;企业拥有前所未有的大量数据资产&#xff0c;但如何从海量数据中发掘价值成为挑战。数据分析凭借强大的分析能力&#xff0c;可从不同维度挖掘数据中蕴含的见解和规律&#xff0c;为企业战略决策提供依据。数据分析在营销、风险管控、产品优化等领域发挥…

8、添加第三方包

目录 1、安装Django Debug Toolbar Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包&#xff0c;可以用来快速扩展应用程序的功能集 1、安装Django Debug Toolbar Django Debug Toolbar位于名列前三的第三方包之一 这是一个用于调试Debug Web应用程序的有…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&…

多口适配器,给您的生活增添便利

随着科技的快速发展&#xff0c;我们的生活已离不开各种各样的电子设备&#xff0c;智能手机、平板电脑、智能手表、无线耳机……它们共同构建了我们丰富多彩的数字生活。然而&#xff0c;面对众多设备的充电需求&#xff0c;传统的单一充电口已难以满足现代人的使用习惯。在这…

完整创建一个vite前端项目

目录 1.先创建一个vite项目 2.下载第三方依赖 ① 安装路由vue-router ② 安装vuex全局数据管理 ③ 安装element-plus ④ 安装element-plus图标 ⑤ 安装axios发送请求 ⑥ 完整main.js代码模板 3.开发组件 4.登陆页面开发用例 5. 完整项目代码 废话少说&#xff0c;直接…

DDei在线设计器-HTML渲染

Html渲染 HtmlViewer插件通过将一个外部DIV附着在图形控件上&#xff0c;从而改变原有图形的显示方式。允许使用者自己定义HTML通过HTML元素。本示例演示了通过Html来扩展渲染图形&#xff0c;从而获得更加丰富的图形展现。 通常情况下&#xff0c;我们创建的图形控件&#xff…