如何从graphite7获取数据

如何从graphite7获取数据,第1张

一、 基础概念

如果你有一些随时间变化的数值,然后你想他们绘图,那么 Graphite 非常有用。基本上你编写一个程序来收集这些数值,然后将他们发送到graphite的后端即可。

二、 第一步 – 选择一个好的命名方案

存储在Graphite的任何东西都有一个路径,这些路径由多个部分组成,每个部分以点号相隔。比如website.orbitz.bookings.air可能表示在orbitz中的air bookings。在产生你的数据之前你需要先选择好你的命令方案。

比如在”foo.bar.baz”这个路径中,每个点周围的东西都称为一个路径组件,因此“foo”,“bar”,“baz”都是路径组件。

每个路径组件必须是明确的,有目的的。路径组件应该和系统层次尽量保持相对应的深度。

三、 第二步 – 配置数据保存

Graphite建立在固定尺寸的数据库上 (参考whisper) ,因此我们必须预先配置我们想存储多少数据和数据的精度。比如你想以一分钟的精度(即每分钟有一个数据节点)保存2小时的数据。另外你还可以以10分钟的精度保存2周的数据。其理念就是存储开销由你想存储的数据节点决定的,精度越低,那就可以以更少的节点覆盖更长的时间。

要确定最佳的保存配置,你必须回答以下所有问题:

你的数据多久产生一次?

你要求的最大精度是多少?

在那个精度下,你需要查看多久的数据?

你能使用的最小精度是多少?

你要查看多久之前的数据?(它必须是个有限时,且提前确定好)

一旦你选择好了命令方案和回答了以上所有问题,那么你可以通过创建或修改/opt/graphite/conf/storage-schemas.conf文件来创建一个schema。

schema文件的格式通过示例最容易说明。假设我们已经写了一个脚本,这个脚本会从不同的服务器中收集系统性能数据,它的命名方案类似于:

servers.HOSTNAME.METRIC

其中HOSTNAME是服务器的主机名,METRIC是一个像 cpu_load, mem_usage, open_files的性能数据。同时假设我们想以一分钟的精度保存这些数据30天,以15分钟的精度保存10年。

下面是我们要写入到schema文件的内容:

[server_load]

priority = 100

pattern = ^servers\.

retentions = 60:43200,900:350400

简单来说,当carbon接收到一个指标数据时,Graphtie会确定这个指标数据应该保存到文件系统的哪个whisper数据文件中。如果数据文件不存在,carbon知道它必须创建一个,但是因为whisper是一个确定尺寸的数据库,在创建文件时必须确定某些参数(这就是为什么我们写入schema的原因)。Carbon查看schema文件,然后根据优先规则选择第一个匹配指标数据名称的schema。如果没有schema匹配,那么默认的schema会被启用 (每分钟一分,保存2小时) 。一旦合适的schema确定之后,carbon会使用schema中的保存配置参数创建whisper数据文件。

现在回到我们的schema内容。

server_load 表示我们的shema名称,你如何写都无所谓。

priority 是一个整数,表示优先级,使用这个数值告诉carbon如何评估schma中的顺序(由高到低)。优先级有两个作用:一个是让测试更常使用的schema更快;二是优先级提供了一种方式,通过这种方式可以为已经匹配另外一个schema的指标数据提供一个不同的保存。

pattern 参数是一个正则表达式,它用来匹配一个新的指标名称来查找它适用于哪个schema。在我们的例子中,这个模式就匹配所有以servers.开头的指标数据。

retentions 参数有点复杂,它是这样工作的:

保存配置之间以逗号相隔,每个保存配置的格式为:seconds_per_data_point:data_points_to_store。因此在我们的例子中,第一个保存配置是每个数据节点为60秒,然后存储43,200个这样的节点。 第二个保存配置是每900秒一个数据节点, 然后保存350,400 这样的点。

四、 如何产生数据?

既然已经知道了如何实施你的配置,那么你需要开始发送数据给Graphite了。推荐你看看发布的tarball包中的examples/example-client.py来获得基本的认识。你可以自行编写你的客户端,只要你能够以合适的格式发送你的数据。

五、 Graphite信息格式

所有graphite信息格式如下:

metric_path value timestamp\n

官方示例如下:

PORT=2003

SERVER=graphite.your.org

echo "local.random.diceroll 4 `date +%s`" | nc ${SERVER} ${PORT}

比如使用shell script以每分钟一次的频率产生当前进程总数的数据,并将数据发送到本机的graphite,脚本运行1小时:

i=1

while [ $i -le 60 ]

do

echo "local.system.proc_numbers `ps aux |sed 1d |wc -l` `date +%s`" |nc 127.0.0.1 2003

sleep 60

let "i=i+1"

done

其中单条数据内容(由“echo “local.system.proc_numbers `ps aux |sed 1d |wc -l` `date +%s`” |nc 127.0.0.1 2003”命令产生)类似如下:

local.system.proc_numbers 71 1341198181

local.system.proc_numbers 71 1341198182

local.system.proc_numbers 71 1341198183

local.system.proc_numbers 71 1341198184

local.system.proc_numbers 70 1341198185

local.system.proc_numbers 70 1341198186

领域 :工具名称

*** 作系统 :CentOS、Ubuntu、Redhat、suse、Freebsd

网站服务: nginx、apache、lighttpd、php、tomcat、resin

数据库: MySQL、MariaDB、PostgreSQL

