目录
5.6.7.initial_position_look_back
1.使用Logstash模块
Logstash模块提供快速的端到端解决方案,用于提取数据并使用专用仪表板对其进行可视化。
这些模块可用:
- Elastic Cloud
- ArcSight Module
- Netflow Module
- Microsoft Azure Module
每个模块都预先打包了Logstash配置,Kibana仪表板和其他元文件,使您可以更轻松地为特定用例或数据源设置弹性堆栈。
您可以将模块视为提供三个基本功能,使您更容易入门。运行模块时,它将:
- 创建Elasticsearch索引。
- 设置Kibana仪表板,包括在Kibana中可视化数据所需的索引模式,搜索和可视化。
- 使用读取和解析数据所需的配置运行Logstash管道。
1.1.运行模块
要运行模块并设置仪表板,请指定以下选项:
bin/logstash --modules MODULE_NAME --setup [-M "CONFIG_SETTING=VALUE"]
--modules
运行由指定的Logstash模块MODULE_NAME
。-M "CONFIG_SETTING=VALUE"
是可选的,并覆盖指定的配置设置。您可以指定多个覆盖。每个覆盖都必须以-M
。有关详细信息,请参阅在命令行中指定模块设置。--setup
在Elasticsearch中创建索引模式并导入Kibana仪表板和可视化。运行--setup
是一次性设置步骤。省略此选项以便后续运行模块,以避免覆盖现有的Kibana仪表板。
例如,以下命令使用默认设置运行Netflow模块,并设置netflow索引模式和仪表板:
bin/logstash --modules netflow --setup
以下命令运行Netflow模块并覆盖Elasticsearch host
设置。这里假设您已经运行了设置步骤。
bin/logstash --modules netflow -M "netflow.var.elasticsearch.host=es.mycloud.com"
1.2.配置模块
要配置模块,您可以在logstash.yml
设置文件中指定配置设置,也可以 使用命令行覆盖 在命令行中指定设置。
1.2.1.指定模块设置
要在logstash.yml
设置文件文件中指定模块设置,请将模块定义添加到modules阵列。每个模块定义以短划线( - )开头,name: module_name
然后是一系列指定模块设置的名称/值对。例如:
modules:
- name: netflow
var.elasticsearch.hosts: "es.mycloud.com"
var.elasticsearch.username: "foo"
var.elasticsearch.password: "password"
var.kibana.host: "kb.mycloud.com"
var.kibana.username: "foo"
var.kibana.password: "password"
var.input.tcp.port: 5606
有关可用模块设置的列表,请参阅该模块的文档。
1.2.2.在命令行指定模块设置
您可以在启动Logstash时通过指定一个或多个配置覆盖来覆盖模块设置。要指定覆盖,请使用-M
命令行选项:
-M MODULE_NAME.var.PLUGINTYPE1.PLUGINNAME1.KEY1=VALUE
请注意,完全限定的设置名称包括模块名称。
您可以指定多个覆盖。每个覆盖都必须以-M
。
以下命令运行Netflow模块并覆盖Elasticsearch host
设置和udp.port
设置:
bin/logstash --modules netflow -M "netflow.var.input.udp.port=3555" -M "netflow.var.elasticsearch.hosts=my-es-cloud"
命令行中定义的任何设置都是短暂的,并且不会在后续的Logstash运行中保留。如果要保留配置,则需要在logstash.yml
设置文件中进行设置。
您在命令行中指定的设置将与logstash.yml
文件中指定的任何设置合并。如果在两个位置都设置了选项,则命令行中指定的值优先。
2.使用Elastic Cloud
Logstash提供了两个简化使用Elastic Cloud模块的设置。Elastic Cloud中的Elasticsearch和Kibana主机名可能很难在Logstash配置或命令行中设置,因此可以使用Cloud ID。
仅在启用Logstash模块时才应用云ID,否则指定Cloud ID无效。Cloud ID适用于通过模块发送的数据,通过在logstash.yml文件中X-Pack监控发送的运行时指标,以及Logstash的X-Pack集中管理功能使用的端点,除非在X-Pack设置中指定了明确的覆盖。
2.1.Cloud ID
可以在Elastic Cloud Web控制台中找到的Cloud ID由Logstash用于构建Elasticsearch和Kibana主机设置。它是一个base64编码的文本值,大约120个字符,由大写和小写字母和数字组成。如果您有多个Cloud ID,则可以添加一个在内部被忽略的标签,以帮助您区分它们。要添加标签,您应在Cloud ID前面加上标签和:
分隔符,格式为“<label>:<cloud-id>”
cloud.id
将覆盖这些设置:
var.elasticsearch.hosts
var.kibana.host
2.2.Cloud Auth
这是可选的。按照以下格式“<username>:<password>”构造此值。首先使用您的Cloud用户名。将第二部分使用Cloud密码,在创建集群时在Cloud UI中提供一次。由于您的Cloud密码是可更改的,如果您在Cloud UI中更改它,请记住在此处进行更改。
cloud.auth
指定时将覆盖这些设置:
var.elasticsearch.username
var.elasticsearch.password
var.kibana.username
var.kibana.password
例:
可以在logstash.yml
设置文件中指定这些设置。它们应与您之前添加的任何模块配置设置分开添加。
# example with a label
cloud.id: "staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy"
cloud.auth: "elastic:YOUR_PASSWORD"
# example without a label
cloud.id: "dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy"
cloud.auth: "elastic:YOUR_PASSWORD"
也可以在命令行中指定这些设置,如下所示:
bin/logstash --modules netflow -M "netflow.var.input.udp.port=3555" --cloud.id <cloud-id> --cloud.auth <cloud.auth>
3.ArcSight模块
Logstash ArcSight模块是 基本许可证下的X-Pack功能,因此可以免费使用。如有任何疑问或更多信息,请联系 arcsight@elastic.co。
Logstash ArcSight模块使您可以轻松地将ArcSight数据与Elastic Stack集成。只需一个命令,模块就可以直接点击ArcSight Smart Connector或Event Broker,将安全事件解析并编入索引到Elasticsearch,并安装一套Kibana仪表板,让您立即探索数据。
3.1.先决条件
这些说明假定已经安装了Logstash,Elasticsearch和Kibana。您需要的产品可供下载和轻松安装。此模块需要Elastic Stack 5.6(或更高版本)和X-Pack。如果您使用的是Elastic Stack 6.2及更早版本,请参阅 这些版本的说明。
3.2.部署架构
Logstash ArcSight模块了解CEF(公共事件格式),可以接受,丰富和索引这些事件,以便在弹性堆栈上进行分析。ADP包含两个用于数据流的核心数据收集组件:
- 智能连接器(SC)是边缘日志收集器,在发布到日志接收器之前,它将数据解析并规范化为CEF。
- 事件代理是传入数据的中心枢纽,基于开源的Apache Kafka。logstash ArcSight模块可以直接从事件代理主题中使用。
3.3.智能连接器
首先,您可以使用基本的Elastic Stack设置直接从Smart Connector读取事件。
Logstash,Elasticsearch和Kibana必须在本地运行。请注意,您还可以在单独的主机上运行Elasticsearch,Kibana和Logstash以使用ArcSight中的数据。
3.4.事件代理
1.通过在Logstash安装目录中使用相应的Event Broker主机和端口运行以下命令来启动Logstash ArcSight模块:
bin/logstash --modules arcsight --setup \
-M "arcsight.var.input.smartconnector.port=smart_connect_port" \
-M "arcsight.var.elasticsearch.hosts=localhost:9200" \
-M "arcsight.var.kibana.host=localhost:5601"
--modules arcsight
选项高速旋转一个支持ArcSight CEF的Logstash管道以供摄取数据。--setup
在Elasticsearch中创建arcsight-*
索引模式,并导入Kibana仪表板和可视化。在后续模块运行或扩展Logstash部署时,--setup
应省略该选项以避免覆盖现有Kibana仪表板。
有关详细信息,请参阅Logstash ArcSight模块配置选项。
2.使用Kibana探索您的数据:
- 打开浏览器 http:// localhost:5601(用户名:“elastic”;密码:“YOUR_PASSWORD”)
- 打开[ArcSight]网络概述仪表板
- 有关数据探索的其他详细信息,请参阅探索安全数据。
3.5.探索您的安全数据
一旦Logstash ArcSight模块开始接收事件,您就可以立即开始使用打包的Kibana仪表板来探索和可视化您的安全数据。仪表板可以快速加快安全分析师和运营商所需的时间和精力,以获得有关流经环境的网络,端点和DNS事件的情境和行为洞察。您可以按原样使用仪表板,也可以根据现有用例和业务需求对其进行定制。
仪表板有一个导航窗格,用于跨三个核心用例进行上下文切换和深入分析:
-
网络数据(Network Data)
- 仪表板(Dashboards):网络( Network)概述,网络可疑活动
- 数据类型:网络防火墙,入侵系统,VPN设备
-
端点数据(Endpoint Data)
- 仪表板:端点概述,端点OS活动
- 数据类型:操作系统,应用程序,主机入侵系统
-
DNS数据(DNS Data)
- 仪表板:Microsoft DNS概述
- 数据类型:Microsoft DNS设备
3.6.示例网络仪表板
通过这些Kibana可视化,您可以快速了解顶级设备,端点,攻击者和目标。这种洞察力以及即时深入挖掘特定主机,端口,设备或时间范围的能力,提供了整个环境的整体视图,以识别可能需要立即关注或采取行动的特定细分市场。您可以轻松找到以下问题的答案:
- 谁是我的攻击者,他们的目标是什么?
- 我的哪些设备或端点最繁忙,哪些服务呈现?
- 在任何给定的时间点触发了多少独特的攻击者,技术,签名或目标?
- 导致故障数量增加的主要来源,目的地,协议和行为是什么?
3.7.配置模块
您可以在logstash.yml
配置文件中为Logstash ArcSight模块指定其他选项,也可以 通过命令行覆盖,例如在入门中。有关配置模块的更多信息,请参阅 使用Logstash模块。
例如,可以附加以下设置logstash.yml
来配置模块:
modules:
- name: arcsight
var.input.eventbroker.bootstrap_servers: "eb_host:39092"
var.input.eventbroker.topics: "eb_topic"
var.elasticsearch.hosts: "localhost:9200"
var.elasticsearch.username: "elastic"
var.elasticsearch.password: "YOUR_PASSWORD"
var.kibana.host: “localhost:5601”
var.kibana.username: "elastic"
var.kibana.password: "YOUR_PASSWORD"
3.8.Logstash ArcSight模块配置选项
ArcSight模块提供以下设置以配置模块的行为。这些设置包括特定于ArcSight的选项以及所有Logstash模块支持的常用选项。
在命令行覆盖设置时,请记住在设置前添加模块名称,例如,arcsight.var.inputs
而不是 var.inputs
。
如果未指定配置设置,Logstash将使用默认值。
ArcSight模块选项
var.inputs
- 值类型是字符串
- 默认值为“eventbroker”
设置要为Logstash ArcSight模块公开的输入。有效设置为“eventbroker”,“smartconnector”或“eventbroker,smartconnector”(同时公开两个输入)。
ArcSight模块事件代理特定选项
var.input.eventbroker.bootstrap_servers
- 值类型是字符串
- 默认值为“localhost:39092”
用于建立与群集的初始连接的Event Broker URL列表。此列表应采用以下形式host1:port1,host2:port2
。这些URL仅用于初始连接以发现完整的集群成员资格(可能会动态更改)。此列表不需要包含完整的服务器集。(如果服务器关闭,您可能需要多个。)
var.input.eventbroker.topics
- 值类型是数组
- 默认值为[“eb-cef”]
要订阅的Event Broker主题列表。
var.input.eventbroker.security_protocol
- 值可以是任何的:
PLAINTEXT
,SSL
,SASL_PLAINTEXT
,SASL_SSL
- 默认值是
"PLAINTEXT"
要使用的安全协议,可以是PLAINTEXT,SSL,SASL_PLAINTEXT,SASL_SSL。如果指定除PLAINTEXT以外的任何内容,则还需要指定下面列出的一些选项。当指定SSL
或SASL_SSL
你应该为前缀的选项提供值ssl_
,指定时,SASL_PLAINTEXT
或者SASL_SSL
你应该提供值jaas_path
,kerberos_config
,sasl_mechanism
和sasl_kerberos_service_name
。
var.input.eventbroker.ssl_key_password
- 值类型是密码
- 此设置没有默认值。
密钥库文件中私钥的密码。
var.input.eventbroker.ssl_keystore_location
- 值类型是路径
- 此设置没有默认值。
如果需要客户端身份验证,则此设置存储密钥库路径。
var.input.eventbroker.ssl_keystore_password
- 值类型是密码
- 此设置没有默认值。
如果需要客户端身份验证,则此设置存储密钥库密码。
var.input.eventbroker.ssl_keystore_type
- 值类型是字符串
- 此设置没有默认值。
密钥库类型。
var.input.eventbroker.ssl_truststore_location
- 值类型是路径
- 此设置没有默认值。
用于验证Kafka代理证书的JKS信任库路径。
var.input.eventbroker.ssl_truststore_password
- 值类型是密码
- 此设置没有默认值。
信任库密码。
var.input.eventbroker.ssl_truststore_type
- 值类型是字符串
- 此设置没有默认值。
信任库类型。
var.input.eventbroker.sasl_kerberos_service_name
- 值类型是字符串
- 此设置没有默认值。
Kafka代理运行的Kerberos主体名称。这可以在Kafka的JAAS配置或Kafka的配置中定义。
var.input.eventbroker.sasl_mechanism
- 值类型是字符串
- 默认值是
"GSSAPI"
用于客户端连接的SASL机制。这可以是安全提供者可用的任何机制。GSSAPI是默认机制。
var.input.eventbroker.jaas_path
- 值类型是路径
- 此设置没有默认值。
Java身份验证和授权服务(JAAS)API为Kafka提供用户身份验证和授权服务。此设置提供JAAS文件的路径。Kafka客户端的示例JAAS文件:
KafkaClient {
com.sun.security.auth.module.Krb5LoginModule required
useTicketCache=true
renewTicket=true
serviceName="kafka";
};
请注意,指定jaas_path
并kerberos_config
在此处将这些添加到全局JVM系统属性中。这意味着如果你有多个卡夫卡输入,所有的人都将共享相同的jaas_path
和kerberos_config
。如果不希望这样,则必须在不同的JVM实例上运行单独的Logstash实例。
var.input.eventbroker.kerberos_config
- 值类型是路径
- 此设置没有默认值。
kerberos配置文件的可选路径。这是krb5.conf样式,详见https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html
ArcSight模块智能连接器特定选项
var.input.smartconnector.port
- 值类型是数字
- 默认值为5000
从SC接收数据时要侦听的TCP端口。
var.input.smartconnector.ssl_enable
- 值类型是布尔值
- 默认值是
false
启用SSL(必须设置其他ssl_
选项才能生效)。
var.input.smartconnector.ssl_cert
- 值类型是路径
- 此设置没有默认值。
SSL证书路径。
var.input.smartconnector.ssl_extra_chain_certs
- 值类型是数组
- 默认值是
[]
要添加到证书链的额外X509证书的路径数组。在系统存储中不需要CA链时很有用。
var.input.smartconnector.ssl_key
- 值类型是路径
- 此设置没有默认值。
SSL密钥路径
var.input.smartconnector.ssl_key_passphrase
- 值类型是密码
- 默认值是
nil
SSL密钥密码
var.input.smartconnector.ssl_verify
- 值类型是布尔值
- 默认值是
true
验证针对CA的SSL连接另一端的标识。对于输入,将字段设置sslsubject
为客户端证书的字段。
常见选项
所有模块均支持以下配置选项:
var.elasticsearch.hosts
- 值类型是uri
- 默认值为“localhost:9200”
设置Elasticsearch集群的主机。对于每个主机,您必须指定主机名和端口。例如,“myhost:9200”。如果给定一个数组,Logstash将在hosts参数中指定的主机上加载平衡请求。从主机列表中排除专用主节点非常重要,以防止Logstash向主节点发送批量请求。因此,此参数应仅引用Elasticsearch中的数据或客户端节点。
这里的URL中出现的任何特殊字符必须是URL转义!这意味着#应该以%23的形式输入。
var.elasticsearch.username
- 值类型是字符串
- 默认值是“弹性”
用于向安全Elasticsearch集群进行身份验证的用户名。
var.elasticsearch.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Elasticsearch集群进行身份验证的密码。
var.elasticsearch.ssl.enabled
- 值类型是布尔值
- 此设置没有默认值。
启用与Elasticsearch集群的SSL / TLS安全通信。保留此未指定的将使用在列出的URL中指定的任何方案hosts
。如果未指定显式协议,则将使用纯HTTP。如果此处明确禁用了SSL,则在主机中提供HTTPS URL时,插件将拒绝启动。
var.elasticsearch.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Elasticsearch通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.elasticsearch.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于验证SSL证书的X.509证书的路径。
var.elasticsearch.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的X.509证书的路径。
var.elasticsearch.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的证书密钥的路径。
var.kibana.host
- 值类型是字符串
- 默认值为“localhost:5601”
设置用于导入仪表板和可视化的Kibana实例的主机名和端口。例如:“myhost:5601”。
var.kibana.scheme
- 值类型是字符串
- 默认值为“http”
设置用于到达Kibana实例的协议。选项包括:“http”或“https”。默认值为“http”。
var.kibana.username
- 值类型是字符串
- 默认值是“弹性”
用于对安全的Kibana实例进行身份验证的用户名。
var.kibana.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Kibana实例进行身份验证的密码。
var.kibana.ssl.enabled
- 值类型是布尔值
- 默认值为false
启用与Kibana实例的SSL / TLS安全通信。
var.kibana.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Kibana通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.kibana.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于验证SSL证书的X.509证书的路径。
var.kibana.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的X.509证书的路径。
var.kibana.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的证书密钥的路径。
4.Netflow模块
Logstash Netflow模块简化了网络流数据的收集,规范化和可视化。使用单个命令,模块解析网络流数据,将事件索引到Elasticsearch,并安装一套Kibana仪表板,以便您立即探索数据。
Logstash模块支持Netflow版本5和9
4.1.什么是流量数据?
Netflow是一种从有能力的网络设备流式传输的数据记录。它包含有关遍历设备的连接的信息,包括源IP地址和端口,目标IP地址和端口,服务类型,VLAN以及可以编码为帧和协议头的其他信息。利用Netflow数据,网络运营商可以超越仅监控穿过其网络的数据量。他们可以了解流量来自何处,流向何处以及它所属的服务或应用程序。
4.2.要求
这些说明假设您已经安装了Elastic Stack(Logstash,Elasticsearch和Kibana)5.6或更高版本。您需要的产品可供下载和轻松安装。
4.3.入门
1.通过在Logstash安装目录中运行以下命令来启动Logstash Netflow模块:
bin/logstash --modules netflow --setup -M netflow.var.input.udp.port=NNNN
其中NNNN是udp端口,logstash将在该端口上侦听网络流量数据。如果不指定端口,则logstash默认监听端口2055。
--modules netflow
选项会启动Netflow感知的Logstash管道以供摄取。
--setup
选项netflow-*
在Elasticsearch中创建索引模式,并导入Kibana仪表板和可视化。运行--setup
是一次性设置步骤。省略此选项以便后续运行模块,以避免覆盖现有的Kibana仪表板。
此处显示的命令假定您在本地主机上运行Elasticsearch和Kibana。如果不是,则需要指定其他连接选项。请参阅配置模块。
2.在Kibana探索您的数据:
- 打开浏览器并导航到 http:// localhost:5601。如果启用了安全性,则需要指定在设置安全性时使用的Kibana用户名和密码。
- 打开Netflow:网络概述仪表板。
- 有关数据探索的其他详细信息,请参阅探索数据。
4.4.探索您的数据
一旦Logstash Netflow模块开始处理事件,您就可以立即开始使用打包的Kibana仪表板来探索和可视化您的网络流数据。
您可以按原样使用仪表板,也可以根据现有用例和业务需求对其进行定制。
4.5.示例仪表板
在“ 概览(Overview)”仪表板上,您可以查看基本流量数据的摘要并设置过滤器,然后再深入了解数据。
例如,在“ Conversation Partners ”仪表板上,您可以在任何对话中查看客户端和服务器的源和目标地址。
在流量分析(Traffic Analysis)仪表板上,您可以通过查看以字节为单位的流量来识别高容量对话。
然后,您可以转到“ 地理位置(Geo Location)”仪表板,在该仪表板中可以显示热图上目的地和来源的位置。
4.6.配置模块
您可以通过在logstash.yml
设置文件中指定设置或在命令行覆盖设置来进一步优化Logstash Netflow模块的行为。
例如,logstash.yml
文件中的以下配置将Logstash设置为侦听端口9996以获取网络流量数据:
modules:
- name: netflow
var.input.udp.port: 9996
要在命令行中指定相同的设置,请使用:
bin/logstash --modules netflow -M netflow.var.input.udp.port=9996
有关配置模块的更多信息,请参阅 使用Logstash模块。
4.7.配置选项
Netflow模块提供以下设置以配置模块的行为。这些设置包括特定于Netflow的选项以及所有Logstash模块支持的常用选项。
在命令行覆盖设置时,请记住在设置前添加模块名称,例如, netflow.var.input.udp.port
而不是 var.input.udp.port
。
如果未指定配置设置,Logstash将使用默认值。
Netflow选项
var.input.udp.port:
- 值类型是数字
- 默认值为2055。
设置Logstash侦听网络流量数据的UDP端口。虽然2055是此设置的默认设置,但某些设备使用的范围为9995到9998,其中9996是最常用的替代方案。
var.input.udp.workers:
- 值类型是数字
- 默认值为2。
处理数据包的线程数。
var.input.udp.receive_buffer_bytes:
- 值类型是数字
- 默认值为212992。
套接字以字节为单位接收缓冲区大小 如果receive_buffer_bytes大于允许值,操作系统将使用最大允许值。如果需要增加此最大允许值,请参阅操作系统文档。
var.input.udp.queue_size:
- 值类型是数字
- 默认值为2000。
这是在数据包开始丢弃之前可以在内存中保留的未处理UDP数据包的数量。
常见选项
所有模块均支持以下配置选项:
var.elasticsearch.hosts
- 值类型是uri
- 默认值为“localhost:9200”
设置Elasticsearch集群的主机。对于每个主机,您必须指定主机名和端口。例如,“myhost:9200”。如果给定一个数组,Logstash将在hosts参数中指定的主机上加载平衡请求。从主机列表中排除专用主节点非常重要,以防止Logstash向主节点发送批量请求。因此,此参数应仅引用Elasticsearch中的数据或客户端节点。
这里的URL中出现的任何特殊字符必须是URL转义!这意味着#应该以%23的形式输入。
var.elasticsearch.username
- 值类型是字符串
- 默认值是“弹性”
用于向安全Elasticsearch集群进行身份验证的用户名。
var.elasticsearch.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Elasticsearch集群进行身份验证的密码。
var.elasticsearch.ssl.enabled
- 值类型是布尔值
- 此设置没有默认值。
启用与Elasticsearch集群的SSL / TLS安全通信。保留此未指定的将使用在列出的URL中指定的任何方案hosts
。如果未指定显式协议,则将使用纯HTTP。如果此处明确禁用了SSL,则在主机中提供HTTPS URL时,插件将拒绝启动。
var.elasticsearch.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Elasticsearch通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.elasticsearch.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于验证SSL证书的X.509证书的路径。
var.elasticsearch.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的X.509证书的路径。
var.elasticsearch.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的证书密钥的路径。
var.kibana.host
- 值类型是字符串
- 默认值为“localhost:5601”
设置用于导入仪表板和可视化的Kibana实例的主机名和端口。例如:“myhost:5601”。
var.kibana.scheme
- 值类型是字符串
- 默认值为“http”
设置用于到达Kibana实例的协议。选项包括:“http”或“https”。默认值为“http”。
var.kibana.username
- 值类型是字符串
- 默认值是“弹性”
用于对安全的Kibana实例进行身份验证的用户名。
var.kibana.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Kibana实例进行身份验证的密码。
var.kibana.ssl.enabled
- 值类型是布尔值
- 默认值为false
启用与Kibana实例的SSL / TLS安全通信。
var.kibana.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Kibana通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.kibana.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于验证SSL证书的X.509证书的路径。
var.kibana.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的X.509证书的路径。
var.kibana.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的证书密钥的路径。
5.Azure模块
此功能是实验性的,可在将来的版本中完全更改或删除。弹性将尽最大努力解决任何问题,但实验性功能不受官方GA功能的支持SLA的约束。
Logstash中的Microsoft Azure模块可帮助您轻松地将Azure活动日志和SQL诊断日志与Elastic Stack集成。
您可以通过跨多个Azure订阅的深入操作洞察来监控Azure云环境和SQL数据库部署。您可以实时探索基础架构的运行状况,加速根本原因分析并缩短总体解决时间。Azure模块可以帮助您:
- 分析基础架构更改和授权活动
- 识别可疑行为和潜在的恶意行为者
- 通过调查用户活动来执行根本原因分析
- 监视和优化SQL DB部署。
Logstash Azure模块是 基本许可证下的X-Pack功能,因此可以免费使用。如有任何疑问或更多信息,请联系 monitor-azure@elastic.co。
Azure模块使用 Logstash Azure事件中心输入插件来使用Azure事件中心的数据。该模块直接点击Azure仪表板,将事件解析并索引到Elasticsearch,并安装一套Kibana仪表板,以帮助您立即开始探索数据。
5.1.仪表板
这些Kibana仪表板可供您使用。您可以按原样使用它们,也可以根据您的需要定制它们。
5.1.1.基础设施活动监控
- 概述(Overview)。Azure操作的顶级视图,包括有关用户,资源组,服务运行状况,访问,活动和警报的信息。
- 提醒(Alerts)。警报信息,包括活动,警报状态和警报热图
- 用户活动(User Activity)。有关系统用户,其活动和请求的信息。
5.1.2.SQL数据库监控
- SQL DB概述。SQL数据库的顶级视图,包括数据库,服务器,资源组和订阅的计数。
- SQL DB数据库视图。有关每个SQL数据库的详细信息,包括等待时间,错误,DTU和存储利用率,大小以及读写输入/输出。
- SQL DB查询。有关SQL数据库查询和性能的信息。
5.2.先决条件
此模块需要使用Azure事件中心和弹性堆栈启用的Azure监视器。
5.2.1.Elastic先决条件
以下说明假设您在本地运行Logstash,Elasticsearch和Kibana。您还可以在单独的主机上运行Logstash,Elasticsearch和Kibana。
此模块需要Elastic Stack版本6.4(或更高版本)。
Azure模块使用azure_event_hubs
输入插件来使用Azure环境中的日志和指标。它默认安装在Logstash 6.4(或更高版本)中。在设置Azure模块时,对插件和选项的基本了解非常有用。有关更多信息,请参阅azure_event_hubs输入插件文档。
弹性产品可供下载和轻松安装。
5.2.2.Azure先决条件
应将Azure监视器配置为将日志流式传输到一个或多个事件中心。Logstash将需要访问这些Event Hubs实例以使用Azure日志和指标。有关Microsoft Azure文档的链接,请参阅本主题末尾的Microsoft Azure资源。
5.3.配置模块
在配置文件logstash.ym
中指定Logstash Azure模块的 选项
- 基本配置。您可以使用
logstash.yml
文件配置来自共享相同配置的多个事件中心的输入。对于大多数用例,建议使用基本配置。 - 高级配置。 高级配置可用于不同事件中心需要不同配置的部署。
logstash.yml
文件包含您的设置。大多数用例不需要或建议进行高级配置。
有关基本和高级配置模型的更多信息,请参阅azure_event_hubs输入插件文档。
5.3.1.基本配置示例
logstash.yml
文件中的配置在事件中心之间共享。对于大多数用例,建议使用基本配置
modules:
- name: azure
var.elasticsearch.hosts: localhost:9200
var.kibana.host: localhost:5601
var.input.azure_event_hubs.consumer_group: "logstash"
var.input.azure_event_hubs.storage_connection: "DefaultEndpointsProtocol=https;AccountName=instance1..."
var.input.azure_event_hubs.threads: 9
var.input.azure_event_hubs.event_hub_connections:
- "Endpoint=sb://...EntityPath=insights-operational-logs"
- "Endpoint=sb://...EntityPath=insights-metrics-pt1m"
- "Endpoint=sb://...EntityPath=insights-logs-blocks"
- "Endpoint=sb://...EntityPath=insights-logs-databasewaitstatistics"
- "Endpoint=sb://...EntityPath=insights-logs-errors"
- "Endpoint=sb://...EntityPath=insights-logs-querystoreruntimestatistics"
- "Endpoint=sb://...EntityPath=insights-logs-querystorewaitstatistics"
- "Endpoint=sb://...EntityPath=insights-logs-timeouts"
- consumer_group 强烈建议使用(可选)。请参阅最佳做法。
- storage_connection(可选)设置了向外扩展多Logstash实例部署时,跟踪处理状态事件集线器在Azure Blob存储连接。有关其他详细信息,请参阅扩展事件中心
- 有关选择适当线程数的指导,请参阅最佳实践
- 此连接设置活动日志的消耗。默认情况下,Azure Monitor使用insights-operational-logsEvent Hub名称。确保这与活动日志指定的事件中心的名称相匹配。
- 此连接和下面的连接设置SQL DB诊断日志和指标的消耗。默认情况下,Azure Monitor使用所有这些不同的事件中心名称。
基本配置var.input.azure_event_hubs.
在配置选项之前需要前缀。请注意该threads
选项的表示法。
5.3.2.高级配置示例
logstash.yml
文件中的高级配置支持Event Hub特定选项。高级配置可用于跨多个事件中心更精细地调整线程和Blob存储使用。大多数用例不需要或建议进行高级配置。仅在部署方案需要时才使用它。
您必须在第一个位置定义header
数组name
。您可以按任何顺序定义其他选项。每个事件中心配置优先。每个事件中心未定义的任何值都使用全局配置值。
在这个例子中threads
,consumer_group
和storage_connection
将被应用到每个配置的事件枢纽。请注意,decorate_events
它在全局和每个事件中心配置中定义。每个事件中心配置优先,当存在每个事件中心设置时,实际上会忽略全局配置。
modules:
- name: azure
var.elasticsearch.hosts: localhost:9200
var.kibana.host: localhost:5601
var.input.azure_event_hubs.decorate_events: true
var.input.azure_event_hubs.threads: 9
var.input.azure_event_hubs.consumer_group: "logstash"
var.input.azure_event_hubs.storage_connection: "DefaultEndpointsProtocol=https;AccountName=instance1..."
var.input.azure_event_hubs.event_hubs:
- ["name", "initial_position", "storage_container", "decorate_events", "event_hub_connection"]
- ["insights-operational-logs", "TAIL", "activity-logs1", "true", "Endpoint=sb://...EntityPath=insights-operational-logs"]
- ["insights-operational-logs", "TAIL", "activity_logs2", "true", "Endpoint=sb://...EntityPath=insights-operational-logs"]
- ["insights-metrics-pt1m", "TAIL", "dbmetrics", "true", "Endpoint=sb://...EntityPath=insights-metrics-pt1m"]
- ["insights-logs-blocks", "TAIL", "dbblocks", "true", "Endpoint=sb://...EntityPath=insights-logs-blocks"]
- ["insights-logs-databasewaitstatistics", "TAIL", "dbwaitstats", "false", "Endpoint=sb://...EntityPath=insights-logs-databasewaitstatistics"]
- ["insights-logs-errors", "HEAD", "dberrors", "true", "Endpoint=sb://...EntityPath=insights-logs-errors"
- ["insights-logs-querystoreruntimestatistics", "TAIL", "dbstoreruntime", "true", "Endpoint=sb://...EntityPath=insights-logs-querystoreruntimestatistics"]
- ["insights-logs-querystorewaitstatistics", "TAIL", "dbstorewaitstats", "true", "Endpoint=sb://...EntityPath=insights-logs-querystorewaitstatistics"]
- ["insights-logs-timeouts", "TAIL", "dbtimeouts", "true", "Endpoint=sb://...EntityPath=insights-logs-timeouts"]
5.3.3.扩展事件中心消费
一个 Azure Blob Storage account是Azure到Logstash结构的一个基本部分。想要扩展多个Logstash实例以从事件中心使用的用户需要它。
Blob存储帐户是一个中心位置,它使多个Logstash实例能够一起处理事件。它记录已处理事件的偏移量(位置)。重启后,Logstash会从中断处继续处理。
配置说明:
- 强烈建议将Blob Storage帐户与此模块一起使用,这可能是生产服务器所必需的。
- 该
storage_connection
选项传递blob存储连接字符串。 - 配置所有Logstash实例以使用相同的实例来
storage_connection
获得共享处理的好处。
示例Blob存储连接字符串:
DefaultEndpointsProtocol=https;AccountName=logstash;AccountKey=ETOPnkd/hDAWidkEpPZDiXffQPku/SZdXhPSLnfqdRTalssdEuPkZwIcouzXjCLb/xPZjzhmHfwRCGo0SBSw==;EndpointSuffix=core.windows.net
在此处找到Blob Storage的连接字符串: Azure Portal-> Blob Storage account -> Access keys
。
5.3.4.最佳实践
以下是一些可帮助您实现成功部署的准则,并避免可能导致丢失事件的数据冲突。
- 创建Logstash使用者组。 专门为Logstash创建一个新的使用者组。请勿使用$default或可能已在使用的任何其他使用者组。在非相关消费者中重复使用消费者群体可能会导致意外行为并可能导致丢失事件。所有Logstash实例都应使用相同的使用者组,以便它们可以一起处理事件。
-
避免使用多个事件中心覆盖偏移量。 事件中心的偏移量(位置)存储在配置的Azure Blob存储中。Azure Blob存储使用文件系统之类的路径来存储偏移量。如果多个事件中心之间的路径重叠,则偏移可能存储不正确。要避免重复的文件路径,请使用高级配置模型,并确保每个事件中心至少有一个选项不同:
- storage_connection
- storage_container(如果未定义,则默认为Event Hub名称)
- consumer_group
-
正确设置线程数。 线程数应等于事件中心数加一(或更多)。每个事件中心至少需要一个线程。需要一个额外的线程来帮助协调其他线程。线程数不应超过事件中心数乘以每个事件中心的分区数加1。线程目前仅作为全局设置使用。
- 示例:事件中心= 4.每个事件中心的分区= 3.最小线程数为5(4个事件中心加一个)。最大线程数为13(4个事件中心数乘以3个分区加1个)。
- 如果您只从一个指定的事件中心实例收集活动日志,则只需要2个线程(1个事件中心加1个)。
5.4.设置并运行模块
确保logstash.yml
文件配置正确。
5.4.1.首次设置
从Logstash目录运行此命令:
bin/logstash --setup
--modules azure
选项启动Logstash管道以从Azure事件中心提取。该--setup
选项azure-*
在Elasticsearch中创建索引模式,并导入Kibana仪表板和可视化。
5.4.2.后续开始
从Logstash目录运行此命令:
bin/logstash
--setup
选项仅适用于首次设置。如果--setup
在后续运行中包含 ,则将覆盖现有的Kibana仪表板。
5.5.探索您的数据
当Logstash Azure模块开始接收事件时,您可以开始使用打包的Kibana仪表板来浏览和可视化您的数据。
要使用Kibana探索您的数据:
- 打开浏览器http:// localhost:5601(用户名:“elastic”;密码:“YOUR_PASSWORD”)
- 单击仪表板(Dashboard)。
- 单击[Azure Monitor]概述(Overview)。
5.6.配置选项
所有事件中心选项对于基本配置和高级配置都是通用的,但以下情况除外。基本配置用于event_hub_connections
支持多个连接。高级配置使用event_hubs
和event_hub_connection
(单数)。
5.6.1.event_hubs
- 值类型是数组
- 没有默认值
- 忽略基本和命令行配置
- 高级配置需要
高级配置使用event_hub_connection
而不是event_hub_connections
。该event_hub_connection
选项是根据事件中心定义的。
5.6.2.event_hub_connections
- 值类型是数组
- 没有默认值
- 基本和命令行配置必需
- 忽略高级配置
标识要读取的事件中心的连接字符串列表。连接字符串包括Event Hub的EntityPath。
5.6.3.checkpoint_interval
- 值类型是数字
- 默认值为
5
秒 - 设置
0
为禁用。
批处理期间写入检查点的时间间隔(以秒为单位)。检查点告诉Logstash重启后恢复处理的位置。无论此设置如何,都会在每批次结束时自动写入检查点。
过于频繁地编写检查点会不必要地减慢处理速度。
5.6.4.consumer_group
- 值类型是字符串
- 默认值是
$Default
消费者组用于阅读事件中心。专门为Logstash创建一个使用者组。然后确保Logstash的所有实例都使用该使用者组,以便它们可以正常工作。
5.6.5.decorate_events
- 值类型是布尔值
- 默认值是
false
将有关事件的中枢元数据,其中包括Event Hub name
,consumer_group
, processor_host
,partition
,offset
,sequence
,timestamp
,和event_size
。
5.6.6.initial_position
- 值类型是字符串
- 有效参数
beginning
,end
,look_back
- 默认值是
beginning
首次从事件中心读取时,从此位置开始:
beginning
读取事件中心中的所有预先存在的事件end
不读取事件中心中任何预先存在的事件look_back
读取end
减去预先存在的事件的数秒。您可以使用该initial_position_look_back
选项控制秒数。
如果storage_connection
设置,initial_position
则仅在Logstash首次从事件中心读取时使用该值。
5.6.7.initial_position_look_back
- 值类型是数字
- 默认值是
86400
- 仅在
initial_position
设置为时使用look-back
回顾以查找预先存在的事件的初始位置的秒数。仅当initial_position
设置为时才使用此选项look_back
。如果 storage_connection
设置,则此配置仅在Logstash首次从事件中心读取时应用。.
5.6.8.max_batch_size
- 值类型是数字
- 默认值是
125
一起检索和处理的最大事件数。每批后都会创建一个检查点。增加此值可能有助于提高性能,但需要更多内存。
5.6.9.storage_connection
- 值类型是字符串
- 没有默认值
blob帐户存储的连接字符串。Blob帐户存储在重新启动之间持续存在偏移,并确保Logstash的多个实例处理不同的分区。设置此值后,重新开始继续处理停止的位置。如果未设置此值,则initial_position
每次重新启动时都会使用该值。
我们强烈建议您为生产环境定义此值。
5.6.10.storage_container
- 值类型是字符串
- 如果未定义,则默认为Event Hub名称
用于保留偏移量并允许多个Logstash实例一起工作的存储容器的名称。
为避免覆盖偏移量,您可以使用不同的存储容器。如果您要监视两个具有相同名称的事件中心,这一点尤为重要。您可以使用高级配置模型配置不同的存储容器。
5.6.11.threads
- 值类型是数字
- 最小值是
2
- 默认值是
4
用于处理事件的线程总数。您在此处设置的值适用于所有事件中心。即使使用高级配置,此值也是全局设置,无法为每个事件中心设置。
线程数应该是事件中心的数量加上一个或多个。有关更多信息,请参阅最佳做法
5.6.13.常见选项
所有模块均支持以下配置选项:
var.elasticsearch.hosts
- 值类型是uri
- 默认值为“localhost:9200”
设置Elasticsearch集群的主机。对于每个主机,您必须指定主机名和端口。例如,“myhost:9200”。如果给定一个数组,Logstash将在hosts参数中指定的主机上加载平衡请求。从主机列表中排除专用主节点非常重要,以防止Logstash向主节点发送批量请求。因此,此参数应仅引用Elasticsearch中的数据或客户端节点。
这里的URL中出现的任何特殊字符必须是URL转义!这意味着#应该以%23的形式输入。
var.elasticsearch.username
- 值类型是字符串
- 默认值是“弹性”
用于向安全Elasticsearch集群进行身份验证的用户名。
var.elasticsearch.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Elasticsearch集群进行身份验证的密码。
var.elasticsearch.ssl.enabled
- 值类型是布尔值
- 此设置没有默认值。
启用与Elasticsearch集群的SSL / TLS安全通信。保留此未指定的将使用在列出的URL中指定的任何方案hosts
。如果未指定显式协议,则将使用纯HTTP。如果此处明确禁用了SSL,则在主机中提供HTTPS URL时,插件将拒绝启动。
var.elasticsearch.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Elasticsearch通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.elasticsearch.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于验证SSL证书的X.509证书的路径。
var.elasticsearch.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的X.509证书的路径。
var.elasticsearch.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Elasticsearch通信时用于客户端身份验证的证书密钥的路径。
var.kibana.host
- 值类型是字符串
- 默认值为“localhost:5601”
设置用于导入仪表板和可视化的Kibana实例的主机名和端口。例如:“myhost:5601”。
var.kibana.scheme
- 值类型是字符串
- 默认值为“http”
设置用于到达Kibana实例的协议。选项包括:“http”或“https”。默认值为“http”。
var.kibana.username
- 值类型是字符串
- 默认值是“弹性”
用于对安全的Kibana实例进行身份验证的用户名。
var.kibana.password
- 值类型是字符串
- 默认值为“changeme”
用于向安全Kibana实例进行身份验证的密码。
var.kibana.ssl.enabled
- 值类型是布尔值
- 默认值为false
启用与Kibana实例的SSL / TLS安全通信。
var.kibana.ssl.verification_mode
- 值类型是字符串
- 默认值是“严格”
与Kibana通信时的主机名验证设置。设置为 disable
关闭主机名验证。禁用此功能存在严重的安全问题。
var.kibana.ssl.certificate_authority
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于验证SSL证书的X.509证书的路径。
var.kibana.ssl.certificate
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的X.509证书的路径。
var.kibana.ssl.key
- 值类型是字符串
- 此设置没有默认值
与Kibana通信时用于客户端身份验证的证书密钥的路径。
5.7.Azure模块架构
此模块从Azure事件中心读取数据,并为活动日志和SQL诊断的数据添加一些其他结构。原始数据始终保留,添加或解析的任何数据都将在azure下命名。例如,azure.subscription可能已经从更复杂的URN中解析出来。
名称 | 描述 | 笔记 |
---|---|---|
azure.subscription | 此数据源自的Azure订阅。 | 某些活动日志事件可能与订阅无关。 |
azure.group | 主要数据类型。 | 当前值为activity_log或sql_diagnostics |
azure.category * | 特定于发起数据的组的辅助数据类型 | |
azure.provider | Azure提供商 | |
azure.resource_group | Azure资源组 | |
azure.resource_type | Azure资源类型 | |
azure.resource_name | Azure资源名称 | |
azure.database | Azure数据库名称,用于显示目的 | 仅限SQL诊断程序 |
azure.db_unique_id | 保证唯一的Azure数据库名称 | 仅限SQL诊断程序 |
azure.server | 数据库的Azure服务器 | 仅限SQL诊断程序 |
azure.server_and_database | Azure服务器和数据库相结合 | 仅限SQL诊断程序 |
笔记:
- 活动日志可以具有以下类别:管理,ServiceHealth,警报,自动缩放,安全性(Administrative, ServiceHealth, Alert, Autoscale, Security)
- SQL诊断可以具有以下类别:度量,块,错误,超时,QueryStoreRuntimeStatistics,QueryStoreWaitStatistics,DatabaseWaitStatistics,SQLInsights(Metric, Blocks, Errors, Timeouts, QueryStoreRuntimeStatistics, QueryStoreWaitStatistics, DatabaseWaitStatistics, SQLInsights)
Microsoft 在此处记录了活动日志架构 。此处记录了 SQL诊断数据 。弹性不拥有这些数据模型,因此无法保证信息的准确性或被动性。
特别说明 - 属性字段
许多日志包含properties
顶级字段。这通常是最有趣的数据存在的地方。来自不同源的属性字段的日志类型之间没有固定的模式。
例如,一个日志可能有 properties.type
一个日志设置这个String类型,另一个日志设置为Integer类型。为避免映射错误,将原始属性字段移至 <azure.group>_<azure_category>_properties.<original_key>
。例如, properties.type
可能最终为sql_diagnostics_Errors_properties.type
或activity_log_Security_properties.type
取决于事件发生的组/类别。
5.8.在生产部署模块
使用安全最佳实践来保护您的配置。有关详细信息和建议,请参阅保护弹性堆栈。
5.9.Microsoft Azure资源
Microsoft是获取最新Azure信息的最佳来源。