使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana

目录

 

前言 

基础硬件 

安装DOCKER DESKTOP 

安装ECK(Elastic Cloud on Kubernetes) 

快速启动一个ES 

快速启动一个Kibana 

后续计划 


前言 

最近一个客户在使用ELK(Elasticsearch、Logstash 和 Kibana)作为企业的日志平台,之前我们的.NET程序使用的是 Application Insights作为日志分析和管理的平台。这次客户要求完全on-premise部署,所以趁机研究一下近一些年很红的ES。 

基础硬件 

由于目前休假中,就计划使用自己的笔记本快速搭建一个环境供研究。机器硬件和OS配置如下: 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第1张图片

 

 

安装DOCKER DESKTOP 

大概了解了一下,因为主要的目标是了解ES,所以最后觉得采用在kubernetes中安装。本机(windows10)安装最简单的方式就是使用docker desktop了,它可以启动一个Kubernetes环境,并且可以随时Reset。这个在练手时非常有用。 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第2张图片

 

这次使用的Kubernetes时1.19.7的版本,在settings中可以启动或者随时reset环境 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第3张图片

安装ECK(Elastic Cloud on Kubernetes) 

Elastic Cloud on Kubernetes 可以快速的帮助我们在Kubernetes中搭建ES或者KB,所以首先安装ECK。目前ECK最新版本(1.5.0)支持如下: 

kubectl 1.11+ 

Kubernetes 1.12+ or OpenShift 3.11+ 

Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS), and Amazon Elastic Kubernetes Service (EKS) 

Elasticsearch, Kibana, APM Server: 6.8+, 7.1+ 

Enterprise Search: 7.7+ 

Beats: 7.0+ 

1. 安装很简单,输入以下命令即可完成安装 

kubectl apply -f https://download.elastic.co/downloads/eck/1.5.0/all-in-one.yaml 

 

2. 查看日志 

kubectl -n elastic-system logs -f statefulset.apps/elastic-operator 

 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第4张图片

 

快速启动一个ES 

在官网上有一些sample,足够用于初步的学习。我做了一些调整。 

1. 首先准备一个yaml文件 

这里主要是调整了storageClassName 为 hostpath,因为我用的是本地的Docker Desktop;另外因为我打算最终使用本地的应用直接访问,所以Http这里我使用了LoadBalancer而不是默认的ClusterIP。 

apiVersion: elasticsearch.k8s.elastic.co/v1
kind: Elasticsearch
metadata:
  name: bpm-es-cluster
spec:
  version: 7.12.1
  http:
    service:
      spec:
        type: LoadBalancer
  nodeSets:
  - name: default
    count: 1
    volumeClaimTemplates:
    - metadata:
        name: elasticsearch-data
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: hostpath
    config:
      node.store.allow_mmap: false

 

2. 部署到Kubernetes中 

kubectl apply -f bpm-es-cluster.yaml

3. 查看状态(需要等一会儿才会变成green) 

kubectl get elasticsearch 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第5张图片

4. 目前可以直接访问本地的9200端口,注意是https。因为并没有配置一个有效证书,所以会有警告提示。对于之后的程序访问也需要做一些特殊处理,目前先不考虑换证书的问题。 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第6张图片

 

5. 忽略掉证书问题,继续访问会提示输入用户名和密码。 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第7张图片

6. 用户名我们没有调整,默认是elastic,密码需要从secret中获取 

kubectl get secret bpm-es-cluster-es-elastic-user -o go-template='{
    {.data.elastic | base64decode}}' 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第8张图片

7. 输入账号和密码后显示如下 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第9张图片

 

快速启动一个Kibana 

1. 准备一个yaml文件,这里也使用了LoadBalancer。elasticsearchRef里的名称和之前创建的ES对应。 

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: bpm-kibana-cluster
spec:
  version: 7.12.1
  count: 1
  elasticsearchRef:
    name: bpm-es-cluster
  http:
    service:
      spec:
        type: LoadBalancer

 2. 部署 

kubectl apply -f bpm-kibana-cluster.yaml 

3. 查看状态,需要等一会才会从red变成green。 

kubectl get kibana 

 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第10张图片

4. 通过浏览器访问本地5601端口,注意这里还是https,依然会有证书问题。账号和密码和之前ES的一样,账号是elastic,密码还是从secret中获取到的那个。 

使用ELK搭建日志平台(一):本地安装Elasticsearch 和 Kibana_第11张图片

 

后续计划 

  1. 准备一个应用程序,将Log写入ES中 

  2. 通过Kibana对Log进行查询分析 

  3. 设计一个简单的 Dashboard 和 Alert 

  4. 用Log来计量应用的调用链 

  5. 研究Logstash 

  6. ECK的配置问题,如证书等  

下一篇 使用ELK搭建日志平台(二):使用Serilog写入日志到Elasticsearch中

你可能感兴趣的:(ELK研究,elk)