应用日志集成到ElasticSearch

news/2024/7/7 5:47:51 标签: elasticsearch, java, docker

1、阿里云sls平台集成日志

阿里sls集成日志步骤

2、filebeat 收集到指定es

安装docker容器

Docker安装

拉取镜像:

docker pull elastic/filebeat:7.5.1

启动:

docker run -d --name=filebeat elastic/filebeat:7.5.1

拷贝容器中的数据文件到宿主机:

mkdir -p /data/elk7
docker cp filebeat:/usr/share/filebeat /data/elk7/

设置权限

chmod 777 -R /data/elk7/filebeat
#go-w: 这个命令表示去掉文件的“组”和“其他用户”的写权限。其中,
#g 代表组权限,o 代表其他用户权限,-w 表示去掉写权限。
chmod go-w /data/elk7/filebeat/filebeat.yml

配置filebeat

vim /data/elk7/filebeat/filebeat.yml

修改样例如下:

filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/*.log
    fields:
      AppId: "springbootadmin"
      ENV: "DEV"
    fields_under_root: true
    tags: ["服务ip地址自定义其他", "boot"]
    json.keys_under_root: true

  - type: log
    enabled: true
    paths:
      - /java/*.log
    fields:
      AppId: "live-admin"
      ENV: "DEV"
    fields_under_root: true
    tags: ["服务ip地址自定义其他", "live"]
    json.keys_under_root: true

processors:
  - timestamp:
      field: "time"
      timezone: "Asia/Shanghai"
      layouts:
        - "yyyy-MM-dd HH:mm:ss.SSS"

output.elasticsearch:
  hosts: 'es:9200'
  username: "elastic"
  password: "elastic"
  indices:
  
    - index: "spring-boot-admin-%{+yyyy.MM}"
      when.contains:
        tags: "boot"
    - index: "live-admin-%{+yyyy.MM}"
      when.contains:
        tags: "live"

setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 0

日志输入源

  • 使用 filebeat.inputs
    部分定义了两个日志输入源。每个输入源监视不同路径下的日志文件,并根据路径指定的类型和字段进行处理。其中,第一个输入源监视
    /var/log/.log 路径下的日志文件,用于收集 Spring Boot Admin 应用的日志;第二个输入源监视
    /java/
    .log 路径下的日志文件,用于收集 Live Admin 应用的日志。

日志标签:

  • 在每个输入源的 tags
    配置中,使用了一组自定义的标签。这些标签通常用于标识日志的来源或类型。在这个配置中,每个输入源都定义了自己的标签,以便后续根据标签将日志发送到不同的索引中。

Elasticsearch 输出

  • 在 output.elasticsearch 部分指定了 Elasticsearch
    的地址和认证信息,并配置了索引的模板。根据不同的标签,将日志发送到不同的索引中。在这个配置中,根据标签 “boot” 将 Spring
    Boot Admin 的日志发送到名为 spring-boot-admin-%{+yyyy.MM} 的索引中,根据标签 “live” 将
    Live Admin 的日志发送到名为 live-admin-%{+yyyy.MM} 的索引中。

Elasticsearch 索引设置

  • 在 setup.template.settings 部分配置了 Elasticsearch
    索引的一些设置,包括分片数和副本数。这些设置可以优化 Elasticsearch 索引的性能和可用性。

删除之前的容器:

docker rm -f filebeat

再重启启动:

docker run   --name=filebeat --restart=always \
 -v /data/elk7/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /var/log/springboot/:/var/log/springboot/ \
-v /data/log/live-admin/logs/:/var/log/live-admin/logs/ \
-d  elastic/filebeat:7.5.1

排查问题命令

docker logs filebeat

进入容器:

docker exec -it filebeat /bin/bash

docker exec -it filebeat /bin/sh

nginx的日志采集

如果要采集nginx的日志的话需要设置nginx日志格式

#修改nginx.conf,在http 、https中设置日志格式
#添加 log_format  main 
user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

worker_rlimit_nofile 10240;
events {
    worker_connections  10240;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    server_tokens off;
	
	proxy_hide_header X-Powered-By;
   	proxy_hide_header Server;

	log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    proxy_connect_timeout     30000;
    keepalive_timeout  30000;
    client_max_body_size 100m;
	client_header_buffer_size 512k;
	large_client_header_buffers 4 512k;


    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

在**filebeat.inputs:**新增一个log

- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  fields:
    AppId: "nginx"
    ENV: "DEV"
  fields_under_root: true
  tags: ["ip","nginx"]
  json.keys_under_root: true

在**indices:**下新增一个index

 - index: "nginx-%{+yyyy.MM}"
      when.contains:
        tags: "nginx"

设置命令行中执行 Nginx 相关的命令时不输入完整路径

export PATH=/usr/sbin:/usr/local/nginx/sbin:$PATH
  • /usr/sbin 目录通常包含系统管理和维护的命令,例如一些系统管理工具和服务程序的启动脚本等。
  • /usr/local/nginx/sbin 目录包含了 Nginx 服务器的可执行文件,包括启动 Nginx 的命令 nginx。

通过将这两个目录添加到 PATH 中,可以方便地在命令行中直接执行 nginx 命令来启动或管理 Nginx 服务器,而不必输入完整的路径。

再次删除容器重新启动,把nginx日志也挂在上去

docker run  --name=filebeat --restart=always \
-v /data/elk7/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /var/log/springboot/:/var/log/springboot/ \
-v /data/log/live-admin/logs/:/var/log/live-admin/logs/ \
-v /var/log/nginx/:/var/log/nginx/ \
-d  elastic/filebeat:7.5.1

http://www.niftyadmin.cn/n/5450279.html

相关文章

CTR之Session行为序列建模用户兴趣:DSIN

在前面的文章中,DIN模型 在用户行为序列建模中引入注意力机制来强调加权与target item相关的行为,以实现动态的兴趣表征;而DIEN模型 则在DIN的基础上加入时间性信息,使用注意力机制的GRU来挖掘用户兴趣的演变。 而今天的这篇文章…

802.1X网络访问控制协议

802.1X是一种由IEEE(电气和电子工程师协会)制定的网络访问控制协议,主要用于以太网和无线局域网(WLAN)中基于端口的网络接入控制。802.1X协议通过认证和授权机制,确保只有合法的用户和设备才能够接入网络&a…

Java中的DES和3DES加密算法详解

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 在信息安全领域,数据加密是保护敏感信息不被未授权访问的关键技术之一。Java作为一种广泛使用的编程语言,…

基于单片机的家庭烟雾报警系统

摘要:本文主要针对家庭等小型应用场所, 提出基于以单片机CC2530 作为控制器的智能烟雾报警系统,通过MQ-2 气体传感器来检测烟雾浓度,在单片机的A/D模块转化后,并配合蜂鸣元器件实现声音报警功能。 【关键词】烟雾报警 单片机 烟雾传感器 由于科技的发展以及各类家电走入…

MySQL数据库的下载及安装教程

MySQL是一个数据库管理系统,允许您管理关系数据库。它是Oracle支持的开源软件,本文介绍如何下载、安装和启动,便于新手快速启动学习之旅,具体如下: 一、下载MySQL 1.打开MySQL官网(https://www.mysql.com…

基于SpringBoot IP黑白名单的实现2

业务场景 IP黑白名单是网络安全管理中常见的策略工具,用于控制网络访问权限,根据业务场景的不同,其应用范围广泛,以下是一些典型业务场景: 服务器安全防护: 黑名单:可以用来阻止已知的恶意IP地…

Elasticsearch:使用在本地计算机上运行的 LLM 以及 Ollama 和 Langchain 构建 RAG 应用程序

无需 GPU 的隐私保护 LLM。在本博客中,我将演示使用不同的工具 Ollama 构建的 RAG 应用程序。 与本文相关的所有源代码均已发布在 github上。 请克隆存储库以跟随文章操作。我们可以通过如下的方式来克隆: git clone https://github.com/liu-xiao-guo/o…

Java基础知识总结(19)

红黑树 1.节点颜色有红色和黑色 2.根节点必为黑色 【2-3树中如果根节点为2节点,那么它本来就对应红黑树中黑节点;如果根节点为3节点,也可以用黑色节点表示较大的那个元素,然后较小的元素作为左倾红节点存在于红黑树中】 3.所有…