(轉(zhuǎn)載)使用Prometheus+Grafana監(jiān)控RocketMQ

一個(gè)服務(wù)搭建起來了妖泄,那總得要監(jiān)控其性能指標(biāo),有問題的時(shí)候要及時(shí)告警通知游添。對(duì)于監(jiān)控類似數(shù)據(jù)庫(kù)、消息隊(duì)列通熄、緩存或者系統(tǒng)性能指標(biāo)的唆涝,使用prometheus+grafana最合適不過了。下面將會(huì) 介紹如何去監(jiān)控RocketMQ唇辨,原文 點(diǎn)我


本文將對(duì) RocketMQ-Exporter 的設(shè)計(jì)實(shí)現(xiàn)做一個(gè)簡(jiǎn)單的介紹廊酣,讀者可以通過本文了解到 RocketMQ-Exporter 的實(shí)現(xiàn)過程,以及通過 RocketMQ-Exporter 來搭建自己的 RocketMQ 監(jiān)控系統(tǒng)赏枚。該項(xiàng)目的 git 地址 https://github.com/apache/rocketmq-exporter

文章主要內(nèi)容包含以下幾個(gè)方面:

  1. RocketMQ 介紹
  2. Prometheus 簡(jiǎn)介
  3. RocketMQ-Exporter 的具體實(shí)現(xiàn)
  4. RocketMQ-Exporter 的監(jiān)控指標(biāo)和告警指標(biāo)
  5. RocketMQ-Exporter 使用示例

RocketMQ 介紹

RocketMQ 是一個(gè)分布式消息和流數(shù)據(jù)平臺(tái)亡驰,具有低延遲、高性能饿幅、高可靠性凡辱、萬億級(jí)容量和靈活的可擴(kuò)展性。簡(jiǎn)單的來說栗恩,它由 Broker 服務(wù)器和客戶端兩部分組成透乾,其中客戶端一個(gè)是消息發(fā)布者客戶端 (Producer),它負(fù)責(zé)向 Broker 服務(wù)器發(fā)送消息;另外一個(gè)是消息的消費(fèi)者客戶端 (Consumer)续徽,多個(gè)消費(fèi)者可以組成一個(gè)消費(fèi)組蚓曼,來訂閱和拉取消費(fèi) Broker 服務(wù)器上存儲(chǔ)的消息。正由于它具有高性能钦扭、高可靠性和高實(shí)時(shí)性的特點(diǎn)纫版,與其他協(xié)議組件在 MQTT 等各種消息場(chǎng)景中的結(jié)合也越來越多,應(yīng)用越來越廣泛客情。而對(duì)于這樣一個(gè)強(qiáng)大的消息中間件平臺(tái)其弊,在實(shí)際使用的時(shí)候還缺少一個(gè)監(jiān)控管理平臺(tái)。而當(dāng)前在開源界膀斋,使用最廣泛監(jiān)控解決方案的就是 Prometheus梭伐。與其它傳統(tǒng)監(jiān)控系統(tǒng)相比較,Prometheus 具有易于管理仰担,監(jiān)控服務(wù)的內(nèi)部運(yùn)行狀態(tài)糊识,強(qiáng)大的數(shù)據(jù)模型,強(qiáng)大的查詢語言 PromQL摔蓝,高效的數(shù)據(jù)處理赂苗,可擴(kuò)展,易于集成贮尉,可視化拌滋,開放性等優(yōu)點(diǎn)。并且借助于 Prometheus 可以很快速的構(gòu)建出一個(gè)能夠監(jiān)控 RocketMQ 的監(jiān)控平臺(tái)猜谚。

Prometheus 簡(jiǎn)介

下圖展示了 Prometheus 的基本架構(gòu):

Prometheus Server