DB中间件 :maxscale、MyCat、atlas、cobar、amoeba、MySQL-proxy

代理相关: lvs、keepalived、haproxy、nginx、heartbeat

网站缓存: squid、nginx、varnish

NoSQL库: Redis、CacheCloud、Memcached、MongoDB、HBase、Cassandra、CouchDB

存储相关 :Nfs、FastDFS、Moosefs(mfs)、Ceph 、Hadoop、glusterfs、lustre

版本管理 :svn、git、gitlab、gogs

监控报警 :nagios、cacti、zabbix、munin、hyperic、mrtg、graphite

域名解析: bind、powerdns、dnsmasq

同步软件: scp、rsync、inotify、sersync、drbd

批量管理: SSH、Ansible、Saltstack、expect、puppet

虚拟化: kvm、xen

云计算: openstack、docker、k8s

内网软件: iptables、zebra、iftraf、ntop、tc、iftop

邮件软件: qmail、posfix、sendmail、zimbra

远程拨号: openvpn、pptp、openswan、ipip

统一认证: openldap

队列工具: ActiveMQ、RabbitMQ、Metaq、MemcacheQ、Zeromq、kafka

打包发布: mvn、ants、Jenkins、Walle

测试软件: ab、JMeter、Webbench、LoadRunner、http_load、tcpcopy

带宽测试 :smokeping

性能测试 ;dd、 fio(IOPS测试)、iozone(磁盘测试)

日志相关: rsyslog、Awstats、flume、storm、ELK(Elasticsearch+Logstash+Kibana)

搜索软件: Sphinx、Xapian、Solr

无人值守: rpm、yum(设计rpm包定制及yum仓库构建)

大数据: HDFS、Hive、Hbase、Zookeeper、Pig、Spark、Mahout、flume、sqoop

项目管理: Jira、Redmine

linux管理: 宝塔Linux面板

渗透测试工具: SQLMap、Webscan

开源邮箱: iRedmail、extmail、Zimbra

软件开发 :Sublime Text、Eclipse、Jetbrains

远程连接: putty、Xshell、SecureCRT、MobaXterm、TeamViewer、向日葵

在此为服务器运维人员推荐使用:宝塔面板 www.bt.cn

宝塔面板,近200个免费应用提供使用,如:网站管理、系统安全、系统监控、计划任务、文件管理、软件管理、一键部署等为服务器运维人员提供安全高效的完成服务器运维工作。

运维人员必须熟悉的运维工具汇总

某日受邀请参加了一个BBS活动,于是有了下面的内容。

下面是在linux网站运维方向老男孩最近几年常用的免费的开源软件,临时即兴想起来的,在这里和大家分享,希望给初学者指引一点路。

linux的世界真的很精彩,还没入门的朋友赶紧进来吧!

*** 作系统:Centos※,Ubuntu,Redhat※,suse,Freebsd

网站服务:nginx※,apache※,lighttpd,php※,tomcat※,resin※

数据 库:MySQL※,Mysql-proxy,MariaDB,PostgreSQL

DB中间件:MyCat,amoeba,MySQL-proxy

代理相关:lvs,keepalived,haproxy,nginx,apache,heartbeat(此行都是※)

网站缓存:squid※,nginx※,varnish

NOSQL库:memcached※,memcachedb,TokyoTyrant※,MongoDB※,Cassandra※,redis※,CouchDB

存储相关:Nfs※,Moosefs(mfs)※,Hadoop※,glusterfs※,lustre,FastDFS

版本管理:svn※,git※

监控报警:nagios※,cacti※,zabbix※,munin,hyperic,mrtg,graphite

域名解析:bind※,powerdns,dnsmasq※

同步软件:rsync※,inotify※,sersync※,drbd※,csync2,union,lsyncd,scp※

批量管理:ssh+rsync+sersync※,Saltstack※,expect※,puppet※,ansible,cfengine

虚拟 化:kvm※,xen※

云计 算:openstack※,docker,cloudstack

内网软件:iptables※,zebra※,iftraf,ntop※,tc※,iftop

邮件软件:qmail,posfix※,sendmail

远程拨号:openvpn※,pptp,openswan※,ipip※

统一认证:openldap(可结合微软活动目录)※

队列工具:ActiveMQ,RabbitMQ※,Metaq,MemcacheQ,Zeromq

打包发布:mvn※,ants※,jenkins※,svn

测试软件:ab,smokeping,siege,JMeter,Webbench,LoadRunner,http_load(都是※)

日志相关:syslog,rsyslog,Awstats,flume logstash scribe kafka,storm,ELK(Elasticsearch+Logstash+Kibana)DB代理:mysql-proxy,amoeba(更多还是程序实现读写分离)

搜索软件:Sphinx,Xapian(大公司会自己开发类似百度的小规模内部搜索引擎)

提示:

1)以上所有软件都是老男孩用过或测试过的。

2)带※的为老男孩最近几年用的比较多,可信任使用的。也是近年来linux运维的大众。

3)有了功能分类和软件名,大家有需求,可以按功能找软件直接G就知道了。

4)学习要有舍有得,什么都抓必然短时间都不会精,希望大家能抓重点,抓精髓,大众软件(带※)先熟练了,这是基础加提高,在研究小众软件(不带※),这是高手之路,最后在研究偏门的,世外高手之路,当然前提是先掌握前面的大众和小众。

5)当然还有一些没有大众开源的有一些也很棒,如审计堡垒机程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9546880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存