工作相关
Aug 14
Datadog (https://www.datadoghq.com/) 是一款监控和统计分析工具主要应用在IT公司和DevOps团队,为这些企业或用户提供完整的SaaS监控服务(软件即服务,全称Software-as-a-Service),包括查看到整个服务的性能、基础设施状态、指标和事件告警等。 Datadog支持多种操作系统环境包括Windows、Linux\UNIX和Mac等,也支持常见的云服务提供商这些服务商包括AWS、微软、Red Hat OpenShift和谷歌云等,另外,按网络环境划分公有云、私有云和混合云,目前Datadog都能支持与管理。以下通过标签的方式来介绍Datadog的使用。



#Datadog酷炫视频#
#公司发展历史#
#谁在用Datadog#
#Datadog监控的优势 vs 不足#
#Datadog主要的监控功能#
#Agent#
#服务端#
#最佳实践#
#如何收费#
#Datadog未来发展#
#总结#



Datadog酷炫视频
通过以下视频可以更快速直观的了解Datadog。
监控大屏:https://twitter.com/i/status/935578594482405376https://www.youtube.com/watch?v=18nEnD4Q1wQ
主机地图:https://docs.datadoghq.com/videos/host-map/
APM :https://docs.datadoghq.com/videos/apm/
AWS:https://docs.datadoghq.com/videos/aws/
最新Datadog视频(Datadog DASH 2019 Keynote):https://www.youtube.com/watch?v=18nEnD4Q1wQ



公司发展历史
Datadog 成立于2010年总部位于美国纽约,截至2017年Datadog已筹集了六轮融资,总额为1.5+亿美元。(以下数据来源天眼查 https://www.tianyancha.com/brand/b8ce0169057)
点击在新窗口中浏览此图片

谁在用Datadog
外国很多软件服务商都在官方网展示了哪些牛逼的公司在用它的产品,视乎在告诉你我的软件好不好看谁在用我就知道了。Datadog也不例外,它的用户包括Twitter,Sonos,Airbnb,WeWork,Medium,诺基亚,Ubisoft,三星和Zendesk等,关于这里更多信息可以参考: https://www.featuredcustomers.com/vendor/datadog/customers。

Datadog监控的优势 vs 不足
我们先从客观角度来看很多开发者用户为什么选择Datadog见以下截图(以下数据来源https://stackshare.io/datadog)。
点击在新窗口中浏览此图片
综合以上数据并结合自己的观点来说一下Datadog的优势与缺点。

优势
从统计数据可以看到,排名前三的原因分别是:
1.全监控体系包含各种应用(数据库、WEB服务等);
2.非常简便的安装方式(很多intergrations(集成服务)在最多1~2分钟内可以部署完毕),只需要在所负责的机器上安装一个Datadog的Agent就可以实现监控数据的收集上报,当服务器规模庞大时它还支持类似Puppet软件来批量安装。
3.开箱即用、功能分类清晰、界面交互性强、问题跟进与处理有相应的流程。

不足
Datadog真的非常优秀,但如果一定要鸡蛋里挑骨头说它的不足,我觉得可以分为三点:
1.服务端代码不开源看不到具体实现的逻辑,在复杂的场景下出现异常不可控。
2.国内购买的服务器下载Agent超时严重,需要使用代理下载。
3.它是一款收费的SaaS监控服务。

Datadog主要的监控功能
Datadog监控功能强大覆盖面广有完整独立的监控体系,如果把监控体系比作一个金字塔,我们来看一下金字塔各层的功能与监控细节。
点击在新窗口中浏览此图片

Agent 相关
Datadog为C/S架构,其中Server端闭源,Client端开源(Client端代码地址见:https://github.com/DataDog/datadog-agent) 。目前Client端代码主要分为两个版本分别为v5和v6版本,推荐使用最新的v6版本与老版本 v5相比,v6版使用Golang进行了重写有着更好的性能,也更加精巧同时向下兼容版本功能。v6版本同时支持收集基础设施指标,日志和接收DogStatusD指标等功能,并暴露以下几个端口(5002端口仅会监听在Windows和OSX操作系统上)向外提供服务。
点击在新窗口中浏览此图片
Agent对服务器资源消耗以6.7.0版本测试为例,CPU平均在0.12%,磁盘(Linux350~400MB , Windows 260MB) ,带宽消耗上行86B/分钟,下行260B/分钟,可以看到整体消耗资源还是非常小的。

单机部署Datadog Agent:
可以登录Datadog后访问: https://app.datadoghq.com/account/settings#agent/centosa

批量部署Datadog Agent:
可以通过以下常见的开源服务配置管理工具进行部署Agent:

Chef:https://github.com/DataDog/chef-datadog
Puppet:https://github.com/DataDog/puppet-datadog-agent
Ansible:https://github.com/DataDog/ansible-datadog
Saltstack : https://github.com/DataDog/datadog-formula
关于Datadog Agent v6版本更多详细信息可以参考版本变更记录: https://github.com/DataDog/datadog-agent/blob/master/CHANGELOG.rst。

Server端相关
Datadog Server端提供了强大的与开源软件融合生态链能力、APM能力、日志功能、丰富的报表和大屏功能(包含网络流量监控报表、事件报表和指标报表)、统一告警平台和API功能等。由于笔者的环境有限,以下部分截图是Datadog官网视频中提供的真实使用场景截图。

网络关系图
点击在新窗口中浏览此图片

主机地图 ,可以从主机地图上看到对所有主机进行标签管理并对标签安地域分类,很适合云环境无CMDB的业务场景。同时通过颜色区分服务的负载与状态,看起来效果非常炫酷。
点击在新窗口中浏览此图片

自定义监控大屏,可以根据自己产品需要进行布局与展示。
点击在新窗口中浏览此图片

最佳实践

案例1 (APM监控5分钟将整个网站性能监控起来)
Datadog的APM支持主流的编程语(Java、python、Ruby、Golang、node、.net、PHP和C++),本文以Golang的Gin框架为例介绍上报性能数据,Gin框架安装见https://app.datadoghq.com/apm/docs?architecture=host-based&language=go

Golang Gin上报APM共分三步:

安装路径,下载Golang Gi框架的APM监控包。
嵌入代码, 下载ddtrace后,在工程的主函数中注入相关代码。
查看Dashboard,当有用户访问网站后,就可以看到用户访问的路径、耗时和HTTP状态码等一些信息。
安装路径
点击在新窗口中浏览此图片

嵌入代码,Gin框架代码案例。

package main
import (
    gintrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/gin-gonic/gin"
    "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"

    "github.com/gin-gonic/gin"
)
func main() {
    tracer.Start()
    defer tracer.Stop()
    // Create a gin.Engine
    r := gin.New()
    // Use the tracer middleware with your desired service name.
    r.Use(gintrace.Middleware("my-web-app"))
    // Continue using the router as normal.
    r.GET("/hello", func(c *gin.Context) {
        c.String(200, "Hello World!")
    })
    r.Run(":8080")
}
}


查看Dashboard
点击在新窗口中浏览此图片

以上是一个APM监控案例,通过Datadog可以很快的将我们服务性能监控起来。

如果自己学习或搭建了解APM,可以参考以下的论文。

http://peter.bourgon.org/blog/2017/02/21/metrics-tracing-and-logging.html
https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36356.pdf
https://storage.googleapis.com/pub-tools-public-publication-data/pdf/40378.pdf
https://bigbully.github.io/Dapper-translation/


开源APM组件

Zipkin - Twitter:https://github.com/openzipkin/zipkin
Jaeger - Uber:https://github.com/jaegertracing/jaeger
Skywalking - Apache:https://github.com/apache/skywalking
Appdash:https://github.com/sourcegraph/appdash


案例2 (通过Python上报自定义指标)

来看一下Datadog可以对接的开源生态软件,目前支持350+且还在持续增长。
点击在新窗口中浏览此图片

我们以Python为例来看一下上报自定义指标,这里共分为三步:

首先到Intgration中找到Python,并按照指引进行安装(见截图1)。
登录到服务器上,使用Intgration中的Python上报代码,按照执行信息进行填写,其中api_key和app_key可以在APIs中找到(见截图1和代码片段)。
服务器上报指标后,可以可以在metrics->explorer->graph中找到(截图2)。同时主机视图上也可以看到上报的自定义截图指标(截图3)。
截图1
点击在新窗口中浏览此图片

代码片段

#!/bin/python
# Configure the module according to your needs
from datadog import initialize

options = {
    'api_key':'',
    'app_key':''
}
initialize(**options)

# Use Datadog REST API client
from datadog import api
title = "Something big happened!"
text = 'And let me tell you all about it here!'
tags = ['version:1', 'application:web']
api.Event.create(title=title, text=text, tags=tags)

# Use Statsd, a Python client for DogStatsd
from datadog import statsd
# Increment a counter.
statsd.increment('djangowang.views')

# Or ThreadStats, an alternative tool to collect and flush metrics,using Datadog REST API
from datadog import ThreadStats
stats = ThreadStats()
stats.start()
stats.increment('page.views')


截图2
点击在新窗口中浏览此图片

截图3
点击在新窗口中浏览此图片


案例3 (实时日志查看)
Datadog的特色功能live tail 实时查看日志,类似Linux系统的命令tail -f效果, 以下来快速演示一下实时日志,共分为两步:
步骤1,在上报日志服务器通过telnet命令连接Datadog服务器的10514端口,如下:

# telnet intake.logs.datadoghq.com 10514


输入API Keys + 上报内容,譬如如下。
点击在新窗口中浏览此图片

步骤2, 通过log的live tail 功能查看实时上报的日志。
点击在新窗口中浏览此图片

以上只是演示了live tail的功能 , Datalog服务还支持很多语言上报。如下,关于Datalog更多上报日志可以参考https://docs.datadoghq.com/logs/
点击在新窗口中浏览此图片

如何收费
Datadog收费的细节见以下列表单位是美金。 网上信息查到Datadog的主要用户群体还是创业公司,这价钱也相对创业公司也比较亲民,可以根据自己的情况按照不同的功能进行计费。
点击在新窗口中浏览此图片

Datadog未来发展
Datadog收购了法国创业公司Madumbo,该公司开发了一款基于AI的网络应用程序测试服务。从新闻可以了解到Datadog后续会逐步往AI智能告警发展,通过大量的数据盖异常检测,异常值检测和预测的算法进行告警。
相关新闻:https://www.appnz.com/chuangxin/20190227_9319.html



总结
Datadog是一家创业公司,与很多公有云提供的免费监控产品相比,Datadog是收费的而且这产品是创业公司的全部,做的体验相对更好。从网上了解使用Datadog产品的用户更多是一些创业公司,这些创业公司的业务分部在不同的云服务商上,Datadog都可以将他们管理起来,并为用户提供一站式监控服务。

做一款产品最担心的是不同的用户标准不一样,譬如A,B两个用户根据自己的产品特性开发了不同的软件框架彼此之间协议不同没有统一的服务标准,如果两个用户同时使用一款监控产品,从接入标准上很难完全满足两个用户的需求。而Datadog聪明的解决了这些问题,它支持最常用的开源软件和开发语言的框架(譬如Golang的Gin和Python的Flask),Datadog将这些常用开源软件和开源语言框架的信息抽象为指标方式上报到服务器,用户无论使用的是开源协议或是私有协议只要支持开源产品的标准就可以在Datadog用起来,有相同的标准后迁移成本也大大的降低。

Datadog是一款SaaS产品,将所有功能进行了抽象与分类,从体验上更容易找到我们想要的页面,可能是曾经做过运维的原因,能明显感觉到这就是一个我想要的系统,标签分类明确,所有intergrations(集成服务)可以在1-2分钟内接入并最终上报数据展示到Datadog上真的是非常的方便,解决了运维搭建环境、配置报表的很多麻烦事儿。当用户的业务出现问题时,系统有相应的问题处理流程使问题可以在系统上闭环解决。所以Datadog的产品体验、设计思路非常值得我们去学习与借鉴。



更多资源
5分钟介绍Datadog功能: https://www.youtube.com/watch?v=mpuVItJSFMc
Datadog CEO Twitter :https://twitter.com/oliveur
Datadog Agent是啥: https://www.jianshu.com/p/924b694a9022
Tags: ,
Jul 13
开篇
笔者有着多年的toC开发、运维开发和运维工作经验,也曾开发很多内部运营系统,更多是从功能角度出发满足业务运维的需求很少提供完整规范的产品文档,关于开发的运营系统使用方法更多是通过口口相传,听起来不是很正规但确实是这样走过来的。
笔者也反观公司内部的运营系统也会出现笔者遇到的情况,或者是提供了基本的文档但随着时间的推移文档年久失修,甚至出现问题联系文档里的负责人已经离职的囧境。
两年前笔者开始从事toB业务明显感觉到与toC业务的不同,相应的产品要有配套的文档和说明书且产品文档要优先于版本迭代,最起码也需要同步于产品迭代功能发出。
ToB面向企业级别用户文档是一个必不可缺的产物,但用心整理的产品文档并提供用户也会遇到一些问题,譬如产品运营的过程中我们经常与用户交集的Helper(在线服务客服)会比较困扰因为用户没有看文档的习惯更喜欢直接来问Helper,所以有时也在思考是否要投入更多的经历来完善文档? 为什么用户不看文档?我们的产品是否出现了什么问题?很多的问号盘旋在脑海中。但思考过后最终的答案还是非常肯定的文档是产品非常重要的一个环节,用户可以不看但我们一定要提供并且精心的维护它。下面就通过一个真实的案例ULS产品文档开发过程,来介绍如何写一篇产品文档,以下是ULS产品文档目录结构。

点击在新窗口中浏览此图片




ULS产品背景介绍
ULS(Unified Log System) 统一日志服务,是内部的一套开发上报日志、存储和最终消费一站式平台。 此产品是在2018年底开始由我们部门负责,从ULS代码注释中可以看到它大概7年前(2012)开发的是一个有历史的内部日志系统同时有一批忠实的用户。


竞品文档结构调研
ULS产品是一款有历史的内部系统经过了多年的发展,文档散落在各处另外很多文档也年久失修有很多的错误,我们优先整理了旧文档列表并验证旧文档没有问题后,统一放到现有系统显眼位置让用户第一时间可以看到。接着我们对日志服务竞品的文档结构做了一些调研,这些产品包括腾讯云、阿里云和七牛云,竞品目录结构对比可以访问( https://docs.qq.com/sheet/DTkZRSGZORkZvdHZq?opendocxfrom=admin&preview_token=&coord=K15A0A0&tab=BB08J2 )。

经过竞品调研并结合我们当前的实际情况,最终我们的文档结构一级目录为,版本更新历史、快速上手、5分钟视频介绍、产品介绍和FAQ问题整理等。 有了文档结构后在此基础上我们将老的文档中一些信息进行整理并灌入新文档系统中,这里强调一下我们使用的是GitBook来管理我们文档,有很多内部系统依然使用Word文档来管理,笔者觉得更加推荐GitBook它有版本管理功能,在并行开发文档过程中避免出现错误与覆盖的情况,同时可以对比不同版本间的差异方便我们优化文档,最主要他呈现给所有人是一个WEB网站,信息更新也更加的实时。

寻找用户群体
个人觉得做产品最重要一个环节是用户群体,只有了解用户群体我们在产品迭代过程中的取舍才会有依据。这里举个比较形象的列子也是笔者之前一直在思考的问题,为什么Windows系统有回收站而Linux系统没有回收站?后者的答案笔者在《Unix编程艺术》找到,这句话来自书的原文——Linux世袭了Unix的设计理念与传统,而Unix本身并没有这样的设计并延续到了Linux。Unix面向更加专业的用户 ,Unix的开发者喜欢清晰、简单的操作,用户告诉做什么就做什么,即便用户使用的命令等价于“向我开枪”的命令。而这样做Unix的开发本能辩解的就是:保护用户避免自我损害,应该是GUI或应用程序级别的事,而非操作系统。 所以可以很清楚的看Linux的用户群体更加的专业,Windows系统正好反过来,如果用相机比喻的话Windows更像傻瓜相机,Linux是一个专业的数码相机彼此之间有自己针对的用户群体。
我们对日志竞品产品调研也再次验证了这个结果,这里包括七牛云智能日志平台 、阿里云日志服务和日志易等业界日志产品做了深入的调研并与ULS进行对比发现不同的产品在功能上是有取舍和针对性的(竞品调研报告:https://docs.qq.com/sheet/DTkdtREdPU2dES2ZG?preview_token=&coord=B4A0A0&tab=BB08J2),从产品功能上来反推用户画像:

阿里:用户群体需要具备更强的开发能力,而其系统更多像一个脚手架与阿里云产品相互打通,用户具备开发能力通过脚手架可以实现常用功能外的一些定制化开发需求。
七牛:用户人群需要有计算机的背景但并非一定需要较强开发能力,该产品提供了丰富的功能和强大的用户WEB界面,基本可以满足常见用户的80%需求场景。
日志易:功能和文档十分不完整,从日志易的立足行业(金融、能源、运营商)看到,日志易有为不同行业提供不同的解决方案。用户画像:需要个性化定制日志服务的企业。
ULS(内部系统):目前内部运营了7年多有一定的铁杆粉丝量,所以ULS用户画像就是内部的开发,这些开发主要集中在CSIG、PCG和少量的IEG等,这也能看到我们系统用户的属性。

详细调研报告可以参考:( https://docs.qq.com/sheet/DTlNZZE1FQ3hxc3NW?opendocxfrom=admin&preview_token=&coord=A4A0A0&tab=BB08J2 )

有了用户群体后我们在写文档时就有了依据,譬如笔者在文档中写过ELK有同学会挑战需要介绍ELK是什么, 但我们的产品用户群体是开发,他们会具备一定的知识基础,依据这背景笔者是不会在文档中写过多的ELK介绍的。

文档正确性校对
在刚开始的时候我们从能收集到的历史文档中搬了很多东西到新创建的文档系统。这些文档多由老的日志系统开发撰写,在实际操作过程中我们发现安装文档执行并非100%执行成功或者说文档只写了在安装过程中最好的情况下是什么样的,我们通过多位测试同学不断的对文档验证与校对,并对文档中的内容进行重新排序与分类最终达到我们预期的效果。 这里有一个值得分享的案例,譬如我在安装日志服务的Agent,其实我们直接通过运营系统下发就可以了但我们运行的服务器环境在文档上并没有明确操作系统发行版本是什么,kernel版本号,是否经过初始化系统等。 笔者通过验证文档安装的服务器每次都会执行成功,而测试同学每次测试都失败,其实主要原因就是我们使用的服务器初始化系统不一样导致系统上缺少依赖包,测试同学在安装Agent时就会报错,这些细节都是通过一步步测试后发现并整理到文档中的。 而我们的文档在迭代过程中一定需要经过测试同学进行严格的流程测试才能保证它的正确性,最终提供给用户也是靠谱的手册。

一定要有的CHANGELOG
在产品开发过程中一定要通过版本来迭代需求。 以ULS为例,我们有自己的用户群体,在用户群里中又建立了产品相关的社区,通过社区的反馈不断收集用户的意见,根据用户的意见在每次版本迭代中进行优先优化,每一个版本我们都能看清楚他的优化点与用户关心的问题,每次迭代一个版本并对比版本之间的变化会发现你的产品会更上一个台阶,我想这也是做好一个产品的方法之一。

不能没有的FAQ
开篇我们说过其实最头痛的是提供了用户文档用户不去看,我想这也是很多人的用户习惯,如果文档与Helper都在的情况下,很多人会优先询问Helper。其实在接Uls产品的时候我们就建立了这里处理问题的流程见以下截图,我们有1线,2线(uls_helper)和研发,收集用户每一个信息并统计分析整理有共性的问题录入文档的FAQ中。有了流程的保障会发现FAQ整理的问题慢慢的增多,随着时间的推移用户可以社区内发出问题,并由其他用户以文档的形势进行内部闭环,释放产品的人力投入,形成良性的需求与供给,所以在文档中的FAQ是非常重要的一个环节。

文档中视频演示的重要性
对比日志竞品文档提供视频演示并不多,但是在运营日志产品的过程中发现了用户的习惯,这里再一次强调就是很多用户不习惯看文档,所以我们也尝试通过视频演示方式是否更好。在准备视频演示的过程中也发视频演示和产品文档是相辅相成的事,从最开始录制视频大约需要7分钟逐步优化文档结构和安装程序到最终将整个时间控制在3分钟左右,这也体现了准备视频演示对文档建设的推动作用。

最后,笔者觉得一个好的产品要尽量让用户少看文档,印象中看过一个文章说Iphone的开机按钮连不到一岁的小朋友知道去按并开机。希望每个人都是一个好的产品经理并作出更优秀的产品。

end ...




参考资料:
Linux终端下为什么没有回收站 : http://blog.puppeter.com/read.php?48
七牛日志:https://developer.qiniu.com/insight/manual/4605/opening-the-product
阿里云日志:https://help.aliyun.com/document_detail/48869.html?spm=a2c4g.11186623.6.548.5e987812TQa8JQ
日志易:https://www.rizhiyi.com/docs/fastuse/
Tags:
Apr 27
2019.04.27 5:00 迁移到aws 。 实际上正式迁移要比这早,不过装的php-fpm版本比较高网站一直http500错误,直到早上才修复。
Mar 12
在mac环境没有rz/sz命令真的不是很方便,特别在公司的办公网路下很多端口和服务被封锁没有一个方便的传输文件工具简直是噩梦一般,这里通过网上教程来整理安装在mac环境下通过iterm2使用rz/sz。

1.首先安装iterm2工具,下载地址见https://www.iterm2.com/downloads.html

2.然后我们来安装rz/sz工具,这里可以通过源码或brew安装,推荐方式1,以下为两种方式:

方式1

brew install lrzsz  


方式2
本地 mac 安装 lrzsz: https://ohse.de/uwe/software/lrzsz.html, 支持 rz/sz 功能

wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz

解压: tar -xvf lrzsz-0.12.20.tar.gz,安装(遇到 permission denied等错误, 加 sudo 执行):


cd lrzsz-0.12.20
./configure
make install


创建快捷命令:

sudo ln -s /usr/local/bin/lsz /usr/local/bin/sz
sudo ln -s /usr/local/bin/lrz /usr/local/bin/rz



3. 支持iterm2 回调 rz/sz 的脚本
下载: https://github.com/mmastrac/iterm2-zmodem

git clone https://github.com/mmastrac/iterm2-zmodem
mv iterm2-send-zmodem.sh /usr/local/bin/
mv iterm2-recv-zmodem.sh /usr/local/bin/
sudo chmod +x /usr/local/bin/iterm2*


4. 配置 iterm2: 注意到 rz 时调起了本地 sz 命令, sz 时调起的是本地 rz 命令!

Profiles -> Open Profiles -> Edit Profies -> Advanced -> Triggers -> Edit



点击在新窗口中浏览此图片

具体代码

Regular expression: rz waiting to receive.\*\*B0100
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-send-zmodem.sh
Instant: checked


Regular expression: \*\*B00000000000000
Action: Run Silent Coprocess
Parameters: /usr/local/bin/iterm2-recv-zmodem.sh
Instant: checked



本文参考:
1. https://ohse.de/uwe/software/lrzsz.html
2.http://www.wesleysong.com/blog/2015/12/21/%E5%9C%A8-iterm2-for-mac-%E4%B8%AD%E4%BD%BF%E7%94%A8-rz-%E5%92%8C-sz/
3.https://github.com/mmastrac/iterm2-zmodem
4.https://segmentfault.com/a/1190000012166969
Dec 16
Shell企业级应用是一本适合新手学习的图书,本书大概在8月底9月初开始整理目前完成进度约80%由于最近工作忙暂时停笔,如果有兴趣同学可以联系我一起完成,目前是通过gitbook完成的与笔者联系方式email:8851970@qq.com。图书地址在https://puppeter.gitbooks.io/enterprise-shell/content/

以下是图书目录
点击在新窗口中浏览此图片

Tags:
分页: 1/8 第一页 1 2 3 4 5 6 7 8 下页 最后页 [ 显示模式: 摘要 | 列表 ]