【全球热闻】【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南

2023-02-23 15:14:34 来源: 腾讯云

本文目录如下:

前言一、部署架构图二、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 -

标签: 正则表达式 Unix

【全球热闻】【ES三周年】深入理解 ELK 中 Logstash 的底层原理 + 填坑指南

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

02-23 15:14:34

02月23日10时广东云浮昨日累计报告阳性感染者确诊482例 怎么判断自己是否属于轻型感染者_焦点速看

新型冠状病毒传播性强,不侥幸,不冒险,情谊常在,聚会不急一时。02月23日10时广东云浮昨日累计报告阳...

02-23 12:47:49

环球观热点:欧冠:国际米兰VS波尔图,波尔图8人受伤,国米能否有机可趁?

他们在对阵恩波利的比赛中只输了一场比赛。在对阵乌迪内斯的比赛中,国际米兰虽然以3-1保住了主场,但实...

02-23 10:51:08

资金涌入实体经济 2月信贷料继续高增 时快讯

2月以来,资金面边际收紧,资金利率震荡走高,银行间市场7天期债券回购利率(DR007)多数时候运行在2%的政...

02-23 08:50:53

湖记:威少最明显弱点是他的思维观念 这影响了他比赛的各个方面

湖记:威少最明显弱点是他的思维观念这影响了他比赛的各个方面,威少,弱点,湖人,湖记,快船队,科怀·伦纳...

02-23 06:01:24

【当前热闻】三星 Galaxy Watch 5 和 Galaxy Watch 4 获得新更新

三星最近很火。该公司正在为其Galaxy智能手机和平板电脑左、右和中推出新的软件更新。有些人正在安装Android

02-23 01:10:20

全球速读:苏宁易购西区组建十亿装修补贴联盟 助推春季家电家装消费

近日,为响应各地商务委员会关于消费促进活动的通知,苏宁易购重庆、四川、贵州、云南、西安、兰州、乌...

02-22 21:04:53

植物有哪些科_植物有哪些 全球快讯

1、很多的,杉树,银杏树,,葡萄,苹果树,你想问的具体是什么植物分为低等植物和高等植物两大类。2、...

02-22 18:53:38

淘宝二手市场怎么进入

1淘宝二手网的进入及设置:2首先登录进入自己的淘宝账号,然后点击进入淘宝二手或者直接点击淘宝二手闲...

02-22 18:24:53

照片背后的故事:人类的破坏活动将蓝色的大海变成了黑色-精选

巴西某海滩,泄漏的石油污染了近海,一位少年正在清理海水中的污染物。他站在乌黑的海水中,头微微抬起...

02-22 16:54:18

环球热点评!斯巴鲁召回某些2019年的Impreza和Legacy轿车

斯巴鲁本周向美国国家公路交通安全管理局(NHTSA)透露,斯巴鲁召回某些2019年的Impreza和Legacy轿车,以

02-22 14:59:31

香港信贷(01273.HK)附属授出1300万港元贷款

