【时快讯】【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南
腾讯云 2023-02-24 17:04:08

本文目录如下:


(资料图)

前言一、部署架构图二、Logstash 用来做什么?三、Logstash 的原理3.1 从 Logstash 自带的配置说起3.2 Input 插件3.3 Filter 插件3.4 Output 插件3.5 完整配置四、Logstash 怎么跑起来的4.1 Logstash 如何运行的4.2 Logstash 的架构原理五、Logstash 宕机风险5.1 Logstash 单点部署的风险5.2 开机启动 Logstash六、总结

前言

通过本篇内容,你可以学到如何解决 Logstash 的常见问题、理解 Logstash 的运行机制、集群环境下如何部署 ELK Stack。

在使用 Logstash 遇到了很多坑,本篇也会讲解解决方案。

日志记录的格式复杂,正则表达式非常磨人。服务日志有多种格式,如何匹配。错误日志打印了堆栈信息,包含很多行,如何合并。日志记录行数过多(100 多行),被拆分到了其他的日志记录中。输出到 ES 的日志包含很多无意义字段。输出到 ES 的日志时间和本来的日志时间相差 8 小时。如何优化 Logstash 的性能Logstash 单点故障如何处理。

一、部署架构图

上次我们聊到了 ELK Stack 的搭建:

一文带你搭建一套 ELK Stack 日志平台

最近悟空正在我们的测试环境部署这一套 ELK,发现还是有很多内容需要再单独拎几篇出来详细讲讲的,这次我会带着大家一起来看下 ELK 中的 Logstash 组件的落地玩法和踩坑之路。

测试环境目前有 12 台机器,其中 有 4 台给后端微服务、Filebeat、Logstash 使用,3 台给 ES 集群和 Kibana 使用。

部署拓扑图如下:

img

部署说明:

4 台服务器给业务微服务服务使用,微服务的日志会存放本机上。4 台服务器都安装 Filebeat 日志采集器,采集本机的微服务日志,其中一台服务器安装 Logstash ,Filebeat 发送日志给 Logstash。Logstash 将日志输出到 Elasticsearch 集群中。3 台服务器都安装有 Elasticsearch 服务,组成 ES 集群。其中一台安装 Kibana 服务,查询 ES 集群中的日志信息。

二、Logstash 用来做什么?

你是否还在苦恼每次生产环境出现问题都需要远程到服务器查看日志文件?

你是否还在为了没有统一的日志搜索入口而烦心?

你是否还在为从几十万条日志中搜索关键信息而苦恼?

没错,Logstash 它来啦,带着所有的日志记录来啦。

Logstash 它是帮助我们收集、解析和转换日志的。作为 ELK 中的一员,发挥着很大的作用。

当然 Logstash 不仅仅用在收集日志方面,还可以收集其他内容,我们最熟悉的还是用在日志方面。

三、Logstash 的原理

3.1 从 Logstash 自带的配置说起

Logstash 的原理其实还比较简单,一个输入,一个输出,中间有个管道(不是必须的),这个管道用来收集、解析和转换日志的。如下图所示:

img

Logstash 组件

Logstash 运行时,会读取 Logstash 的配置文件,配置文件可以配置输入源、输出源、以及如何解析和转换的。

Logstash 配置项中有两个必需元素,输入(inputs)和输出(ouputs),以及一个可选元素 filters 过滤器插件。input 可以配置来源数据,过滤器插件在你指定时修改数据,output 将数据写入目标。

我们来看下 Logstash 软件自带的一个示例配置,文件路径:\logstash-7.6.2\config\logstash-sample.conf

img

是不是很简单,一个 input 和 一个 output 就搞定了。如下图所示:

img

但是这种配置其实意义不大,没有对日志进行解析,传到 ES 中的数据是原始数据,也就是一个 message 字段包含一整条日志信息,不便于根据字段搜索。

3.2 Input 插件

配置文件中 input 输入源指定了 beats,而 beats 是一个大家族,Filebeat 只是其中之一。对应的端口 port = 5044,表示 beats 插件可以往 5044 端口发送日志,logstash 可以接收到通过这个端口和 beats 插件通信。

在部署架构图中,input 输入源是 Filebeat,它专门监控日志的变化,然后将日志传给 Logstash。在早期,Logstash 是自己来采集的日志文件的。所以早期的日志检索方案才叫做 ELK,Elasticsearch + Logstash + Kibana,而现在加入了 Filebeat 后,这套日志检索方案属于 ELK Stack,不是 ELKF,摒弃了用首字母缩写来命名。

另外 input 其实有很多组件可以作为输入源,不限于 Filebeat,比如我们可以用 Kafka 作为输入源,将消息传给 Logstash。具体有哪些插件列表,可以参考这个 input 插件列表 1

3.3 Filter 插件

而对于 Logstash 的 Filter,这个才是 Logstash 最强大的地方。Filter 插件也非常多,我们常用到的 grok、date、mutate、mutiline 四个插件。

对于 filter 的各个插件执行流程,可以看下面这张图:

img

图片来自 Elasticsearch 官网

3.3.1 日志示例

我以我们后端服务打印的日志为例,看是如何用 filter 插件来解析和转换日志的。

logback.xml 配置的日志格式如下:

    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n

日志格式解释如下:

