ELK搭建及filebeat+kafka/redis收集数据

ELK 是Elasticsearch Logstash kibana 三个开源软件的组合来进行搭建.



(一) 安装Elasticsearch程序
Elasticsearch7.8 安装部署
(0)初始化操作--------------------------
操作系统使用7.8版本的    Java版本是7.8.0 
下载elasticsearch 登陆到官网上面  登陆到 https://www.elastic.co/cn/
Selinux和firewalld防火墙都要关闭掉 
Systemctl  status/stop/disabled  firewalld 
(1)安装命令----------------------------
Cd /usr/local
Tar –zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz  
Ln –s elasticsearch-7.8.0 elk     执行相关的软连接  
设置环境变量,开始创建java环境的目录,
cd /usr/local/elk
Vi /etc/profile
export JAVA_HOME=  /usr/local/elk/jdk
source /etc/profile
Vi .bash_profile
export PATH=$JAVA_HOME/bin:$PATH
echo $JAVA_HOME 可以看现相关的版本信息等
查看java版本: java –version
Which java 看到的路径信息是 /usr/local/elk/jdk/bin/java
开始修改修改相关的配置文件信息
Cd /usr/local/elk ls查看相关的信息
修改配置 vi config/elasticserarch.yml的配置
记得都是:后面都是空格才可以
#cluster.name: my-application   cluster.name: fxcluster
#node.name: node-1 node.name: node-1
#path.data: /path/to/data /es/data
#path.logs: /path/to/logs path.logs: /es/logs
#network.host: 192.168.0.1 network.host: 0.0.0.0
#http.port: 9200 http.port: 9200
#cluster.initial_master_nodes: ["node-1", "node-2"]  cluster.initial_master_nodes: ["node-1"]
修改配置 config/jvm.options 修改内存的大小 free –q
-Xms1g
-Xmx1g
运行elasticsearch
hwclock –w date -s "20220111 14:11"
bin/elasticsearch 在前台开始运行相关的程序进行开启操作
can not run elasticsearch as root 该软件不能在root用户下面进行操作的
创建一个用户名字为elk,然后更改相关的权限和信息等。
useradd elk 
passwd elk elk
id elk
[root@localhost local]# chown -R elk:elk elk
[root@localhost local]# chown -R elk:elk elasticsearch-7.8.0
[root@localhost /]# chown -R elk:elk es 修改相关的日志的权限
Su – elk
[elk@localhost elk]$ bin/elasticsearch  报三个error
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max number of threads [3795] for user [elk] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /es/logs/fxcluster.log
第一个和第二个报错需要修改相关的内存参数
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
es hard nproc 4096
es soft nproc 4096
需要重启一下服务器才可以生效,init 6 
第三个报错
Vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl –system
然后重新连接一下,执行命令看下是否已经改变
ulimit –Hn 和 ulimit -Sn
ulimit –a 可以看到修改后的参数配置信息等
然后 jps查看
[root@localhost ~]# jps
7124 Elasticsearch
7335 Jps
Which jps 
Ps –ef|grep java
 也可以看到elasticsearch相关的服务已经是启动的状态了  ,然后访问浏览器查看相关elasticsearch该服务是否已经是正常的启动状态了
{
 "name" : "node-1",
 "cluster_name" : "fxcluster",
 "cluster_uuid" : "Da7K8o5xRaOhPWrKxjn_gg",
 "version" : {
 "number" : "7.8.0",
 "build_flavor" : "default",
 "build_type" : "tar",
 "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
 "build_date" : "2020-06-14T19:35:50.234439Z",
 "build_snapshot" : false,
 "lucene_version" : "8.5.1",
 "minimum_wire_compatibility_version" : "6.8.0",
 "minimum_index_compatibility_version" : "6.0.0-beta1"
 },
 "tagline" : "You Know, for Search"
}
可以执行curl 命名来执行 
Curl -X GET [http://localhost:9200](http://localhost:9200) 输出的文本内容基本上都一样 说明es已经是安装好了
(2)elk基础说明
Elasticsearch的基础说明
[root@localhost ~]# java –version
[elk@localhost elk]$ bin/elasticsearch -d -p fx.pid  后台来进行相关的操作等
进程号可以看到相关的pid的信息,fx.pid这个可以看到相关的信息等 cat fx.pid
[root@localhost ~]# jps -l
7926 jdk.jcmd/sun.tools.jps.Jps
7832 org.elasticsearch.bootstrap.Elasticsearch
看到相关的服务已经是启动的状态了

Elasticsearch 是分布式lucene分布式搜索的引擎 
以mysql为例子 ,数据库-表-插入数据-sql查询 
Es的话是,
index(索引)-----数据库(database)  
类型(type)-----表(table)   字段(field)---字段,列(column)

1- 索引可以理解为 关系数据库的db
2- 一个type就类似于一个表,ES5.x中一个index可以有多个type/Es6.x中一个index只能有一个type/Es7.0以后已经移除type,使用_doc文档
3-(document)---记录(row),一个document 相当于关系数据库中的一行记录     
4-字段(field),相当于关系数据库中的字段
5-映射(mapping)mapping定义了每个字段的类型等信息,相当于关系型数据库中表字段的类型
6-分片(shards) 因为es是分布式的搜索引擎,所以index通常会分解成不同的部分,而这些分布在不同节点的数据库就是分片
Es自动管理和组织分片,并在必要的时候对分片数据进行在平衡分配,所以用户基本上不同担心分片的处理细节
7-副本(replicas)
主要目的是为了故障转移,副本是分片的副本,分片有主分片和副本分片等
一个index在物理上分布在多个主分片中,每个主分片只存放部分数据 
每个主分片,可以有多个副本,叫副本分片,是主分片的复制 
8-节点(node),一台机器或者一个进程
9-集群,集群是一个或多个节点组成

(二) 安装Elasticsearch和head程序
(一)安装head程序
1-需要安装nodejs 和 head这两个
Mkdir –p /opt/nodejs
wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz
分两步解压
xz -d node-v16.13.0-linux-x64.tar.xz
tar -xvf node-v16.13.0-linux-x64.tar
在 vi /etc/profile 文件中加入以下内容:
export NODEJS_HOME=/opt/nodejs/node-v16.13.0-linux-x64/bin
export PATH=$NODEJS_HOME:$PATH
source /etc/profile
测试安装:
[root@localhost nodejs]# node -v
v16.13.0
[root@localhost nodejs]# npm -version
8.1.0
2-需要安装grunt
Elasticsearch-head 插件需要使用grunt
root@localhost nodejs]# npm install -g grunt-cli
3-下载elasticsearch-head
通过地址:wget https://github.com/mobz/elasticsearch-head/archive/master.zip
Yum –y install zip yum -y install unzip
# unzip master.zip
[root@localhost nodejs]# mkdir -p /opt/elasticsearch/elasticsearch-6.5.3/
[root@localhost nodejs]# mv elasticsearch-head-master /opt/elasticsearch/elasticsearch-6.5.3/
4-安装pathomjs
Cd /opt/elasticsearch/elasticsearch-6.5.3/elasticsearch-head-master/
yum install bzip2 -y
npm install
npm install -g core-js@3.4
修改elasticsearch.yml的配置
vi /usr/local/elk/config/elasticsearch.yml
新增
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
5-运行启动elasticsearch-head该程序
cd /opt/elasticsearch/elasticsearch-6.5.3/elasticsearch-head-master
执行命令:[root@localhost elasticsearch-head-master]# grunt server
默认端口是9100 可以通过浏览器来进行登录操作的
通过web浏览器登录网址 [https://localhost:9100](https://localhost:9100)
然后在运行elasticsearch 这个服务
Cd /usr/local/elasticsearch-7.8.0
[elk@localhost elasticsearch-7.8.0]$ bin/elasticsearch
然后在刷新[https://localhost:9100](https://localhost:9100)  可以看到相关的head服务已经是启动的状态了 连接网址eserarch的网址:[http://192.168.1.66:9200/](http://192.168.1.66:9200/)  就可以显示了

图像展示



(三) 安装postman程序
1-创建索引
操作使用postman来进行相关的请求步骤就可以进行操作了,安装postman,然后进行相关的操作
请求 put  [http://192.168.1.66:9200/fxindex01](http://192.168.1.66:9200/fxindex01)可以发送请求可以看到创建了一个相应的索引信息
可以看到body上面的信息等,看到相关的路线
{
    "acknowledged": **true**,
    "shards_acknowledged": **true**,
    "index": "fxindex01"
}  可以看到elasticsearch-head上面也有了
2-查看索引
通过postman 来进行get ,GET [http://192.168.1.66:9200/fxindex01](http://192.168.1.66:9200/fxindex01)

{
    "fxindex01": {
        "aliases": {},
        "mappings": {},
        "settings": {
            "index": {
                "creation_date": "1641966928613",
                "number_of_shards": "1", 会存储两份数据
                "number_of_replicas": "1",
                "uuid": "ybyih-nITtSAYchqS1v7Fg",
                "version": {
                    "created": "7080099"
                },
                "provided_name": "fxindex01"
            }
        }
    }
}
3-新增文档doc的命令
请求 PUT http://192.168.1.66:9200/fxindex01/_doc/1
把相应的请求数据放里面
{
    "name":"zhangsan",
    "age":20,
    "email":"zhangsan@qq.com"
}
可以在elastichead的数据索引上面看到,已经有该字段了
Get [http://192.168.1.66:9200/fxindex01/_doc/1](http://192.168.1.66:9200/fxindex01/_doc/1) 可以看到
然后在插入一条数据,记住_doc/2 后面的数据要唯一
PUT http://192.168.1.66:9200/fxindex01/_doc/2
{
    "name":"zhangsan2",
    "age":23,
    "email":"zhangsan2@qq.com"
}

可以通过 Get [http://192.168.1.66:9200/fxindex01/_search](http://192.168.1.66:9200/fxindex01/_search)来查看所有的文档
可以通过 Get [http://192.168.1.66:9200/fxindex01/_doc/1/_source](http://192.168.1.66:9200/fxindex01/_doc/1/_source) 来查看对应的文档
可以通过 Get [http://192.168.1.66:9200/fxindex01/_doc/1?_source](http://192.168.1.66:9200/fxindex01/_doc/1?_source)=name 来查看对应只有name的字段了
可以通过 Get http://192.168.1.66:9200/fxindex01/_mapping

RESTFULful风格介绍
POST /user 新增资源
DELETE /user/100 删除资源
PUT  /user/100 更新或新增资源
GET /user/100 获取资源
或者通过 curl 工具  来进行发送请求
CURL –X GET [http://localhost:9200](http://localhost:9200) 可以获得相关的请求

图像展示



(四) Logstash 安装及配置

LOGstash 是一个开源的数据收集器,他具有备实时数据传输能力,他可以统一过滤来自不同源的数据,并且支持各种报表由于日志文件来源多,如:系统日志,服务器日志,tomcat日志,nginx日志因此,我们可以使用logstash 对日志文件进行收集和统一过滤,变成可读性高的内容

E:数据的存储和搜索
L:log数据的过滤和收集
K:web方式的前端展示
(一)安装---------------------------------------
[root@localhost local]# pwd 
/usr/local
[root@localhost local]# tar -zxvf logstash-7.8.0.tar.gz
[root@localhost local]# ln -s logstash-7.8.0 logstash
[root@localhost config]# cp logstash-sample.conf logstash.conf
[root@localhost logstash]# bin/logstash -f config/logstash.conf 通过配置文件来进行输出,通过前台来启动
通过后台的方式来进行启动该logstash 的方式 
Vi start.sh 
#!/bin/bash 
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash.conf >> /usr/local/logstash/output.log 2>&1 &
cat /usr/local/logstash/output.log 看到相关的日志输出
(二)配置---------------------------------------------
[root@localhost config]# cat logstash.conf 
input {
        #从文件读取日志信息
        file {
        path => "/var/log/messages"
        type => "system"
        start_position => "beginning"
        }
}

filter {
}

output{
    #标准输出
    elasticsearch {
      hosts => ["192.168.1.66:9200"]
      index => "msg-%(+YYYY.MM.dd)"
    }
}

(三)插件分类-----------------------------------------------
logstash 插件分类:
input 输入,codecs 解码 ,filters 过滤,outputs 输出 
查看插件命令为:
Bin/logstash-plugin list   查看插件的类型
(五) Kibana 安装部署

Kibana 是一个开源的分析与可视化平台,设计出来用于和Elasticsearch 一起使用的,可以用kibana搜素,查看,交互存放在Elasticsearch索引里的数据
使用各种不同的图表,表格,地图等kibana能够很轻松展示高级数据分析与可视化

最好是一致的,是7.8.0这个才可以
[root@localhost local]# tar -zxvf kibana-7.8.0-linux-x86_64.tar.gz
[root@localhost local]# ln -s kibana-7.8.0-linux-x86_64 kibana
开始进行相关的配置
chown -R elk:elk kibana 给相关的目录进行赋权
[elk@localhost config]$ vi /usr/local/kibana/config/kibana.yml
server.port: 5601
server.host: "192.168.1.66"
elasticsearch.hosts: ["http://localhost:9200"] #如果不在一台机器上面就要写好对应的ip地址
1- 启动方式
前台启动:bin/kibana
后台启动:vi startup.sh
#!/bin/bash
Nohup /usr/local/kibana/bin/kibana >> /usr/local/kibana/output.log 2 >&1 &
可以访问web网址: [http://192.168.1.66:5601](http://192.168.1.66:5601) 查看相关的地址
可以点击saved objects 可以看到相关的Elasticsearch
主页home也可以添加相关的索引信息,路径也在elasticSearch---IndexManagement 可以看到相关的数据已经添加到上面了
主页的 security 的management 的 dev Tools 里面可以使用
GET /_cat/indices 可以看到相关的索引信息等  不用加地址信息
(六) filebeat 收集nginx日志 ,并在kibana 展示

logstash 和filebeat都具有日志收集功能,filebeat更轻量,占
用资源更少,但logstash 具有filter功能,能过滤分析日志。一
般结构都是filebeat采集日志,然后发送到消息队列,redis,
kafaka。然后logstash去获取,利用filter功能过滤分析,然后
存储到elasticsearch中。

(一)nginx安装------------------
[root@localhost local]# mv zlib-1.2.11.tar.gz  /usr/local/
[root@localhost local]# mv pcre-8.38.tar.gz /usr/local/   
yum -y install gcc*
./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.38 --with-zlib=/usr/local/zlib-1.2.11
Make
make install
sbin/nginx –c conf/nginx.conf  
[root@localhost nginx]# sbin/nginx -c conf/nginx.conf  默认是80 端口,直接输入回车就行了
访问:192.168.1.66:80  可以看到相关的nginx显示的是80  
[root@localhost logs]# cat /usr/local/nginx/logs/access.log 可以看到相关的路径信息
Worker process 也可以改成4个
[root@localhost nginx]# ps -ef|grep nginx
root      34769      1  0 07:53 ?        00:00:00 nginx: master process sbin/nginx -c conf/nginx.conf
nobody    34770  34769  0 07:53 ?        00:00:00 nginx: worker process
nobody    34771  34769  0 07:53 ?        00:00:00 nginx: worker process
nobody    34772  34769  0 07:53 ?        00:00:00 nginx: worker process
nobody    34773  34769  0 07:53 ?        00:00:00 nginx: worker process
root      34775  34479  0 07:53 pts/2    00:00:00 grep --color=auto nginx
修改相关的配置文件,然后通过命令来进行验证是否配置文件正确
[root@localhost nginx]# sbin/nginx -t -c conf/nginx.conf  验证配置文件是否正确
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
重启nginx可以使用,sbin/nginx –s reload 
[root@localhost nginx]# sbin/nginx -s reload 可以进行重启操作
(二) filebeat安装-----------------
[root@localhost tools]# tar -zxvf filebeat-7.8.0-linux-x86_64  解压文件
mv filebeat-7.8.0-linux-x86_64  /usr/local/
[root@localhost config]# cd /usr/local/
ln -s filebeat-7.8.0-linux-x86_64 filebeat
配置文件的路径是filebeat.yml 这个是文件的配置文件的具体的路径信息
#filebeat配置,filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
    - /usr/local/nginx/logs/access-json.log
output.logstash:
   enable: true
   hosts: ["192.168.1.66:5044"]
前台启动: ./filebeat –e –c filebeat.yml 启动相关的文件等 
后台启动:vi startup.sh 
chmod a+x startup.sh
#! /bin/bash 
nohup /usr/local/filebeat/filebeat –e –c filebeat.yml >> /usr/lcoal/filebeat/output.log 2 >&1 & 
chmod a+x startup.sh 
删除相关的data.json数据等
[root@localhost filebeat]# pwd 
/usr/local/filebeat/data/registry/filebeat
[root@localhost filebeat]# rm data.json
 [root@localhost logs]# pwd 
/usr/local/nginx/logs
[root@localhost logs]# cat access.log |wc –l  可以看到数据跟kibana上面滴数据已经有该数据了
(三)logstash配置-----------
input {
   beats {
   host => "192.168.1.66"
   port => 5044
  }
}
filter {
    grok {
       match => { "message" => "%{HTTPD_COMBINEDLOG}" }
}
    date {match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
    target => "@timestamp"
  }
}
output {
     elasticsearch {
         hosts => ["127.0.0.1:9200"]
         index => "nginx-%{+YYYY.MM.dd}"
  }
}
(四)启动程序------------------------
[root@localhost local]# su - elk
[elk@localhost ~]$ cd /usr/local/elk/
[elk@localhost elk]$ ./start.sh 
[elk@localhost elk]$ cd /usr/local/kibana
[elk@localhost kibana]$ ./start.sh 
[elk@localhost kibana]$ cd /usr/local/filebeat/
[elk@localhost filebeat]$ ./start.sh 
[root@localhost local]# cd /usr/local/logstash
[root@localhost logstash]# ./start.sh 
[root@localhost nginx]# sbin/nginx -c conf/nginx.conf 
(五)访问kibana,刷新nginx
访问网址:http://192.168.1.66:5601/app/kibana#/home
创建模板,建立index pattern,创建一个时间戳,@timestamp 相关类型的,然后去discover里面去查看相关的数据信息等
或者在logs里面的settings 里面进行查看 ,在indices里面,相关的log indices 里面输入filebeat-*, 然后stream里面进行日志的查看等

图像显示


(七)Filebeat+Kafka/redis+Logstash收集日志数据

filebeat:filebeat更轻量,占用资源更少,适合客户端使用。当logstash宕机的时候,这时候filebeat就不能往logstash里写数据了,这期间的日志信息可能就无法采集到,因此一般都会采用redis或kafka作为一个消息缓冲层。logstash去消费数据写至es。

(一)安装redis
安装redis
[root@localhost tools]# tar -zxvf redis-5.0.9.tar.gz
Make
Make install 
初始化redis的安装和配置
 [root@localhost utils]# pwd 
/root/tools/redis-5.0.9/utils
[root@localhost utils]# ./install_server.sh
[root@localhost utils]# ps -ef|grep redis 可以看到redis已经是启动的状态了 
[root@localhost utils]# chkconfig –list 可以看到3,4,5都已经启动了
修改redis的配置信息 
[root@localhost ~]# vi /etc/redis/6379.conf
修改bind 0.0.0.0  让所有的人都可以连接上去
修改 daemonize yes 改为yes是允许后台可以启动
然后重启redis的服务进行相关的配置等
Systemctl restart redis_6379  重启redis服务可以看到相关的服务已经启动了,可以看到redis已经重启了,服务已经启动了
service redis_6379 start 通过这个命令来启动 
service redis_6379 stop 这个命令来进行关闭
在windows上面安装destopmanager 的管理工具测试连接redis的情况
然后可以看到其实是有16个 redis的数据库 的情况

通过安装RedisDesktopManager 来连接redis数据库


配置--------------------------------
(一)filebeat配置:
filebeat.inputs:
- type: log
  enabled: true
  backoff: "1s"
  tail_files: false
  paths:
   - /usr/local/nginx/logs/access-json.log
  fields:
   filetype: nginxjson
  fields_under_root: true
output.redis:
  enabled: true
  hosts: ["127.0.0.1:6379"]
  key: nginx
  db: 0
  datatype: list
(二)logstash配置
input {
   redis {
     host => "127.0.0.1"
     port => 6379
     key => "nginx"
     data_type => "list"
     db => 0
   }
}
filter {
    json {
       source => "message"
       remove_field => ["beat","offset","tags","prospector"]
    }
    date {
      match => ["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
      target => "@timestamp"
}
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "nginx-%{+YYYY.MM.dd}"
    }
}

如果这个时候logstash挂掉,则数据会停留在redis中,没有消费掉



重启logstash,可以看到redis中数据清空,kibana中有日志显示


Kafka安装配置
Filebeat---kafka---logstash—elasticsearch---kibana 的展示收集等
[root@localhost local]# mv kafka_2.13-2.6.0 /usr/local/
[root@localhost local]# cd /usr/local/
[root@localhost local]# ln -s kafka_2.13-2.6.0/ kafka  然后有一个软链接
然后需要启动zookeeper程序,kafka使用zookeeper程序,所以需要启动一个zookeeper
Bin/zookeeper-server-start.sh  config/zookeeper.properties 
然后设置成后台启动
#!/bin/bash
nohup /usr/local/kafka/bin/zookeeper-server-start.sh  /usr/local/kafka/config/zookeeper.properties  >  /usr/local/kafka/zk-output.log 2>&1 &
启动zookeep
[root@localhost kafka]# chmod +x start.sh 
[root@localhost kafka]# ./start.sh
修改kafka的配置
[root@localhost kafka]# chmod +x start.sh 
vim config/server.properties
listeners=PLAINTEXT://:9092
advertised.listeners=PLAINTEXT://192.168.1.66:9092
然后通过前台或者后台的方式来启动
前台启动 [root@localhost kafka]# bin/kafka-server-start.sh config/server.properties
后台启动 [root@localhost kafka]# bin/kafka-server-start.sh –daemon config/server.properties
然后可以通过kafka-tool工具来进行连接的可以连接到zookeeper的管理端地址 
输入相关的地址信息等,来进行连接起来,zookeep的端口是2181然后进行相关的连接

创建Topic 
bin/kafka-topics.sh --create –zookeeper localhost:2181 --replication-factor 1 --partions 1 --topic fx-topic
bin/kafka-topics.sh --create –zookeeper 192.168.1.66:2181 --replication-factor 1 --partitions 1 --topic fx-topic
查看topic列表 
bin/kafka-topics.sh --list –zookeeper localhost:2181
启动生产者 9092是kafka的端口 
Bin/kafka-console-producer.sh –broker-list localhost:9092 –topic fx-topic
启动消费者
Bin/kafka-console-consumer.sh –boostrap-server localhost:9092 –topic fx-topic –from-beginning 
Filebeat的配置 

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

推荐阅读更多精彩内容