OpenStack計(jì)量模塊Ceilometer之入門

本文主要對(duì)OpenStack計(jì)量模塊的ceilometer學(xué)習(xí)記錄,從功能纱耻、概念、架構(gòu)险耀、數(shù)據(jù)流幾個(gè)方面初步研究弄喘。內(nèi)容大多來自互聯(lián)網(wǎng),主要是總結(jié)性和功能性的知識(shí)甩牺。
<a name="6nsxxl"></a>

功能:

計(jì)量:metering

計(jì)費(fèi):rating

結(jié)算:billing
<a name="adtuoc"></a>

概念:

Meter 計(jì)量項(xiàng)
Sample 某Resource某時(shí)刻Meter的值
Statistics 某區(qū)間Samples聚合值
Alarm 某區(qū)間Statistics滿足給定條件后發(fā)出告警

<a name="f76zcw"></a>

架構(gòu):

客戶端部署的agent架構(gòu)蘑志,收集數(shù)據(jù),將數(shù)據(jù)庫放在數(shù)據(jù)庫贬派,或者提供一個(gè)傳入請(qǐng)求的API服務(wù)急但。

Ceilometer計(jì)量服務(wù)組件主要包括一下幾個(gè):

名稱 中文名(自定義的) 部署節(jié)點(diǎn) 功能說明
ceilometer-agent-compute 計(jì)算代理 所有 循環(huán)查詢資源使用率統(tǒng)計(jì)情況
ceilometer-agent-central 中樞代理 管理服務(wù)器 循環(huán)查詢資源使用率統(tǒng)計(jì)情況
ceilometer-agent-notification 消息代理 管理服務(wù)器 使用消息隊(duì)列中的信息記錄時(shí)間和計(jì)量數(shù)據(jù)
ceilometer-collector 收集器 管理服務(wù)器 分發(fā)收集檢測(cè)數(shù)據(jù)到數(shù)據(jù)存儲(chǔ)上或展示給用戶
ceilometer-alarm-evaluator 告警評(píng)估器 管理服務(wù)器 根據(jù)設(shè)置的閾值定義確定何時(shí)進(jìn)行報(bào)警
ceilometer-alarm-notifier 告警通知 管理服務(wù)器 允許告警閾值在合適的范圍內(nèi)調(diào)整設(shè)置
ceilometer-api 數(shù)據(jù)訪問接口 管理服務(wù)器 數(shù)據(jù)訪問

<a name="n1oghd"></a>

數(shù)據(jù)流:

<a name="kbwsgc"></a>

內(nèi)部處理流程

[圖片上傳失敗...(image-50c873-1574327375303)]<a name="7p1vlr"></a>

數(shù)據(jù)流圖

[圖片上傳失敗...(image-2c023e-1574327375303)]
<a name="5s0lzi"></a>

Ceilometer中三種主要數(shù)據(jù)收集方式。

類型名稱 收集方法 收集方式
Notification Ceilometer 接收 OpenStack 其它服務(wù)發(fā)出的 notification message 通知
Polling 直接從 Hypervisor 或者 使用 SNMP 從host machine搞乏,或者使用 OpenStack 其它服務(wù)的 API 來獲取數(shù)據(jù)波桩。 主動(dòng)輪詢
RestFul API 別的 application 使用 Ceilometer 的 REST API 創(chuàng)建 samples。 接口

<a name="lrrvlx"></a>

Notification方式

所有的 OpenStack 服務(wù)都會(huì)在執(zhí)行了某種操作或者狀態(tài)變化時(shí)發(fā)出 notification请敦。一些 nofication message 會(huì)包含 metering 需要的數(shù)據(jù)镐躲,這部分消息會(huì)被ceilometer 處理并轉(zhuǎn)化為samples。下表列出了目前 Ceilometer 所處理的各服務(wù)的notification:

