新功能:日志服务IPython/Jupyter Notebook扩展发布

news/2025/1/25 21:09:37

背景

IPython/Jupyter很流行

Jupyter的前身是IPython Notebook,而IPython Notebook的前身是IPython。如下可以看到起发展轨迹:

image

IPython/Jupyter非常流行,从三个方面可以看到:

  • 数据科学领域Python愈来愈流行已经是既定事实,根据数据科学与机器学习社区Kaggle 2018年调查,超过92%的人员会使用Python,而IPython/Jupyter也已经是不争的Python科学生态入口,使用Python做数据分析的人都会选择IPython/Jupyter作为工具平台。
  • IPython/Jupyter Notebook不只是Python独有,作为开放平台,已经支持超过50种语言,例如Go、Java等。
  • 各大云厂商都提供了对于Notebook的支持,SaaS生态中也有许多Notebook的有用工具,例如Github、NBViewer等。

image

日志服务对IPython/Jupyter支持

阿里云的日志服务(log service)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能。通过日志服务对IPython/Jupyter扩展的支持,可以轻松地使用Python对海量数据进行深度加工(ETL)、交互式分析(通过SQL、DataFrame)、机器学习与可视化等:

image

功能概述

支持环境

支持Python2/3下的:

  • IPython Shell
  • Jupyter Notebook (IPython Notebook)
  • Jupyter Lab

安装

快速安装

Jupyter Notebook:

1. pip install aliyun-log-python-sdk>=0.6.43 pandas odps ipywidgets -U

配置DataFrame增强交互的配置(仅适用于Notebook):

1. jupyter --path
进入data的第一个目录(或者第二个也可以),
例如C:\Users\Administrator\AppData\Roaming\jupyter
在里面构建一个子目录(如果没有的话):nbextensions2. python -c "import odps;print(odps);"
根据输出找到odps模块所在目录,进入子目录static > ui ,例如:C:\ProgramData\Anaconda3\Lib\site-packages\odps\static\ui3. 复制#2中的target目录到#1中,并修改target目录为pyodps
例如: C:\ProgramData\Anaconda3\Lib\site-packages\odps\static\ui\target ==> C:\Users\Administrator\AppData\Roaming\jupyter\nbextensions\pyodps4. 启动Jupyter前验证下
jupyter nbextension enable --py --sys-prefix widgetsnbextension
jupyter nbextension enable pyodps/main

IPython Shell/Jupyter Lab:

1. pip install aliyun-log-python-sdk>=0.6.43 pandas -U

virtualenv下安装(举例)

2. virtualenv sls# Jupyter Notebook:
3. pip install aliyun-log-python-sdk>=0.6.43 pandas odps ipywidgets -U# IPython Shell/Jupyter Lab
3. pip install aliyun-log-python-sdk>=0.6.43 pandas -U4. python -m ipykernel install --user --name=sls

更多安装问题可以参考这里

配置

img

加载magic命令

%load_ext aliyun.log.ext.jupyter_magic

配置参数如下:

%manage_log <服务入口> <秘钥ID> <秘钥值> <日志项目名> <日志库名>

在Jupyter Notebook下,也可以无参数传入,通过GUI配置:

%manage_log

关于服务入口、秘钥等,可以进一步参考配置。

配置保存位置

将存储AK、Endpoint、Project、Logstore在~/.aliyunlogcli, 使用的块名是__jupyter_magic__

[__jupyter_magic__]
access-id=
access-key=
region-endpoint=
project=
logstore=

支持场景

1. 查询与统计

快速查询与统计(过去15分钟)

img

%log SLS查询分析语句

关于查询、扩展语法(SQL92标准),可以进一步参考查询与统计

一般查询域统计(配置时间)

img

第一行用from_time ~ to_time这样的格式操作。
注意: 两个%

%%log -1day ~ now
* |
select date_format(date_trunc('hour', __time__), '%H:%i') as dt,count(1)%100 as pv,round(sum(if(status < 400, 1, 0))*100.0/count(1), 1) AS ratiogroup by date_trunc('hour', __time__)order by dt limit 1000

Note:如果只有查询的部分,会自动拉取时间范围内所有日志(自动分页)

具体时间格式的支持,可以参考这里。

2. 全量数据拉取

img

如果原始数据没有索引,无法使用查询统计时,或者不需要条件过滤时,可以使用拉取命令。

%fetch 2019-1-31 10:0:0+8:00 ~ 2019-1-31 10:00:10+8:00

Note:

  1. 时间范围是服务器接受日志的时间,不同于日志自身的时间。
  2. 拉取过程中,取消的话,已经拉取的数据会放到log_df_part中。

