【最佳实践】阿里云Elasticsearch 简单高效的实现Nginx Web服务器监控

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 阿里云 Elastic Stack (Elasticsearch、Logstash、Kibana、Beats),作为一站式日志管理、分析平台,将为工程师提供一种非常简单有效的方法来监控 Nginx 。

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

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" "-"

准备工作


将 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

image.png

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

image.png

安装 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

下载并安装 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
image.png

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

Kibana Dashboard 展示


进入 Kibana,点击 Dashboard 选择已导入的 Nginx 模块
image.png
我们点击“【Filebeat Nginx】Overview”
image.png
至此,我们完成了对 Nginx 日志的监控。在 Kibana Dashboard 我们可以看到 Nginx 的所有信息。

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

原文作者:Elastic 中国社区布道师——刘晓国
合作编辑: Lettie/大禹
出处链接:https://me.csdn.net/UbuntuTouch


image.png

阿里云Elastic Stack】100%兼容开源ES,独有9大能力

相关活动


更多折扣活动,请访问阿里云 Elasticsearch 官网

阿里云 Elasticsearch 商业通用版,1核2G ,SSD 20G首月免费
阿里云 Logstash 2核4G首月免费


image.png

image.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
4月前
|
前端开发 JavaScript API
阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
【1月更文挑战第15天】【1月更文挑战第72篇】阿里云智能媒体服务IMS(Intelligent Media Services)的视频剪辑Web SDK
59 6
|
5月前
|
云安全 弹性计算 运维
带你读《云上自动化运维宝典》——最佳实践分享:如何体系化提升ECS安全性(3)
带你读《云上自动化运维宝典》——最佳实践分享:如何体系化提升ECS安全性(3)
215 1
|
2月前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
63 0
|
14天前
|
存储 Serverless 网络安全
Serverless 应用引擎产品使用之阿里云函数计算中的Web云函数可以抵抗网站对DDoS攻击如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
23 0
|
2月前
|
存储 弹性计算 固态存储
ECS实例选型最佳实践
根据业务场景和vCPU、内存、网络性能、存储吞吐等配置划分,阿里云云服务器ECS提供了多种实例规格族,一种实例规格族又包括多个实例规格。用户在购买ECS实例前,面对如此丰富的规格,可能会无从下手,不知该如何选择。实例规格选型最佳实践,就是为了帮助用户结合自身业务需求中性能、价格、工作负载等因素,做出性价比与稳定性最优的决策,并在库存不足、产品下线、使用抢占式实例等场景中,通过备选实例规格满足需求。
|
2月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
2月前
|
消息中间件 NoSQL 关系型数据库
倚天测评|倚天云服务器初次体验
随着云计算技术的快速发展,云服务器在各个领域得到了广泛应用。其中,倚天云服务器以其独特的CIPU架构和倚天710处理器的优势,引起了广大用户的关注。本测评报告旨在通过对倚天云服务器的实例使用、业务部署、性能测试和迁移体验等方面进行评估。
|
3月前
|
负载均衡 JavaScript 应用服务中间件
强大的WEB服务器-Nginx
强大的WEB服务器-Nginx
31 0
|
3月前
|
Kubernetes 应用服务中间件 nginx
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
|
3月前
|
弹性计算 运维 安全
最佳实践分享,如何体系化提升ECS安全性
阿里云弹性计算团队十三位产品专家和技术专家共同分享云上运维深度实践,详细阐述如何利用CloudOps工具实现运维提效、弹性降本。
129031 88
最佳实践分享,如何体系化提升ECS安全性

相关产品

  • 检索分析服务 Elasticsearch版