OpenStack 服務(wù) 事件類型 備注
OpenStack Compute scheduler.run_instance.scheduled侍筛,scheduler.select_destinations<br />compute.instance.* 相關(guān)更詳細(xì)的計(jì)算通知列表萤皂,請(qǐng)查閱 System Usage Data wiki page.
Bare metal module for OpenStack hardware.ipmi.*
OpenStack Image Service image.update,<br />image.upload匣椰,<br />image.delete裆熙,<br />image.send 映像服務(wù)所需的配置可以在openstack安裝指南的Telemetry部分找到。 Configure the Image Service for Telemetry section
OpenStack Networking floatingip.create.end禽笑,<br />floatingip.update.入录,<br />floatingip.exists<br />network.create.end,<br />network.update.佳镜,<br />network.exists<br />port.create.end僚稿,<br />port.update.,<br />port.exists<br />router.create.end邀杏,<br />router.update.贫奠,<br />router.exists<br />subnet.create.end唬血,<br />subnet.update.*,<br />subnet.exists<br />l3.meter
Orchestration module orchestration.stack.create.end唤崭,orchestration.stack.update.end<br />orchestration.stack.delete.end拷恨,orchestration.stack.resume.end<br />orchestration.stack.suspend.end
OpenStack Block Storage volume.exists,<br />volume.create.谢肾,<br />volume.delete.<br />volume.update.腕侄,<br />volume.resize.,<br />volume.attach.<br />volume.detach.<br /><br />snapshot.exists芦疏,<br />snapshot.create.<br />snapshot.delete.冕杠,<br />snapshot.update.* The required configuration for Block Storage service can be found in the Add the Block Storage service agent for Telemetry sectionsection in the OpenStack Installation Guide.

下面以cinder為例說明數(shù)據(jù)是如何發(fā)送到ceilometer的。

Cinder中的/cinder/volume/util.py中的notify_about_volume_usage函數(shù)負(fù)責(zé)調(diào)用oslo.message的方法負(fù)責(zé)發(fā)出volume usag相關(guān)的notification message酸茴。

[圖片上傳失敗...(image-d38dfb-1574327375303)]<br />從Cinder節(jié)點(diǎn)開始:<br />(1) cinder-* 發(fā)出 event-type 為 "volume.." topic 為"<topic>.<priority>" 的消息 到 類型為 topic 名為 <service> 的exchange<br />(2)exchange <service> 和 queue "<topic>.<priority>" 使用 routing-key "<topic>.<priority>" 綁定<br />(3)notificaiton message 被 exchange 轉(zhuǎn)發(fā)到 queue "<topic>.<priority>"<br />(4)ceilometer-agent-notification 從 queue "<topic>.<priority>" 中獲取 message分预。Ceilometer 從 AMQP message queue "notifications.info" 中獲取 notificaiton 消息。該 queue 的名字由 ceilometer.conf 中的配置項(xiàng) notification_topics = notifications 指定薪捍。<br />(5)按照一定的方法將 notification 轉(zhuǎn)化為 ceilometer event笼痹。<br />(6)ceilometer event轉(zhuǎn)化為 samples,產(chǎn)生最終數(shù)據(jù)酪穿。

<a name="1hnmdw"></a>

Polling方式

Ceilometer的polling機(jī)制有三種類型:

類型 數(shù)據(jù)來源 具體數(shù)據(jù) 說明
central agent RESTApi獲取openstack資源信息<br />SNMP獲取hardware(硬件)資源信息 ● OpenStack Networking<br />● OpenStack Object Storage<br />● OpenStack Block Storage<br />● Hardware resources via SNMP<br />● Energy consumption metrics via Kwapi framework 該 agent 收集到的 samples 會(huì)通過 AMQP 發(fā)給 Ceilometer Collector 或者外部系統(tǒng)凳干。
compute agent 計(jì)算節(jié)點(diǎn)上的虛擬機(jī)數(shù)據(jù) 虛擬機(jī)使用數(shù)據(jù)<br />物理機(jī)CPU數(shù)據(jù) 虛擬機(jī)數(shù)據(jù)通過調(diào)用Hypervisor SDK獲取,目前支持的虛擬機(jī)如下:<br />● Kernel-based Virtual Machine (KVM)<br />● Quick Emulator (QEMU)<br />● Linux Containers (LXC)<br />● User-mode Linux (UML)<br />● Hyper-V<br />● XEN<br />● VMWare vSphere
IPMI agent IPMI 傳感器(sensor)的數(shù)據(jù)<br />Intel Node Manager 的數(shù)據(jù)