格隆汇2月22日丨香港信贷(01273 HK)宣布,于2023年2月21日,公司间接全资附属香港信贷(私人贷款)(作为...

02-22 12:20:35

ScS 完成 310 万英镑的股票回购并继续开设新店-当前关注

沙发销售商ScS表示已完成11月首次宣布的310万英镑股票回购。这家总部位于桑德兰的零售商告诉伦敦证券交易所

02-22 11:00:38

周期压倒成长,A股风格转向?机构这么说…医疗宽幅溢价,港股互联网吸金不止 焦点速看

摘要:“煤飞色舞”重出江湖,科技成长还有机会吗?今早A股三大指数开盘涨跌不一,沪指一度站上3300点,...

02-22 08:50:57

02月22日06时吉林白山昨日累计报告阳性感染者确诊25例 怎么判断自己是否属于轻型感染者 世界播报

新型冠状病毒传播性强,不侥幸,不冒险,情谊常在,聚会不急一时。02月22日06时吉林白山昨日累计报告阳...

02-22 05:54:02

新赛季恐无人问津的六大球星,考辛斯自作自受,米尔斯任人宰割_每日速读

NBA作为篮球顶级殿堂,从来不缺少传奇。在小球盛行的时代,动辄50+的得分盛宴比比皆是,也令老牌球星、...

02-22 01:04:58

中国食协发布《鲜炖花胶》团体标准 引领中式新滋补品质升级 世界聚焦

2月21日,由中国食品工业协会携手滋补科技品牌官栈等企业制订的《鲜炖花胶》团体标准在广州正式发布。这...

02-21 21:06:28

冰箱要经常断电20分钟吗? 当前速读

冰箱正常使用是不需要断电的,所以不需要间隔3-4个月进行断电,除非冰箱需要进行内部清理或者维护才进行...

02-21 19:02:59

金蝶国际:预期2022年权益持有人应占亏损3.63亿元-4.23亿元|全球讯息

金蝶国际:预期2022年权益持有人应占亏损3 63亿元-4 23亿元,持有人,金蝶国际,十二个月

02-21 17:04:40

2700多份业绩预告超四成预喜 上市公司业绩折射经济韧性 焦点

转自:经济日报近期,上市公司陆续披露2022年业绩预告、业绩快报或年度报告。从目前已披露的2700多份业...

02-21 15:40:03

2022年下半年(12月)全国大学英语四、六级考试成绩今起可查

据中国教育考试网消息,2022年下半年(12月)全国大学英语四、六级考试(CET)成绩查询服务将于2023年2...

02-21 11:49:12

联想z470按键说明_联想Z470A-ITHT

1、联想Z470A-ITH(T)是联想公司生产的一款笔记本电脑,采用intel酷睿I3处理器,2GB内存。2、500GB

02-21 09:47:42

世界热议:同房第十天能测出怀孕吗图片_同房第十天能测出怀孕吗

1、同房十天能查出怀孕。2、此时孕卵已经植入子宫,但此时验血查出怀孕,早孕尿检还查不出来。3、早孕的...

02-21 07:46:09

如何调整电脑分辨率_如何调整电脑分辨率到正常状态 今日热讯

1、很多用户发现自己的电脑分辨率不习惯,那么如何调整这台win10电脑的分辨率才是最好的。边肖将为您带...

02-21 03:46:24

播报:国米社媒晒最新训练照,卢卡库帅气亮相

国际米兰官方社媒更新了球队动态,卢卡库帅气亮相训练场并比出了“六”的手势。国米在上一轮联赛中主场3...

02-20 23:04:48

弄错试管婴儿医院涉上百起医疗纠纷

弄错试管婴儿医院涉上百起医疗纠纷

02-20 20:10:27

天天精选!用有形抓手压实无形责任

芦苇依依,鹭鸟翩翩。天津市宁河区的七里海国家湿地公园清澈美丽,这得益于生态移民工作的顺利开展。当...

02-20 16:12:03

焦点热门:300亿元!湖北竹溪县构建大健康产业新格局

300亿元!湖北竹溪县构建大健康产业新格局

02-20 13:56:42

宗庆后下“军令状”,要收复娃哈哈瓶装水丢失的阵地

现在开始就要全面铺货,按量少面广的原则进行铺货。积极动员原来销售纯净水的客户销售苏打水、氧世界等3...

02-02 15:55:21

加强平安甘肃规范化建设 加强平安甘肃制度化保障

统筹推进、健全机制,切实加强平安甘肃规范化建设;多措并举、精准施策,切实加强平安甘肃常态化工作;聚...

07-07 08:32:06

淮南新增14379个停车泊位 “智慧泊车”解民忧

以前送孩子上学,总担心没有车位,无法就近停车。现在通过网上查询,可以提前了解车位空余情况。 3月16...

03-20 15:25:59

【禁渔令】安徽启动实施长江刀鲚非法捕捞专项整治

日前,省农业农村厅等部门联合启动实施长江刀鲚非法捕捞专项整治行动,以落实中央及省有关决策部署,保...

03-20 15:22:46

宣城宣州:科技特派员打通农业科技成果转化“最后一公里”

和去年同期比,今年天气回暖延迟,你们在种植过程中需要注意,这个有机肥营养充足,少量撒就可以了,撒...

03-20 15:21:16

村庄变景区百蔬成艺术 徽州区临河村打造蔬菜文化街巷

近日,记者来到黄山市徽州区岩寺镇临河村,村口耸立着高达8 8米的菜篮子雕塑。不远处,由黄瓜、茄子、...

03-20 15:20:18

疫情防护形势严峻 安徽警方通报3起涉疫案件

近期,疫情防护形势严峻。安徽公安把疫情防控作为重要政治任务,依法履行职责,以最快速度、最严措施,...

03-20 15:18:18

成本低廉商家“赚翻” 白芸豆产品是不是智商税?

餐前两粒,嗨吃不胖肆意吃也不长胖无惧油腻,大餐救星……当消费者打开电商平台搜索白芸豆产品时,上述...

03-20 15:14:24

中央气象台发布强对流天气预报 安徽中部局地或有雷暴大风或冰雹

当心!19日到20日,安徽省部分地区除了有强降水,中部局部地区还有强对流天气。3月19日18点,中央气象台...

03-20 15:07:12

“氢”装上阵皖企先行 安徽发力高端装备制造产业

氢装上阵,皖企先行。近日,合力叉车与上海一家新能源企业签约,联合推广200辆氢燃料电池叉车。作为我省...

03-20 15:05:21

聚力产业振兴实现共同富裕 石棉果园花果“云”上齐香

3月18日,由中共石棉县委、石棉县人民政府、中国扶贫基金会等单位承办,新浪集团乡村振兴合作办公室、微...

03-20 15:03:52

深圳首次开通香港航线货运包机 畅通大湾区货物供应链

3月19日上午10时许,随着最后一名机组手续办理完毕,深圳机场边检站顺利完成首班深港货运包机出入境保障...

03-20 15:01:53

我国粮食市场供应充足 稳价保供有基础

联合国粮食及农业组织本周公布的报告显示,俄乌危机冲击了全球粮食贸易并削减了收成预期。报告称,如果...

03-20 14:58:12

猪价看涨情绪飙升 下半年猪价会涨?

2022年底猪价能否大涨?很多的养猪户对2022年国内猪价行情走势都有很大的期待。相较于2021年的震荡行情来...

03-20 14:54:38

定远:党员干部进万家门知万家情办万家事

3月15日,记者在定远县池河镇刘铺社区高标准农田建设现场看到,几台挖掘机、推土机正在农田里作业,将一...

03-20 14:52:26

吉林半个月内两遭暴雪侵袭 多部门谨慎应对

  中新社长春11月22日电 (记者 郭佳)22日是中国农历二十四节气中的“小雪”,在这一天,位于中国东...

11-22 17:45:03

广东多地一夜降温逾10℃ 全省87个寒冷黄色预警生效

  中新社广州11月22日电 (记者 王坚)“一觉醒来,广州就告别了夏天,太冷了!”广州22日受冷空气影...

11-22 17:45:03

可带五人免排队畅游迪士尼?“黑导游”伪造身份证、残疾人证利用园区福利“吸金”

持有残疾人证的游客可带五人免排队畅游迪士尼,黑导游伪造身份证、残疾人证利用园区政策吸金。记者22日...

11-22 17:45:02

弘扬劳模精神 叫响和擦亮河南交通铁军品牌

陈芳轰鸣的掌声犹由在耳,振奋的话语飘荡在心间。近日,一场在河南省交通运输厅召开的全省交通运输系统...

11-22 17:45:02

云南哀牢山4名失联地质人员全部遇难 相关原因正调查

  中新网昆明11月22日电 (记者 胡远航)云南哀牢山失联人员搜救指挥部22日通报称,经过全力搜救,在...

11-22 17:45:02

呼和浩特市一小区发生爆炸 致1死14伤

  中新网呼和浩特11月22日电 (记者 张林虎)22日,记者从呼和浩特市玉泉区委宣传部获悉,发生在民和...

11-22 17:45:02

辽宁:校外培训机构预收费全部纳入监管范围

  新华社沈阳11月22日电(记者王莹)辽宁省教育厅等九部门近期印发《辽宁省校外机构预收费资金监管工作...

11-22 17:45:01

02月23日10时广东云浮昨日累计报告阳性感染者确诊482例 怎么判断自己是否属于轻型感染者_焦点速看
环球观热点:欧冠:国际米兰VS波尔图,波尔图8人受伤,国米能否有机可趁?
资金涌入实体经济 2月信贷料继续高增 时快讯
湖记:威少最明显弱点是他的思维观念 这影响了他比赛的各个方面
【当前热闻】三星 Galaxy Watch 5 和 Galaxy Watch 4 获得新更新
全球速读:苏宁易购西区组建十亿装修补贴联盟 助推春季家电家装消费
植物有哪些科_植物有哪些 全球快讯
淘宝二手市场怎么进入
照片背后的故事:人类的破坏活动将蓝色的大海变成了黑色-精选
环球热点评!斯巴鲁召回某些2019年的Impreza和Legacy轿车
香港信贷(01273.HK)附属授出1300万港元贷款
ScS 完成 310 万英镑的股票回购并继续开设新店-当前关注
周期压倒成长,A股风格转向?机构这么说…医疗宽幅溢价,港股互联网吸金不止 焦点速看
02月22日06时吉林白山昨日累计报告阳性感染者确诊25例 怎么判断自己是否属于轻型感染者 世界播报
新赛季恐无人问津的六大球星,考辛斯自作自受,米尔斯任人宰割_每日速读
中国食协发布《鲜炖花胶》团体标准 引领中式新滋补品质升级 世界聚焦
冰箱要经常断电20分钟吗? 当前速读
金蝶国际:预期2022年权益持有人应占亏损3.63亿元-4.23亿元|全球讯息
2700多份业绩预告超四成预喜 上市公司业绩折射经济韧性 焦点
2022年下半年(12月)全国大学英语四、六级考试成绩今起可查
联想z470按键说明_联想Z470A-ITHT
世界热议:同房第十天能测出怀孕吗图片_同房第十天能测出怀孕吗
如何调整电脑分辨率_如何调整电脑分辨率到正常状态 今日热讯
播报:国米社媒晒最新训练照,卢卡库帅气亮相
弄错试管婴儿医院涉上百起医疗纠纷
天天精选!用有形抓手压实无形责任
焦点热门:300亿元!湖北竹溪县构建大健康产业新格局
宗庆后下“军令状”,要收复娃哈哈瓶装水丢失的阵地
加强平安甘肃规范化建设 加强平安甘肃制度化保障
淮南新增14379个停车泊位 “智慧泊车”解民忧
【禁渔令】安徽启动实施长江刀鲚非法捕捞专项整治
宣城宣州:科技特派员打通农业科技成果转化“最后一公里”
村庄变景区百蔬成艺术 徽州区临河村打造蔬菜文化街巷
疫情防护形势严峻 安徽警方通报3起涉疫案件
成本低廉商家“赚翻” 白芸豆产品是不是智商税?
中央气象台发布强对流天气预报 安徽中部局地或有雷暴大风或冰雹
“氢”装上阵皖企先行 安徽发力高端装备制造产业
聚力产业振兴实现共同富裕 石棉果园花果“云”上齐香
深圳首次开通香港航线货运包机 畅通大湾区货物供应链
我国粮食市场供应充足 稳价保供有基础
猪价看涨情绪飙升 下半年猪价会涨?
定远:党员干部进万家门知万家情办万家事
吉林半个月内两遭暴雪侵袭 多部门谨慎应对
广东多地一夜降温逾10℃ 全省87个寒冷黄色预警生效
可带五人免排队畅游迪士尼?“黑导游”伪造身份证、残疾人证利用园区福利“吸金”
弘扬劳模精神 叫响和擦亮河南交通铁军品牌
云南哀牢山4名失联地质人员全部遇难 相关原因正调查
呼和浩特市一小区发生爆炸 致1死14伤
辽宁:校外培训机构预收费全部纳入监管范围
云南哀牢山4名失联地质人员已找到 均已遇难
X 广告
资讯
X 广告

Copyright ©  2015-2032 华西畜牧网版权所有  备案号:京ICP备2022016840号-35   联系邮箱: 920 891 263@qq.com