grafana+ collectd+ influxdb 搭建Linux+Java监控环境
如题,日常不论是dev还是product环境,都需要对机器进行监控,但是自研成本较高。向大家推荐一套简单易于搭建,硬件设备成本较小的监控全家桶。
大致分为如下几个部分:
1.grafana 用于展示数据图表的web软件,从数据库中读取数据(本文是influxdb)
2.collectd 客户端信息收集器,收集的数据向数据库中存储(本文是influxdb)
3.influxdb 时序数据库(支持仅保存一段时间内的数据策略,不会爆硬盘)。
先看效果图
(大神请勿黑我的机器)
(笔者展示的是自用)两台阿里云配置的监控,由于外网访问速度只有1M,加载速度慢,暂时不分享。
现在,我们来搭建环境(ubuntu下,其实debain都可以,树莓派也行):
先更新软件环境:sudo apt-get update -y && sudo apt-get upgrade -y
如果软件环境比较新也可以不更新,如果apt无法安装请自行参考修改清华源(PS:辣鸡阿里源,对部分arm很不友好)
第一步:软件安装
1.安装influxdb
sudo apt-get install influxdb -y
2.安装collectd
sudo apt-get install collectd -y
3.安装grafana(官网安装教程,apt-get安装的版本又老又丑,辣鸡)
wget https://dl.grafana.com/oss/release/grafana_5.4.3_amd64.deb
sudo dpkg -i grafana_5.4.3_amd64.deb
(ps:wget下载速度太慢,还是迅雷下,然后上传上去dpkg安装吧,手贱apt用autoremove卸载干净)
第二步:配置环境
1.influxdb配置
访问influxdb 默认管理控制台 8083端口
http://你的ubuntu机器地址:8083端口
创建我的数据库 :CREATE DATABASE "98k"
创建数据保存策略并替换默认的保存策略:
CREATE RETENTION POLICY "24_hours" ON "98k" DURATION 24h REPLICATION 1 DEFAULT
(图:略了略了)
创建管理员账户 admin admin
接下来需要配置influxdb对数据采集器collectd的支持
ubuntu机器上,切root用户
su root
输入密码
cd /etc/influxdb
编辑配置文件influxdb.conf
修改关于[collectd]的配置段
[collectd]
enabled = true
bind-address = "0.0.0.0:25826"
database = "98k"
typesdb = "/etc/influxdb/types.db"
# database = ""
# typesdb = ""
# These next lines control how batching works. You should have this enabled
# otherwise you could get dropped metrics or poor performance. Batching
# will buffer points in memory if you have many coming in.
batch-size = 5000 # will flush if this many points get buffered
batch-pending = 10 # number of batches that may be pending in memory
batch-timeout = "10s" # will flush at least this often even if we haven't hit buffer limit
# read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
这段主要就是 开启true,然后配置下绑定IP和地址,操作的数据库。
注意:typesdb 很重要,这个文件在/usr/share/collectd/文件夹下可以找到,如果没有这个文件,grafana默认的模板后面都带着value的后缀单词,而写进库里的没有,导致数据匹配不上。例如cpu_,grafana 导入的默认模板是cpu_value。
给types.db加上专用的java监控的value(这里使用collectd fastjmx插件,配置collectd环节会讲解,先配置上)
fastjmx_cycle value:GAUGE:0:U
fastjmx_latency value:GAUGE:0:U
重启influxdb
sudo systemctl restart influxdb
顺眼看下状态
sudo systemctl status influxdb
到此influxdb的配置完成
2.collectd的配置
(在你需要被监控的机器上,安装这个软件)
cd /etc/collectd
cp collectd.conf collectd.conf.backup
vi collectd.conf 进入编辑模式
发现有同样的东西,都配置上吧
我们对应观察数据的grafana使用的模板是https://grafana.com/dashboards/1503,打开这个网站会发现下面有个<plugin "java">,全部复制到collectd.conf (这个就是配置jvm监控的功能,注意整理文件,文件内有自带的java插件,不要使用)
到这段配置的最下面配置对应jvm的ip和JMX端口(如何让Java虚拟机启动jmx端口不在本文叙述,参照tomcat多实例启动中,对JAVA参数设置的方式)
这里可能你会注意到,有多个Connection,对的,这个插件可以用一个collectd收集多个机器的jvm信息,但是做不到收集其他机器的物理信息,本文既要监控jvm也要监控部分linux物理数据。
文件头部有个配置插件JAVA插件程序的地方
这个东西,需要去clone相关代码然后自己编译
https://codeload.github.com/egineering-llc/collectd-fast-jmx/zip/1.0.0 下载地址
package后,拿到对应的两个文件,上传到插件配置的对应位置,文件名字不要错了
打开如下插件的注释(配置的就是influxdb机器的ip地址,端口不用改,默认和influxdb.conf 里的collectd是一致的)
LoadPlugin network
<Plugin network>
Server "127.0.0.1" "25826"
</Plugin>
重启collected
sudo systemctl restart collectd
sudo systemctl status collectd 老规矩看一眼状态
3.配置grafana
初始化配置这里就不阐述了,基本的账户密码什么的。
grafana配置分为两部分,配置数据源和导入看板
默认账户密码 admin admin 重置密码
添加数据源
保存,会有提示成功还是失败。
添加JVM看板
1503是看板代号,可以去grafana官网搜索你需要的看板
https://grafana.com/dashboards?dataSource=influxdb&category=collectd&collector=collectd
选择数据源,改标题名字
这个时候还没有数据源
配置jvm监控成功
接下来需要collectd linux 的看板,我们去官网搜索下
我用的是server-operating-system-metrics_rev2.json 这个看板
还是之前那个创建看板的地方
可以上传文件,可以直接粘贴json
搞完就成功
到这里,环境搭建完成
我们可以从这些看板中,合并出自己需要看的内容
创建个看板,名字随便起
创建完成后 保存
编辑刚加进来的看板
自定义看板设定完成。
环境搭建总结:
1.多种软件衔接可能会遇到各种各样的问题,例如网络不通,防火墙挡住了,软件版本不对,配置文件没有衔接上等等。首先需要理解各种软件的作用,然后细查配置来一一排除,看这篇帖子的同学们,如果搭建遇到什么问题不要心急,慢慢来。
2.collectd并不是最好的数据收集工具,在官网上看到的推荐都是
当然没有最好的工具,只有最适合的,弄懂一种工具之后,其他的就顺风顺水。
最后,祝大家身体健康,提前……咳咳,欢迎交流