ELK+filebeat+kafka

1、环境准备

编号 安装软件 主机名 IP地址 内存
1 Elasticsearch mes-1 10.8.156.166 3G
2 Elasticsearch es-2 10.8.156.167 3G
3 Elasticsearch es-3 10.8.156.171 3G
4 Logstash logstash 10.8.156.14 2G
5 head/Kibana kibana 10.8.156.168 2G
6 kafka kafka-1 10.8.156.176 2G
7 kafka kafka-2 10.8.156.186 2G
8 kafka kafka-3 10.8.156.183 2G
9 kafka kafka-4 10.8.156.179 2G
10 tomcat/filebeat tomcat 10.8.156.190 1G
11 nginx/filebeat nginx 10.8.156.180 1G
12 mysql/filebeat mysql 10.8.156.177 1G
13 httpd/filebeat httpd 10.8.156.182 1G

2、整体架构

1.jpg

3、filebeat配置

3.1 mysql+filebeat(ip:10.8.156.177)

3.1.1 安装mysql(略)
3.1.2 安装配置filebeat
[root@mysql ~]# tar xzf filebeat-7.8.0-linux-x86_64.tar.gz -C /usr/local
[root@mysql ~]# mv /usr/local/filebeat-7.8.0-linux-x86_64 /usr/local/filebeat
[root@mysql ~]# cd /usr/local/filebeat
[root@mysql filebeat]# mv filebeat.yml filebeat.yml.bak
[root@mysql filebeat]# vim filebeat.yml
filebeat.inputs:
- input_type: log
  paths:
    -  /var/lib/mysql/*.log
  #json.keys_under_root: true
  #json.add_error_key: true
  #json.message_key: log

output.kafka:
  hosts: ["10.8.156.176:9092","10.8.156.186:9092","10.8.156.183:9092","10.8.156.179:9092"]
  topic: 'mysql'

说明:
#json.keys_under_root: true
#json.add_error_key: true
#json.message_key: log
这三行是识别json格式日志的配置,若日志格式不为json格式,需要注释掉,否则收集到的日志为filebeat的错误日志
[root@mysql filebeat]# nohup ./filebeat -e -c filebeat.yml &
[root@mysql filebeat]# tail -f nohup.out     #查看启动日志

3.2 httpd+filebeat(ip:10.8.156.182)

[root@httpd ~]# systemctl stop firewalld && setenforce 0
#下载httpd
[root@httpd ~]# yum -y install httpd
[root@httpd ~]# systemctl start httpd
#安装filebeat
[root@httpd ~]# tar -xvzf filebeat-7.8.0-linux-x86_64.tar.gz -C /usr/local/
[root@httpd ~]# cd /usr/local/
[root@httpd local]# mv filebeat-7.8.0-linux-x86_64/ filebeat
[root@httpd local]# cd filebeat/
[root@httpd filebeat]# mv filebeat.yml filebeat.yml.bak
[root@httpd filebeat]# vim filebeat.yml
filebeat.inputs:
- input_type: log
  paths:
    -  /var/log/httpd/access_log
  #json.keys_under_root: true
  #json.add_error_key: true
  #json.message_key: log

output.kafka:
  hosts: ["10.8.156.176:9092","10.8.156.186:9092","10.8.156.183:9092","10.8.156.179:9092"]
  topic: 'httpd'
[root@httpd filebeat]# nohup ./filebeat -e -c filebeat.yml &
#查看filebeat启动日志
[root@httpd filebeat]# tail -f nohup.out

3.3 tomcat+filebeat(ip:10.8.156.190)

3.3.1 安装配置Tomcat(略)

将tomcat的配置文件/data/application/tomcat/conf/server.xml里的 ".txt" 替换为 “.log”


bbb.png

aaa.png
3.3.2 安装配置filebeat
root@tomcat ~]#tar xzvf filebeat-6.5.4-linux-x86_64.tar.gz -C /usr/local
[root@tomcat ~]#cd /usr/local/
[root@tomcat local]#mv filebeat-6.5.4-linux-x86_64 filebeat
[root@tomcat local]#cd filebeat/
[root@tomcat filebeat]# mv filebeat.yml filebeat.yml.bak
[root@tomcat filebeat]# vim filebeat.yml
filebeat.inputs:
- input_type: log
  paths:
    -  /data/application/tomcat/logs/*.log
#  json.keys_under_root: true
#  json.add_error_key: true
#  json.message_key: log

output.kafka:
  hosts: ["10.8.156.176:9092","10.8.156.186:9092","10.8.156.183:9092","10.8.156.179:9092"]
  topic: 'tomcat'
[root@tomcat filebeat]# nohup ./filebeat -e -c filebeat.yml &
[root@tomcat filebeat]# tail -f nohup.out

3.4 nginx+filebeat(ip:10.8.156.180)

[root@nginx ~]# systemctl stop firewalld && setenforce 0
#下载httpd
[root@nginx ~]# yum -y install epel-release;yum -y install nginx
[root@nginx ~]# systemctl start nginx
#安装filebeat
[root@nginx ~]# tar -xvzf filebeat-7.8.0-linux-x86_64.tar.gz -C /usr/local/
[root@nginx ~]# cd /usr/local/
[root@nginx local]# mv filebeat-7.8.0-linux-x86_64/ filebeat
[root@nginx local]# cd filebeat/
[root@nginx filebeat]# mv filebeat.yml filebeat.yml.bak
[root@nginx filebeat]# vim filebeat.yml
filebeat.inputs:
- input_type: log
  paths:
    -  /var/log/nginx/*.log
  #json.keys_under_root: true
  #json.add_error_key: true
  #json.message_key: log

output.kafka:
  hosts: ["10.8.156.176:9092","10.8.156.186:9092","10.8.156.183:9092","10.8.156.179
"]
  topic: 'nginx'
[root@nginx filebeat]# nohup ./filebeat -e -c filebeat.yml &
[root@nginx filebeat]# tail -f nohup.out

4、kafka集群

kafka-1:10.8.156.176
kafka-2:10.8.156.186
kafka-3:10.8.156.183
kafka-4:10.8.156.179

4.1 安装配置jdk(四台kafka都做)

[root@kafka-2 ~]# tar zxvf /usr/local/package/jdk-8u121-linux-x64.tar.gz -C /usr/local/
[root@kafka-2 ~]# mv /usr/local/jdk1.8.0_121 /usr/local/java
[root@kafka-2 ~]# echo '
JAVA_HOME=/usr/local/java
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
' >>/etc/profile
[root@kafka-2 ~]# source /etc/profile

4.2 安装配置ZK

获取kafka安装包并上传服务器

#安装
[root@kafka-2 ~]# tar xzvf kafka_2.11-2.1.0.tgz -C /usr/local/
#配置
[root@kafka-2 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
[root@kafka-2 ~]# vim /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties  #添加如下配置
dataDir=/opt/data/zookeeper/data 
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=10.8.156.176:2888:3888
server.2=10.8.156.186:2888:3888
server.3=10.8.156.183:2888:3888
server.4=10.8.156.179:2888:3888
#创建data、log目录
[root@kafka-2 ~]# mkdir -p /opt/data/zookeeper/{data,logs}
#myid号按顺序排,例:kafka-1要写入1
[root@kafka-2 ~]# echo 2 > /opt/data/zookeeper/data/myid     

4.3 配置kafka

[root@kafka-2 ~]# sed -i 's/^[^#]/#&/' /usr/local/kafka_2.11-2.1.0/config/server.properties
[root@kafka-2 ~]# vim /usr/local/kafka_2.11-2.1.0/config/server.properties  #在最后添加
broker.id=2      #按顺序写,不要乱
listeners=PLAINTEXT://10.8.156.186:9092    #自己的ip
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=10.8.156.176:2181,10.8.156.186:2181,10.8.156.183:2181,10.8.156.179:2181     #kafka集群ip
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@kafka-2 ~]# mkdir -p /opt/data/kafka/logs

4.4 启动

四台kafka服务器依次启动

#启动zookeeper
[root@kafka-2 ~]# cd /usr/local/kafka_2.11-2.1.0/
[root@kafka-2 kafka_2.11-2.1.0]# nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
#验证
[root@kafka-2 ~]# netstat -lntp | grep 2181
tcp6       0      0 :::2181                 :::*                    LISTEN      11535/java
#启动kafka
[root@kafka-2 ~]# cd /usr/local/kafka_2.11-2.1.0/
[root@kafka-2 kafka_2.11-2.1.0]# nohup bin/kafka-server-start.sh config/server.properties &

4.5 验证

验证kafka集群是否生成topic

[root@kafka-2 ~]# cd /usr/local/kafka_2.11-2.1.0/
[root@kafka-2 kafka_2.11-2.1.0]# bin/kafka-topics.sh --zookeeper 10.8.156.176 --list   #这里ip可以是kafka集群中任意一台服务器的ip
__consumer_offsets
httpd
mysql
nginx
tomcat     #已经生成topic

5、logstash(ip:10.8.156.14)

5.1 安装配置jdk(见4.1)

5.2 安装配置logstash

#安装
[root@logstash ~]# tar xvzf logstash-7.8.0.tar.gz -C /usr/local/
#创建目录,我们将所有input、filter、output配置文件全部放到该目录中。
[root@logstash ~]# mkdir -p /usr/local/logstash-7.8.0/etc/conf.d
[root@logstash ~]# cd /usr/local/logstash-7.8.0/etc/conf.d/
 [root@logstash conf.d]# vim kafka.conf
input {
kafka {
    type => "nginx_log"
    codec => "json"
    topics => "nginx"
    decorate_events => true
    bootstrap_servers => "10.8.156.176:9092, 10.8.156.186:9092, 10.8.156.183:9092, 10.8.156.179:9092"
  }
}
input {
kafka {
    type => "tomcat_log"
    codec => "json"
    topics => "tomcat"
    decorate_events => true
    bootstrap_servers => "10.8.156.176:9092, 10.8.156.186:9092, 10.8.156.183:9092, 10.8.156.179:9092"
  }
}
input {
kafka {
    type => "mysql_log"
    codec => "json"
    topics => "mysql"
    decorate_events => true
    bootstrap_servers => "10.8.156.176:9092, 10.8.156.186:9092, 10.8.156.183:9092, 10.8.156.179:9092"
  }
}
input {
kafka {
    type => "httpd_log"
    codec => "json"
    topics => "httpd"
    decorate_events => true
    bootstrap_servers => "10.8.156.176:9092, 10.8.156.186:9092, 10.8.156.183:9092, 10.8.156.179:9092"
  }
}

output {
    elasticsearch {
    hosts => ["10.8.156.166:9200"]
    index => ["%{type}-%{+YYYY.MM.dd}"]
    }
}
#启动 logstash
[root@logstash conf.d]# cd /usr/local/logstash-7.8.0/
[root@logstash logstash-7.8.0]# nohup bin/logstash -f etc/conf.d/  --config.reload.automatic &

6、ES集群

mes-1:0.8.156.166
es-2:10.8.156.167
es-3:10.8.156.171

6.1 创建运行ES的普通用户(三台服务器都做)

[root@mes-1 ~]# useradd elsearch
[root@mes-1 ~]# echo "123456" | passwd --stdin "elsearch"

6.2 安装ES(三台服务器都做)

tar xzf elasticsearch-7.8.0.tar.gz -C /usr/local/

6.3 配置ES集群

# cd /usr/local/elasticsearch-7.8.0/config/
# cp elasticsearch.yml elasticsearch.yml.bak
# vim elasticsearch.yml    ----找个地方添加如下内容
6.3.1 mes-1配置文件内容
cluster.name: elk
node.name: elk01
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.156.166", "10.8.156.167","10.8.156.171"]    #可用域名和IP
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["elk01","elk02","elk03"]
6.3.2 es-2配置文件内容
cluster.name: elk
node.name: elk02
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.156.166", "10.8.156.167","10.8.156.171"]    #可用域名和IP
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["elk01","elk02","elk03"]
6.3.3 es-3配置文件内容
cluster.name: elk
node.name: elk03
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.8.156.166", "10.8.156.167","10.8.156.171"]  #可用域名和IP
discovery.zen.minimum_master_nodes: 2
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: "*"
cluster.initial_master_nodes: ["elk01","elk02","elk03"]

6.4 设置JVM堆(三台)

[root@mes-1 config]# vim jvm.options     ----将
-Xms1g    ----修改成 -Xms2g
-Xmx1g    ----修改成 -Xms2g

注意:
确保堆内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存大小。堆内存大小不要超过系统内存的50%

6.5 创建ES数据及日志存储目录(三台)

[root@mes-1 ~]# mkdir -p /data/elasticsearch/data
[root@mes-1 ~]# mkdir -p /data/elasticsearch/logs

修改安装目录及存储目录权限

[root@mes-1 ~]# chown -R elsearch:elsearch /data/elasticsearch
[root@mes-1 ~]# chown -R elsearch:elsearch /usr/local/elasticsearch-7.8.0

6.6 系统优化

#增加最大文件打开数
echo "* - nofile 65536" >> /etc/security/limits.conf
#增加最大进程数
vim /etc/security/limits.conf    ---在文件最后面添加如下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096
#增加最大内存映射数(在内存不足的情况下,使用交换空间)
[root@mes-1 ~]# vim /etc/sysctl.conf   ---添加如下
vm.max_map_count=262144
vm.swappiness=0
[root@mes-1 ~]# sysctl -p
或
[root@mes-1 ~]# sysctl -w vm.max_map_count=262144    ---增大用户使用内存的空间(临时)

6.7 启动ES(三台)

[root@mes-1 ~]# su - elsearch
[root@mes-1 elasticsearch-7.8.0]$ nohup ./bin/elasticsearch &  #放后台启动
[root@mes-1 elasticsearch-7.8.0]$ tail -f nohup.out   #看一下是否启动

浏览器访问:


image.png

image.png

7、kibana+head(ip:10.8.156.168)

7.1 安装配置head监控插件

7.1.1 安装node
[root@kibana ~]# wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz
[root@kibana ~]# tar -zxf node-v4.4.7-linux-x64.tar.gz –C /usr/local  //head运行依赖于node环境
[root@kibana ~]# vim /etc/profile   #添加如下变量
NODE_HOME=/usr/local/node-v4.4.7-linux-x64
PATH=$NODE_HOME/bin:$PATH
export NODE_HOME PATH
[root@kibana ~]# source /etc/profile
[root@kibana ~]# node --version  #检查node版本号
v4.4.7
7.1.2 下载head插件
[root@kibana ~]# wget https://github.com/mobz/elasticsearch-head/archive/master.zip
[root@kibana ~]# cp master.zip /usr/local/
[root@kibana ~]# yum -y install unzip  //有的话就不用下载
[root@kibana ~]# cd /usr/local
[root@kibana local]# unzip  master.zip
7.1.3 安装grunt
[root@kibana ~]# cd elasticsearch-head-master/
[root@kibana ~]# npm config set registry https://registry.npm.taobao.org
[root@kibana elasticsearch-head-master]# npm install -g grunt-cli  #时间会很长
[rootlocalhost elasticsearch-head-master]# grunt --version  #检查grunt版本号
grunt-cli v1.3.2
7.1.4 修改head源码

[root@kibana elasticsearch-head-master]# vim /usr/local/elasticsearch-head-master/Gruntfile.js

image.png

添加hostname,注意在上一行末尾添加逗号,hostname 不需要添加逗号
[root@kibana elasticsearch-head-master]# vim /usr/local/elasticsearch-head-master/_site/app.js

image.png
7.1.5 下载head必要的文件
[root@kibana ~]# wget https://github.com/Medium/phantomjs/releases/download/v2.1.1/phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@kibana ~]# yum -y install bzip2
[root@kibana ~]# tar -jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /tmp/  #解压
7.1.6 运行head
[root@kibana ~]# cd /usr/local/elasticsearch-head-master/
[root@kibana elasticsearch-head-master]# npm config set registry https://registry.npm.taobao.org
[root@kibana elasticsearch-head-master]# npm install
[root@kibana elasticsearch-head-master]# nohup grunt server &
[root@kibana elasticsearch-head-master]# tailf nohup.out 
Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100
7.1.7 测试

访问head插件10.8.156.168:9100


image.png

7.2 kibana部署

7.2.1 安装

[root@kibana ~]# tar -xvzf kibana-7.8.0-linux-x86_64.tar.gz -C /usr/local/

7.2.2 配置
[root@kibana ~]# cd /usr/local/kibana-7.8.0-linux-x86_64.tar.gz/config/
[root@kibana config]# vim kibana.yml
server.port: 5601
server.host: "10.8.156.168"     #kibana本机的地址
elasticsearch.hosts: "http://10.8.156.166:9200" #ES主节点地址+端口
kibana.index: ".kibana"
7.2.3 启动
[root@kibana config]# cd ..
[root@kibana kibana-7.8.0-linux-x86_64]# nohup ./bin/kibana --allow-root & 
[1] 12054
[root@kibana kibana-7.8.0-linux-x86_64]# tail -f nohup.out

注意:#7.8版本的kibana启动:不可以使用root用户启动,若要使用root用户启动:nohup ./bin/kibana  --allow-root &

7.3 安装配置nginx反向代理

#安装nginx
[root@kibana ~]# yum -y install epel-release;yum install -y nginx 
#配置反向代理   (为了访问时地址后面不用写端口号,可以直接用IP进行访问)
先把/etc/nginx/nginx.conf 里的server模块注释掉
[root@kibana ~]# cd /etc/nginx/conf.d/
[root@kibana conf.d]# mv default.conf default.conf.bak
[root@kibana conf.d]# vim default.conf
server {
        listen       80;
        server_name  10.8.156.168;

        #charset koi8-r;

       # access_log  /var/log/nginx/host.access.log  main;
       # access_log off;

         location / {  
             proxy_pass http://10.8.156.168:5601;
             proxy_set_header Host $host:5601;  
             proxy_set_header X-Real-IP $remote_addr;  
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
             proxy_set_header Via "nginx";
                     }
         location /status { 
             stub_status on; #开启网站监控状态 
             access_log /var/log/nginx/kibana_status.log; #监控日志 
             auth_basic "NginxStatus"; }

         location /head/{
             proxy_pass http://10.8.156.168:9100;
             proxy_set_header Host $host:9100;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header Via "nginx";
                         }  
}
#配置nginx日志格式
1.将原来的log_format注释掉,添加json格式的配置信息,如下:
[root@kibana conf.d]# vim /etc/nginx/nginx.conf
log_format  json '{"@timestamp":"$time_iso8601",'
                           '"@version":"1",'
                           '"client":"$remote_addr",'
                           '"url":"$uri",'
                           '"status":"$status",'
                           '"domain":"$host",'
                           '"host":"$server_addr",'
                           '"size":$body_bytes_sent,'
                           '"responsetime":$request_time,'
                           '"referer": "$http_referer",'
                           '"ua": "$http_user_agent"'
               '}';
2.引用定义的json格式的日志:
access_log  /var/log/nginx/access_json.log  json;

image.png

启动nginx
systemctl start nginx

8、验证

查看head上是否出现索引


image.png

然后去kibana上面添加索引


image.png

image.png

image.png

image.png

image.png

日志收集成功,依次添加Tomcat、mysql、nginx索引,并查看日志


image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容