5分钟搭建网站实时分析:Grafana+日志服务实战

news/2024/5/12 8:15:30/文章来源:https://blog.csdn.net/weixin_33819479/article/details/90327555

阿里云日志服务是针对日志类数据一站式服务,用户只需要将精力集中在分析上,过程中数据采集、对接各种存储计算、数据索引和查询等琐碎工作等都可以交给服务。2017年9月日志服务加强日志实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析。

在结果分析可视化上,除了使用自带Dashboard外,还支持DataV、Grafana、Tableua、QuickBI等对接方式。本文主要通过一个例子,演示如何通过日志服务对Nginx日志进行分析与可视化。

演示:线上Demo, 配置视频

整体架构

日志从收集到分析的架构如下图:

image.png

主要分3个步骤:

  1. 数据采集,参考文档
  2. 索引设置 与控制台查询,参考索引设置与可视化,或最佳实践中网站日志分析案例
  3. 安装Grafana插件,将实时查询SQL转化为视图

我们主要演示步骤3,在做完1、2步骤后,在查询页面可以看到原始日志:

image.png

对接Grafana

1. 安装grafana

grafana的详细安装文档参见grafana官方文档

以ubuntu为例,安装命令为:

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.5.2_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.5.2_amd64.deb

为了使用饼状图,我们需要安装Pie chart插件,官方文档,安装命令如下:

grafana-cli plugins install grafana-piechart-panel

2. 安装日志服务插件

首先确认grafana的插件目录在哪里, ubuntu的插件地址在 /var/lib/grafana/plugins/ ,安装好插件后重启grafana-server。

执行一下命令:

cd /var/lib/grafana/plugins/
git clone https://github.com/aliyun/aliyun-log-grafana-datasource-plugin
service grafana-server restart

3. 配置日志数据源

假设是在本机部署,默认是安装在3000端口,在浏览器打开3000端口。

image.png

在左上角点击grafana的logo,在弹出窗口上选择Data Sources:

image.png

点击添加新的DataSource 使用grafana和阿里云日志服务进行日志可视化分析

image.png

各部分配置分别按照如下配置:

  • datasource名称可以自定义,类型选择[LogService] 。
  • Http Setting部分,url输入样例:http://dashboard-demo.cn-hangzhou.log.aliyuncs.com 。dashboard-demo是project名称,cn-hangzhou.log.aliyuncs.com是project所在地域的endpoint,在配置自己的数据源时,需要特别的替换成自己的project和region地址。endpoint选择内网还是外网,取决于access的配置。Access可以选择Direct,也可以选择Proxy。如果选择Direct,表示从浏览器直接发送请求,需要添加外网endpoint。如果选择proxy,则从grafana部署的机器跳转,如果grafana部署在ecs上,则可以通过内网连接。
  • Http Auth部分,采用默认配置即可。
  • log service details,日志服务详细配置,分别填写project,logstore,以及具备读取权限的accessKey,accessKey可以是主账号的accessKey,也可以是子帐号的accessKey。

配置完成后点击Add,即可完成添加dataSource。接下来添加dashboard。

4. 添加dashboard

在左上角菜单中新加一个dashboard:点击左上角菜单,依次点击Dashboards, New:

image.png

4.1 配置模板变量

在grafana中可以配置模板变量,在同一个视图中,通过选择不同的变量值,展示不同的视图,在本文中,我们配置每个时间区间的大小,以及不同域名的访问情况。

image.png

点击页面上方设置图标,然后点击Templating,

image.png

在当前页面,会显示出已经配置的模板变量,点击New, 创建新的模板

image.png

我们首先配置一个时间区间,变量的名称是我们在配置中使用的变量,在这里起名为myinterval, 在查询条件中,要写成$myinterval ,会自动替换成页面选择的模板值。

image.png

我们再配置一个域名模板,通常我们在一个vps上可以挂载多个域名,那么我们需要查看不同域名的访问情况,在模板值中,我们输入
*,www.host.com,www.host0.com,www.host1.com, 表示我们可以查看所有域名,也可以分别只查看www.host.com或者www.host0.com或者www.host1.com的访问情况。

