Yan.G WebServer Dev Engineer

ELK 搭建记录

2020-05-01

ELk 搭建记录

ELK 分别对应三个应用分别为

  • Elasticsearch 为数据库,提供优秀的查询性能和查询语法
  • Logstash 为数据加工层,对客户端提供的日志进行过滤等二次加工
  • Kibana 为呈现层,提供WEB界面,可查询日志,画各种统计面板
  • 在先分布式的服务器部署上,通常还会加一个数据转发层(logstash太大,不适合在所有服务器上部署文中采用的方式为 FileBeat)

    FIleBeat Go 语言编写的日志采集上报软件,性能高,体积小,适合大规模部署

  • 对于画板要求很高的小伙伴,同时可以采用 Grafana,提供的面板更多样,维度更高

安装准备

CentOS 7 操作系统 Supervisor 作为守护进行进程管理

安装Java 运行环境

  • 下载页面 https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

添加Java 环境变量

sudo mkdir /usr/local/java
sudo mv jdk-11.0.6 /usr/local/java/

sudo vim /etc/profile

export JAVA_HOME=/usr/local/java/jdk1.8.0_241
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile

更改系统资源配置

sudo vim /etc/sysctl.conf 
vm.max_map_count=655360

sudo sysctl -p

sudo vim /etc/security/limits.conf

# End of file
root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096

创建启动用户

groupadd elasticsearch
useradd elasticsearch -g elasticsearch
chown -R elasticsearch:elasticsearch /opt/elk

Elasticsearch

  • 下载页面 https://www.elastic.co/cn/downloads/elasticsearch

解压下载软甲并移动到 /opt/elk 目录

修改配置

sudo vim config/elasticsearch.yml
## 添加配置文件是插件可以跨域访问
## enable origin request
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"

运行测试&添加守护进程

./bin/elasticsearch -d -p pid
# 查看是否有报错,请求下面地址,查看是否正常运行
http://127.0.0.1:9200
Ctrl + C
sudo vim /etc/supervisor/conf.d/elk.ini

[program:elasticsearch]
command=/opt/elk/elasticsearch-6.4.2/bin/elasticsearch -p pid
numprocs=1
strout_events_enable=true
strerr_events_enable=true

supervisor update
supervisor status

数据页面

  • 查看索引页面 http://127.0.0.1:9200/prod-nginx-access/_search?pretty

  • 查看索引健康状态 http://127.0.0.1:9200/_cat/indices/?v

  • 查看具体状态 http://127.0.0.1:9200/_cluster/health?pretty=true

  • 处理黄色的健康状态

    curl -H "Content-Type: application/json" -XPUT 'http://127.0.0.1:9200/_settings' -d '
    {
      "index" : {
          "number_of_replicas" : 0
      }
    }'
    

Kibana

  • 下载页面 https://www.elastic.co/cn/downloads/kibana

解压下载软甲并移动到 /opt/elk 目录

修改配置

vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://127.0.0.1:9200"

运行测试&添加守护进程

./bin/kibana
# 查看是否有报错,请求下面地址,查看是否正常运行
http://127.0.0.1:5601
Ctrl + C
sudo vim /etc/supervisor/conf.d/elk.ini

[program:kibana]
command=/opt/elk/kibana-6.4.2-linux-x86_64/bin/kibana
stdout_events_enable=true
smcrypt.htderr_events_enable=true

supervisor update
supervisor status

Logstash

  • 下载页面 https://www.elastic.co/cn/downloads/kibana

解压下载软甲并移动到 /opt/elk 目录

运行测试&添加守护进程

./bin/logstash -f input/logstash.conf
# 查看是否有报错
Ctrl + C
sudo vim /etc/supervisor/conf.d/elk.ini

[program:logstash]
command=/opt/elk/logstash-6.4.2/bin/logstash -f /opt/elk/logstash-6.4.2/input
strout_events_enable=true
strerr_events_enable=true

supervisor update
supervisor status
  • 所有配置都可以放到一个目录中 logstash -f 可以读取目录中所有配置
    监控错误
  • 可以安装插件 logstash-output-exec ```bash ./bin/logstash-plugin install logstash-output-exec


### 访问权限控制
我们通过nginx的权限控制控制 Kibana,其他数据接口不暴露
```bash
sudo yum install -y httpd
sudo mkdir -p /data/nginx/db/
sudo htpasswd -c /data/nginx/db/passwd.db user_name
=> user_password

sudo vim /etc/nginx/conf.d/kibana.conf 
server {
    listen       80;
    server_name  elk.qjy-edu.com;
    client_max_body_size  100m;
    client_body_buffer_size 512k;

    location / {
	auth_basic "secret";
	auth_basic_user_file /data/nginx/db/passwd.db;
        proxy_pass      http://127.0.0.1:5601/;
        proxy_redirect  off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     }
}

nginx -s reload

配置监控数据

完成面上的安装后,就要开始具体调试监控信息了(实际就是调试logstash 信息) 具体请参见 elk-php、elk-nginx


Similar Posts

上一篇 mysql JSON

Content