Elasticsearch+Logstash+Kibana+Head安装
公司搭建了一些开源的运维工具,包括Zabbix,Jumpserver,ELK,Grafana等,主要技术架构如下,
由于数据量不大,没有采用Redis缓存,数据由Beats采集器直接传输到Logstash进行数据过滤,再发送到Elasticsearch存储,使用Grafana数据展示
-
Beats是轻量化数据采集器,采用go编写,目的是替代logstash采集数据,减小客户端负载。beats官网下载
组件 采集对象 Filebeat 日志文件(常用) Packetbeat 网络流量 Winlogbeat windows事件日志 Metricbeat 服务指标 Heartbeat 健康检查 Auditbeat 审计数据 Functionbeat 无服务器环境中部署 Functionbeat,以收集云服务生成的日志和指标 Journalbeat 用于从systemd日志转发和集中日志数据 -
Logstash:数据过滤组件,里面有丰富的插件,主要包括三个模块:input(数据输入),filter(数据过滤),output(数据输出)。参考Logstash官方文档
-
Elasticserch:全文索引搜索+存储引擎。参考Elasticsearch官方文档
- Kibana:可视化平台,可展示、检索、管理Elasticsearch中的数据。参考Kibana官方文档
一、环境准备
关闭防火墙和SELinux
setenforce 0 #临时关闭SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config #永久关闭SELinux(重启生效) systemctl stop firewalld.service #临时关闭防火墙 systemctl disable firewalld.service #永久关闭防火墙修改linux最大打开文件数
vim /etc/security/limits.conf
* - nofile 655360 * - memlock 655360 * - stack 655360 * - nproc unlimited #在末尾添加以下两行 * hard nofile 655360 * soft nofile 655360vim /etc/sysctl.conf
vm.max_map_count = 655360sysctl -p
vim /etc/systemd/system.conf
DefaultLimitNOFILE=655360 DefaultLimitNPROC=655360安装java
yum install -y epel-release yum install -y java-1.8.0-openjdk.x86_64 #或者rpm安装 #rpm -ivh jdk-8u291-linux-x64.rpm创建elk用户
groupadd elk useradd elk -g elk创建数据文件夹
mkdir -pv /opt/elk/{data,logs} chown -R elk:elk /opt/elk/下载ELK
Elasticsearch官网下载
Logstash官网下载
Kibana官网下载
Head插件下载
Node.js下载
Jdk下载
二、安装Elasticsearch
压缩包传至opt目录
cd /opt/ tar -xzvf elasticsearch-7.13.3-linux-x86_64.tar.gz mv elasticsearch-7.13.3-linux-x86_64.tar.gz elasticsearch #重命名 chown -R elk.elk elasticsearch编辑es配置文件
vim /opt/elasticsearch/config/elasticsearch.yml
cluster.name: ELK node.name: node1 node.master: true node.data: true network.host: 0.0.0.0 http.port: 9200 path.data: /opt/elk/data path.logs: /opt/elk/logs #内存 bootstrap.memory_lock: false bootstrap.system_call_filter: false cluster.max_shards_per_node: 900000 indices.query.bool.max_clause_count: 10240 indices.fielddata.cache.size: 40% indices.memory.index_buffer_size: 40% #安装head插件使用 http.cors.enabled: true http.cors.allow-origin: "*" #http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type transport.tcp.port: 9300 cluster.initial_master_nodes: ["192.168.0.170:9300"] discovery.seed_hosts: ["192.168.0.170:9300"] #X-Pack安全功能 #xpack.ml.enabled: false #xpack.security.enabled: true #xpack.security.transport.ssl.enabled: true #xpack.security.authc.api_key.enabled: true启动elasticsearch
cd /opt/elasticsearch/bin; nohup ./elasticsearch &
查看进程
netstat -lntp | grep 9200
页面验证
http://192.168.0.170:9200
三、安装Logstash
压缩包传至opt目录
cd /opt/ tar -xzvf logstash-7.13.3-linux-x86_64.tar.gz mv logstash-7.13.3-linux-x86_64.tar.gz logstash #重命名配置文件后续根据不同的监控项目再做修改
四、安装Kibana
压缩包传至opt目录
cd /opt/ tar -xzvf kibana-7.13.3-linux-x86_64.tar.gz mv kibana-7.13.3-linux-x86_64.tar.gz kibana #重命名编辑kibana配置文件
vim /opt/kibana/config/kibana.yml
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://0.0.0.0:9200"] elasticsearch.username: "USERNAME" elasticsearch.password: "PASSWOED" i18n.locale: zh-CN xpack.ml.enabled: false xpack.apm.enabled: false xpack.reporting.enabled: false xpack.graph.enabled: false #xpack.security.enabled: true #xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"启动kibana
cd /opt/kibana/bin; nohup ./kibana &
查看进程
netstat -lntp | grep 5601
页面验证
http://192.168.0.170:5601
四、安装Head插件(可选)
安装node.js
tar -zxvf node-v16.4.2-linux-x64.tar.gz mv node-v16.4.2-linux-x64 /usr/local/node配置生效
vim /etc/profile
export NODE_HOME=/usr/local/node export PATH=$PATH:$NODE_HOME/binsource /etc/profile
验证版本
node -v; npm -v
压缩包传至opt目录
cd /opt git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install grunt --save npm install -g grunt --registry=https://registry.npm.taobao.org npm install编辑head配置文件
vim /opt/elasticsearch-head/Gruntfile.js
connect: { server: { options: { hostname: '0.0.0.0', port: 9100, base: '.', keepalive: true } } }vim /opt/elasticsearch-head/_site/app.js
init: function(parent) { this._super(); this.prefs = services.Preferences.instance(); this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.0.170:9200"; if( this.base_uri.charAt( this.base_uri.length - 1 ) !== "/" ) { // XHR request fails if the URL is not ending with a "/" this.base_uri += "/"; }修改es配置文件
vim /opt/elasticsearch/config/elasticsearch.yml
#安装head插件使用 http.cors.enabled: true http.cors.allow-origin: "*" #配置了密码验证需要开启下行 #http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type启动head服务
cd /opt/elasticsearch-head/node_modules/grunt/bin; nohup ./grunt server &
查看端口号
netstat -lntp | grep 9100
页面验证
http://192.168.0.170:9100/
如果开启了密码验证,则需要输入
http://192.168.0.170:9100/?auth_user=elastic&auth_password=PASSWORD