Prometheus Server 是 Prometheus 組件中的核心部分败砂,負(fù)責(zé)實(shí)現(xiàn)對(duì)監(jiān)控?cái)?shù)據(jù)的獲取,存儲(chǔ)以及查詢魏铅。 Prometheus Server 可以通過靜態(tài)配置管理監(jiān)控目標(biāo)昌犹,也可以配合使用 Service Discovery 的方式動(dòng)態(tài)管理監(jiān)控目標(biāo),并從這些監(jiān)控目標(biāo)中獲取數(shù)據(jù)沦零。其次 Prometheus Server 需要對(duì)采集到的監(jiān)控?cái)?shù)據(jù)進(jìn)行存儲(chǔ)祭隔,Prometheus Server 本身就是一個(gè)時(shí)序數(shù)據(jù)庫(kù),將采集到的監(jiān)控?cái)?shù)據(jù)按照時(shí)間序列的方式存儲(chǔ)在本地磁盤當(dāng)中路操。最后 Prometheus Server 對(duì)外提供了自定義的 PromQL 語言,實(shí)現(xiàn)對(duì)數(shù)據(jù)的查詢以及分析千贯。

Exporters

Exporter 將監(jiān)控?cái)?shù)據(jù)采集的端點(diǎn)通過 HTTP 服務(wù)的形式暴露給 Prometheus Server屯仗,Prometheus Server 通過訪問該 Exporter 提供的 Endpoint 端點(diǎn),即可獲取到需要采集的監(jiān)控?cái)?shù)據(jù)搔谴。RocketMQ-Exporter 就是這樣一個(gè) Exporter魁袜,它首先從 RocketMQ 集群采集數(shù)據(jù),然后借助 Prometheus 提供的第三方客戶端庫(kù)將采集的數(shù)據(jù)規(guī)范化成符合 Prometheus 系統(tǒng)要求的數(shù)據(jù),Prometheus 定時(shí)去從 Exporter 拉取數(shù)據(jù)即可峰弹。當(dāng)前 RocketMQ Exporter 已被 Prometheus 官方收錄店量,其地址為 https://github.com/apache/rocketmq-exporter

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

RocketMQ-Exporter 的具體實(shí)現(xiàn)

當(dāng)前在 Exporter 當(dāng)中,實(shí)現(xiàn)原理如下圖所示:

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

整個(gè)系統(tǒng)基于 spring boot 框架來實(shí)現(xiàn)鞠呈。由于 MQ 內(nèi)部本身提供了比較全面的數(shù)據(jù)統(tǒng)計(jì)信息融师,所以對(duì)于 Exporter 而言,只需要將 MQ 集群提供的統(tǒng)計(jì)信息取出然后進(jìn)行加工而已蚁吝。所以 RocketMQ-Exporter 的基本邏輯是內(nèi)部啟動(dòng)多個(gè)定時(shí)任務(wù)周期性的從 MQ 集群拉取數(shù)據(jù)旱爆,然后將數(shù)據(jù)規(guī)范化后通過端點(diǎn)暴露給 Prometheus 即可。其中主要包含如下主要的三個(gè)功能部分:

  • MQAdminExt 模塊通過封裝 MQ 系統(tǒng)客戶端提供的接口來獲取 MQ 集群內(nèi)部的統(tǒng)計(jì)信息窘茁。
  • MetricService 負(fù)責(zé)將 MQ 集群返回的結(jié)果數(shù)據(jù)進(jìn)行加工怀伦,使其符合 Prometheus 要求的格式化數(shù)據(jù)。
  • Collect 模塊負(fù)責(zé)存儲(chǔ)規(guī)范化后的數(shù)據(jù)山林,最后當(dāng) Prometheus 定時(shí)從 Exporter 拉取數(shù)據(jù)的時(shí)候房待,Exporter 就將 Collector 收集的數(shù)據(jù)通過 HTTP 的形式在 /metrics 端點(diǎn)進(jìn)行暴露。

RocketMQ-Exporter 的監(jiān)控指標(biāo)和告警指標(biāo)

RocketMQ-Exporter 主要是配合 Prometheus 來做監(jiān)控驼抹,下面來看看當(dāng)前在 Expoter 中定義了哪些監(jiān)控指標(biāo)和告警指標(biāo)

  • 監(jiān)控指標(biāo)