配置完成后,可以在dashboard页面上方看到刚才配置的模板变量,通过下拉框可以选择任何一个值。例如time interval,所有可选的值如下:

image.png

配置动态的Query template,可以从查询中动态的获取结果。要使用query template,请参考下图进行配置,数据源选择日志服务的数据源,在query条件中,SQL保证只输出一列结果。

4.2 配置PV,UV

点击左侧ADD ROW,新建一行图表:

image.png

如果已经有一行row了,可以在左侧的弹出式菜单里选择Add Panel:

image.png

grafana可以支持多重类型的视图,对于PV,UV数据,在这里我们创建一个Graph视图:

image.png

点击Pannel Title,在弹出的窗口中点击Edit:

image.png

在Metrics配置中,选择datasource为logservice,输入Query,Y轴和X轴:

image.png

dataSource下拉框中选择之前配置的:logService

Query输入:

$hostname| select approx_distinct(remote_addr) as uv ,count(1) as pv ,__time__-__time__%
$$
myinterval  as time group by time  order by time limit 1000

上述query中的$hostname,在实际展示时,会替换成用户选择的域名。

$$ myinterval,则会替换成时间区间,注意myinterval前有两个$符号,而hostname有一个。 Y-Column输入:

uv,pv

X-Column输入:

time

UV PV的值相差比较大,我们需要用两个Y轴来展示,在图标下方,点击uv左侧有颜色的线,可以选择uv是在左Y轴显示,还是在右Y轴显示:

image.png

标题需要视图,默认是Panel Title,点击General, 可以修改Title:

image.png

4.3 配置出入网带宽

同样的方法,我们添加出入网带宽的流量:

image.png

输入 query:

$hostname | select sum(body_byte_sent) as net_out, sum(request_length) as net_in  ,__time__ -__time__% 
$$
myinterval  as time group by time limit 10000

输入Y-Column:

net_in,net_out

输入X-column:

Time

4.4 不同HTTP方法的占比

新建一个Row,视图选择Pie Chart

image.png

在配置中输入Query, 和x,y轴
image.png

Query输入:

$hostname | select count(1) as pv ,method group by method

Y-column输入:

method,pv

对于所有的饼状图,X-column输入固定值:

pie

4.5 不同HTTP状态码占比

同上,新建一个Row,视图选择Pie Chart:

image.png

Query输入:

$hostname | select count(1) as pv ,status group by status

Y-column输入:

status,pv

X-column输入:

pie

4.6 热门来源页面

同上,新建一个Row,视图选择Pie Chart:

image.png

Query输入:

$hostname | select count(1) as pv , referer  group by referer order by pv desc

Y-column输入:

referer,pv

X-column输入:

pie

4.7 延时最高页面

为了以表格形式展示url和对应的延时,我们创建时,指定Table这种视图:

image.png

image.png

Query 输入:

$hostname | select url  as top_latency_url ,request_time order by request_time  desc limit 10

Y-column输入:

top_latency_url,request_time

X-column不填写内容。

4.8 热门页面

同上,新加一个表格视图:

image.png

Query输入:

$hostname | select count(1) as pv, split_part(url,'?',1) as path  group by path order by pv desc limit 20

Y-column输入:

path,pv

X-column保留空

4.9 非200请求top页面

同上,新建一个表格视图:

image.png

Query输入:

$hostname not status:200| select count(1) as pv , url  group by url order by pv desc

Y-column输入:

url,pv

X-column保留空

4.10 前后端平均延时

新建一个Graph视图:

image.png

Query输入:

$hostname | select avg(request_time) as response_time, avg(upstream_response_time) as upstream_response_time  ,__time__ - __time__ % 
$$
myinterval  as time group by time  limit 10000

Y-column输入:

upstream_response_time,response_time

X-column输入:

time

4.11 客户端统计

新建一个饼图:

image.png

Query输入:

$hostname | select count(1) as pv, case when  regexp_like(http_user_agent , 'okhttp') then 'okhttp' when  regexp_like(http_user_agent ,  'iPhone') then 'iPhone' when regexp_like(http_user_agent ,  'Android')  then 'Android' else 'unKnown' end as http_user_agent group by  http_user_agent order by pv desc limit 10  

Y-column输入:

http_user_agent,pv

X-column输入:

pie

4.12 各省份占比统计

image

选择pie视图:

Query输入:

*| select ip_to_province(remote_addr) as province, count(1) as pv group by province order by pv desc  limit 10

Y-Column输入:

province,pv

X-column输入:

pie

4.13 保存和发布dashboard

点击页面上方的保存按钮,发布dashboard:

image.png

大功告成

打开dashboard首页查看效果,demo地址

在页面上方,可以选择统计的时间范围,也可以选择统计的时间粒度,或者选择不同的域名。

image.png

这样整个nginx访问统计的dashboard就完成了,我们可以从视图中挖掘有价值的信息。

image.png

更多精彩内容

十分钟构建双十一交互分析大盘
日志服务用户手册,最完整的资料
日志服分析Demo,Nginx日志、CDN日志、DDOS日志、SLB日志Demo,grafana、Datav大屏Demo
自建ELK和日志服务全方位对比
通过jdbc查询和可视化日志
10.11杭州Clouder lab 十分钟搭建共享应用 2:如何通过日志服务实现用户的日志收集与分析
10分钟精通Nginx访问日志分析统计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_728352.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站转发器的简介与妙用

网站转发器的作用或角色往往比较多,既像是代理服务器(而且往往是反向代理服务器)又像是堡垒主机(具有很高的安全与控制能力)。熟悉DNS服务器的人都知道DNS服务器中的转发器,用于当DNS服务器本身没有用户要查…

《动手学深度学习》资料汇总+网站推荐

信息化时代,最不缺的就是学习资料了~《动手学深度学习》这本书原版的名字叫《Dive into deep learning》,是由UC伯克利李沐等人开源的,该书一经推出便广受好评。很多开发者使用了书的内容,并采用各种各样的深度学习框架将其复现。…

Yahoo网站性能优化指南之内容篇

为什么80%的码农都做不了架构师?>>> Yahoo!的Exceptional Performance团队为改善Web性能带来最佳实践。他们为此进行了一系列的实验、开发了各种工具、写了大量的文章和博客并在各种会议上参与探讨。最佳实践的核心就是旨在提高网站性能。 speed up web…

网站HTTP升级HTTPS完全配置手册

本文由葡萄城技术团队于51CTO原创并首发转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。今天,所有使用Google Chrome稳定版的用户迎来了v68正式版首个版本的发布,详细版本号…

ios旧版本app网站_两个查看ios每日限免APP的网站/频道

今天推荐两个分享IOS和macOS两个平台的每日限免和促销软件资讯的网站,两个网站中的功能大径相同,使用体验会在文中一一进行说明。让各位小伙伴在寻找限免应用的时候有一个好去处。鲜面连线鲜面连线是爱范儿旗下一个每日更新IOS端限免/促销应用的网站频道…

实验吧_网站综合渗透_Discuz!

前言 这个一个实验吧中的环境,分值为50分,下面是题目说明。诶,发现自己很菜。 实验吧_网站综合渗透_dedecms解析地址 需要的学会或者已经掌握的知识 已知cms版本在线搜索通用漏洞掌握菜刀或者类似的工具的使用其他 题目说明 你是国内一流安…

实验吧_网站综合渗透_dedecms

前言 某天在交易平台上突然出现了你们公司大量账号以及用户信息的销售信息,老板怀疑公司的服务器被入侵了,需要你对服务器进行渗透测试找出黑客留下的5个标记,通过渗透测试的不同手段获取到隐藏在服务器中的5个key并提交到平台进行得分&…

SEO人员:如何理解网站过度优化?

在网站优化过程中,我们经常性的会一味追求技术指标,而往往忽略网站内容建设的本质,那就是解决真实用户的搜索需求。实际上,这样的操作往往适得其反,并不能达到有效的作用,可以肯定的是任何网站优化&#xf…

