ELK-日志服务【redis-配置使用】

2023-11-01

目录

环境

【1】redis配置

【2】filebeat配置

【3】对接logstash配置

【4】验证

【5】安全配置:第一种:kibana-nginx访问控制

【6】第二种:在ES-主节点-配置TLS

【7】kibana配置密码

【8】logstash添加用户密码


环境

es-01,kibana

10.0.0.21

es-02

10.0.0.22

es-03

10.0.0.23

filebeat,nginx

10.0.0.25

logstash

10.0.0.26

redis

10.0.0.27

【1】redis配置

[root@redis ~]# vim /etc/redis.conf 
.....
bind 0.0.0.0
.....
requirepass 111
.....

【2】filebeat配置

[root@filebeat ~]# vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  tags: ["access"]

- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tags: ["error"]

output.redis:
  hosts: ["10.0.0.27:6379"]
  password: "111"
  db: 0
  timeout: 5
  keys:
    - key: "filebeat-nginx-access"
      when.contains:
        tags: "access"
    - key: "filebeat-nginx-error"
      when.contains:
        tags: "error"

[root@filebeat ~]# systemctl restart filebeat.service

## 验证redis是否有数据写入,查看key的长度
[root@redis ~]# redis-cli
127.0.0.1:6379> auth 111
OK
127.0.0.1:6379> keys *
1) "filebeat-nginx-access"
2) "filebeat-nginx-error"
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> LLEN filebeat-access
(integer) 19
127.0.0.1:6379> LLEN filebeat-error
(integer) 15
127.0.0.1:6379>

【3】对接logstash配置

[root@logstash ~]# cat /etc/logstash/conf.d/file-redis-log.conf 
input {
  redis {
    host => "10.0.0.27"
    password => "111"
    db => "0"
    data_type => "list"
    key => "filebeat-access"
  }
  redis {
    host => "10.0.0.27"
    password => "111"
    db => "0"
    data_type => "list"
    key => "filebeat-error"
  }
}
 
filter {
    if "access" in [tags][0] {
        grok {
          match => { 
            "message" => "%{COMBINEDAPACHELOG}"
          }
        }
        
        geoip {
            source => "clientip"
        }
        
        date {
            match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
            target => "@timestamp"
            timezone => "Asia/Shanghai"
        }

        useragent {
            source => "agent"
            target => "useragent"
        }
        
        mutate {
            convert => ["bytes","integer"]
            convert => ["response_time", "float"]
            convert => ["upstream_response_time", "float"]
            remove_field => ["message"]
            add_field => { "target_index" => "app-logstash-nginx-access-%{+YYYY.MM.dd}" }	   
      }
 
        # 提取 referrer 具体的域名 /^"http/
        if [referrer] =~ /^"http/ {
            grok {
                match => { "referrer" => '%{URIPROTO}://%{URIHOST:referrer_host}' }
            }
        }
    
        # 提取用户请求资源类型以及资源 ID 编号
        if "test.com" in [referrer_host] {
            grok {
                match => { "referrer" => '%{URIPROTO}://%{URIHOST}/(%{NOTSPACE:test_type}/%{NOTSPACE:test_res_id})?' }
            }
        }
    }
 
    else if "error" in [tags][0] {
        date {
            match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
                target => "@timestamp"
                timezone => "Asia/Shanghai"
        }
        mutate {
            add_field => { "target_index" => "app-logstash-nginx-error-%{+YYYY.MM.dd}" }
        }
    }
}
 
output {
    elasticsearch {
        hosts => ["10.0.0.21:9200","10.0.0.22:9200","10.0.0.23:9200"]
        index => "%{[target_index]}"
        template_overwrite => true
    }
}

[root@logstash ~]# /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/file-redis-log.conf -r

【4】验证

【5】安全配置:第一种:kibana-nginx访问控制

[root@es-01 ~]# yum -y install httpd-tools.x86_64
[root@es-01 ~]# htpasswd -c -b /etc/nginx/basic_passwd kibana 123123
Adding password for user kibana
[root@es-01 ~]# cat /etc/nginx/basic_passwd 
kibana:$apr1$SASZLDcF$mHc2stQeQOCYXeapYhMj7/

