ELK安装细节及使用
elasticsearch全家桶的环境搭建及配置细节
1.elasticsreach的安装及配置
官网下载指定版本的es,对照jdk版本筛选合适的es版本,官网地址:https://www.elastic.co/downloads/past-releases?product=elasticsearch

选择对应的操作系统即可。
配置elasticsearch.yml
network.host: 0.0.0.0
discovery.type: single-node
xpack.security.enabled: false
如果涉及中文字段查询,最好提取配置好ik分词器,提高查询速度
ik分词器下载地址:https://release.infinilabs.com/
选择和es相同的版本进行下载,在elasticsearch下的plugins目录下新建ik目录,将分词 器里面的内容全部解压进去,注意不要把带版本的分词器文件夹拷贝进去,只要里面的文件和目录,例如这样

然后将分词器里面的config文件拷贝到elasticsearch下面的config里面,.xml和.dic全部拷贝进去。
之后就可以启动es服务了,进入bin,这里以win系统举例,直接点击elasticsearch.bat即可,注意:如果是linux系统,新版本的es做了限制,root用户无法启动服务,最好创意一个专门用于启动es的用户,并设置密码。访问地址:localhost:9200
2.kibana 安装及配置
这个服务主要用于管理和监控elasticsearch服务,是一个图形化的web系统。作用等同于nativcat。
官网下载

选择与elasticsearch相同的版本下载。
kibana内置nodesjs环境,无需搭建环境。
config文件夹下配置kibana.yml文件,配置es服务访问地址:
elasticsearch.hosts: ["http://127.0.0.1:9200"]
在bin文件夹下找到kibana.bat点击启动,等待一段时间即可。
访问地址:localhost:5601
3.logstash 安装及配置
logstash主要用于数据同步与采集,将要进行搜索的数据同步进es中。
下载:

将下载好的压缩包解压后,进入到config目录,编写采集配置文件
新建一个global_search.conf文件,打开编辑
input {
jdbc {
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_driver_library => "D:/logstash-7.17.28/dbdrivers/mysql-connector-j-8.0.31.jar"
jdbc_connection_string => "jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&allowMultiQueries=true&useInformationSchema=true"
jdbc_user => "root"
jdbc_password => "root"
# 关键:添加 table_name 字段标记来源
statement => "SELECT *, 'mytablename' AS table_name FROM mytablename"
schedule => "*/5 * * * *"
}
}
添加input部分,数据来源部分,这里以mysql数据库为例,jdbc_driver_library为数据库位置,需要自己手动添加对应驱动。statement,具体查询,一个input对应一个表,如果多表的话,可以添加多个input模块。scheldule,定时执行,logstash还可以配置增量,这里以简单定时任务举例。
添加filter过滤模块(可选)
filter {
#将其转换为字符串以确保 ES document_id 兼容性。
mutate {
convert => { "id" => "string" }
}
}
最后添加output,输出模块,输出到es里面
output {
elasticsearch {
hosts => ["localhost:9200"]
# 所有数据都发送到 global-search 索引
index => "global-search"
# 构造唯一的 document_id: [表名]_[主键值]
document_id => "%{[table_name]}_%{id}"
# 1. 模板名称
template_name => "global_template"
# 2. 模板文件路径
template => "D:/logstash-7.17.28/config/template.json"
# 3. 模板覆盖:确保 Logstash 覆盖任何旧的同名模板
template_overwrite => true
}
# stdout { codec => rubydebug }
}
hosts:es服务地址
index:具体存放数据的索引位置
document_id:文档id,这里采用tablename+id来组成文档唯一id
template_name:模版名称,用与数据格式映射转换,这里采用动态模版配置,提前将ik分词器配置到具体列里面
下面开始创建模版文件,同一目录下,创建template.json文件,点击编辑:
{
"index_patterns": ["global-search"],
"settings": {},
"mappings": {
"dynamic_templates": [
{
"name_field_template": {
"match": "name",
"mapping": {
"type": "text",
"analyzer": "ik_max_word",
"search_analyzer": "ik_smart",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
{
"strings_as_keywords": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
],
"properties": {
"table_name": { "type": "keyword" },
"id": { "type": "integer" }
}
}
}
这里面配置了name字段为ik分词器,模版对应的索引为global-search,注意与global_search.conf里面的index对应上。
然后进入bin目录,打开cmd,输入logstash.bat -f ../config/global_search.conf,启动服务。等服务启动成功,打开kibana可视化界面

点击devtool,在命令行界面输入
GET /_template/global_template
如果模版格式合适,logstash在启动是会自动上传模版,这里会成功搜索到。
返回数据中含有:
"mappings" : {
"dynamic_templates" : [
{
"name_field_template" : {
"mapping" : {
"search_analyzer" : "ik_smart",
"analyzer" : "ik_max_word",
"type" : "text",
"fields" : {
"keyword" : {
"ignore_above" : 256,
"type" : "keyword"
}
}
},
"match" : "name"
}
},
可以看到name字段成功设置了ik分词器,模版上传成功。等logstash指定定时任务的时候,会自动创建模版里面配置的索引,无需手动创建索引。
数据同步后,可以通过kibana来进行查看。

打开StackManagement,点击index Managemet,数据正确同步后,自动创建的索引在这里面可以查到。

然后点击Index Patterns,点击右上角的create

Name输入和索引名一样的名称,global-search,右边可以看到具体对应的索引。点击Timestamp field选择@timestamp,Create index pattern进行创建。

创建完后再Home列下选择Discover。

选择我们刚创建的,可以看到所有数据,总数和某一时间es数据入库情况。
4.metricbeat 安装及配置
如果还想搭建一个可以监控logstash等服务运行状态的,可以安装这个服务,该服务主要用于监控其他各服务状态。
下载参考上面其他服务👆
在metricbeat目录下,创建logstash-xpack.yml文件
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/master/metricbeat-module-logstash.html
- module: logstash
metricsets:
- node
- node_stats
xpack.enabled: true
period: 10s
hosts: ["http://localhost:9600"]
#username: "user"
#password: "secret"
添加上面的配置后,运行如下命令,使得配置生效,hosts:logstash的端口地址,如果没有特别设置,默认就是9600端口。
./metricbeat modules enable logstash-xpack
编辑metricbeat.yml文件
output.elasticsearch:
# Array of hosts to connect to.
hosts: ["127.0.0.1:9200"]
添加es服务地址后保存退出。
然后启动metricbeat服务
./metricbeat -e
打开kibana界面,打开

该界面后,看到logstash已经被正确加载进来了。

至此,整个ELK环境算是搭建完成啦~
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)