记录日志时间:%d{yyyy-MM-dd HH:mm:ss.SSS}记录是哪个线程打印的日志:%thread记录日志等级:%-5level打印日志的类:%logger记录具体日志信息:%msg%n,这个 msg 的内容就是 log.info("abc") 中的 abc。

通过执行代码 log.info("xxx") 后,就会在本地的日志文件中追加一条日志。

3.3.2 打印的日志内容

从服务器拷贝出了一条日志,看下长什么样,有部分敏感信息我已经去掉了。

2022-06-16 15:50:00.070 [XNIO-1 task-1] INFO  com.passjava.config - 方法名为:MemberController-,请求参数:{省略}

那么 Logstash 如何针对上面的信息解析出对应的字段呢?比如如何解析出打印日志的时间、日志等级、日志信息?

3.3.3 grok 插件

这里就要用到 logstash 的 filter 中的 grok 插件。filebeat 发送给 logstash 的日志内容会放到 message 字段里面,logstash 匹配这个 message 字段就可以了。配置项如下所示:

filter { grok {      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s+\[(?.*)\]\s+(?\w*)\s{1,2}+(?\S*)\s+-\s+(?.*)\s*"]      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s{1,2}+(?\w*)\s{1,2}+.\s---+\s\[(?.*)\]+\s(?\S*)\s*:+\s(?.*)\s*"]  }}

坑:日志记录的格式复杂,正则表达式非常磨人。

大家发现没,上面的 匹配 message 的正则表达式还是挺复杂的,这个是我一点一点试出来的。Kibana 自带 grok 的正则匹配的工具,路径如下:

http://:5601/app/kibana#/dev_tools/grokdebugger

我们把日志和正则表达式分别粘贴到上面的输入框,点击 Simulate 就可以测试是否能正确匹配和解析出日志字段。如下图所示:

img

Grok Debugger 工具

有没有常用的正则表达式呢?有的,logstash 官方也给了一些常用的常量来表达那些正则表达式,可以到这个 Github 地址查看有哪些常用的常量。

https://github.com/logstash-plugins/logstash-patterns-core/blob/main/patterns/ecs-v1/grok-patterns

比如可以用 IP 常量来代替正则表达式 IP (?:%{IPV6}|%{IPV4})

好了,经过正则表达式的匹配之后,grok 插件会将日志解析成多个字段,然后将多个字段存到了 ES 中,这样我们可以在 ES 通过字段来搜索,也可以在 kibana 的 Discover 界面添加列表展示的字段。

img

坑:我们后端项目的不同服务打印了两种不同格式的日志,那这种如何匹配?

再加一个 match 就可以了。

filter { grok {      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s+\[(?.*)\]\s+(?\w*)\s{1,2}+(?\S*)\s+-\s+(?.*)\s*"]      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s{1,2}+(?\w*)\s{1,2}+.\s---+\s\[(?.*)\]+\s(?\S*)\s*:+\s(?.*)\s*"]  }}

当任意一个 message 匹配上了这个正则,则 grok 执行完毕。假如还有第三种格式的 message,那么虽然 grok 没有匹配上,但是 message 也会输出到 ES,只是这条日志在 ES 中不会展示 logTime、level 等字段。

3.3.4 multiline 插件

还有一个坑的地方是错误日志一般都是很多行的,会把堆栈信息打印出来,当经过 logstash 解析后,每一行都会当做一条记录存放到 ES,那这种情况肯定是需要处理的。这里就需要使用 multiline 插件,对属于同一个条日志的记录进行拼接。

3.3.4.1 安装 multiline 插件

multiline 不是 logstash 自带的,需要单独进行安装。我们的环境是没有外网的,所以需要进行离线安装。

介绍在线和离线安装 multiline 的方式:

在线安装插件。

在 logstash 根目录执行以下命令进行安装。

bin/logstash-plugin install logstash-filter-multiline
img
离线安装插件。

在有网的机器上在线安装插件,然后打包。

bin/logstash-plugin install logstash-filter-multilinebin/logstash-plugin prepare-offline-pack logstash-filter-multiline

拷贝到服务器,执行安装命令。

bin/logstash-plugin install file:///home/software/logstash-offline-plugins-7.6.2.zip

安装插件需要等待 5 分钟左右的时间,控制台界面会被 hang 住,当出现 Install successful表示安装成功。

img

检查下插件是否安装成功,可以执行以下命令查看插件列表。当出现 multiline 插件时则表示安装成功。

bin/logstash-plugin list
3.3.4.2 使用 multiline 插件

如果要对同一条日志的多行进行合并,你的思路是怎么样的?比如下面这两条异常日志,如何把文件中的 8 行日志合并成两条日志?

img

多行日志示例

思路是这样的:

第一步:每一条日志的第一行开头都是一个时间,可以用时间的正则表达式匹配到第一行。第二步:然后将后面每一行的日志与第一行合并。第三步:当遇到某一行的开头是可以匹配正则表达式的时间的,就停止第一条日志的合并,开始合并第二条日志。第四步:重复第二步和第三步

按照这个思路,multiline 的配置如下:

filter {  multiline {    pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"    negate => true    what => "previous"  }}

时间的正则表达式就是这个 pattern 字段,大家可以根据自己项目中的日志的时间来定义正则表达式。

pattern: 这个是用来匹配文本的表达式,也可以是grok表达式what: 如果pattern匹配成功的话,那么匹配行是归属于上一个事件,还是归属于下一个事件。

previous: 归属于上一个事件,向上合并。

next: 归属于下一个事件,向下合并

negate: 是否对 pattern 的结果取反

false: 不取反,是默认值。

true: 取反。将多行事件扫描过程中的行匹配逻辑取反(如果 pattern 匹配失败,则认为当前行是多行事件的组成部分)

参考 multiline 官方文档 2

3.3.5 多行被拆分

坑:Java 堆栈日志太长了,有 100 多行,被拆分了两部分,一部分被合并到了原来的那一条日志中,另外一部分被合并到了不相关的日志中。

如下图所示,第二条日志有 100 多行,其中最后一行被错误地合并到了第三条日志中。

img

日志合并错乱

为了解决这个问题,我是通过配置 filebeat 的 multiline 插件来截断日志的。为什么不用 logstash 的 multiline 插件呢?因为在 filter 中使用 multiline 没有截断的配置项。filebeat 的 multiline 配置项如下:

multiline.type: patternmultiline.pattern: "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"multiline.negate: truemultiline.match: aftermultiline.max_lines: 50

配置项说明:

multiline.pattern:希望匹配到的结果(正则表达式)multiline.negate:值为 true 或 false。使用 false 代表匹配到的行合并到上一行;使用 true 代表不匹配的行合并到上一行multiline.match:值为 after 或 before。after 代表合并到上一行的末尾;before 代表合并到下一行的开头multiline.max_lines:合并的最大行数,默认 500multiline.timeout:一次合并事件的超时时间,默认为 5s,防止合并消耗太多时间导致 filebeat 进程卡死

我们重点关注 max_lines 属性,表示最多保留多少行后执行截断,这里配置 50 行。

注意:filebeat 和 logstash 我都配置了 multiline,没有验证过只配置 filebeat 的情况。参考 Filebeat 官方文档 3

3.3.6 mutate 插件

当我们将日志解析出来后,Logstash 自身会传一些不相关的字段到 ES 中,这些字段对我们排查线上问题帮助不大。可以直接剔除掉。

坑:输出到 ES 的日志包含很多无意义字段。

这里我们就要用到 mutate 插件了。它可以对字段进行转换,剔除等。

比如我的配置是这样的,对很多字段进行了剔除。

mutate {    remove_field => ["agent","message","@version", "tags", "ecs", "input", "[log][offset]"]}

注意:一定要把 log.offset 字段去掉,这个字段可能会包含很多无意义内容。

关于 Mutate 过滤器它有很多配置项可供选择,如下表格所示:

img

Mutate 过滤器配置选项

参考 Mutate 参考文章 4

3.3.7 date 插件

到 kibana 查询日志时,发现排序和过滤字段 @timestamp是 ES 插入日志的时间,而不是打印日志的时间。

这里我们就要用到 date插件了。

上面的 grok 插件已经成功解析出了打印日志的时间,赋值到了 logTime变量中,现在用 date 插件将 logTime匹配下,如果能匹配,则会赋值到 @timestamp字段,写入到 ES 中的 @timestamp字段就会和日志时间一致了。配置如下所示:

date {    match => ["logTime", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]}

但是经过测试写入到 ES 的 @timestamp日志时间和打印的日志时间相差 8 小时。如下图所示:

img

我们到 ES 中查询记录后,发现 @timestamp字段时间多了一个字母 Z,代表 UTC时间,也就是说 ES 中存的时间比日志记录的时间晚 8 个小时。

img

我们可以通过增加配置 timezone => "Asia/Shanghai" 来解决这个问题。修改后的配置如下所示:

date {    match => ["logTime", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]}

调整后,再加一条日志后查看结果,Kibana 显示 @timestamp 字段和日志的记录时间一致了。

img

3.4 Output 插件

Logstash 解析和转换后的日志最后输出到了 Elasticsearch 中,由于我们 ES 是集群部署的,所以需要配置多个 ES 节点地址。

output {  stdout { }  elasticsearch {    hosts => ["10.2.1.64:9200","10.2.1.65:9200","10.27.2.1:9200"]    index => "qa_log"  }}

注意这里的 index 名称 qa_log 必须是小写,不然写入 es 时会报错。

3.5 完整配置

logstah 配置文件内容如下:

input {  beats {    port => 9900  }}filter {  multiline {    pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"    negate => true    what => "previous"  }  grok {      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s+\[(?.*)\]\s+(?\w*)\s{1,2}+(?\S*)\s+-\s+(?.*)\s*"]      match => [ "message", "(?\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{3})\s{1,2}+(?\w*)\s{1,2}+.\s---+\s\[(?.*)\]+\s(?\S*)\s*:+\s(?.*)\s*"]      match => [           "source", "/home/passjava/logs/(?\w+)/.*.log"       ]      overwrite => [ "source"]      break_on_match => false  }  mutate {    convert => {      "bytes" => "integer"    }    remove_field => ["agent","message","@version", "tags", "ecs", "_score", "input", "[log][offset]"]  }  useragent {    source => "user_agent"    target => "useragent"  }  date {    match => ["logTime", "MMM d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]    timezone => "Asia/Shanghai"  }}output {  stdout { }  elasticsearch {    hosts => ["10.2.1.64:9200","10.2.1.65:9200","10.2.1.66:9200"]    index => "qa_log"  }}

四、Logstash 怎么跑起来的

4.1 Logstash 如何运行的

你会好奇 Logstash 是怎么运行起来的吗?

官方提供的启动方式是执行 logstash -f weblog.conf 命令来启动,当执行这个命令的时候其实会调用 Java 命令,以及设置 java 启动参数,然后传入了一个配置文件 weblog.conf 来启动 Logstash。

cd /home/logstash-7.6.2sudo ./bin/logstash -f weblog.conf

当启动完之后,我们通过命令来看下 Logstash 的运行状态

ps -ef | grep logstash

执行结果如下图所示,可以看到用到了 Java 命令,设置了 JVM 参数,用到了 Logstash 的 JAR 包,传入了参数。

img

所以建议 Logstash 单独部署到一台服务器上,避免服务器的资源被 Logstash 占用。

Logstash 默认的 JVM 配置是 -Xms1g -Xmx1g,表示分配的最小和最大堆内存大小为 1 G。

那么这个参数是在哪里配置的呢?全局搜索下 Xms1g,找到是在这个文件里面配置的,config\jvm.options,我们可以修改这里面的 JVM 配置。

我们可以调整 Logstash 的 JVM 启动参数,来优化 Logstash 的性能。

另外 Kibana 上面还可以监控 Logstash 的运行状态(不在本篇讨论范围)。

4.2 Logstash 的架构原理

img

本内容参考这篇 Logstash 架构 5

Logstash 有多个 input,每个 input 都会有自己的 codec。

数据会先存放到 Queue 中,Logstash 会把 Queue 中的数据分发到不同的 pipeline 中。

然后每一个 pipeline 由 Batcher、filter、output 组成

Batcher 的作用是批量地从 Queue 中取数据。Batcher 可以配置为一次取一百个数据。

五、Logstash 宕机风险

5.1 Logstash 单点部署的风险

因为 Logstash 是单点部署到一台服务器上,所以会存在两个风险:

logstash 突然崩了怎么办?logstash 所在的机器宕机了怎么办?Logstash 所在的机器重启了怎么办?

对于第一个问题,可以安装 Keepalived 软件来保证高可用。另外即使没有安装,当手动启动 Logstash 后,Logstash 也能将未及时同步的日志写入到 ES。

对于第二个问题,所在的机器宕机了,那可以通过安装两套 Logstash,通过 keepalived 提供的虚拟 IP 功能,切换流量到另外一个 Logstash。关于如何使用 Keepalived,可以参考之前的 实战 MySQL 高可用架构

对于第三个问题,就是把启动 Logstash 的命令放到开机启动脚本中就可以了,但是存在以下问题:

Ubuntu 18.04 版本是没有开机启动文件的Logstash 无法找到 Java 运行环境

接下来我们来看下怎么进行配置开机自启动 Logstash。

5.2 开机启动 Logstash

5.2.1 创建自动启动脚本

建立 rc-local.service 文件

sudo vim /etc/systemd/system/rc-local.service

将下列内容复制进 rc-local.service 文件

[Unit]Description=/etc/rc.local CompatibilityConditionPathExists=/etc/rc.local [Service]Type=forkingExecStart=/etc/rc.local startTimeoutSec=0StandardOutput=ttyRemainAfterExit=yesSysVStartPriority=99 [Install]WantedBy=multi-user.target

创建文件 rc.local

sudo vim /etc/rc.local

添加启动脚本到启动文件中

#!/bin/sh -e# 启动 logstash#nohup /home/software/logstash-7.6.2/bin/logstash -f /home/software/logstash-7.6.2/weblog.conf &# 启动 filebeatnohup /home/software/filebeat-7.6.2-linux-x86_64/filebeat -e -c /home/software/filebeat-7.6.2-linux-x86_64/config.yml &exit 0

5.2.2 修改 Java 运行环境

因在开机启动中,logstash 找不到 java 的运行环境,所以需要手动配置下 logstash。

cd /home/software/logstash-7.6.2/bin/sudo vim logstash.lib.sh

在 setup_java() 方法的第一行加入 JAVA_HOME 变量,JAVA_HOME 的路径需要根据自己的 java 安装目录来。

JAVA_HOME="/opt/java/jdk1.8.0_181"
img

修改 Java 运行环境

5.2.3 权限问题

给 rc.local 加上权限, 启用服务

sudo chmod +x /etc/rc.localsudo systemctl enable rc-localsudo systemctl stop rc-local.servicesudo systemctl start rc-local.servicesudo systemctl status rc-local.service
img

Logstash 启动成功

然后重启机器,查看 logstash 进程是否正在运行,看到一大串 java 运行的命令则表示 logstash 正在运行。

ps -ef | grep logstash

六、总结

本篇讲解了 Logstash 在集群环境下的部署架构图、Logstash 遇到的几大坑、以及 Logstash 的运行机制和架构原理。

Logstash 还是非常强大的,有很多功能未在本篇进行讲解,本篇也是抛砖引玉,感兴趣的读者朋友们可以加我好友 passjava 共同探索。

更多好文请查看:

实战 MySQL 高可用架构

一文带你搭建一套 ELK Stack 日志平台

巨人的肩膀

https://blog.csdn.net/xzk9381/article/details/109571087https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.htmlhttps://github.com/logstash-plugins/logstash-patterns-core/blob/main/patterns/ecs-v1/grok-patternshttps://www.runoob.com/regexp/regexp-syntax.htmlhttps://www.elastic.co/guide/en/beats/libbeat/current/config-file-permissions.htmlhttps://www.tutorialspoint.com/logstash/logstash_supported_outputs.htm

参考资料

1input 插件列表: https://www.elastic.co/guide/en/logstash/current/input-plugins.html

2multiline 官方文档: https://www.elastic.co/guide/en/logstash/current/plugins-codecs-multiline.html#plugins-codecs-multiline-negate

3Filebeat 官方文档: https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html

4Mutate 参考文章: https://blog.csdn.net/UbuntuTouch/article/details/106466873

5Logstash 架构: https://jenrey.blog.csdn.net/article/details/107122930

END -

【时快讯】【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南

2023-02-24 17:04:08

qi

2023-02-24 15:54:01

最高抵扣1万尾款 阿维塔11发布暖春限时购车权益 今日热讯

2023-02-24 15:11:49

电动缝纫机家用如何绕梭芯线_电动缝纫机家用 环球滚动

2023-02-24 13:02:32

世界观速讯丨抗胆碱药名词解释_抗胆碱药

2023-02-24 10:45:07

焦点简讯:美国管理会计师协会任命新任总裁兼CEO

2023-02-24 09:09:08

iOS_14官方壁纸原图高清-世界要闻

2023-02-24 01:15:40

天天热点评!股市回暖助推爆款基金再现:平均亏超20% “造星盛宴”值得反思

2023-02-23 21:38:35

人死后火化有感觉吗_人死了火化有感觉-全球报道

2023-02-23 18:57:37

全球球精选!判刑多久可以探监?

2023-02-23 16:45:55

当前时讯:香港黄金价格今天多少一克(2023年2月23日)

2023-02-23 14:50:44

天天快资讯丨“域见德化白瓷”世界瓷都围炉煮茶创意场景网络大赛获奖名单

2023-02-23 12:01:05

天天滚动:行车途中捡手机 分心驾驶酿事故

2023-02-23 10:08:52

【跨国企业在中国】美敦力:中国有望成为全球最大的医疗健康市场

2023-02-23 08:58:57

比尔·盖茨又有新动作!超9亿美元入股世界第二大啤酒制造商

2023-02-23 05:01:23

若邪_关于若邪的简介|热资讯

2023-02-22 23:49:23

创造与魔法圣诞雪橇怎么获得_创造与魔法圣诞雪橇怎么获得图片-每日快播

2023-02-22 20:40:18

最美不过二次元(AI专栏) 全球今亮点

2023-02-22 18:17:18

怎么去掉字的下划线|即时焦点

2023-02-22 18:03:03

【短视频】通渭“守艺人”王尚义:留“烛”光 天天即时

2023-02-22 15:56:01

观热点:BMD马来西亚棕榈油期货触及七周高点,受其他油脂品种升势带动金十期货2月22日讯,据外媒报道,BMD马来西亚棕榈油期货周三升至七周高位,受隔夜美豆油升势带动

2023-02-22 14:03:33

别克君越召回修复动力转向故障|新要闻

2023-02-22 12:02:45

焦点精选!2023泉州公司缴纳社保最低档每月多少钱 泉州社保缴费标准一览

2023-02-22 10:13:32

为中小企业培育最好土壤

2023-02-22 08:16:17

请问不离婚能申请财产保全吗-世界快看

2023-02-22 04:48:55

全球速递!莲心泡茶一次放多少_莲心泡茶

2023-02-21 23:56:07

当前热门:阿童木打造与公立医院有明显差异化的医疗服务体验

2023-02-21 20:59:52

第二轮中央生态环保督察移交问题已追责问责近2900人 每日观察

2023-02-21 18:49:33

23广东顺德农商行CD017今日发布发行公告 天天微资讯

2023-02-21 16:46:59

环球看热讯:2023年广西中医药大学硕士研究生招生考试初试成绩查询通知

2023-02-21 15:22:47

人人爱看的视频_人人爱车

2023-02-21 13:11:36

前沿热点:午夜轻读 | 遇见即是幸运

2023-02-21 11:11:51

【环球时快讯】赢合科技2月21日快速上涨

2023-02-21 09:15:33

【热闻】百乐森林舞会

2023-02-21 02:43:32

科技赋能 新华保险2022年AI核保累计赔付5.7亿元-每日焦点

2023-02-20 22:08:24

全球观点:崔宸龙:今年市场可能迎来估值和企业盈利双升,坚守新能源投资三个方向

2023-02-20 19:52:51

焦点消息!庄河市气象局发布大风蓝色预警【IV级/一般】【2023-02-20】

2023-02-20 17:04:25

世界今日讯!笔记本电脑数字键打不出数字7_笔记本电脑数字键打不出数字

2023-02-20 15:54:04

2月20日深证成指涨幅达1% 全球速看料

2023-02-20 13:22:21

环球短讯!秭归居住证怎么办理?

2023-02-20 11:17:38

博创科技:公司正在研发基于硅光子技术的相关数通模块

2023-02-20 09:52:53

经常吃隔夜饭菜好吗_隔夜饭菜的危害

2023-02-20 02:56:13

全国性的零售商逃离曼哈顿 在外围地区扩张

2023-02-19 22:59:38

02月19日19时, 昆明晚高峰路况-世界百事通

2023-02-19 18:58:13

村田制作所将对无锡工厂投资约450亿日元,增产MLCC零部件 世界今亮点

2023-02-19 15:47:33

理想汽车联合创始人马东辉,退出董事职位 世界独家

2023-02-19 12:56:55

路灯照亮“闽南井冈山”

2023-02-19 07:47:41

赞美秋天的诗句古诗大全_赞美秋的诗句

2023-02-18 21:59:37

鲁健牵手郑天亮:两人做一个屋檐下的“租客”15年,如今怎样了?_最新

2023-02-18 19:00:47

走进区域看发展|重庆国际物流枢纽园区:建设“产城景港”融合的国际物流城 世界速看料

2023-02-18 16:19:35

女人梦见树倒了预示什么 周公解梦原版原文

2023-02-18 13:43:30

天天快看:初级保健的连续性可减少慢性肾病患者的住院率

2023-02-18 10:48:01

ae快捷键常用表实用表_ae快捷键

2023-02-18 08:04:34

PPT如何设置页面纹理背景为紫色网格效果_ppt2010背景纹理怎么设置

2023-02-18 04:49:45

北京:新一轮困难群众价格临时补贴月底到账,覆盖30多万人

2023-02-18 00:13:54

焦点简讯:2月19日贵港疾控开放九价hpv疫苗预约

2023-02-17 21:09:05

泰山区岱庙街道召开综合治税及纳统工作培训会

2023-02-17 19:09:19

西安城墙有没有卫生间

2023-02-17 17:01:08

环球看点!今日大腿内侧股癣怎么根治_大腿内侧股癣怎么治涂了很多药膏皮肤很黑

2023-02-17 15:48:23

天天通讯!年内建成10条高速 基本实现市市通高铁

2023-02-17 13:57:16

海特生物:公司已于2023 年2月8日完成新增股份的预登记手续办理|天天短讯

2023-02-17 11:42:56

西红柿炒鸡蛋的营养价值及功效_西红柿炒鸡蛋的营养价值及功效与作用

2023-02-17 09:57:44

【群音荟萃】孙梦迪《雪花写给春天的信》

2023-02-17 03:01:19

【国企招聘】广新集团所属省广集团2023届春季校招启动 世界热点

2023-02-16 22:57:56

二次函数的应用解题技巧_二次函数的应用

2023-02-16 20:02:04

2023广东省森林文化周春季活动东莞启动

2023-02-16 17:56:40

山东省邹城市总工会“心灵驿站”等您来!-全球速看料

2023-02-16 16:04:56

【世界新视野】中教控股涨超8%领涨港股职教股

2023-02-16 14:09:49

什么情况不能吃阿胶_什么情况不能掉头? 每日消息

2023-02-16 11:57:27

环球资讯:QZ是什么计量单位等于多少毫升

2023-02-16 11:14:12

网络主播偷逃税案例再曝光 税务部门严监管规范行业发展 环球微动态

2023-02-16 10:03:50

格式刷快捷键

2023-02-16 09:07:19

科学家看《三体》会被刘慈欣哪些脑洞戳中 每日资讯

2023-02-16 08:00:51

旋转读音究竟怎么读旋转的转的读音_旋转读音

2023-02-16 06:04:13

抗生素≠消炎药,别乱吃阿莫西林了!我们何时才会不滥用抗生素?

2023-02-16 04:03:56

三星q430h笔记本怎么样_三星q40笔记本电脑

2023-02-16 03:04:31

12画五行属金的字有哪些推荐_每日讯息

2023-02-15 23:55:57

当前速递!南宁公布2023年经济预期发展目标:GDP同比增长5%左右

2023-02-15 23:47:05

城管收走孩子的书桌,面对质疑强硬回应,央媒发声后道歉

2023-02-15 21:12:59

全球播报:养龟为什么不能养双 大家知道原因吗

2023-02-15 20:52:50

圆通速递2022年净利润增长86%,网络综合竞争力提升显著 焦点速看

2023-02-15 18:59:08

穷兵黩武是什么意思 简单介绍一下 天天要闻

2023-02-15 17:38:10

用布基胶带 DIY 地毯-讯息

2023-02-15 17:24:28

解方程的步骤和注意事项-解方程的步骤

2023-02-15 16:02:11

短讯!涂漆塑料看起来有光泽

2023-02-15 14:08:07

莆田鞋业遭疫情重创 莆田鞋年产值多少 全球观焦点

2023-02-15 13:39:09

【世界聚看点】东汉皇帝短命的两个原因,第二个令人寒心又心寒

2023-02-15 12:47:28

甘肃新春拼经济,看各地如何“落子”? 天天动态

2023-02-15 11:08:14

每日观点:2018年日历桌面高清壁纸

2023-02-15 09:39:18

2月14日 贵州共办理结婚登记9203对

2023-02-15 09:16:53

美国拉黑6家中企 商务部回应

2023-02-15 07:44:43

如何使用手机qq数据线

2023-02-15 05:30:06

世界资讯:贺卡的制作方法步骤视频_贺卡的制作方法步骤

2023-02-15 03:58:22

白塞氏病有哪些治疗方法

2023-02-15 01:42:17

野炊活动

2023-02-14 23:13:55

全球热门:菊花茶的作用和功效

2023-02-14 21:51:32

诺如病毒感染高发季,中疾控发布健康提示 每日快播

2023-02-14 20:58:18

真实的方世玉:一身硬功但有个要害碰不得,24岁被一尼姑一脚踢死

2023-02-14 18:46:47

复习数学的攻略:多项式的运算 焦点热讯

2023-02-14 18:05:06

今天最新消息 哈尔滨市7区严格管理人员流动 严控聚集性活动

2023-02-14 16:50:37

一日内,两家银行获批这件大事!

2023-02-14 14:55:08

环球时讯:端午节活动方案

2023-02-14 13:53:25

台州温岭田园牧歌研学实践教育基地_全球速看料

2023-02-14 13:13:58

2023年宁波贵驷街道HPV疫苗预约咨询电话是多少 当前动态

2023-02-14 11:05:21

不宜因经典作品的时代局限而因噎废食

2023-02-14 09:41:41

世界头条:A股市场“黑色星期四”发生的原因,黑色星期四形成简介

2023-02-14 08:11:22

全新封神系列三选一,李白星史诗上线,守约联动aov,曹操迎双喜

2023-02-14 07:59:48

西芹炒多久才算熟

2023-02-14 04:03:55

全球微动态丨前任送水工偷走现任的车与水报复式盗窃让他被警方拘了

2023-02-14 03:45:12

饮歌是什么意思|环球快消息

2023-02-14 00:05:37

儿童生日礼物送什么好男生_前沿资讯

2023-02-13 20:39:07

世界热门:围棋的神之一手什么意思

2023-02-13 20:04:31

当前速讯:华亭市气象台发布寒潮蓝色预警信号

2023-02-13 18:05:34

焦点消息!救援日记:点滴细节汇聚成爱,救援工作仍在继续

2023-02-13 16:44:08

立方数科董秘回复:公司依照整体战略发展规划需要,与行业合作伙伴开展相关工作

2023-02-13 15:04:23

全球热头条丨春来农事忙

2023-02-13 13:04:22

【世界快播报】实体书店迎来“春风”

2023-02-13 11:09:03

两战轰12记三分 杜欧离开他激活 “元老”能助队稳住季后赛位置吗-天天讯息

2023-02-13 09:22:55

nex_说一说nex的简介

2023-02-13 08:49:48

系统扭矩590N·m 零百加速6.5秒!长安UNI-V混动iDD开卖:14.49万起 当前聚焦

2023-02-12 12:03:51

2017支付宝年度账单哪里看_支付宝2018年度账单查看方法教程

2023-02-12 09:09:12

全球新动态:电脑怎么滚动截图长图_电脑上如何一边滚动一边截图

2023-02-12 05:55:59

环球观焦点:【杏园教育集团北京路校区 教研】凝心聚力谋新篇 教研引领启新颜——新学期英语组教材通研

2023-02-12 01:00:15

蒸烤一体机哪个牌子好台式_蒸烤一体机哪个牌子好|世界简讯

2023-02-11 21:11:13

表格公式求和_excel方差公式|热头条

2023-02-11 18:03:33

谈谈河豚田鳕夫的继任人选——从一篇外网文章说起-简讯

2023-02-11 15:06:51

yy礼物挖掘机多少钱

2023-02-11 11:32:53

@安徽人 四部门发文!在学校设置这一岗位!|全球时讯

2023-02-11 08:57:48

花园时光阳台露台小庭院

2023-02-11 05:45:47

常记溪亭日暮_说一说常记溪亭日暮的简介 天天关注

2023-02-11 02:00:33

以下哪种行为很有可能构成图片侵权?

2023-02-11 00:31:34

金风科技拟转让夏县天润100%股权 作价11.13亿元

2023-02-10 22:13:49

好的网络推广平台都有哪些? 今头条

2023-02-10 20:59:29

全球热点!档案里的时代故事

2023-02-10 20:07:54

世界快播:一年期基金到期不赎回会怎么样?一年期的基金到期自动赎回吗?

2023-02-10 18:12:12

当前滚动:立冬应该吃什么食物

2023-02-10 17:05:25

世界观速讯丨本周盘点(2.6-2.10):三峡水利周涨8.86%,主力资金合计净流出255.61万元

2023-02-10 16:05:15

如何评价《半熟恋人2》这个综艺?-世界滚动

2023-02-10 14:45:37

每日消息!“云端之上,共铸美好”——首铸集团品牌发布会盛大开幕

2023-02-10 13:02:05

数学商是什么 全球新视野

2023-02-10 11:59:28

【热闻】什么是新生儿斜颈

2023-02-10 11:05:59

qq悄悄话功能怎么打开_qq悄悄话怎么打开

2023-02-10 09:59:34

如何在QQ空间农场中添加清明草植物 世界速读

2023-02-10 08:14:32

福州市生态环境保护综合执法支队获评全国先进

2023-02-10 07:57:44

少妇生日礼物

2023-02-10 04:26:31

六英尺两英寸有多少高

2023-02-10 04:21:42

全新2020款雷克萨斯RX提供更好的驱动力和全新的照明系统

2023-02-10 01:01:33

qq炫舞名字男两个字 天天视讯

2023-02-10 00:24:18

乘联会:1月特斯拉Model 3零售销量同比增长超三倍_快消息

2023-02-09 21:42:06

世界信息:舒淇黎明什么关系 黎明最爱的人不是张曼玉竟是舒淇

2023-02-09 20:27:40

邱添一缅怀布拉泽维奇:他的执教能力有目共睹,非常有人格魅力

2023-02-09 19:05:04

前女友结婚送什么礼物,送什么都要新颖哦

2023-02-09 17:27:57

欧拉好猫2021款报价及图片_欧拉好猫2021款落地价|天天实时

2023-02-09 16:40:31

【世界速看料】有调整!事关襄阳中心城区规划

2023-02-09 15:43:37

环球要闻:弑君贼卡组2022 龙_弑君贼卡组

2023-02-09 13:37:49

全球视讯!五一去哪玩好 五一小长假去哪些好玩的地方

2023-02-09 12:37:37

南京出生证明补办最快的方法 每日焦点

2023-02-09 11:11:19

4-氧代-1,4-二氢-2,6-吡啶二甲酸

2023-02-09 10:52:38

军港之夜歌词 军港之夜整首歌词

2023-02-09 08:40:08

世界热门:蓝天救援队驰援土耳其地震灾区

2023-02-09 08:19:50

瘦腰最快的方法_腰围多少算细 世界快看点

2023-02-09 06:56:43

视频文件不能正常播放怎么办

2023-02-09 04:57:29

天天快消息!以成字开头的成语大全_以开头的成语大全集

2023-02-09 04:04:01

前沿资讯!Bianca结饰皮革防水台凉鞋

2023-02-09 01:21:24

散文随笔汇总6篇

2023-02-09 00:48:34

热消息:coye

2023-02-08 22:40:18

全球今日报丨怎么让qq宠物心情好

2023-02-08 20:43:30

快报:支付宝商家码怎么开通信用卡收款_支付宝商家码怎么开通

2023-02-08 19:55:28

罗姓的起源和历史_罗姓的来源和历史

2023-02-08 18:47:56

辽宁省公布上市后备企业库名单 265家企业入库

2023-02-08 16:52:43

创业融资方式有哪些

2023-02-08 16:56:23

寒风中角逐“最强铁人” 2023年哈尔滨全国冬季铁人三项锦标赛在太阳岛雪博会鸣枪开赛_资讯推荐

2023-02-08 15:41:04

5月2日见!2023季中冠军赛在伦敦举办 21日总决赛|当前快讯

2023-02-08 13:42:04

【全球新视野】写给校长的建议书

2023-02-08 13:17:21

【聚焦】中国11-溴代十一酸对外依存度较高 未来市场空间广阔

2023-02-08 11:51:01

《流浪地球2》带动淘宝科幻周边热卖,此外,游戏周边一直受欢迎|视点

2023-02-08 09:57:44

视频无损放大软件Topaz Video Enhance AI中文版 热议

2023-02-08 09:04:40

美术素描论文

2023-02-08 08:50:03

LORY防步兵地雷

2023-02-08 07:30:35

新新球鞋网_新新球鞋

2023-02-08 05:01:31

天天新资讯:M型亚巨星

2023-02-08 04:45:31

perambulatory_焦点快播

2023-02-08 01:39:28

课外常识:fantastic baby的音译歌词附中韩歌词对照

2023-02-08 00:51:12

真假美猴王的下一回是什么_真假美猴王是第几回-环球新消息

2023-02-07 22:57:51

console线是什么线_环球即时看

2023-02-07 21:07:31

风太大【非吃刀子人员无入】_焦点要闻

2023-02-07 19:54:45

魔兽裁缝1到375升级攻略_裁缝1 375攻略-全球速递

2023-02-07 19:10:15

还能“下海”?长安汽车水陆两栖汽车能源控制专利获授权|每日报道

2023-02-07 16:52:19

倒车后视镜判断距离图技巧_倒车后视镜判断距离 世界热讯

2023-02-07 15:48:26

世界通讯!犹太人信仰什么教

2023-02-07 15:35:47

6代奔驰E级消息曝光,c级s级合体,现款降至亲民价,能抄底么

2023-02-07 13:37:08

全球资讯:生肖表十二顺序图片_生肖表十二顺序

2023-02-07 12:09:01

美军换装突击步枪有何考量

2023-02-07 10:04:02

针织上衣搭配半身裙的女生该如何搭配,轻松提升气质 全球今热点

2023-02-07 08:54:54

火车票改签可以改目的地嘛_火车票改签可以改目的地

2023-02-07 07:24:55

环球讯息:万万千千为什么___一本活动的大百科全书_8

2023-02-07 04:16:57

A型和B型生的孩子血型是什么_a型和b型生的孩子是什么血型

2023-02-07 01:14:07

我的世界娜迦有宝箱吗_我的世界娜迦

2023-02-06 22:41:49

广东省连山壮族瑶族自治县气象局发布大雾黄色预警【III级/较重】【2023-02-06】

2023-02-06 19:04:58

守护一座城的烟火灿烂:信阳消防工作者的别样元宵

2023-02-06 17:54:38