既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
metricbeat简介
- 将 Metricbeat 部署到您所有的 Linux、Windows 和 Mac 主机,Metricbeat可以定期收集操作系统和服务器的运行指标(CPU,内存,硬盘,IO,读写速度,进程等等),线程数等机器物理性能,类似于Windows的资源管理器功能。
- Metricbeat可以将收集到的指标和数据发送到你指定的输出,比如:elasticsearch,最终达成监视服务器的目标。
- 时序控件(Timelion)是一款时间序列数据可视化工具,它可以将多种独立的数据源合并呈现到一张视图上。
- 使用Elastic公司的Metricbeat,Metricbeat和Filebeat一样,是一个轻量级的采集器,不但可以监控服务器的性能指标,还可以监控运行在服务区之上的应用信息(eg.Apache、MongoDB、MySQL、Ngnix、PostgreSQL、Redis、Zookeeper、System)。
- Metricbeat 提供多种内部模块,用于从服务中收集指标。安装简单,完全零依赖性。只需在配置文件中启用所需的模块即可,可谓是按需使用。
实验的机器环境如下:
操作系统:Ubuntu 16.04
ELK版本:6.2.3
下载metricbeat
#wget https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.2.3-linux-x86\_64.tar.gz
#解压
#tar xzvf metricbeat-6.2.3-linux-x86\_64.tar.gz
或者
#curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.2.3-x86\_64.rpm
#sudo rpm -vi metricbeat-6.2.3-x86\_64.rpm
windows下安装
PS > cd 'C:\Program Files\Metricbeat'
PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
配置dashboard
修改metricbeat-6.1.2-linux-x86_64目录下的metricbeat.yml,该文件为metricbeat的配置文件。
etricbeat.modules:
- module: system
period: 10s
metricsets:
- cpu
- load
- memory
- network
- process
- process_summary
#- core
#- diskio
#- socket
processes: ['.\*']
process.include_top_n:
by_cpu: 5 # include top 5 processes by CPU
by_memory: 5 # include top 5 processes by memory
- module: system
period: 1m
metricsets:
- filesystem
- fsstat
processors:
- drop_event.when.regexp:
system.filesystem.mount_point: '^/(sys|cgroup|proc|dev|etc|host|lib)($|/)'
- module: system
period: 15m
metricsets:
- uptime
# 直接发送elasticsearch
output.elasticsearch:
hosts: ["172.30.1.45:9200"]
# 要加载仪表板,可以在metricbeat设置中启用仪表板加载。当仪表板加载被启用时,Metricbeat使用Kibana API来加载样本仪表板。只有当Metricbeat启动时,才会尝试仪表板加载。
# 设置kibana服务地址
setup.kibana.host: "172.30.1.45:5601"
# 加载默认的仪表盘样式
setup.dashboards.enabled: true
# 设置如果存在模板,则不覆盖原有模板
setup.template.overwrite: false
或者
找到Dashboards,找到下面这行:
#setup.dashboards.enabled: false
去掉注释并把参数改为true:
setup.dashboards.enabled: true
配置kibana
找到kibana部分,把host注释去除,修改为kibana的ip+端口。
# 要加载仪表板,可以在metricbeat设置中启用仪表板加载。当仪表板加载被启用时,Metricbeat使用Kibana API来加载样本仪表板。只有当Metricbeat启动时,才会尝试仪表板加载。
setup.kibana:
host: "localhost:5601"
# 加载默认的仪表盘样式
setup.dashboards.enabled: true
配置elasticsearch
找到elasticsearch部分,把host注释去除,修改为elasticsearch的ip+端口。
#hosts: ["localhost:9200"]
改成
hosts: ["0.0.0.0:9200"]
启动
导入kibana模块
切换到metricbeat根目录,执行启动命令:
#./metricbeat modules enable kibana #centos用法
#./metricbeat -e -c metricbeat.yml -d "publish" #ubuntu用法
配置模块生效
后台启动服务(前提是es和kibana已经启动)
./metricbeat -e &
检查metricbeat是否正常运行:curl -XGET ‘http://172.30.1.45:9200/metricbeat-*/_search?pretty’(返回索引对应内容)
显示输出
浏览器中访问http://172.30.1.45:5601/
在discover项选择metricbeat-\*查看metric的数据;
在dashboard项点击open选择要查看的数据,如: 查看Metricbeat-memory:
metricbeat模块的配置
查看metricbeat开启了哪些模块(跟filebeat一个套路)
#su - elk
#cd /home/elk/metricbeat/metricbeat-7.5.1-linux-x86\_64
#./metricbeat modules lis
https://blog.csdn.net/xoofly/article/details/103812271?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
结果
打开kibana的dashboard,查看结果。timelion部署成功
注意 : 如果只是最上面各种率没有图,下面cpu什么的有图,但是最前面是没数值的,可能是终端的时间与服务器时间不匹配,稍早一点儿造成的。
metricbeat模板字段自己设置
1.metricbeat 字段模板定义在fields.yml
在metricbeat.yml文件中添加,字段模板定义
setup.template.fields: fields.yml
备份一份fields.yml, 现在可以修改fields.yml,删除一些不需要用到的,如redis 等。
开始安装使用的时候,报如下错误,在各type:ip都在- key: ecs 下面定义,我们可以把type: ip改为type:keyword试试。
删除里面的冗余的字段,如果不删除一下,在elasticsearch里面会创建2300多个字段,删除一些没用到的,可以精简。
把type: ip 修改或者删除这个类型的字段后, 在使用Canvas中就没有报以上的错误了。
更多的Canvas 使用,需要根据自己的业务场景设置。 更多的还有一些element的使用,需要多熟悉,才能得心应手。
Metricbeat添加ip address信息
Metricbeat默认输出信息里没有ip地址,6.3版本之后可以通过add_host_metadata 来开启附带ip信息(没测试过)
原本我是通过修改modules.d/system.yml文件,在每项后面加自定义fields.ip字段来添加ip信息,类似下面这样:
- module: system
period: 15m
metricsets:
- uptime
fields:
ip: "192.168.1.188"
现在更好的办法是修改metricbeat.yml文件,通过加一行name: 192.168.1.30来实现,这样数据中的beat.name就会随之改变
注意 : 需要下载Metricbeat,以及下载对应的kibana版本。
es函数
1、index 指明索引 .es(index=nginx-access-log-\*
2、q q查询
3、timefield 指定时间轴采用的字段,默认@timestamp timefield=@timestamp
4、metric 指明展示指标,默认是个数。metric aggregation:avg,sum,min,max,cardinality。后面接字段名,例"sum:bytes"
5、split 按照某字段分组数据
6、offset 设置时间偏移值,比如-1d -1h offset=-1d
自定义和格式化可视化
.title(title="qps") 标题 .title('v.ubox.cn-QPS')
.label("yesterday") 标签
.lines($width,$fill,$show,$steps) 折线图 fill填充,width线宽 .lines(fill=1,width=0.5)
.bars($width) 柱状图
.points() 散点图
.color() 颜色 .color(#1E90FF) .color(red)
.legend($position,$column) 设置图例的位置和样式 .legend(columns=2, position=nw)
.static(value=1024, label="1k", offset="-1d", fit="scale") 绘制一个固定值
.value y轴值
举例子:
es(index=nginx-access-log-*,timefield=@timestamp,q=source:/logs/access.log,metric=sum:bytes).divide(1048576).label(‘流量曲线图’).lines(width=1.5)
两条曲线对比:
.es(index=nginx-access-log-,timefield=@timestamp,q=source:/logs/access.log,metric=sum:bytes).divide(1048576).label(today).title(‘流量对比图(MB/s)’).lines(width=1.5),.es(offset=-1d,index=nginx-access-log-,timefield=@timestamp,q=/logs/access.log,metric=sum:bytes).divide(1048576).label(yesterday).lines(width=1.5).multiply(-1)
可以在一个图中画多条曲线,使用逗号分隔 offset时间偏移量 -1d 前一天的 multiply(-1)显示在y轴负半轴。
Timelion的if-then-else
oh,Timelion条件,我们几乎不认识你。用时间来解决问题。前段时间,Timelion安静的介绍了.condition()函数,是一个超强的能力。此外,这篇文章的标题是一个完整的谎言,我有多种方式可以调用.condition()。另外一个是.if()。它的作用和.condition()完全相同,但是它更短,所以从这里开始我们使用.if()。
.if()允许我们基于点对比来改变点。它支持小于(lt),小于等于(lte),等于(eq),大于(gt)和大于等于(gte)和点与其它数值进行比较,或其它序列相同点进行比较。
开始使用其中的三个参数。
- operator 从lt,lte,eq,gt,gte中选择一个。您可能会注意到这些与elasticsearch用于范围查询的缩写相同。
- if 您将使用您指定的运算符将原始系列中的每个点与该值进行比较。
- then 如果条件匹配,则将该点设置为此值
在以下屏幕截图中,绿线将始终是我们的原值,我们将为我们的修改系列使用其他颜色。让我们将每个小于500的点都设置0。
.es().if(lt,500,null)
那很简单。我们如何设置每一个超过或大于500的为1000,有效使用二进制序列,1000表示点大于等于500和0表示小于500。我们可以这样串联两个.if()调用。
.es().if(lt, 500, null).if(gte, 500, 1000)
但是等等,我们可以使用第四个参数将其缩短到.if()。第四个参数是else,如果条件不匹配,它将该点设置为一个值。所以试试这个
.es().if(lt, 500, 0, 1000)
Cool!这些是基础知识,但是.if()可以超过静态数值比较。阅读on brave soul(在勇敢的灵魂)。
Dynamic? Dynamite!
到目前为止,我们已将点数与静态数字进行了比较。如果我们想比较我们的系列与另一个系列怎么办?例如,当系列超过其10点移动平均线时,绘制点为0,否则不显示。下面你会看到我们将.es().mvavg(10)作为if参数传递。这将对移动平均线和原始的.es()系列进行点对点比较。我们前提的另一部分,没有显示,可以通过将null传递给else来实现。
.es().if(gt, .es().mvavg(10), 0, null).points()
是的,没关系,但是我们也可以通过一个系列的then做得更好。我们可以传回原来的系列,并绘制一些竖条,通过使用.bars()而不是.points()来指出系列超过移动平均线的地点。
.es().if(gt, .es().mvavg(10), .es(), null).bars(3)
Altogether now
现在我们采用我们新发现知识,并使用它来获得喜好,就像绘制一个阴影线,绿色的地方,我们超过平均值,红色,小于平均值。
.es().if(gt, .es().mvavg(10), .es(), null).bars(3).color(#BEDB39).label(over), .es().if(lte, .es().mvavg(10), .es(), null).bars(3).color(#c66).label(under)
好,非常好。还在想这个Timelion的所有业务是什么?阅读教程,还需要更多?看看这个视频从Elastic paris聚会并且我会带你一丝不苟的阅读。此外,您可以在尝试用另一方面时,用麦克风看着我。
1、metricbeat 监控 nginx 情况
配置文件
Metricbeat:
#metricbeat modules enable nginx
nginx.yml
- module: nginx
metricsets: ["stubstatus"]
period: 10s
# Nginx hosts
hosts: ["http://127.0.0.1"]
# Path to server status. Default server-status
server_status_path: "basic\_status" #According to the situation,and depending
Nginx: (nginx need to compile install)
requried module: --with-http_stub_status_module
nginx.conf:
location /basic_status {
stub_status;
access_log off;
allow 127.0.0.1;
deny all;
}
启动
通过运行启动守护程序
#sudo ./metricbeat -e -c metricbeat.yml
#./metricbeat -e
或者
#service metricbeat start
2、Metricbeatt 监控 apache 情况
/etc/metricbeat/metricbeat.yml文件的内容:
metricbeat.config.modules:
path: ${path.config}/modules.d/\*.yml
reload.enabled: false
setup.template.settings:
index.number\_of\_shards: 1
index.codec: best\_compression
setup.dashboards.enabled: true
setup.kibana:
host: "192.168.4.10:5601"
output.elasticsearch:
hosts: ["192.168.4.10:9200"]
protocol: "http"
processors:
- add\_host\_metadata: ~
- add\_cloud\_metadata: ~
/etc/metricbeat/modules.d/apache.yml的内容:
- module: apache
metricsets:
- status
period: 60s
hosts: ["http://127.0.0.1:40081"]
#username: "user"
#password: "secret"
127.0.0.1:40081端口已处于监听状态。
执行metricbeat setup --dashboards命令以后,/var/log/metricbeat/metricbeat文件的内容:
2019-09-16T19:05:26.009+0800 INFO instance/beat.go:606 Home path: [/usr/share/metricbeat] Config path: [/etc/metricbeat] Data path: [/var/lib/metricbeat] Logs path: [/var/log/metricbeat]
2019-09-16T19:05:26.083+0800 INFO instance/beat.go:614 Beat ID: a56ef1d2-544a-490c-b5a1-8c0939b3420d
2019-09-16T19:05:26.086+0800 INFO [beat] instance/beat.go:902 Beat info {"system\_info": {"beat": {"path": {"config": "/etc/metricbeat", "data": "/var/lib/metricbeat", "home": "/usr/share/metricbeat", "logs": "/var/log/metricbeat"}, "type": "metricbeat", "uuid": "a56ef1d2-544a-490c-b5a1-8c0939b3420d"}}}
2019-09-16T19:05:26.086+0800 INFO [beat] instance/beat.go:911 Build info {"system\_info": {"build": {"commit": "9ba65d864ca37cd32c25b980dbb4020975288fc0", "libbeat": "7.2.0", "time": "2019-06-20T15:07:31.000Z", "version": "7.2.0"}}}
2019-09-16T19:05:26.086+0800 INFO [beat] instance/beat.go:914 Go runtime info {"system\_info": {"go": {"os":"linux","arch":"amd64","max\_procs":16,"version":"go1.12.4"}}}
2019-09-16T19:05:26.089+0800 INFO [beat] instance/beat.go:918 Host info {"system\_info": {"host": {"architecture":"x86\_64","boot\_time":"2019-08-25T12:14:48+08:00","containerized":false,"name":"br-sh-conf-1","ip":["127.0.0.1/8","::1/128","192.168.100.7/24","fe80::6e92:bfff:fe6e:1a44/64","192.168.4.7/24","fe80::6e92:bfff:fe6e:1a46/64","172.17.0.1/16"],"kernel\_version":"3.10.0-327.el7.x86\_64","mac":["6c:92:bf:6e:1a:44","6c:92:bf:6e:1a:44","6c:92:bf:6e:1a:46","6c:92:bf:6e:1a:46","6c:92:bf:6e:1a:44","6c:92:bf:6e:1a:46","02:42:09:bb:29:91"],"os":{"family":"redhat","platform":"centos","name":"CentOS Linux","version":"7 (Core)","major":7,"minor":2,"patch":1511,"codename":"Core"},"timezone":"CST","timezone\_offset\_sec":28800,"id":"a7517b58fad846fe931d3d147a2cadbe"}}}
2019-09-16T19:05:26.090+0800 INFO [beat] instance/beat.go:947 Process info {"system\_info": {"process": {"capabilities": {"inheritable":null,"permitted":["chown","dac\_override","dac\_read\_search","fowner","fsetid","kill","setgid","setuid","setpcap","linux\_immutable","net\_bind\_service","net\_broadcast","net\_admin","net\_raw","ipc\_lock","ipc\_owner","sys\_module","sys\_rawio","sys\_chroot","sys\_ptrace","sys\_pacct","sys\_admin","sys\_boot","sys\_nice","sys\_resource","sys\_time","sys\_tty\_config","mknod","lease","audit\_write","audit\_control","setfcap","mac\_override","mac\_admin","syslog","wake\_alarm","block\_suspend"],"effective":["chown","dac\_override","dac\_read\_search","fowner","fsetid","kill","setgid","setuid","setpcap","linux\_immutable","net\_bind\_service","net\_broadcast","net\_admin","net\_raw","ipc\_lock","ipc\_owner","sys\_module","sys\_rawio","sys\_chroot","sys\_ptrace","sys\_pacct","sys\_admin","sys\_boot","sys\_nice","sys\_resource","sys\_time","sys\_tty\_config","mknod","lease","audit\_write","audit\_control","setfcap","mac\_override","mac\_admin","syslog","wake\_alarm","block\_suspend"],"bounding":["chown","dac\_override","dac\_read\_search","fowner","fsetid","kill","setgid","setuid","setpcap","linux\_immutable","net\_bind\_service","net\_broadcast","net\_admin","net\_raw","ipc\_lock","ipc\_owner","sys\_module","sys\_rawio","sys\_chroot","sys\_ptrace","sys\_pacct","sys\_admin","sys\_boot","sys\_nice","sys\_resource","sys\_time","sys\_tty\_config","mknod","lease","audit\_write","audit\_control","setfcap","mac\_override","mac\_admin","syslog","wake\_alarm","block\_suspend"],"ambient":null}, "cwd": "/home/sysadm", "exe": "/usr/share/metricbeat/bin/metricbeat", "name": "metricbeat", "pid": 14475, "ppid": 14474, "seccomp": {"mode":"disabled"}, "start\_time": "2019-09-16T19:05:25.240+0800"}}}
2019-09-16T19:05:26.090+0800 INFO instance/beat.go:292 Setup Beat: metricbeat; Version: 7.2.0
2019-09-16T19:05:26.090+0800 INFO [index-management] idxmgmt/std.go:178 Set output.elasticsearch.index to 'metricbeat-7.2.0' as ILM is enabled.
2019-09-16T19:05:26.090+0800 INFO elasticsearch/client.go:166 Elasticsearch url: http://192.168.4.10:9200
2019-09-16T19:05:26.091+0800 INFO [publisher] pipeline/module.go:97 Beat name: br-sh-conf-1
2019-09-16T19:05:26.091+0800 INFO kibana/client.go:118 Kibana url: http://192.168.4.10:5601
2019-09-16T19:05:26.458+0800 INFO kibana/client.go:118 Kibana url: http://192.168.4.10:5601
2019-09-16T19:05:29.086+0800 INFO add_cloud_metadata/add_cloud_metadata.go:347 add_cloud_metadata: hosting provider type not detected.
2019-09-16T19:06:00.328+0800 INFO instance/beat.go:776 Kibana dashboards successfully loaded.
Kibana的dashboard里显示异常,/usr/share/metricbeat/kibana/7/dashboard/Metricbeat-apache-overview.json文件的内容,的确有很多是null或者为空。
3、metricbeat6监控mysql并显示在Kibana dashboard中
配置mysql username/password/host ip, 并去掉disabled
vi modules.d/mysql.yml.disabled
# ./metricbeat setup --dashboards 装入kibana dashboards
# ./metricbeat -e -c metricbeat.yml -d "publish"
开始生成数据, 自动填充metricbeat-带日期的index
4、Kibana6.x apache dashboard模板
地址 : https://github.com/zallan114/elasticon_tour16_demo
https://github.com/zallan114/elasticon_tour16_demo
完成三个数据集的设置-“地震数据”,“ apache日志”和“日志搜索”。
下载并安装Elasticsearch,Kibana和Logstash以及X-Pack:https://www.elastic.co/start
弹性堆栈设置
- 下载并安装Elasticsearch,Kibana和Logstash以及X-Pack:https://www.elastic.co/start
- 此设置已通过5.0.x和5.1.x测试
常规设置
- 从此仓库下载所有文件:https : //github.com/tbragin/elasticon_tour16_demo
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
ttps://www.elastic.co/start
弹性堆栈设置
- 下载并安装Elasticsearch,Kibana和Logstash以及X-Pack:https://www.elastic.co/start
- 此设置已通过5.0.x和5.1.x测试
常规设置
- 从此仓库下载所有文件:https : //github.com/tbragin/elasticon_tour16_demo
[外链图片转存中…(img-l7FuGD11-1715742635333)]
[外链图片转存中…(img-ShifTjS6-1715742635333)]
[外链图片转存中…(img-rPkIzXJz-1715742635334)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新