Prometheus + Grafana 監(jiān)控 Silience4j

Prometheus + Grafana 監(jiān)控 Silience4j

Silience4j指標(biāo)暴露

引入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>io.github.resilience4j</groupId>
    <artifactId>resilience4j-spring-boot2</artifactId>
    <version>0.17.0</version>
</dependency>

暴露接口

Silience4j其實(shí)是有默認(rèn)的Endpoint的焚廊,但是為了接口靈活甩苛,可以自己提供apiPrometheus進(jìn)行拉取云石,一般使用默認(rèn)的"/metrics"箱残,這是Prometheus默認(rèn)的路徑狞膘,保持統(tǒng)一的暴露端口可以在結(jié)合服務(wù)發(fā)現(xiàn)時(shí)比較簡單揩懒。

@RestController
@RequestMapping
public class PrometheusController {

    @Autowired
    private CollectorRegistry collectorRegistry;

    //這里produces必須這樣設(shè)置才能被Prometheus解析
    @GetMapping(value = "/metrics", produces = "text/plain; version=0.0.4; charset=utf-8")
    public String data() {
        try {
            Writer writer = new StringWriter();
            TextFormat.write004(writer, collectorRegistry.metricFamilySamples());

            return writer.toString();
        }
        catch (IOException ex) {
            // This actually never happens since StringWriter::write() doesn't throw any
            // IOException
            throw new RuntimeException("Writing metrics failed", ex);
        }
    }
}

使用collectorRegistry.metricFamilySamples()方法就可以拿到metrics了,這些指標(biāo)也包括jvm等一系列的mertics客冈。啟動之后訪問http://localhost:8080/metrics就可以看到暴露出來的metrics了旭从。

Prometheus設(shè)置

默認(rèn)prometheus已經(jīng)安裝好,在linux下场仲,我的prometheus安裝在/usr/loacal/prometheus/目錄下:

cd /usr/local/prometheus/
vim prometheus.yml

關(guān)于具體的配置詳見prometheus官網(wǎng)和悦,這里主要配置以下項(xiàng):

scrape_configs:
    - job_name: "resilience4j_exporter"
      metrics_path: '/metrics' #這里可以設(shè)置暴露的api
      static_configs:
        - targets: ['127.0.0.1:8080']
          labels: 
              application: resilience4j

后臺啟動prometheus

./prometheus --config.file=prometheus.yml --web.enable-lifecycle &

--web.enable-lifecycle可以允許更改配置之后不用重啟prometheus,只需要執(zhí)行一遍:

curl -X POST http://localhost:9090/-/reload

訪問http://localhost:9090/targets:

prometheus

可見prometheus已經(jīng)拿到metrics了渠缕。

以上是靜態(tài)的配置方法鸽素,如果服務(wù)很多的話,這樣一個(gè)一個(gè)配置必然很麻煩亦鳞,接下來介紹利用服務(wù)發(fā)現(xiàn)consul動態(tài)進(jìn)行配置馍忽,consul的安裝參見consul官網(wǎng)。我的consul路徑為/usr/local/consul/

cd /usr/local/consul/
mkdir consul.d
cd consul.d

為簡單起見燕差,忽略服務(wù)發(fā)現(xiàn)的過程遭笋,我們在consul.d文件夾下手寫一下配置文件,表明有兩個(gè)服務(wù)注冊上consul徒探,一個(gè)resilience4j.jsonweb.json

resilience4j.json

{
   "service": {
        "name": "resilience4j",
        "address": "172.17.205.72",
        "port": 8080
    }
}

web.json

{
    "service":{
        "name":"web",
        "address": "127.0.0.1"
        "port":80
    }
}

指定配置所在文件夾啟動consul

cd /usr/local/consul/
consul agent -dev -client 0.0.0.0 -ui -config-dir=/web/cdo/consul/consul.d

訪問http://localhost:8500/ui

consul

服務(wù)已經(jīng)注冊上來了瓦呼,接下來在prometheus.yml配置下consule

scrape_configs:
    -job_name: "try"
      consul_sd_configs:
          - server: ['127.0.0.1:8500']
            services: [] #需要拉取指標(biāo)的服務(wù)列表(填服務(wù)名),如果為空則為所有服務(wù)
      relabel_configs:
          - action: replace
            source_labels: ['__meta_consul_service'] #源目標(biāo)label
            regex: (.*) #正則测暗,匹配'__meta_consul_service'的值
            replacement: $1 #選取匹配到的第一個(gè)分組央串,即resilience4j
            target_label: application #替換目標(biāo)label

這里relabel了一下標(biāo)簽,讓服務(wù)中的一些信息可以作為prometheus的標(biāo)簽碗啄,這樣可以用來區(qū)分服務(wù)质和,關(guān)于relabel可以看:https://blog.rj-bai.com/post/158.html,講解的很詳細(xì)稚字。

接下來看一下prometheus

prometheus

consul中注冊的服務(wù)都被prometheus拉取到了饲宿。

Grafana可視化

首先設(shè)置數(shù)據(jù)源,點(diǎn)擊Data Sources

data sources

添加新數(shù)據(jù)源:

add data source

Type選擇Prometheus胆描,填寫URL褒傅,名字可以隨意

new data sources

然后下載resilience4j用于grafnajson文件:grafana_dashboard.json

"annotations": {
    "list": [
      {
        "builtIn": 1,
        "datasource": "-- Grafana --", #這里改成數(shù)據(jù)源的名稱
        "enable": true,
        "hide": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Annotations & Alerts",
        "type": "dashboard"
      }
    ]
  }

點(diǎn)擊import導(dǎo)入;

import

點(diǎn)擊Uplosd .json File

upload

就可以查看可視化的監(jiān)控界面了:

finish
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末袄友,一起剝皮案震驚了整個(gè)濱河市殿托,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌剧蚣,老刑警劉巖支竹,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旋廷,死亡現(xiàn)場離奇詭異,居然都是意外死亡礼搁,警方通過查閱死者的電腦和手機(jī)饶碘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馒吴,“玉大人扎运,你說我怎么就攤上這事∫粒” “怎么了豪治?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扯罐。 經(jīng)常有香客問我负拟,道長,這世上最難降的妖魔是什么歹河? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任掩浙,我火速辦了婚禮,結(jié)果婚禮上秸歧,老公的妹妹穿的比我還像新娘厨姚。我一直安慰自己,他們只是感情好键菱,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布遣蚀。 她就那樣靜靜地躺著,像睡著了一般纱耻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上险耀,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天弄喘,我揣著相機(jī)與錄音,去河邊找鬼甩牺。 笑死蘑志,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的贬派。 我是一名探鬼主播急但,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搞乏!你這毒婦竟也來了波桩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤请敦,失蹤者是張志新(化名)和其女友劉穎镐躲,沒想到半個(gè)月后储玫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萤皂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年撒穷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片裆熙。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡端礼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出入录,到底是詐尸還是另有隱情蛤奥,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布纷跛,位于F島的核電站喻括,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贫奠。R本人自食惡果不足惜唬血,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望唤崭。 院中可真熱鬧拷恨,春花似錦、人聲如沸谢肾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芦疏。三九已至冕杠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酸茴,已是汗流浹背分预。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留薪捍,地道東北人笼痹。 一個(gè)月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像酪穿,于是被迫代替她去往敵國和親凳干。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359