監(jiān)控指標(biāo) 含義
rocketmq_broker_tps broker 每秒生產(chǎn)消息數(shù)量
rocketmq_broker_qps broker 每秒消費(fèi)消息數(shù)量
rocketmq_producer_tps 某個(gè) topic 每秒生產(chǎn)的消息數(shù)量
rocketmq_producer_put_size 某個(gè) topic 每秒生產(chǎn)的消息大小 (字節(jié))
rocketmq_producer_offset 某個(gè) topic 的生產(chǎn)消息的進(jìn)度
rocketmq_consumer_tps 某個(gè)消費(fèi)組每秒消費(fèi)的消息數(shù)量
rocketmq_consumer_get_size 某個(gè)消費(fèi)組每秒消費(fèi)的消息大小 (字節(jié))
rocketmq_consumer_offset 某個(gè)消費(fèi)組的消費(fèi)消息的進(jìn)度
rocketmq_group_get_latency_by_storetime 某個(gè)消費(fèi)組的消費(fèi)延時(shí)時(shí)間
rocketmq_message_accumulation(rocketmq_producer_offset-rocketmq_consumer_offset) 消息堆積量(生產(chǎn)進(jìn)度 - 消費(fèi)進(jìn)度)

rocketmq_message_accumulation 是一個(gè)聚合指標(biāo)桑孩,需要根據(jù)其它上報(bào)指標(biāo)聚合生成。

  • 告警指標(biāo)
告警指標(biāo) 含義
sum(rocketmq_producer_tps) by (cluster) >= 10 集群發(fā)送 tps 太高
sum(rocketmq_producer_tps) by (cluster) < 1 集群發(fā)送 tps 太低
sum(rocketmq_consumer_tps) by (cluster) >= 10 集群消費(fèi) tps 太高
sum(rocketmq_consumer_tps) by (cluster) < 1 集群消費(fèi) tps 太低
rocketmq_group_get_latency_by_storetime > 1000 集群消費(fèi)延時(shí)告警
rocketmq_message_accumulation > value 消費(fèi)堆積告警

消費(fèi)者堆積告警指標(biāo)也是一個(gè)聚合指標(biāo)砂蔽,它根據(jù)消費(fèi)堆積的聚合指標(biāo)生成洼怔,value 這個(gè)閾值對(duì)每個(gè)消費(fèi)者是不固定的,當(dāng)前是根據(jù)過去 5 分鐘生產(chǎn)者生產(chǎn)的消息數(shù)量來定左驾,用戶也可以根據(jù)實(shí)際情況自行設(shè)定該閾值镣隶。 告警指標(biāo)設(shè)置的值只是個(gè)閾值只是象征性的值,用戶可根據(jù)在實(shí)際使用 RocketMQ 的情況下自行設(shè)定诡右。這里重點(diǎn)介紹一下消費(fèi)者堆積告警指標(biāo)安岂,在以往的監(jiān)控系統(tǒng)中,由于沒有像 Prometheus 那樣有強(qiáng)大的 PromQL 語言帆吻,在處理消費(fèi)者告警問題時(shí)勢(shì)必需要為每個(gè)消費(fèi)者設(shè)置告警域那,那這樣就需要 RocketMQ 系統(tǒng)的維護(hù)人員為每個(gè)消費(fèi)者添加,要么在系統(tǒng)后臺(tái)檢測(cè)到有新的消費(fèi)者創(chuàng)建時(shí)自動(dòng)添加猜煮。在 Prometheus 中次员,這可以通過一條如下的語句來實(shí)現(xiàn):

(sum(rocketmq_producer_offset) by (topic) - on(topic)  group_right  sum(rocketmq_consumer_offset) by (group,topic)) - ignoring(group) group_left sum (avg_over_time(rocketmq_producer_tps[5m])) by (topic)*5*60 > 0

借助 PromQL 這一條語句不僅可以實(shí)現(xiàn)為任意一個(gè)消費(fèi)者創(chuàng)建消費(fèi)告警堆積告警,而且還可以使消費(fèi)堆積的閾值取一個(gè)跟生產(chǎn)者發(fā)送速度相關(guān)的閾值王带。這樣大大增加了消費(fèi)堆積告警的準(zhǔn)確性淑蔚。

