ELk(七)—部署Nginx

目录

部署Nginx

下面是nginx的安装脚本,里面的参数可以根据实际需要进行修改。

复制代码
#!/bin/bash

#新建一个文件夹用来存放下载的nginx源码包

mkdir -p /opt/nginx
cd /opt/nginx

#解决依赖关系
yum install gcc openssl openssl-devel pcre pcre-devel automake make wget -y

#新建用户
useradd -s /sbin/nologin yandonghao

#下载 nginx
wget http://nginx.org/download/nginx-1.25.0.tar.gz

#解压nginx 源码包

tar -zvxf nginx-1.25.0.tar.gz


#编译前的配置,创建Makefile文件。

cd /opt/nginx/nginx-1.25.0

./configure --prefix=/usr/local/ydhnginx --user=yandonghao --with-http_ssl_module --with-http_v2_module --with-threads --with-http_stub_status_module --with-stream

#编译,开启2个进程同时编译,make其实就是安装Makefile的配置去编译程序成二进制文件,二进制文件就是执行可以运行的程序。
make -j 2

#安装: 将编译好的二进制代码文件复制到指定的安装路径目录下
make install

# 启动nginx
/usr/local/ydhnginx/sbin/nginx

#修改PATH变量
#临时修改
PATH=$PAth:/usr/local/ydhnginx/sbin
#永久修改
echo "PATH=$PATH:/usr/local/ydhnginx/sbin" >>/root/.bashrc


# 设置nginx的开机启动
echo "/usr/local/ydhnginx/sbin/nginx" >> /etc/rc.local
/usr/bin/chmod +x /etc/rc.d/rc.local

# 关闭firewalld防火墙
/usr/bin/systemctl stop firewalld
/usr/bin/systemctl disable firewalld

# 临时关闭SELinux
/usr/sbin/setenforce 0

# 永久关闭SELinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /usr/bin/etc/selinux/config

filebeat启动Nginx模块

创建一个 nginx-log.yml配置文件,启动nginx的模块功能

复制代码
./filebeat modules enable nginx

nginx-log.yml配置文件

复制代码
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /usr/local/ydhnginx/logs/*.log #nginx日志存放路径
  tags: ["nginx"]
  fields_under_root: false 
setup.template.settings:
  index.number_of_shards: 1
output.elasticsearch:
  hosts: ["192.168.150.190:9200","192.168.150.189:9200","192.168.150.188:9200"]

可以看到,在message中已经获取到了nginx的日志,但是,内容并没有经过处理,只是读取到原数据。

Module

​ filebeat自带了需要许多模块,但是这些模块都是默认不开启的,之前我就把nginx的模块打开了用来收集nginx的日志。

可以用下面的命令查看有哪些模块,其中启动和未启动的模块也都一目了然。

复制代码
./filebeat modules list
复制代码
#启动
./filebeat modules enable nginx 
#禁用
./filebeat modules disable nginx 

其他模块的启动和禁用都是这样操作的。
下面两个目录都是和模块有关的。

对nginx模块配置进行修改

想实现日志数据的读取以及处理都是自己手动配置的,我们可以进行"modules.d"修改nginx的配置文件了。

复制代码
vim nginx.yml		

修改为:

复制代码
# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.9/filebeat-module-nginx.html

- module: nginx
  # Access logs
  access:
    enabled: true
    # 添加日志文件
    var.paths: ["/usr/local/ydhnginx/logs/access.log*"]

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:

  # Error logs
  error:
    enabled: true
    var.paths: ["/usr/local/nginx1/logs/error.log*"]

修改nginx-log.yml配置文件

我们需要修改刚刚的nginx-log.yml文件,然后添加到我们的module

复制代码
filebeat.inputs:
setup.template.settings:
  index.number_of_shards: 1
output.elasticsearch:
  hosts: ["192.168.150.190:9200","192.168.150.189:9200","192.168.150.188:9200"]
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

这个时候我们启动filebeat

复制代码
./filebeat -e -c nginx-log.yml

会出现一下的错误;

Filebeat 遇到的问题是无法找到 Ingest Node,导致无法执行批量索引操作。
在 Elasticsearch 8.x 中,Ingest Node 确实是默认启用的,不需要手动设置 node.ingest。这是因为 Ingest Node 在 Elasticsearch 的核心功能中。

只需要修改elasticsearch中的config中的elasticsearch.yml文件

在集群中的角色加上一个ingest角色。

我们可以测试一下,刷新nginx页面,或者向错误日志中,插入数据

复制代码
echo "this is an error" >> error.log

这里只是简单演示了用法,其他更多详细的module的用法可以参考文档:

参考文档

相关推荐
wtblszn2 小时前
凹版印刷机智慧运维物联网系统方案
java·运维·物联网
Yula99333 小时前
把“凌晨电话”消灭在邮件系统架构设计阶段——从运维痛点反推企业邮件系统的工程选择
运维·exchange·数据库管理员·企业邮箱管理员·企业电子邮件系统·企业通讯安全
女神下凡5 小时前
芯参谋(87):Linux 系统(SPI NOR)驱动开发指南
linux·运维·arm开发·驱动开发·嵌入式硬件·设计规范
海宇AI12 小时前
零信任架构实战:基于海宇个人风险报告构建自动化分期商城信用额度初审网关
运维·人工智能·架构·自动化
IMPYLH12 小时前
Linux 的时间为什么会被拨回去
linux·运维·服务器
2601_9632827712 小时前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
叼烟扛炮13 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
我要见SA姐115 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·数据库·机器学习·oracle·回归
Android系统攻城狮15 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
Y38153266216 小时前
用 httpx 写 SerpBase 异步客户端:连接池与超时配置
运维·服务器·数据库