[root@es-01 ~]# vim /etc/nginx/conf.d/kibana.conf
server {
  listen 80;
  server_name nginx.kibana.org;
  location / {
     proxy_pass http://127.0.0.1:5601$request_uri;
     auth_basic "请输入用户名、密码";
     auth_basic_user_file /etc/nginx/basic_passwd; 
  }
}

[root@es-01 ~]# systemctl start nginx

【6】第二种:在ES-主节点-配置TLS

## 在主节点配置TLS
[root@es-01 ~]# /usr/share/elasticsearch/bin/elasticsearch-certutil \    
> cert -out /etc/elasticsearch/elasticsearch-certificates.p12 -pass ""

[root@es-01 ~]# chmod 660 /etc/elasticsearch/elasticsearch-certificates.p12 

## 编辑配置文件,添加以下内容,所有节点都需要添加
[root@es-01 ~]# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elasticsearch-certificates.p12
xpack.security.transport.ssl.truststore.path: elasticsearch-certificates.p12

[root@es-02 ~]# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elasticsearch-certificates.p12
xpack.security.transport.ssl.truststore.path: elasticsearch-certificates.p12

[root@es-03 ~]# vim /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elasticsearch-certificates.p12
xpack.security.transport.ssl.truststore.path: elasticsearch-certificates.p12

## 将TLS证书拷贝到所有节点
[root@es-01 ~]# scp -rp /etc/elasticsearch/elasticsearch-certificates.p12 root@10.0.0.22:/etc/elasticsearch/
[root@es-01 ~]# scp -rp /etc/elasticsearch/elasticsearch-certificates.p12 root@10.0.0.23:/etc/elasticsearch/

## 重新启动所有节点
[root@es-01 ~]# systemctl restart elasticsearch

## 主节点运行后,集群配置密码,auto随机密码,interactive手动
[root@es-01 ~]# /usr/share/elasticsearch/bin/elasticsearch-setup-passwords auto
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = IFYVDU9pa0BaYqn8bFdi

Changed password for user kibana
PASSWORD kibana = 3S32IGJTj9bpgIy8q4bP

Changed password for user logstash_system
PASSWORD logstash_system = EbaDFZhIMqNMgtMWaBFY

Changed password for user beats_system
PASSWORD beats_system = hFivaRmv8BUGxr11vkRM

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 68xmYgepf2L40Zr5HPLI

Changed password for user elastic
PASSWORD elastic = PpCC9KV8FnoDepE7DYZU

[root@es-01 ~]# 

【7】kibana配置密码

[root@es-01 ~]# vim /etc/kibana/kibana.yml
......
elasticsearch.username: "kibana"
elasticsearch.password: "vERKRjujB5kfukYCT77w"

[root@es-01 ~]# systemctl restart kibana

【8】logstash添加用户密码

 

[root@logstash ~]# cat /etc/logstash/conf.d/file-redis-log.conf 
input {
  redis {
    host => "10.0.0.27"
    password => "111"
    db => "0"
    data_type => "list"
    key => "filebeat-access"
  }
  redis {
    host => "10.0.0.27"
    password => "111"
    db => "0"
    data_type => "list"
    key => "filebeat-error"
  }
}
 
filter {
    if "access" in [tags][0] {
        grok {
          match => { 
            "message" => "%{COMBINEDAPACHELOG}"
          }
        }
        
        geoip {
            source => "clientip"
        }
        
        date {
            match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
            target => "@timestamp"
            timezone => "Asia/Shanghai"
        }

        useragent {
            source => "useragent"
            target => "useragent"
        }
        
        mutate {
            convert => ["bytes","integer"]
            convert => ["response_time", "float"]
            convert => ["upstream_response_time", "float"]
            remove_field => ["message"]
            add_field => { "target_index" => "app-logstash-nginx-access-%{+YYYY.MM.dd}" }	   
      }
 
        # 提取 referrer 具体的域名 /^"http/
        if [referrer] =~ /^"http/ {
            grok {
                match => { "referrer" => '%{URIPROTO}://%{URIHOST:referrer_host}' }
            }
        }
    
        # 提取用户请求资源类型以及资源 ID 编号
        if "test.com" in [referrer_host] {
            grok {
                match => { "referrer" => '%{URIPROTO}://%{URIHOST}/(%{NOTSPACE:test_type}/%{NOTSPACE:test_res_id})?' }
            }
        }
    }
 
    else if "error" in [tags][0] {
        date {
            match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
                target => "@timestamp"
                timezone => "Asia/Shanghai"
        }
        mutate {
            add_field => { "target_index" => "app-logstash-nginx-error-%{+YYYY.MM.dd}" }
        }
    }
}
 