RocketMQ-Exporter 使用示例

1 啟動(dòng) NameServer 和 Broker

要驗(yàn)證 RocketMQ 的 Spring-Boot 客戶端,首先要確保 RocketMQ 服務(wù)正確的下載并啟動(dòng)愕撰∩采溃可以參考 RocketMQ 主站的快速開始來進(jìn)行操作醋寝。確保啟動(dòng) NameServer 和 Broker 已經(jīng)正確啟動(dòng)。

2 編譯 RocketMQ-Exporter

用戶當(dāng)前使用带迟,需要自行下載 git 源碼編譯

git clone https://github.com/apache/rocketmq-exportercd rocketmq-exportermvn clean install

3 配置和運(yùn)行

RocketMQ-Exporter 有如下的運(yùn)行選項(xiàng)

選項(xiàng) 默認(rèn)值 含義
rocketmq.config.namesrvAddr 127.0.0.1:9876 MQ 集群的 nameSrv 地址
rocketmq.config.webTelemetryPath /metrics 指標(biāo)搜集路徑
server.port 5557 HTTP 服務(wù)暴露端口

以上的運(yùn)行選項(xiàng)既可以在下載代碼后在配置文件中更改音羞,也可以通過命令行來設(shè)置。
編譯出來的 jar 包就叫 rocketmq-exporter-0.0.1-SNAPSHOT.jar仓犬,可以通過如下的方式來運(yùn)行嗅绰。

java -jar rocketmq-exporter-0.0.1-SNAPSHOT.jar [--rocketmq.config.namesrvAddr="127.0.0.1:9876" ...]

4 安裝 Prometheus

首先到 Prometheus 官方下載地址 https://prometheus.io/download/ 去下載 Prometheus 安裝包,當(dāng)前以 linux 系統(tǒng)安裝為例婶肩,選擇的安裝包為 prometheus-2.7.0-rc.1.linux-amd64.tar.gz办陷,經(jīng)過如下的操作步驟就可以啟動(dòng) prometheus 進(jìn)程。

tar -xzf prometheus-2.7.0-rc.1.linux-amd64.tar.gzcd prometheus-2.7.0-rc.1.linux-amd64/./prometheus --config.file=prometheus.yml --web.listen-address=:5555

Prometheus 默認(rèn)監(jiān)聽端口號(hào)為 9090律歼,為了不與系統(tǒng)上的其它進(jìn)程監(jiān)聽端口沖突民镜,我們?cè)趩?dòng)參數(shù)里面重新設(shè)置了監(jiān)聽端口號(hào)為 5555。然后通過瀏覽器訪問 http://< 服務(wù)器 IP 地址 >:5555, 就可以驗(yàn)證 Prometheus 是否已成功安裝险毁,顯示界面如下

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

由于 RocketMQ-Exporter 進(jìn)程已啟動(dòng)制圈,這個(gè)時(shí)候可以通過 Prometheus 來抓取 RocketMQ-Exporter 的數(shù)據(jù),這個(gè)時(shí)候只需要更改 Prometheus 啟動(dòng)的配置文件即可
整體配置文件如下:

# my global configglobal:   scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.   # scrape_timeout is set to the global default (10s).   # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files:   # - "first_rules.yml"   # - "second_rules.yml"     scrape_configs:   - job_name: 'prometheus'     static_configs:     - targets: ['localhost:5555']         - job_name: 'exporter'     static_configs:     - targets: ['localhost:5557']

更改配置文件后畔况,重啟服務(wù)即可鲸鹦。重啟后就可以在 Prometheus 界面查詢 RocketMQ-Exporter 上報(bào)的指標(biāo),例如查詢 rocketmq_broker_tps 指標(biāo)跷跪,其結(jié)果如下

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

5 告警規(guī)則添加

在 Prometheus 可以展示 RocketMQ-Exporter 的指標(biāo)后馋嗜,就可以在 Prometheus 中配置 RocketMQ 的告警指標(biāo)了。在 Prometheus 的配置文件中添加如下的告警配置項(xiàng)吵瞻,*.rules 表示可以匹配多個(gè)后綴為 rules 的文件葛菇。