<a name="7rtxxf"></a>

RESTFul API方式

先看一條具體的命令:

$ ceilometer sample-create -r 37128ad6-daaa-4d22-9509-b7e1c6b08697 -m memory.usage --meter-type gauge --meter-unit MB --sample-volume 48

該命令會(huì)創(chuàng)建一個(gè)Samples具體內(nèi)容如下:

屬性
message_id 6118820c-2137-11e4-a429-08002715c7fb
name memory.usage
project_id e34eaa91d52a4402b4cb8bc9bbd308c1
resource_id 37128ad6-daaa-4d22-9509-b7e1c6b08697
resource_metadata {}
timestamp 2014-08-11T09:10:46.358926
type gauge
unit MB
user_id 679b0499e7a34ccb9d90b64208401f8e
volume 48.0

----------------------------------以下是其他非主要方式被济,并不是不重要---------------------------------------

<a name="0qw2gm"></a>

Neutron 帶寬 samples

Havana 版本中添加該功能救赐。與 Ceilometer 其他采集方式不同的是,bandwidth 的采集是通過 neutron-meter-agent 收集只磷,然后 push 到 oslo-messaging经磅,ceilometer-agent-notification通過監(jiān)聽消息隊(duì)列來收取bandwidth信息。

其實(shí)現(xiàn)是在 L3 router 層次來收集數(shù)據(jù)喳瓣,因此需要操作員配置 IP 范圍以及設(shè)置標(biāo)簽(label)馋贤。比如,我們加兩個(gè)標(biāo)簽畏陕,一個(gè)表示內(nèi)部網(wǎng)絡(luò)流量,另一個(gè)表示外部網(wǎng)絡(luò)流量仿滔。每個(gè)標(biāo)簽會(huì)計(jì)量一定IP范圍內(nèi)的流量惠毁。然后,每個(gè)標(biāo)簽的帶寬的測(cè)量數(shù)據(jù)會(huì)被發(fā)到 MQ崎页,然后被 Ceilometer 收集到鞠绰。

<a name="y5qlyt"></a>

收集物理設(shè)備samples

物理能耗數(shù)據(jù):<br />有時(shí)候我們需要收集 OpenStack 集群中服務(wù)器的能耗數(shù)據(jù)。kwapi 是采集物理機(jī)能耗信息的項(xiàng)目飒焦,agent-central 組件通過kwapi暴露的api來收集物理機(jī)的能耗信息蜈膨。目前 kwapi 提供兩個(gè)類型的計(jì)量數(shù)據(jù):

  • Energy (cumulative type): 表示 kWh.

  • Power (gauge type): 表示 watts.

Ceilometer central agent 的 pollers 直接調(diào)用 kwapi 的 API 來獲取 samples屿笼。

<a name="7064ag"></a>

數(shù)據(jù)處理

<a name="as1rgs"></a>

Pipeline管道

Meters 數(shù)據(jù)的處理使用 Pipeline 的方式,即Metes 數(shù)據(jù)依次經(jīng)過(零個(gè)或者多個(gè)) Transformer 和 (一個(gè)或者多個(gè))Publisher 處理翁巍,最后達(dá)到(一個(gè)或者多個(gè))Receiver驴一。其中Recivers 包括 Ceilometer Collector 和 外部系統(tǒng)。<br />[圖片上傳失敗...(image-b7a3d4-1574327375303)]

