隨著服務(wù)的復(fù)雜度上升示弓,對服務(wù)的監(jiān)控和管理的需求顯著增加讳侨,開發(fā)人員可以使用Jconsole、jvisualvm奏属、jinfo跨跨、jstat等工具分析服務(wù)的運(yùn)行狀況,但是對于運(yùn)維人員以及其他非開發(fā)人員就不具有可行性囱皿;故需要搭建一套圖形化的監(jiān)控平臺(tái)勇婴。
簡介
Actuator
actuator是spring boot提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能,可以對應(yīng)用系統(tǒng)進(jìn)行配置查看嘱腥、相關(guān)功能統(tǒng)計(jì)等耕渴。Actuator使用方法
Jolokia
Spring Boot Actuator對外暴露應(yīng)用的監(jiān)控信息,Jolokia提供使用HTTP接口獲取JSON格式 的數(shù)據(jù)齿兔。Jolokia使用方法
Telegraf
收集系統(tǒng)和服務(wù)的統(tǒng)計(jì)數(shù)據(jù)橱脸,并支持寫入到 InfluxDB 數(shù)據(jù)庫。官方地址
Influxdb
InfluxDB 是一個(gè)開源分布式時(shí)序分苇、事件和指標(biāo)數(shù)據(jù)庫慰技。它具備如下主要特性;官方地址
- Time Series (時(shí)間序列):你以使用與時(shí)間有關(guān)的相關(guān)函數(shù)(如最大组砚,最小吻商,求和等)
- Metrics(度量):你可以實(shí)時(shí)對大量數(shù)據(jù)進(jìn)行計(jì)算
- Eevents(事件):它支持任意的事件數(shù)據(jù)
Grafana
Grafana 是一個(gè)開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器糟红,有靈活豐富的圖形化選項(xiàng)艾帐,可以混合多種風(fēng)格,支持多個(gè)數(shù)據(jù)源特點(diǎn)盆偿。官方地址
安裝
Telegraf
使用Centos柒爸,安裝方法如下,其他系統(tǒng)安裝參考
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.3.5-1.x86_64.rpm
sudo yum localinstall telegraf-1.3.5-1.x86_64.rpm
Influxdb
使用Centos事扭,安裝方法如下捎稚,
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.3.5.x86_64.rpm
sudo yum localinstall influxdb-1.3.5.x86_64.rpm
Grafana
使用Centos安裝方法如下,其他系統(tǒng)安裝參考:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.3-1.x86_64.rpm
sudo yum localinstall grafana-4.4.3-1.x86_64.rpm
配置
Telegraf
-
打開配置文件
vim /etc/telegraf/telegraf.conf
-
配置輸入源
Jolokia做為輸入源,在Vim中定位到該配置塊求橄,在非編輯模式下輸入如下命令:/inputs.telegraf
代碼如下:
[[inputs.jolokia]]
#配置jolokia接口的路徑今野,可根據(jù)自己的實(shí)際情況修改
context = "/jolokia/"
//需要收集信息的服務(wù)地址,多個(gè)可增加[[inputs.jolokia.servers]]節(jié)點(diǎn)
[[inputs.jolokia.servers]]
name = "as-server-01"
host = "127.0.0.1"
port = "9000"
# # username = "myuser"
# # password = "mypassword"
#需要收集信息的節(jié)點(diǎn)罐农,此處可參看后續(xù)的配置方法
#收集內(nèi)存的使用情況
#[[inputs.jolokia.metrics]]
# name = "heap_memory_usage"
#mbean = "java.lang:type=Memory"
#attribute = "HeapMemoryUsage"
#收集springboot中actuator的監(jiān)控信息
[[inputs.jolokia.metrics]]
name = "metrics"
mbean ="org.springframework.boot:name=metricsEndpoint,type=Endpoint"
attribute = "Data"
還支持其他如MQTT条霜、redis等服務(wù),使用方法可參考官方文檔涵亏。
-
配置 輸出源
使用InfluxDb作為輸出源宰睡,定位到該模塊/outputs.influxdb
代碼如下:
[[outputs.influxdb]]
## The HTTP or UDP URL for your InfluxDB instance. Each item should be
## of the form:
## scheme "://" host [ ":" port]
##
## Multiple urls can be specified as part of the same cluster,
## this means that only ONE of the urls will be written to each interval.
# urls = ["udp://localhost:8089"] # UDP endpoint example
#influx的http地址蒲凶,可根據(jù)實(shí)際情況修改
urls = ["http://localhost:8086"] # required
## The target database for metrics (telegraf will create it if not exists).
#數(shù)據(jù)庫名稱
database = "telegraf" # required
保存配置文件
-
啟動(dòng)服務(wù)
systemctl start telegraf
Influxdb
-
打開配置文件
vi /etc/influxdb/influxdb.conf
若不需要修改端口或其他,可使用默認(rèn)配置
-
啟動(dòng)服務(wù)
systemctl start influxdb
Grafana
使用默認(rèn)配置拆内,使用sqlite3數(shù)據(jù)庫保存配置信息旋圆,若需要更換數(shù)據(jù)庫,可打開/etc/grafana/grafana.ini配置
-
啟動(dòng)
grafana-server
使用
- 新建Springboot應(yīng)用麸恍,添加如下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
- 添加自定義的監(jiān)控指標(biāo)
@RestController
public class MyController {
//簡單技術(shù)指標(biāo)監(jiān)控
@Autowired
CounterService counterService;
/**
* 聲明日志
*/
private Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@RequestMapping("/hello")
public SimpleResult ver() throws Exception{
counterService.increment("acess.max");
return null;
}
}
- 打開Grafana
- http://localhost:3000
- 添加數(shù)據(jù)源
3.添加Dashboard,此處監(jiān)控堆內(nèi)存的使用情況和剛才添加的自定義指標(biāo)灵巧,
Influxdb的使用方法和相關(guān)函數(shù)含義可自定查詢;
堆內(nèi)存數(shù)據(jù)查詢
自定義指標(biāo)數(shù)據(jù)查詢
- 結(jié)果如下
其他
- Telegraf中Jolokia監(jiān)控源配置方法或南,可先打開Jconsole工具孩等,找到需監(jiān)控的應(yīng)用,打開Mbean選項(xiàng):
- 找到springboot中的Endpoint的metricsEndpoint
上文中Telegraf配置
[[inputs.jolokia.metrics]]
name = "metrics"
mbean ="org.springframework.boot:name=metricsEndpoint,type=Endpoint"
attribute = "Data"
- name可自定義
- mbean 對應(yīng)我們選擇的需監(jiān)控對象的ObjectName的值org.springframework.boot:type=Endpoint,name=metricsEndpoint
- attribute 對應(yīng)節(jié)點(diǎn)的屬性中的Data
- 其他需要監(jiān)控的節(jié)點(diǎn)信息采够,可按該方法找到對應(yīng)的信息肄方,如內(nèi)存信息監(jiān)控信息
[[inputs.jolokia.metrics]]
name = "heap_memory_usage"
mbean = "java.lang:type=Memory"
attribute = "HeapMemoryUsage"