1分钟推荐一个深度学习领域的必备网站,高能!

花一分钟的时间收获一个深度学习必备网站,入股不亏! 目录 深度学习领域的论文和代码 1.1 点击首页的Browse State-of-the-Art(也可以直接搜索关键词) 1.2 点击首页的Datasets 1.3 点击首页的Mesthods 深度学习领域的论文和代…

2021-10-20 推荐一个在线视频格式转换的好网站https://www.zamzar.com/,我测试过mp4转到gif

一、无需麻烦注册,直接在线转换,我测试过mp4转到gif。 二,网站地址: Zamzar - video converter, audio converter, image converter, eBook converterFree online video converter, audio converter, image converter, eBook co…

2021-11-29 AndroidR WiFi可以上网,但是Settings里提示“No Internet”的问题的一个解决方法,通过ping一个网站确认网络的情况。java ping 网络的代码。

一、AndroidR WiFi可以上网,但是Settings里面提示“No Internet”。然后用设备的wifi连接到手机打开的热点不会有这样的提示。通过一翻折腾和了解现在android 增加一项检测网络性能的类NetworkCapabilities,通过这个类可以判断出网络的性能,但…

2021-12-07 AndroidR(11) 连接WIFI可以上网,但是提示“No Internet”,增加一个国内可以访问的http_urls网站就可以解决问题

一、目前Android引入的网络评估机制,当你连上网络后,会给目标产生204响应的服务器发送给一个请求,如果服务器返回的是状态码为204的响应,那么就被认为网络可以访问;否则,如返回的是其他状态码,那…

2021-10-17 Android系统源码在线查看网站 http://androidxref.com/

一、 Android系统源码在线查看网站 http://androidxref.com/ 二、网站预览

​2021-12-27 C、C++ java代码在线运行​网站

一、介绍两个C、C java代码在线运行​网站,有时候那里测试挺方便的,这个好的东西我以前就怎么不知道,哎。 1、代码编辑器_www.cjavapy.com 2、代码在线运行 - 在线工具 3、在线运行Java 二、运行效果图

python怎么访问网站_python如何进入交互模式

安装完Python,在命令行输入“python”之后,如果成功,会得到类似于下面的窗口:可以看到,结尾有3个>符号(>>>)。>>>被叫做Python命令提示符(prompt)&…

tbopen链接生成工具_运营网站,自动刷外链工具真的有用吗?

很多急于求成的新手站长会忍不住试一试,那么这些工具真的有用吗,我本着实践出真知的的态度,用了几个网站去做实验,经过实际操作,在此建议各位站长慎用这种软件,一般效果会适得其反。自动刷外链工具真的有用…

一个网站对应一个服务器,有一个云服务器可以对应多少个网站

有一个云服务器可以对应多少个网站 内容精选换一换内网域名解析是基于VPC网络的域名解析过程,通过华为云内网DNS把域名(如ecs.com)转换成私网IP地址(192.168.1.1)。内网域名解析实现云服务器在VPC内直接通过内网域名互相访问。同时,还支持不经公网&#…

php抓取网站的数据库,jquery+thinkphp实现跨域抓取数据的方法

本文实例讲述了jquerythinkphp实现跨域抓取数据的方法。分享给大家供大家参考,具体如下:今天做一个远程抓取数据的功能,记得jquery可以用Ajax远程抓取,但不能跨域。再网上找了很多。但我觉得还是来个综合的,所以我现在…

Django管理网站

Django管理网站 为应用程序定义模型时,Django提供的管理网站让你能够轻松的处理模型。网站管理员可使用管理网站,但普通用户不能使用。 1.创建超级用户 创建超级用户,用户名可以自己起,不一定要ll_admin。 下面的电子邮件地址也可…

【论文泛读130】SEOVER:基于句子级情感取向向量的会话情感识别模型

贴一下汇总贴:论文阅读记录 论文链接:《SEOVER: Sentence-level Emotion Orientation Vector based Conversation Emotion Recognition Model》 一、摘要 对于会话情感识别的任务,最近的工作侧重于说话人关系建模,但忽略了话语…