最近在寻找有利的监控软件为我的微服务献身,于是乎整理文档,试验,花了很长时间。今天分享一下整理的部分工具,有时间会继续在此post中更新的!🙃
想要解锁更多新姿势?请访问我的博客。
influxDB
什么是influxDB
influxDB是一个分布式时间序列数据库。cAdvisor仅仅显示实时信息,但是不存储监视数据。因此,我们需要提供时序数据库用于存储cAdvisor组件所提供的监控信息,以便显示除实时信息之外的时序数据。
influxDB安装
(1)下载镜像1
docker pull tutum/influxdb
(2)创建容器1
2
3
4
5
6
7docker run ‐di \
‐p 8083:8083 \
‐p 8086:8086 \
‐‐expose 8090 \
‐‐expose 8099 \
‐‐name influxsrv \
tutum/influxdb
端口概述: 8083端口:web访问端口 8086:数据写入端口
打开浏览器 http://192.168.184.135:8083/ (ip自觉替换)
influxDB常用操作
创建数据库
1 | CREATE DATABASE "cadvisor" |
回车创建数据库1
SHOW DATABASES
查看数据库
创建用户并授权
创建用户1
CREATE USER "cadvisor" WITH PASSWORD 'cadvisor' WITH ALL PRIVILEGES
查看用户1
SHOW USRES
用户授权1
2
3grant all privileges on cadvisor to cadvisor
grant WRITE on cadvisor to cadvisor
grant READ on cadvisor to cadvisor
查看采集的数据
切换到cadvisor数据库,使用以下命令查看采集的数据1
SHOW MEASUREMENTS
如果想采集系统的数据,我们需要使用Cadvisor软件来实现
More
官方文档 : https://github.com/influxdata/docs.influxdata.com
cAdvisor
啥么是cAdvisor
Google开源的用于监控基础设施应用的工具,它是一个强大的监控工具,不需要任何配置就可以通过运行在Docker主机上的容器来监控Docker容器,而且可以监控Docker主机。
cAdvisor安装
(1)下载镜像docker pull google/cadvisor
(2)创建容器
1 | docker run ‐‐volume=/:/rootfs:ro ‐‐volume=/var/run:/var/run:rw ‐‐ |
WEB前端访问地址
http://192.168.184.135:8080/containers/ (请自觉替换实际ip)
性能指标含义参照如下地址
https://blog.csdn.net/ZHANG_H_A/article/details/53097084
再次查看influxDB,发现已经有很多数据被采集进去了。
Grafana
Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。
Grafana主要特性:灵活丰富的图形化选项;可以混合多种风格;支持白天和夜间模式;多个数据源。
Grafana安装
(1)下载镜像docker pull grafana/grafana
(2)创建容器1
2
3
4docker run ‐d ‐p 3001:3000 ‐e INFLUXDB_HOST=influxsrv ‐e
INFLUXDB_PORT=8086 ‐e INFLUXDB_NAME=cadvisor ‐e INFLUXDB_USER=cadvisor ‐e
INFLUXDB_PASS=cadvisor ‐‐link influxsrv:influxsrv ‐‐name grafana
grafana/grafana
注意,INFLUXDB
配置请与上文我的写的配置相同。
(3)访问
http://192.168.184.135:3001 (自觉更换ip)
用户名密码均为admin
使用
//TODO
pinpoint
是啥
pinpoint是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小(只增加约3%资源利用率),安装agent是无侵入式的,只需要在被测试的Tomcat中加上3句话,打下探针,就可以监控整套程序了。
所需软件
1 | hbase-1.2.6-bin.tar.gz |
准备两个tomcat环境,一个部署pinpoint-collector-1.6.2.war,另一个部署pinpoint-web-1.6.2.war
安装hbase
环境配置
解压hbase-1.2.6-bin.tar.gz,修改hbase/conf/hbase-site.xml文件内容如下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///pinpoint/data/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/pinpoint/data/zookeeper</value>
</property>
<property>
<name>hbase.master.port</name>
<value>60000</value>
</property>
<property>
<name>hbase.regionserver.port</name>
<value>60020</value>
</property>
</configuration>
修改hbase/conf/hbase-env.sh
文件,设置JAVA_HOME
环境变量export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home
启动hbase
hbase/bin/start-hbase.sh
执行jps查看是否有HMaster进程
访问 http://127.0.0.1:16010/master-status 查看hbase web管控台
导入hbase初始化脚步1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38hbase/bin/hbase shell /pinpoint-1.6.2/hbase/scripts/hbase-create.hbase
.
.
.
0 row(s) in 1.4160 seconds
0 row(s) in 1.2420 seconds
0 row(s) in 2.2410 seconds
0 row(s) in 1.2400 seconds
0 row(s) in 1.2450 seconds
0 row(s) in 1.2420 seconds
0 row(s) in 1.2360 seconds
0 row(s) in 1.2400 seconds
0 row(s) in 1.2370 seconds
0 row(s) in 2.2450 seconds
0 row(s) in 4.2480 seconds
0 row(s) in 1.2310 seconds
0 row(s) in 1.2430 seconds
0 row(s) in 1.2390 seconds
0 row(s) in 1.2440 seconds
0 row(s) in 1.2440 seconds
TABLE
AgentEvent
AgentInfo
AgentLifeCycle
AgentStat
AgentStatV2
ApiMetaData
ApplicationIndex
ApplicationMapStatisticsCallee_Ver2
ApplicationMapStatisticsCaller_Ver2
ApplicationMapStatisticsSelf_Ver2
ApplicationTraceIndex
HostApplicationMap_Ver2
SqlMetaData_Ver2
StringMetaData
TraceV2
Traces
16 row(s) in 0.0190 seconds
进入hbase shell
1 | hbase/bin/hbase shell |
输入status ‘detailed’查看刚才初始化的表,是否存在1
hbase(main):001:0> status 'detailed'
访问 http://127.0.0.1:16010/master-status 查看hbase web管控台
部署collector
解压apache-tomcat-8.5.15.zip并重命名为collector
拷贝pinpoint-collector-1.6.2.war到collector\webapps\目录下并重命名为ROOT.war
涉及到两个配置文件
- hbase.properties
由于使用的为hbase自带的zookeeper即hbase和zookeeper在同一台机器上,则不需要修改collector/webapps/ROOT/WEB-INF/classes/hbase.properties文件 - pinpoint-collector.properties
注意观察该配置文件中中的三个端口9994、9995、9996 默认不需要修改,其中9994为collector监听的tcp端口,9995为collector监听的udp端口
执行collector/bin/startup.sh启动collector
部署web管控台
解压apache-tomcat-8.5.15.zip并重命名为web
拷贝pinpoint-web-1.6.2.war到web\webapps\目录下并重命名为ROOT.war
同样留意web/webapps/ROOT/WEB-INF/classes/hbase.properties中的配置,若与hbase在同一台机器则不需要修改
执行web/bin/startup.sh启动web管控台(注意修改tomcat端口号,防止冲突,这里修改端口为8088)
浏览器访问 http://127.0.0.1:8088/ 查看pinpoint管控台
监控spring boot应用
这里有一个spring-boot-example.jar的应用,现在要使用pinpoint来对其监控跟踪。操作很简单,分两步
解压pinpoint-agent-1.6.2.tar.gz并对其进行配置1
tar zxvf pinpoint-agent-1.6.2.tar.gz -C pinpoint-agent
修改pinpoint-agent/pinpoint.config中的配置与collector服务一致。此处因为pinpoint-agent与collector在同
一台机器,因此默认配置即可不需要修改。
为spring-boot应用配置pinpoint-agent
启动spring-boot应用时添加如下参数1
2
3-javaagent:$AGENT_PATH/pinpoint-bootstrap-$VERSION.jar
-Dpinpoint.agentId
-Dpinpoint.applicationName
本例中的启动参数为1
java -javaagent:/pinpoint-agent/pinpoint-bootstrap-1.6.2.jar -Dpinpoint.agentId=spring-boot-app -Dpinpoint.applicationName=spring-boot-app -jar spring-boot-docker-example-1.0.jar
访问 http://127.0.0.1:8088/ ,第一次访问可能没有数据,可以先访问下应用,然后在刷新pinpoint管控台即可
more
https://www.cnblogs.com/yyhh/p/6106472.html
Open-Falcon
Open-Falcon,小米家的开源监控系统。
特点
1、强大灵活的数据采集:自动发现,支持falcon-agent、snmp、支持用户主动push、用户自定义插件支持、opentsdb data model like(timestamp、endpoint、metric、key-value tags)
2、水平扩展能力:支持每个周期上亿次的数据采集、告警判定、历史数据存储和查询
3、高效率的告警策略管理:高效的portal、支持策略模板、模板继承和覆盖、多种告警方式、支持callback调用
4、人性化的告警设置:最大告警次数、告警级别、告警恢复通知、告警暂停、不同时段不同阈值、支持维护周期
5、高效率的graph组件:单机支撑200万metric的上报、归档、存储(周期为1分钟)
6、高效的历史数据query组件:采用rrdtool的数据归档策略,秒级返回上百个metric一年的历史数据
7、dashboard:多维度的数据展示,用户自定义Screen
8、高可用:整个系统无核心单点,易运维,易部署,可水平扩展
9、开发语言: 整个系统的后端,全部golang编写,portal和dashboard使用python编写。
社区和文档支持
http://book.open-falcon.org/zh/index.html
环境准备
安装redis
yum安装1
yum install -y redis
修改配置redis.conf1
vi /etc/redis.conf
启动redis:redis-server &
安装mysql
1 | yum install -y mysql-server |
启动mysql:service mysqld start
查看mysql状态:service mysqld status
初始化mysql数据库表
数据默认没有设置密码,执行的时候出现输入密码,直接回车。1
2
3
4
5
6
7
8cd /tmp/ && git clone https://github.com/open-falcon/falcon-plus.git
cd /tmp/falcon-plus/scripts/mysql/db_schema/
mysql -h 127.0.0.1 -u root -p < 1_uic-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 2_portal-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 3_dashboard-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 4_graph-db-schema.sql
mysql -h 127.0.0.1 -u root -p < 5_alarms-db-schema.sql
rm -rf /tmp/falcon-plus/
设置mysql的root用户密码:mysql –u root
查看mysql用户和密码select user,host,password from mysql.user;
发现查询密码都是空,然后开始设置root的密码为bigdata1
mysql> set password for root@localhost=password('bigdata');
退出:mysql>exit
下载编译后的二进制包
1 | cd /data/program/software |
后端安装
创建工作目录
1 | export FALCON_HOME=/home/work |
解压二进制包
1 | cd /data/program/software |
配置数据库账号和密码
1 | cd $WORKSPACE |
注意root:后面默认密码为空.
启动
查看目录下包括Open-Falcon的所有组件1
2cd $WORKSPACE
./open-falcon start
检查所有模块的启动状况./open-falcon check
更多命令行工具
1 | ./open-falcon [start|stop|restart|check|monitor|reload] module |
前端安装
创建工作目录
这一步在创建后端服务的时候已经建立好,所以不需要再进行操作。1
2
3
4export HOME=/home/work
export WORKSPACE=$HOME/open-falcon
mkdir -p $WORKSPACE
cd $WORKSPACE
克隆前端组件代码
1 | cd $WORKSPACE |
安装依赖包
1 | yum install -y python-virtualenv |
1 | cd $WORKSPACE/dashboard/ |
1 | ./env/bin/pip install -r pip_requirements.txt -i https://pypi.douban.com/simple |
注意:如果执行上面有问题,就直接执行./env/bin/pip install -r pip_requirements.txt
修改配置
dashboard的配置文件为: ‘rrd/config.py’,请根据实际情况修改1
2
3
4## API_ADDR 表示后端api组件的地址
API_ADDR = "http://127.0.0.1:8080/api/v1"
## 根据实际情况,修改PORTAL_DB_*, 默认用户名为root,默认密码为""
## 根据实际情况,修改ALARM_DB_*, 默认用户名为root,默认密码为""
启动
1 | bash control start |
open http://127.0.0.1:8081 in your browser.
停止bash control stop
安装-Agent
介绍
agent用于采集机器负载监控指标,比如cpu.idle、load.1min、disk.io.util等等,每隔60秒push给Transfer。agent与Transfer建立了长连接,数据发送速度比较快,agent提供了一个http接口/v1/push用于接收用户手工push的一些数据,然后通过长连接迅速转发给Transfer。
部署
agent需要部署到所有要被监控的机器上,比如公司有10万台机器,那就要部署10万个agent。agent本身资源消耗很少,不用担心。
首先找到之前后端服务的解压目录:/home/work/open-falcon/
拷贝agent到需要监控的服务器上面scp -r agent/ root@dst1:/home/work/open-falcon
拷贝open-falcon到需要监控的服务器上面scp -r open-falcon root@dst1:/home/work/open-falcon
修改配置文件:
配置文件必须叫cfg.json,如下参照修改:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54{
"debug": true, # 控制一些debug信息的输出,生产环境通常设置为false
"hostname": "", # agent采集了数据发给transfer,endpoint就设置为了hostname,默认通过`hostname`获取,如果配置中配置了hostname,就用配置中的
"ip": "", # agent与hbs心跳的时候会把自己的ip地址发给hbs,agent会自动探测本机ip,如果不想让agent自动探测,可以手工修改该配置
"plugin": {
"enabled": false, # 默认不开启插件机制
"dir": "./plugin", # 把放置插件脚本的git repo clone到这个目录
"git": "https://github.com/open-falcon/plugin.git", # 放置插件脚本的git repo地址
"logs": "./logs" # 插件执行的log,如果插件执行有问题,可以去这个目录看log
},
"heartbeat": {
"enabled": true, # 此处enabled要设置为true
"addr": "127.0.0.1:6030", # hbs的地址,端口是hbs的rpc端口
"interval": 60, # 心跳周期,单位是秒
"timeout": 1000 # 连接hbs的超时时间,单位是毫秒
},
"transfer": {
"enabled": true,
"addrs": [
"127.0.0.1:18433"
], # transfer的地址,端口是transfer的rpc端口, 可以支持写多个transfer的地址,agent会保证HA
"interval": 60, # 采集周期,单位是秒,即agent一分钟采集一次数据发给transfer
"timeout": 1000 # 连接transfer的超时时间,单位是毫秒
},
"http": {
"enabled": true, # 是否要监听http端口
"listen": ":1988",
"backdoor": false
},
"collector": {
"ifacePrefix": ["eth", "em"], # 默认配置只会采集网卡名称前缀是eth、em的网卡流量,配置为空就会采集所有的,lo的也会采集。可以从/proc/net/dev看到各个网卡的流量信息
"mountPoint": []
},
"default_tags": {
},
"ignore": { # 默认采集了200多个metric,可以通过ignore设置为不采集
"cpu.busy": true,
"df.bytes.free": true,
"df.bytes.total": true,
"df.bytes.used": true,
"df.bytes.used.percent": true,
"df.inodes.total": true,
"df.inodes.free": true,
"df.inodes.used": true,
"df.inodes.used.percent": true,
"mem.memtotal": true,
"mem.memused": true,
"mem.memused.percent": true,
"mem.memfree": true,
"mem.swaptotal": true,
"mem.swapused": true,
"mem.swapfree": true
}
}
启动
./open-falcon start agent
启动进程./open-falcon stop agent
停止进程./open-falcon monitor agent
查看日志
看var目录下的log是否正常,或者浏览器访问其1988端口。另外agent提供了一个–check参数,可以检查agent是否可以正常跑在当前机器上./falcon-agent --check
可进入监控界面查看
安装数据转发服务-Transfer
简介
transfer是数据转发服务。它接收agent上报的数据,然后按照哈希规则进行数据分片、并将分片后的数据分别push给graph&judge等组件。
服务部署
服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。1
2# 修改配置, 配置项含义见下文
vim cfg.json
1 | # 启动服务 |
1 | # 校验服务,这里假定服务开启了6060的http监听端口。检验结果为ok表明服务正常启动。 |
1 | # 停止服务 |
1 | # 查看日志 |
配置说明
配置文件默认为./cfg.json
debug: true/false, 如果为true,日志中会打印debug信息1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45minStep: 30, 允许上报的数据最小间隔,默认为30秒
http
- enabled: true/false, 表示是否开启该http端口,该端口为控制端口,主要用来对transfer发送控制命令、统计命令、debug命令等
- listen: 表示监听的http端口
rpc
- enabled: true/false, 表示是否开启该jsonrpc数据接收端口, Agent发送数据使用的就是该端口
- listen: 表示监听的http端口
socket #即将被废弃,请避免使用
- enabled: true/false, 表示是否开启该telnet方式的数据接收端口,这是为了方便用户一行行的发送数据给transfer
- listen: 表示监听的http端口
judge
- enabled: true/false, 表示是否开启向judge发送数据
- batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
- pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
- maxConns: 连接池相关配置,最大连接数,建议保持默认
- maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
- replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
- cluster: key-value形式的字典,表示后端的judge列表,其中key代表后端judge名字,value代表的是具体的ip:port
graph
- enabled: true/false, 表示是否开启向graph发送数据
- batch: 数据转发的批量大小,可以加快发送速度,建议保持默认值
- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
- pingMethod: 后端提供的ping接口,用来探测连接是否可用,必须保持默认
- maxConns: 连接池相关配置,最大连接数,建议保持默认
- maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
- replicas: 这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可
- cluster: key-value形式的字典,表示后端的graph列表,其中key代表后端graph名字,value代表的是具体的ip:port(多个地址用逗号隔开, transfer会将同一份数据发送至各个地址,利用这个特性可以实现数据的多重备份)
tsdb
- enabled: true/false, 表示是否开启向open tsdb发送数据
- batch: 数据转发的批量大小,可以加快发送速度
- connTimeout: 单位是毫秒,与后端建立连接的超时时间,可以根据网络质量微调,建议保持默认
- callTimeout: 单位是毫秒,发送数据给后端的超时时间,可以根据网络质量微调,建议保持默认
- maxConns: 连接池相关配置,最大连接数,建议保持默认
- maxIdle: 连接池相关配置,最大空闲连接数,建议保持默认
- retry: 连接后端的重试次数和发送数据的重试次数
- address: tsdb地址或者tsdb集群vip地址, 通过tcp连接tsdb.
部署完成transfer组件后,请修改agent的配置,使其指向正确的transfer地址。在安装完graph和judge后,请修改transfer的相应配置、使其能够正确寻址到这两个组件。
安装查询组件-API
介绍
api组件,提供统一的restAPI操作接口。比如:api组件接收查询请求,根据一致性哈希算法去相应的graph实例查询不同metric的数据,然后汇总拿到的数据,最后统一返回给用户。
服务部署
服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。1
2
3
4
5
6
7
8
9
10
11# 修改配置, 配置项含义见下文, 注意graph集群的配置
vim cfg.json
# 启动服务
./open-falcon start api
# 停止服务
./open-falcon stop api
# 查看日志
./open-falcon monitor api
服务说明
注意: 请确保 graphs的内容与transfer的配置完全一致1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29{
"log_level": "debug",
"db": { //数据库相关的连接配置信息
"faclon_portal": "root:@tcp(127.0.0.1:3306)/falcon_portal?charset=utf8&parseTime=True&loc=Local",
"graph": "root:@tcp(127.0.0.1:3306)/graph?charset=utf8&parseTime=True&loc=Local",
"uic": "root:@tcp(127.0.0.1:3306)/uic?charset=utf8&parseTime=True&loc=Local",
"dashboard": "root:@tcp(127.0.0.1:3306)/dashboard?charset=utf8&parseTime=True&loc=Local",
"alarms": "root:@tcp(127.0.0.1:3306)/alarms?charset=utf8&parseTime=True&loc=Local",
"db_bug": true
},
"graphs": { // graph模块的部署列表信息
"cluster": {
"graph-00": "127.0.0.1:6070"
},
"max_conns": 100,
"max_idle": 100,
"conn_timeout": 1000,
"call_timeout": 5000,
"numberOfReplicas": 500
},
"metric_list_file": "./api/data/metric",
"web_port": ":8080", // http监听端口
"access_control": true, // 如果设置为false,那么任何用户都可以具备管理员权限
"salt": "pleaseinputwhichyouareusingnow", //数据库加密密码的时候的salt
"skip_auth": false, //如果设置为true,那么访问api就不需要经过认证
"default_token": "default-token-used-in-server-side", //用于服务端各模块间的访问授权
"gen_doc": false,
"gen_doc_path": "doc/module.html"
}
备注:
部署完成api组件后,请修改dashboard组件的配置、使其能够正确寻址到api组件。
请确保api组件的graph列表 与 transfer的配置 一致。
安装绘图数据的组件- Graph
介绍
graph是存储绘图数据的组件。graph组件 接收transfer组件推送上来的监控数据,同时处理api组件的查询请求、返回绘图数据。
服务部署
服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。(通知之前的一样,拷贝需要的包到指定的服务器)
修改配置, 配置项含义见下文
1 | vim cfg.json |
三、 配置说明
配置文件默认为./cfg.json
,配置如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27{
"debug": false, //true or false, 是否开启debug日志
"http": {
"enabled": true, //true or false, 表示是否开启该http端口,该端口为控制端口,主要用来对graph发送控制命令、统计命令、debug命令
"listen": "0.0.0.0:6071" //表示监听的http端口
},
"rpc": {
"enabled": true, //true or false, 表示是否开启该rpc端口,该端口为数据接收端口
"listen": "0.0.0.0:6070" //表示监听的rpc端口
},
"rrd": {
"storage": "./data/6070" // 历史数据的文件存储路径(如有必要,请修改为合适的路径)
},
"db": {
"dsn": "root:@tcp(127.0.0.1:3306)/graph?loc=Local&parseTime=true", //MySQL的连接信息,默认用户名是root,密码为空,host为127.0.0.1,database为graph(如有必要,请修改)
"maxIdle": 4 //MySQL连接池配置,连接池允许的最大连接数,保持默认即可
},
"callTimeout": 5000, //RPC调用超时时间,单位ms
"migrate": { //扩容graph时历史数据自动迁移
"enabled": false, //true or false, 表示graph是否处于数据迁移状态
"concurrency": 2, //数据迁移时的并发连接数,建议保持默认
"replicas": 500, //这是一致性hash算法需要的节点副本数量,建议不要变更,保持默认即可(必须和transfer的配置中保持一致)
"cluster": { //未扩容前老的graph实例列表
"graph-00" : "127.0.0.1:6070"
}
}
}
备注
如果上图红框中出现同一台服务器的不同名字的配置,则进入数据库,进行如下操作:
进入数据库:mysql –u root –p
查看所有数据库:show databses;
选择数据库:use graph;
查看表:show tables;
查询表:select * from endpoint;
删除不需要的数据:delete from endpoint where id=153;
如下可以不操作:
可以一起删除falcon_portal库中的host表中的无用数据。
Mysql监控
工作原理
在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。
MySQL的数据采集可以通过mymon来做。
mymon是一个cron,每分钟跑一次,配置文件中配置了数据库连接地址,mymon连到该数据库,采集一些监控指标,比如global status, global variables, slave status等等,然后组装为open-falcon规定的格式的数据,post给本机的falcon-agent。falcon-agent提供了一个http接口,使用方法可以参考数据采集中的例子。比如我们有1000台机器都部署了MySQL实例,可以在这1000台机器上分别部署1000个cron,即:与数据库实例一一对应。
配置安装
下载地址:https://github.com/open-falcon/mymon
安装:
设置$GOPATH:export $GOPATH =/src/1
2
3
4
5
6
7
8
9mkdir -p $GOPATH/src/github.com/open-falcon
cd $GOPATH/src/github.com/open-falcon
git clone https://github.com/open-falcon/mymon.git
cd mymon
go get ./...
go build -o mymon
echo '* * * * * cd $GOPATH/src/github.com/open-falcon/mymon && ./mymon -c etc/mon.cfg' > /etc/cron.d/mymon
执行go get ./…的时候出现如下错误:1
2package golang.org/x/crypto/ssh/terminal: unrecognized import path "golang.org/x/crypto/ssh/terminal" (https fetch: Get https://golang.org/x/crypto/ssh/terminal?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
package golang.org/x/sys/unix: unrecognized import path "golang.org/x/sys/unix" (https fetch: Get https://golang.org/x/sys/unix?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
解决办法:
方法一:直接下载文件,然后把解压出来的文件夹放在src里。
下载地址:https://pan.baidu.com/s/1boVAtJp
方法二:直接从git上下载对应文件放到src下面。
mkdir -p $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone https://github.com/golang/crypto.git
git clone https://github.com/golang/sys.git
修改配置文件:
/src/github.com/open-falcon/mymon/etcvi mon.cfg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[default]
log_file=mymon.log # 日志路径和文件名
# Panic 0
# Fatal 1
# Error 2
# Warn 3
# Info 4
# Debug 5
log_level=4 # 日志级别
falcon_client=http://127.0.0.1:1988/v1/push # falcon agent连接地址
#自定义endpoint
endpoint=127.0.0.1 #若不设置则使用OS的hostname
[mysql]
user=root # 数据库用户名
password= # 数据库密码
host=127.0.0.1 # 数据库连接地址
port=3306 # 数据库端口
采集成功!
Redis监控
介绍~
Redis的数据采集可以通过采集脚本redis-monitor 或者 redismon来做。
redis-monitor是一个cron,每分钟跑一次采集脚本redis-monitor.py,其中配置了redis服务的地址,redis-monitor连到redis实例,采集一些监控指标,比如connected_clients、used_memory等等,然后组装为open-falcon规定的格式的数据,post给本机的falcon-agent。falcon-agent提供了一个http接口,使用方法可以参考数据采集中的例子。
比如,我们有1000台机器都部署了Redis实例,可以在这1000台机器上分别部署1000个cron,即:与Redis实例一一对应。
安装
下载地址:https://github.com/iambocai/falcon-monit-scripts
进入目录:/data/program/software/falcon-monit-scripts-master/redis
修改配置文件:vi redis-monitor.py
修改对应连接到agent的地址:
1 | #!/bin/env python |
启动测试python redis-monitor.py
将脚本加入crontab执行即可
查看服务状态:service crond status
编辑:crontab –e
加入命令,一分钟执行一次,然后保存。
1 | */1 * * * * python /data/program/software/falcon-monit-scripts-master/redis/redis-monitor.py |
重启服务service crond restart
汇报字段
key | tag | type | note |
---|---|---|---|
redis.connected_clients | port | GAUGE | 已连接客户端的数量 |
redis.blocked_clients | port | GAUGE | 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 |
redis.used_memory | port | GAUGE | 由 Redis 分配器分配的内存总量,以字节(byte)为单位 |
redis.used_memory_rss | port | GAUGE | 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小) |
redis.mem_fragmentation_ratio | port | GAUGE | used_memory_rss 和 used_memory 之间的比率 |
redis.total_commands_processed | port | COUNTER | 采集周期内执行命令总数 |
redis.rejected_connections | port | COUNTER | 采集周期内拒绝连接总数 |
redis.expired_keys | port | COUNTER | 采集周期内过期key总数 |
redis.evicted_keys | port | COUNTER | 采集周期内踢出key总数 |
redis.keyspace_hits | port | COUNTER | 采集周期内key命中总数 |
redis.keyspace_misses | port | COUNTER | 采集周期内key拒绝总数 |
redis.keyspace_hit_ratio | port | GAUGE | 访问命中率 |
如需增减字段,请修改monit_keys变量
Rabbitmq监控
介绍
在数据采集一节中我们介绍了常见的监控数据源。open-falcon作为一个监控框架,可以去采集任何系统的监控指标数据,只要将监控数据组织为open-falcon规范的格式就OK了。
RMQ的数据采集可以通过脚本rabbitmq-monitor来做。
rabbitmq-monitor是一个cron,每分钟跑一次脚本rabbitmq-monitor.py,其中配置了RMQ的用户名&密码等,脚本连到该RMQ实例,采集一些监控指标,比如messages_ready、messages_total、deliver_rate、publish_rate等等,然后组装为open-falcon规定的格式的数据,post给本机的falcon-agent。falcon-agent提供了一个http接口,使用方法可以参考数据采集中的例子。
安装配置
下载地址:https://github.com/iambocai/falcon-monit-scripts/tree/master/rabbitmq
修改配置:vi rabbitmq-monitor.py
1、根据实际部署情况,修改15,16行的rabbitmq-server管理端口和登录用户名密码
2、确认1中配置的rabbitmq用户有你想监控的queue/vhosts的权限
3、将脚本加入crontab即可
新建脚本 : vi rabbitmq_cron
1
2* * * * * root (cd /data/program/software/falcon-monit-scripts-master/rabbitmq && python rabbitmq-monitor.py > /dev/null)
cp rabbitmq_cron /etc/cron.d/
汇报字段
key | tag | type | note |
---|---|---|---|
rabbitmq.messages_ready | name(Queue名字) | GAUGE | 队列中处于等待被消费状态消息数 |
rabbitmq.messages_unacknowledged | name(Queue名字) | GAUGE | 队列中处于消费中状态的消息数 |
rabbitmq.messages_total | name(Queue名字) | GAUGE | 队列中所有未完成消费的消息数,等于messages_ready+messages_unacknowledged |
rabbitmq.ack_rate | name(Queue名字) | GAUGE | 消费者ack的速率 |
rabbitmq.deliver_rate | name(Queue名字) | GAUGE | deliver的速率 |
rabbitmq.deliver_get_rate | name(Queue名字) | GAUGE | deliver_get的速率 |
rabbitmq.publish_rate | name(Queue名字) | GAUGE | publish的速率 |
完
全片结束,觉得我写的不错?想要了解更多精彩新姿势?赶快打开我的👉个人博客 👈吧!
谢谢你那么可爱,还一直关注着我~❤😝