3. Dataframe操作

img

查询返回值通过log_df进行操作。是一个Pandas的标准DataFrame

操作示例:

%matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (12, 9)
import seaborn as sns%log host: www.a?.mock* | select body_bytes_sent, host limit 100000log_df['body_bytes_sent'] = log_df['body_bytes_sent'].astype(int)
sns.boxenplot(x='host', y='body_bytes_sent', data=log_df);

关于DataFrame操作,可以参考Pandas DataFrame。

4. Dataframe可视化增强

Jupyter Notebook下扩展了DataFrame的操作,表格进行了分页,也可以动态选择饼图、柱状图、线图、点图等可视化。

img

相关链接

  • 日志服务IPython/Jupyter扩展实战:下载数据为Excel文件
  • 日志服务用户手册
  • 日志服务IPython/Jupyter Notebook扩展
  • 扫码加入官方钉钉群 (11775223):
    image

https://dhexx.cn/news/show-1546598.html

相关文章

持续集成--测试三角形与分段构建策略原则

《infoq》 随着软件产品新特性的不断增加&#xff0c;软件自动化测试用例的数量也会成倍增长。对于一些历史“悠久”的遗留系统来说&#xff0c;甚至会积累数以万计的自动化测试用例。如果对这样的系统进行持续集成&#xff0c;还要求每个开发人员都要进行本地验证的话&#x…

css 选择其父元素下的某个元素

一,选择器 :first-child     p:first-child(first第一个 child子元素)(找第一个子元素为p) :last-child      p:last-child(last倒数 child子元素)(找倒数第一个子元素为p) :first-of-type    p:first-of-type(first第一个 type类型)(找第一个p) :last-of-type…

持续集成--“分支策略”

《infoq》 现代版本控制系统&#xff08;SCM&#xff09;的作用已不仅仅是保存历史版本&#xff0c;它还是各软件开发组织利用其分支功能实现多人并行开发&#xff0c;提高生产效率的一种工具。对于稍有历史的软件产品来说&#xff0c;一般都会有代码分支的出现&#xff0c;也…

自搭gitlab报错--git operation was rejected by pre-receive hook

自己编译gitlab源码搭建中文版gitlab完成后突然无法提交&#xff0c;gitlab服务使用正常&#xff0c;可是新建库文件&#xff0c;gitclone的时候报错。用gitlab本身也报错。 报错git operation was rejected by pre-receive hook 无意间找到一个检测gitlab的是否完整的命令 sud…

Python全栈工程师学习笔记|Django框架介绍与安装!

(1). Web开发介绍 目前Web开发属于Browser/Server模式&#xff0c;简称BS架构&#xff0c;开发语言有&#xff08;Python、PHP、Java ...&#xff09;。基于Python的Web工作原理如下&#xff1a;(2). 框架介绍 ①. 什么是框架? 软件框架就是为实现或完成某种软件开发时,提供了…

持续集成--“软件自我识别”

《infoq》 在前文《自动化部署》中&#xff0c;我们讨论了自动化部署。通过对部署操作脚本化、部署验证自动化、部署环境版本控制、生产部署全自动化等诸多实践&#xff0c;可以让部署完全处于受控状态。然而&#xff0c;作为运维人员&#xff0c;是否曾经有人走过来问你这样的…

mysql数据库基础命令(一)

mysql数据库基础命令&#xff08;一&#xff09;转载于:https://blog.51cto.com/mingongge/1957695

持续集成--“Everything is code”

《infoq》 在前文《软件自我识别》中&#xff0c;我们讨论了如果使软件做到自我识别&#xff0c;以促进自动化部署和版本检测等工作。 随着互联网的飞速发展&#xff0c;以及基础设施的改进&#xff0c;越来越多的业务被放在了“云”端。管理数千台服务器和各种应用程序的不同…

注释(译)

源自Javaの道日语技术社区原文地址译者梦梦的幻想乡見てくれてありがとうござい&#xff01;&#xff01;&#xff01;コメント 注释 在Java程序里使用注释。 目录 /*注释*/ //注释 /**注释*/ /*注释*/ /*和*/之间的叫做注释。可以编写跨行注释。例 /* 可以编写跨行注释。可…

extract-text-webpack-plugin用法

一 背景最近在做一个项目&#xff0c;项目本身是用vue-cli创建的单页面应用&#xff0c;由于项目扩展需要创建多页面&#xff0c;所以需要对不同的html分别进行css文件打包。于是开始研究extract-text-webpack-plugin插件。二 插件介绍打包样式有两种方法&#xff0c;一种是使用…