rule_files:  # - "first_rules.yml"  # - "second_rules.yml"   - /home/prometheus/prometheus-2.7.0-rc.1.linux-amd64/rules/*.rules

當(dāng)前設(shè)置的告警配置文件為 warn.rules,其文件具體內(nèi)容如下所示橡羞。其中的閾值只起一個(gè)示例的作用眯停,具體的閾值還需用戶根據(jù)實(shí)際使用情況來自行設(shè)定。

#### Sample prometheus rules/alerts for rocketmq.##### Galera Alerts groups:- name: GaleraAlerts  rules:  - alert: RocketMQClusterProduceHigh    expr: sum(rocketmq_producer_tps) by (cluster) >= 10    for: 3m    labels:      severity: warning    annotations:      description: '{{$labels.cluster}} Sending tps too high.'      summary: cluster send tps too high  - alert: RocketMQClusterProduceLow    expr: sum(rocketmq_producer_tps) by (cluster) < 1    for: 3m    labels:      severity: warning    annotations:      description: '{{$labels.cluster}} Sending tps too low.'      summary: cluster send tps too low  - alert: RocketMQClusterConsumeHigh    expr: sum(rocketmq_consumer_tps) by (cluster) >= 10    for: 3m    labels:      severity: warning    annotations:      description: '{{$labels.cluster}} consuming tps too high.'      summary: cluster consume tps too high  - alert: RocketMQClusterConsumeLow    expr: sum(rocketmq_consumer_tps) by (cluster) < 1    for: 3m    labels:      severity: warning    annotations:      description: '{{$labels.cluster}} consuming tps too low.'      summary: cluster consume tps too low  - alert: ConsumerFallingBehind    expr: (sum(rocketmq_producer_offset) by (topic) - on(topic)  group_right  sum(rocketmq_consumer_offset) by (group,topic)) - ignoring(group) group_left sum (avg_over_time(rocketmq_producer_tps[5m])) by (topic)*5*60 > 0    for: 3m    labels:      severity: warning    annotations:      description: 'consumer {{$labels.group}} on {{$labels.topic}} lag behind        and is falling behind (behind value {{$value}}).'      summary: consumer lag behind  - alert: GroupGetLatencyByStoretime    expr: rocketmq_group_get_latency_by_storetime > 1000    for: 3m    labels:      severity: warning    annotations:      description: 'consumer {{$labels.group}} on {{$labels.broker}}, {{$labels.topic}} consume time lag behind message store time        and (behind value is {{$value}}).'      summary: message consumes time lag behind message store time too much 

最終卿泽,可以在 Prometheus 的看一下告警展示效果莺债,紅色表示當(dāng)前處于告警狀態(tài)的項(xiàng),綠色表示正常狀態(tài)签夭。

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

6 Grafana dashboard for RocketMQ

Prometheus 自身的指標(biāo)展示平臺(tái)沒有當(dāng)前流行的展示平臺(tái) Grafana 好齐邦, 為了更好的展示 RocketMQ 的指標(biāo),可以使用 Grafana 來展示 Prometheus 獲取的指標(biāo)第租。首先到官網(wǎng)去下載https://grafana.com/grafana/download , 這里仍以二進(jìn)制文件安裝為例進(jìn)行介紹侄旬。

wget https://dl.grafana.com/oss/release/grafana-6.2.5.linux-amd64.tar.gz tar -zxvf grafana-6.2.5.linux-amd64.tar.gzcd grafana-5.4.3/

同樣為了不與其它進(jìn)程的使用端口沖突,可以修改 conf 目錄下的 defaults.ini 文件的監(jiān)聽端口煌妈,當(dāng)前將 grafana 的監(jiān)聽端口改為 55555,然后使用如下的命令啟動(dòng)即可

./bin/grafana-server web