Ceilometer 根據(jù)配置文件 /etc/ceilometer/pipeline.yaml 來配置 meters 所使用的 transformers 和 publishers灶壶。以 cpu meter 為例:

sources: A source is a producer of samples
......
  - name: cpu_source
    interval: 600
    meters:
        - "cpu"
    sinks:
        - cpu_sink

......
sinks: A sink on the other hand is a chain of handlers of samples
......
  - name: cpu_sink
    transformers:
      - name: "rate_of_change"
        parameters:
                target:
                    name: "cpu_util"
                    unit: "%"
                    type: "gauge"
                    scale: "100.0 / (10**9 * (resource_metadata.cpu_number or1))"
     publishers:
         - notifier://

這段代碼定義了 cpu meter 的 :

  • interval: 600:Poller 獲取 cpu samples 的間隔為 10 分鐘

  • cpu meter 的 transformer 為 "rate_of_change"

  • cpu meter 的 publisher 為 notifier://肝断,它使用默認(rèn)的配置經(jīng)過 AMQP 使用 oslo.messaging 發(fā)出數(shù)據(jù)

<a name="yug6nq"></a>

Transformer轉(zhuǎn)換器

Transformer 即 Sample 的轉(zhuǎn)換器。常見的 transformer 包括:

名稱 中文名 說明
unit_conversion 單位轉(zhuǎn)換器 比如溫度從°F 轉(zhuǎn)換成°C
rate_of_change 計(jì)算方式轉(zhuǎn)換器 比如根據(jù)一定的計(jì)算規(guī)則來轉(zhuǎn)換一個(gè)sample
accumulator 累計(jì)器 數(shù)據(jù)的累加
name: "rate_of_change"
           parameters:
               target:
                   name: "cpu_util"
                   unit: "%"
                   type: "gauge"
                   scale: "100.0 / (10**9 * (resource_metadata.cpu_number or 1))"

比如上面是一個(gè)計(jì)算轉(zhuǎn)換驰凛。
<a name="h8f6ac"></a>

Publisher分發(fā)器

Ceilometer 支持如下幾種 Publishers:

Publisher 格式 說明 配置項(xiàng) 示例
Notifier notifier://?option1=value1&option2=value2 samples 數(shù)據(jù)被發(fā)到 AMQP 系統(tǒng)胸懈,然后被 Ceilometer collecter 接收。默認(rèn)的 AMQP Queue 是 metering_topic=metering恰响。這默認(rèn)的方式趣钱。 [publisher_notifier]<br />metering_driver = messagingv2<br />metering_topic = metering notifier://?policy=drop&max_queue_length=512
RPC rpc://?option1=value1&option2=value2 與 notifier類似,同樣經(jīng)過 AMQP胚宦, 不過是同步操作羔挡,因此可能有性能問題。 <br />[publisher_rpc]<br />metering_topic = metering rpc://?per_meter_topic=1
UDP udp://<host>:<port>/ 經(jīng)過 UDP port 發(fā)出间唉。默認(rèn)的 UDP 端口是 4952 udp_port=4952 udp://10.0.0.2:1234
File file://path?option1=value1&option2=value2 發(fā)送到文件保存

可以在 /etc/ceilometer/pipeline.yaml 中為某個(gè) meter 配置多個(gè) publisher绞灼。比如增加一個(gè)file publisher:

sinks:
    - name: meter_sink
      transformers:
      publishers:
          - notifier://
          - file:///var/log/ceilometer/ceilometer-file-publisher #新增的file publisher

那么在該文件中你會(huì)看到如下的 sample:

