暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用Elasticsearch实现Nginx Web服务器监控

搜索与推荐技术 2020-04-27
452

作者

刘晓国

Elastic社区布道师


Nginx 是一种非常流行的开源 Web 服务器,为全球数百万个应用程序提供服务。Nginx仅次于Apache,这得益于它作为 Web 服务器,有效地提供静态内容和整体性能的方式在全球流行(它还可以充当反向代理,HTTP缓存和负载平衡器)。而从操作和安全性的角度来看,由于Nginx处于应用程序体系结构的关键时刻,所以需要对其进行实时数据监控。


01

Nginx日志记录基础

Nginx 为用户提供了各种日志记录选项,包括日志记录到文件,条件日志记录和 syslog 日志记录。Nginx将生成两种可用于操作监视和故障排除的日志类型:错误日志和访问日志。

默认情况下,这两个日志通常都位于/var/log/nginx下,但是此位置可能因系统而异。

# cd /var/log/nginx/
# ls
access.log error.log
复制


Nginx error logs


错误日志包含可用于对操作问题进行故障诊断的诊断信息。Nginx error_log指令可用于指定日志文件的路径和严重性,并可在主要,http,邮件,流,服务器,位置上下文(按此顺序)中使用。


日志示例:

2020/04/22 10:06:21 [error] 9289#0: *4128 connect() failed (111: Connection refused) while connecting to upstream, client: 101.133.213.44, server: notest004, request: "GET /admin/ HTTP/1.1", upstream: "http://121.41.222.215:3000/admin/", host: "121.41.222.215"
复制


Nginx access logs


访问日志包含有关发送到 Nginx 并由 Nginx 服务的所有请求的信息。因此,它们是用于性能监控以及安全性的宝贵资源。Nginx 访问日志的默认格式是组合格式,但是在分发之间可能会有所不同。与错误日志一样,您可以使用 access_log 伪指令来设置日志文件路径和日志格式。


日志示例:

47.97.73.90 - - [22/Apr/2020:06:26:39 +0800] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/69.0.3494.0 Safari/537.36" "-"
复制


02

准备工作

将 Nginx 日志传送到阿里云 Elasticsearch 最简单方法是使用 Filebeat。本次教程,将会在阿里云服务环境下,通过在云服务器ECS上安装 Nodejs、Nignx、filebeat,同时开通阿里云 Elasticsearch 服务。


  • 开通阿里云 ECS 服务,开通阿里云 Elasticsearch 同一VPC下的 Centos 7.4 版本的 ECS 环境;

  • 关闭防火墙以及selinux安全防护工具(ECS为默认关闭状态);

  • 开放 ECS 安全组端口,确保 Nodejs 访问 3000 端口,Nginx 访问 80 端口;

  • 通阿里云 Elasticsearch 6.7 环境,确保控制台开通自动创建索引功能,使用创建的账号密码登录 Kibana;

  • 监测阿里云 Elasticsearch 安全配置是否开放白名单限制;


安装 Nodejs


Nodejs 是一个简单的基于Express框架的web服务器,我们可以在阿里云ECS 服务器上写入如下指令来安装 Nodejs。


# yum install nodejs
# yum install -y npm
#####查看node及npm版本#######
# node -v
# npm -v
####部署nodejs 的web服务器,从git上下载一个简单的nodejs代码
# git clone https://github.com/liu-xiao-guo/samplenodejs####进入samplenodejs根目录运行如下命令####
# cd samplenodejs/
# npm install
# npm start
复制


在 ECS 安全组中开启3000 访问端口,并在浏览器中输入 ECS IP访问地址:http://121.41.xx.xx:3000/hello



如果在控制台及浏览器能看到如下输出,表明 Nodejs 应用已经被成功运行。



安装 Nignx 并设置为反向代理


我们在 阿里云ECS 服务器上写入如下指令来安装 Nignx

# yum install nginx
####配置反向代理####
# vim /etc/nginx/nginx.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name notest004;


# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;


location / {
proxy_pass http://121.40.100.115:3000;
index index.html index.htm;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
####启动nignx###
# systemctl start nginx
复制


如果我们想停止nginx,我们可以使用如下的命令:

systemctl stop nginx
复制


要在停止时启动Web服务器,请键入:

systemctl start nginx
复制


要停止然后再次启动该服务,请键入:

systemctl restart nginx
复制


03

下载并安装 Filebeat

在阿里云ECS环境中,下载filebeat安装包,并解压。


安装

# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.7.0-linux-x86_64.tar.gz
# tar -zxvf filebeat-6.7.0-linux-x86_64.tar.gz
复制


配置

修改filebeat-6.7.0-linux-x86_64/filebeat.yml

#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["es-cn-0pp19tb10000688c8p.elasticsearch.aliyuncs.com:9200"]
username: "elastic"
password: "Elastic123"

setup.kibana:
host: "https://es-cn-0pp19tb1000888c8p.kibana.elasticsearch.aliyuncs.com:5601"
复制


启动 Nginx 模块

# ./filebeat modules enable nginx
复制


配置模块

为了能够使得我们的nginx模块能够正确地被 Kibana Dashboard 显示,我们必须运行如下的命令。

# ./filebeat setup
复制


至此我们的安装都已经完成。


04

Kibana Dashboard 展示

进入 Kibana,点击 Dashboard 选择已导入的 Nginx 模块



我们点击“【Filebeat Nginx】Overview”



至此,我们完成了对 Nginx 日志的监控。在 Kibana Dashboard 我们可以看到 Nginx 的所有信息。



本文由《Beats:使用Elastic Stack对Nginx Web服务器监控》基于阿里云服务环境授权改编

经由 CSDN-Elastic 中国社区官方博客授权发布

合作编辑:Lettie/大禹

原文博客:https://elasticstack.blog.csdn.net/


END


|  往期精彩  |


文章转载自搜索与推荐技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论