然后通過瀏覽器訪問 http://< 服務(wù)器 IP 地址 >:55555, 就可以驗(yàn)證 grafana 是否已成功安裝。系統(tǒng)默認(rèn)用戶名和密碼為 admin/admin璧诵,第一次登陸系統(tǒng)會(huì)要求修改密碼汰蜘,修改密碼后登陸,界面顯示如下:

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

點(diǎn)擊 Add data source 按鈕之宿,會(huì)要求選擇數(shù)據(jù)源族操。

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

選擇數(shù)據(jù)源為 Prometheus,設(shè)置數(shù)據(jù)源的地址為前面步驟啟動(dòng)的 Prometheus 的地址

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

回到主界面會(huì)要求創(chuàng)建新的 Dashboard

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

點(diǎn)擊創(chuàng)建 dashboard比被,創(chuàng)建 dashboard 可以自己手動(dòng)創(chuàng)建色难,也可以以配置文件導(dǎo)入的方式創(chuàng)建,當(dāng)前已將 RocketMQ 的 dashboard 配置文件上傳到 Grafana 的官網(wǎng)等缀,這里以配置文件導(dǎo)入的方式進(jìn)行創(chuàng)建枷莉。

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

點(diǎn)擊 New dashboard 下拉按鈕

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

選擇 import dashboard

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

這個(gè)時(shí)候可以到 Grafana 官網(wǎng)去下載當(dāng)前已為 RocketMQ 創(chuàng)建好的配置文件,地址為https://grafana.com/dashboards/10477/revisions 尺迂,如下圖所示

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

笤妙,點(diǎn)擊 download 就可以下載配置文件,下載配置文件然后噪裕,復(fù)制配置文件中的內(nèi)容粘貼到上圖的粘貼內(nèi)容處蹲盘。

最后按上述方式就將配置文件導(dǎo)入到 Grafana 了。

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)

最終的效果如下所示

基于RocketMQ Prometheus Exporter 打造定制化DevOps平臺(tái)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末膳音,一起剝皮案震驚了整個(gè)濱河市召衔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌祭陷,老刑警劉巖苍凛,帶你破解...
    沈念sama閱讀 221,430評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颗胡,居然都是意外死亡毫深,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門毒姨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哑蔫,“玉大人,你說我怎么就攤上這事弧呐≌⒚裕” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵俘枫,是天一觀的道長(zhǎng)腥沽。 經(jīng)常有香客問我,道長(zhǎng)鸠蚪,這世上最難降的妖魔是什么今阳? 我笑而不...
    開封第一講書人閱讀 59,543評(píng)論 1 296
  • 正文 為了忘掉前任师溅,我火速辦了婚禮,結(jié)果婚禮上盾舌,老公的妹妹穿的比我還像新娘墓臭。我一直安慰自己,他們只是感情好妖谴,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評(píng)論 6 397
  • 文/花漫 我一把揭開白布窿锉。 她就那樣靜靜地躺著,像睡著了一般膝舅。 火紅的嫁衣襯著肌膚如雪嗡载。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評(píng)論 1 308
  • 那天仍稀,我揣著相機(jī)與錄音洼滚,去河邊找鬼。 笑死琳轿,一個(gè)胖子當(dāng)著我的面吹牛判沟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播崭篡,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼挪哄,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了琉闪?” 一聲冷哼從身側(cè)響起迹炼,我...
    開封第一講書人閱讀 39,671評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颠毙,沒想到半個(gè)月后斯入,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛀蜜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評(píng)論 3 340
  • 正文 我和宋清朗相戀三年刻两,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片滴某。...
    茶點(diǎn)故事閱讀 40,444評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磅摹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霎奢,到底是詐尸還是另有隱情户誓,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評(píng)論 5 350
  • 正文 年R本政府宣布幕侠,位于F島的核電站帝美,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晤硕。R本人自食惡果不足惜悼潭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評(píng)論 3 333
  • 文/蒙蒙 一庇忌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧女责,春花似錦漆枚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽软族。三九已至刷喜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間立砸,已是汗流浹背掖疮。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颗祝,地道東北人浊闪。 一個(gè)月前我還...
    沈念sama閱讀 48,837評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像螺戳,于是被迫代替她去往敵國(guó)和親搁宾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容