| {
'user_id': None,
'name': 'image',
'resource_id': u 'bb8838d5-06b5-4f7e-b6ef-87c908f04cc7',
'timestamp': '2015-03-29T15:39:05Z',
'resource_metadata': {
'status': u 'active',
'name': u 'cinderimg',
'deleted': False,
'container_format': u 'bare',
'created_at': u '2015-01-21T17:15:56',
'disk_format': u 'qcow2',
'updated_at': u '2015-01-21T17:15:56',
'protected': True,
'min_ram': 0,
'checksum': u '64d7c1cd2b6f60c92c14662941cb7913',
'min_disk': 0,
'is_public': False,
'deleted_at': None,
'properties': {},
'size': 13167616
},
'volume': 1,
'source': 'openstack',
'project_id': u 'fa2046aaead44a698de8268f94759fc1',
'type': 'gauge',
'id': 'bb2b4142-d629-11e4-925a-080027ff4b45',
'unit': 'image'

}

<a name="hsetos"></a>

數(shù)據(jù)保存

Ceilometer Collector 從 AMQP 接收到數(shù)據(jù)后,會(huì)原封不動(dòng)地通過一個(gè)或者多個(gè)分發(fā)器(dispatchers)將它保存到指定位置呈野。目前它支持的分發(fā)器:

  • 文件分發(fā)器:保存到文件 - 添加配置項(xiàng)dispatcher = file 和 [dispatcher_file] 部分的配置項(xiàng)

  • HTTP 分發(fā)器:保存到外部的 HTTP target - 添加配置項(xiàng) dispatcher = http

  • 數(shù)據(jù)庫分發(fā)器:保存到數(shù)據(jù)庫 - 添加配置項(xiàng) dispatcher = database低矮。參考文檔

    • MongoDB:默認(rèn)DB。

    • SQL DB:支持 mysql被冒、postgreSQL 和 IBM DB2等军掂。

    • HBase DB

[圖片上傳失敗...(image-47c7fc-1574327375303)]

[圖片上傳失敗...(image-7b26dd-1574327375303)]<br />Ceilometer 支持同時(shí)配置多個(gè)分發(fā)器,將數(shù)據(jù)保存到多個(gè)目的位置昨悼。比如在 ceilometer.conf 中做如下配置使得同時(shí)使用 file 和 database dispatcher:

[DEFAULT]
dispatcher = database
dispatcher = file

[dispatcher_file]
backup_count = 5
file_path = /var/log/ceilometer/ceilometer-samples
max_bytes = 100000

在 /var/log/ceilometer/ceilometer-samples 文件中將收到如下類似的 samples 數(shù)據(jù):

[{
    u 'counter_name': u 'cpu_util',
    u 'user_id': u '8f4f734443674afcbbb57b9909d5a07f',
    u 'message_signature': u '21fdc2cbf50b4da39746eba47ac0a1b742c759a1bb42e17c00e293413c356a38',
    u 'timestamp': u '2015-03-29T14:47:10Z',
    u 'resource_id': u '49618cae-dd28-41a0-ae97-e98899d717eb',
    u 'message_id': u '7ad714f6-d622-11e4-8f83-080027df9b16',
    u 'source': u 'openstack',
    u 'counter_unit': u '%',
    u 'counter_volume': 0.0,
    u 'project_id': u 'd6feddb5279a42f4854b93a729470448',
    u 'resource_metadata': {
        u 'status': u 'shutoff',
        u 'cpu_number': 1,
        u 'ramdisk_id': None,
        u 'display_name': u 'vm-1-for-user-one',
        u 'name': u 'instance-0000000e',
        u 'disk_gb': 1,
        u 'kernel_id': None,
        u 'image': None,
        u 'ephemeral_gb': 0,
        u 'host': u '5d9f88849c5458f5b903fbc7a7d19bb90c3a4b0c492c5180434d216d',
        u 'memory_mb': 100,
        u 'instance_type': u '7124c366-3e56-4923-b32a-124ee31abaf7',
        u 'vcpus': 1,
        u 'root_gb': 1,
        u 'image_ref': None,
        u 'flavor': {
            u 'name': u 'tiny',
            u 'links': [{
                u 'href': u 'http://controller:8774/e5defbf994694519b1261fa855a058ae/flavors/7124c366-3e56-4923-b32a-124ee31abaf7',
                u 'rel': u 'bookmark'
            }],
            u 'ram': 100,
            u 'ephemeral': 0,
            u 'vcpus': 1,
            u 'disk': 1,
            u 'id': u '7124c366-3e56-4923-b32a-124ee31abaf7'
        },
        u 'OS-EXT-AZ:availability_zone': u 'nova',
        u 'image_ref_url': None
    },
    u 'counter_type': u 'gauge'
}]