output {
    elasticsearch {
        hosts => ["10.0.0.21:9200","10.0.0.22:9200","10.0.0.23:9200"]
        user => "logstash_push_es"
        password => "111111"
        index => "%{[target_index]}"
        template_overwrite => true
    }
  stdout {
    codec => rubydebug
  }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK-日志服务【redis-配置使用】 的相关文章

  • ELK技术栈实践(一)

    通常 日志被分散的储存不同的设备上 如果你管理数十上百台服务器 你还在使用依次登录每台机器的传统方法查阅日志 这样是不是感觉很繁琐和效率低下 当务之急我们使用集中化的日志管理 例如 开源的syslog 将所有服务器上的日志收集汇总 集中化管
  • elasticsearch启动报错

    系统 操作centos7 虚拟机 bin elasticsearch 启动报错 es1 es1 software elasticsearch 6 3 1 bin elasticsearch Exception in thread main
  • ES学习之分片路由

    本文主要内容 1 路由一个文档到一个分片 2 新建 索引和删除请求 3 取回单个文档 4 局部单个文档 5 多文档模式 6 理解一下ES深度分页 from size 的劣势 路由一个文档到一个分片 当索引一个文档的时候 文档会被存储到一个主
  • 7.4.3-elasticsearch索引字段类型参数

    fielddata 大多数字段默认情况下都会建立索引方便查询 但是针对排序 聚合以及脚本访问字段值则需要另外的访问方式 查询操作需要回答 哪些doc包含查询的词 而排序和聚合则需要回答 doc中该字段的值是多少 大多数字段可以通过文档索引在
  • 【elasticSearch系】3.完整搭建详尽版elk

    话不多说 我们先看下经典的elk 是由哪些组件搭建组合起来的 elasticSearch和kibana搭建 可以查看之前我搭建elasticsearch和kibana 的这篇文章 logstash搭建 为了和之前我搭建elasticsear
  • ELK 企业级日志分析系统(理论加实战部署详解)

    ELK 企业级日志分析系统 理论加实战部署详解 文章目录 一 ELK 概述 1 1 ELK 的工作原理 二 部署详解 一 ELK Elasticsearch 集群部署 在Node1 Node2节点上操作 二 ELK Logstash 部署
  • ELK多个日志文件创建多个项目索引

    一 背景 我的elk架构是filebeat redis logstash elasticsearch kibana 我的想法是 我一台服务器多个程序有多个日志文件 在kibana里面想创建不通项目索引 指定不同日志文件 二 问题及解决思路
  • Docker部署ELK(配置密码登录)及Elastalert企业微信告警配置

    ELK部署记录 部署Elasticsearch Kibana Cerebro 通过docker进行部署 可以避免很多缺少依赖的问题 推荐使用centos7环境进行部署 请提前安装好docker服务 docker compose服务 先新建一
  • ELK 企业级日志分析系统 ELFK

    一 概述 ELK平台是一套完整的日志集中处理解决方案 将 ElasticSearch Logstash 和 Kiabana 三个开源工具配合使用 完成更强大的用户对日志的查询 排序 统计需求 使用ELK日志文件系统的原因 日志主要包括系统日
  • ELK日志分析--Filebeat

    ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块 Nginx 模块 重读日志文件 使用Processors 处理器 过滤和增强数据 1 ELK架构 2 Filebeat简介 可以使
  • java编写es搜索程序

    开发环境 java8 springboot pom文件导入依赖
  • ELK系列(四)、Logstash读取nginx日志写入ES中

    前面讲了ELK的部署以及Logstash的插件的安装方式 本篇就介绍一下如何使用Logstash读取nginx的日志 并写入ES中 通过Kibana分析 ELK系列 一 安装ElasticSearch Logstash Kibana Fil
  • elasticsearch 编写java程序报错Exception in thread "main" java.lang.NoClassDefFoundError: org/elasticsearch

    java程序启动报错 Exception in thread main java lang NoClassDefFoundError org elasticsearch plugins NetworkPlugin ERROR StatusL
  • node settings must not contain any index level settings

    本人安装的ES是7 6 1版本 报错意思为 节点设置不能包含任何索引级别设置 也就是说报错是因为 在elasticsearce yml文件中对索引进行了配置 应该是新版本不支持这样配置 删除相应的索引配置即可 index refresh i
  • Docker——搭建ELK

    安装Elasticsearch 1 拉取镜像 docker box home box docker pull elasticsearch 7 14 2 2 在宿主机准备配置文件 创建目录 docker box mkdir p server0
  • ELK日志分析系统原理与部署

    文章目录 一 ELK日志分析系统简介 1 1ELK日志分析系统组成 1 2日志处理步骤 二 三款软件各自概念 2 1Elasticsearch介绍 2 2Logstash介绍 2 3Kibana介绍 三 ELK日志分析系统部署 3 1实验环
  • ELK系列(二)、在Kibana中使用RESTful操作ES库

    上一篇讲了如何安装ELK ELK系列 一 安装ElasticSearch Logstash Kibana Filebeat v7 7 0 这篇介绍如何使用kibana连接ES并操作 先介绍一下ES和关系型数据库的概念对应 在ES7以前的版本
  • Kibana 7.X 导出CSV报告

    背景 由于有时候需要基于日志做一些处理 由官网得知 ES7 3 0发布的新特性 从保存的搜索中导出CSV 我们的Kibana刚好是7 3 0 于是将自己的使用经验及解决的问题 分享给有需要的小伙伴 一 使用步骤 1 1 保存搜索 Disco
  • Centos7安装elasticsearch及kibana并进行安全设置

    Centos7安装elasticsearch及kibana并进行安全设置 每天多学一点点 话不多说 这就开始吧 文章目录 Centos7安装elasticsearch及kibana并进行安全设置 1 前言 2 环境要求 3 安装elasti
  • ELK(六)ElasticSearch快速入门_中文分词

    分词 分词就是指将一个文本转化成一系列单词的过程 也叫文本分析 在ElasticSearch中称之为Analysis 举例 我是中国人 gt 我 是 中国人 分词API 指定分词器进行分词 POST analyze analyzer sta

随机推荐

  • Mybatis动态sql条件查询、判断空值和空字符串

    转自 Mybatis动态sql条件查询 判断空值和空字符串 下文笔者讲述mybatis动态sql条件查询的使用简介说明 如下所示 例 Select
  • 极氪汽车的云资源治理细探

    前言 2021 年 极氪 001 迅速崭露头角 仅用 110 天便创下了首款车型交付量 最快破万 的纪录 2022 年 11 月 极氪 009 在短短 76 天内便率先完成了首批交付 刷新了中国豪华纯电品牌交付速度的纪录 2023 年 6
  • SpringMvc 实现上传zip文件解压

    去掉了一些敏感数据 仅供参考 import java io File import java io FileInputStream import java io IOException import java io InputStream
  • 多益前端笔试题

    1 svg画四边形 四个点的坐标分别是 220 100 300 210 170 250 123 234
  • 《Linux运维实战:Centos7.6一键离线部署mysql8.0.24》

    系列文章目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 例如 第一章 Python 机器学习入门之pandas的使用 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一
  • c++开篇——自引用指针this

    c 中 有一个特别的指针this 也叫自引用指针 这个指针的巧妙之处在于它永远指向的是当前对象 由此便可以访问当前对象的所有成员 这样一来许多问题就得到了巧妙的解决 注意 this 是一个指针 要用 gt 来访问成员变量或成员函数 当调用到
  • Java实现多线程有几种方式(满分回答)

    目录 JDK8 创建的线程的两种方式 orcle文档解释 方式一 继承Thread类 方式二 实现Runnable接口 同时用两种的情况 其他间接创建方式 Callable接口 线程池 JDK8 创建的线程的两种方式 orcle文档解释 o
  • allegro界面简单介绍一

    1 view界面 2 Visibility Views 显示图层选择 Planes 平面层 Plan 规划布线 Etch 铜皮 走线 Via 过孔 Pin 焊盘pin脚 Drc 错误标记 All 全部显示 3 如何打开层设置 4 设置不同的
  • BootLoader简介——linux内核的引导

    1 BootLoader 在CPU上电启动时 一般连内存控制器都没有初始化过 根本无法在主存中运行程序 更不可能处在Linux内核启动环境中 为了初始化CPU及其他外设 使得Linux内核可以在系统主存中运行 并让系统符合Lintix内核启
  • Python:利用cv2模块识别手势

    简介 OpenCV是一个基于BSD许可 开源 发行的跨平台计算机视觉库 可以运行在Linux Windows Android和Mac OS操作系统上 它轻量级而且高效 由一系列 C 函数和少量 C 类构成 同时提供了Python Ruby
  • Java 依据文件名后缀,获取Content-Type/Mime类型

    枚举类代码MimeTypeEnum import org apache commons lang3 StringUtils import lombok Getter 依据文件后缀名返回ContentType author zzg Gette
  • Java基础--接口(Interface)

    有时必须从几个类中派生出一个子类 继承它们所有的属性和方法 但是 Java不支持多重继承 有个接口 就可以得到多重继承的效果 接口 interface 是抽象方法和常量值的定义的集合 从本质上讲 接口是一种特殊的抽象类 这种抽象类中只包含常
  • 结构方程模型

    结构方程模型 SEM 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 结构方程模型 SEM 前言 一 什么是结构方程模型 二 在LISREL中使用结构方程模型 1 LISREL介绍 2 LISREL操作 总结 前
  • 2259. 移除指定数字得到的最大结果、字符串

    版本1 class Solution public string removeDigit string number char digit 记录字符出现的位置 int pos0 1 获取第一次字符出现的位置 int i 0 for i lt
  • Keil MDK error :L6031U

    之前编译都是OK 早上重新编译遇到这个样的错误 ASM 2 axf error L6031U Could not open scatter description file ASM 2 sct No such file or directo
  • idea中解决spring配置文件命名空间(namespace)出现红色问题

    在配置dubbo项目时 开始时经常出现dubbo错误 如下图 修改方式已经出现在提示中了 具体这个更改 1 解压dubbo 2 5 4 jar这样的包 具体看你使用的版本 选择 META INF文件夹 解压要到你的目录下 见下图 2 ide
  • imaplib.abort: socket error:EOF 解决方法

    解决方法 设置重复登录 def login self serv None while True try serv imaplib IMAP4 SSL self imap server 993 r d serv login self user
  • ubuntu18安装caffe(CPU)

    1 前言 历时不知多少天 终于在自己电脑上配置好了caffe环境 2 所需环境 1 ubuntu18 04 2 python3 6 默认是只有3 6 3 安装 3 1切换清华源 cp etc apt sources list etc apt
  • chrome浏览器F12调式,修改替换js文件

    在F12模式下 有时可以直接修改js源码 Ctrl S 保存就可以了 但是有时这种方法会不起作用 这里介绍本地替换js的方式 案例 比如csdn想复制别人的一段文字并保留样式 但是字符长度大于140就不起作用了 1 通过右键定位需要修改的j
  • ELK-日志服务【redis-配置使用】

    目录 环境 1 redis配置 2 filebeat配置 3 对接logstash配置 4 验证 5 安全配置 第一种 kibana nginx访问控制 6 第二种 在ES 主节点 配置TLS 7 kibana配置密码 8 logstash