<a name="zodzlx"></a>

數(shù)據(jù)訪問

外部系統(tǒng)通過 ceilometer-api 模塊提供的 Ceilometer REST API 來訪問保存在數(shù)據(jù)庫中的數(shù)據(jù)蝗锥。API 有 V1 和 V2 兩個(gè)版本,現(xiàn)在使用的是 V2.<br />[圖片上傳失敗...(image-ba8dc7-1574327375303)]<br />API Service 默認(rèn)在 8777 端口監(jiān)聽 (#port=8777)率触。
<a name="mbutuz"></a>

告警

(1)ceilometer-alarm-evaluator 使用 Ceilometer REST API 獲取 statistics 數(shù)據(jù)

(2)ceilometer-alarm-evaluator 生成 alarm 數(shù)據(jù)终议, 并通過 AMQP 發(fā)給 ceilometer-alarm-notifer

(3)ceilometer-alarm-notifer 會(huì)通過指定方式把 alarm 發(fā)出去。<br />Heat 和 Ceilometer 通過 Ceilometer Alarm 進(jìn)行交互來實(shí)現(xiàn) Instance auto-scaling<br />[圖片上傳失敗...(image-11d8f-1574327375303)]<br />具體步驟:<br />[圖片上傳失敗...(image-f7ba78-1574327375303)]

<a name="30gdcx"></a>

組件Gnocchi數(shù)據(jù)存儲(chǔ)

<a name="30gdcx"></a>

組件aoha告警服務(wù)

<a name="30gdcx"></a>

組件panko事件存儲(chǔ)

<a name="qghcpo"></a>

<a name="qghcpo"></a>

參考文檔

圖片多來自網(wǎng)絡(luò)葱蝗。<br />OpenStack Ceilometer官方文檔 https://docs.openstack.org/ceilometer/latest/<br />https://www.cnblogs.com/sammyliu/p/4383289.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末穴张,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子两曼,更是在濱河造成了極大的恐慌皂甘,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件悼凑,死亡現(xiàn)場(chǎng)離奇詭異偿枕,居然都是意外死亡璧瞬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門渐夸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嗤锉,“玉大人,你說我怎么就攤上這事捺萌〉刀” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵桃纯,是天一觀的道長(zhǎng)酷誓。 經(jīng)常有香客問我,道長(zhǎng)态坦,這世上最難降的妖魔是什么盐数? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮伞梯,結(jié)果婚禮上玫氢,老公的妹妹穿的比我還像新娘。我一直安慰自己谜诫,他們只是感情好漾峡,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喻旷,像睡著了一般生逸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上且预,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天槽袄,我揣著相機(jī)與錄音,去河邊找鬼锋谐。 笑死遍尺,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涮拗。 我是一名探鬼主播乾戏,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼多搀!你這毒婦竟也來了歧蕉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤康铭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后赌髓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體从藤,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡催跪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夷野。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片懊蒸。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悯搔,靈堂內(nèi)的尸體忽然破棺而出骑丸,到底是詐尸還是另有隱情,我是刑警寧澤妒貌,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布通危,位于F島的核電站,受9級(jí)特大地震影響灌曙,放射性物質(zhì)發(fā)生泄漏菊碟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一在刺、第九天 我趴在偏房一處隱蔽的房頂上張望逆害。 院中可真熱鬧,春花似錦蚣驼、人聲如沸魄幕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纯陨。三九已至,卻和暖如春输玷,著一層夾襖步出監(jiān)牢的瞬間队丝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工欲鹏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留机久,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓赔嚎,卻偏偏與公主長(zhǎng)得像膘盖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尤误,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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