저자: 레이 징
장면
이제 SLS의 ES 호환성을 통해 Kibana를 사용하여 SLS 데이터를 쉽게 쿼리하고 시각화할 수 있습니다. ES에서 SLS로 마이그레이션하는 사용자는 원래 Kibana 사용 습관을 계속 유지할 수 있습니다. 다음은 Kibana를 통해 SLS에 액세스하는 방법을 보여줍니다.
지침
배포 아키텍처
여기서 파란색 부분은 클라이언트 배포가 필요한 구성 요소입니다.
- Kibana는 시각화에 사용됩니다.
- 프록시는 Kibana 요청을 구별하고 SLS 관련 요청을 SLS의 ES 호환 인터페이스로 전달하는 데 사용됩니다.
- Elasticsearch는 Kibana의 메타를 저장하는 데 사용됩니다.
잠깐, 여기서 ES가 왜 필요한가요?
그 이유는 SLS의 Logstore가 업데이트를 지원하지 않고, 많은 Meta 클래스 데이터가 SLS에 적합하지 않기 때문입니다.
Kibana에는 Kibana의 차트 구성, 인덱스 패턴 구성 등 저장할 메타데이터가 많이 있습니다.
따라서 ES 인스턴스를 배포해야 합니다. 이 ES 인스턴스는 Kibana의 메타데이터만 저장하므로 리소스 사용량이 매우 적습니다.
배포 프로세스
docker-compose를 사용하여 배포
관련 준비
docker 및 docker compose를 설치한 후 다음 단계를 podman compose에도 적용할 수 있습니다.
관련 디렉토리 생성
mkdir sls-kibaba # 创建一个新的目录
cd sls-kibaba # 进入
mkdir es_data # 创建一个目录用于放es的数据
구성
sls-kibana 디렉터리에 docker-compose.yml 파일을 만듭니다.
내용은 다음과 같습니다. (다음 표시는 여기서 수정해야 할 곳입니다. 실제 상황에 따라 수정하시기 바랍니다.)
version: '3'
services:
es:
image: elasticsearch:7.17.3
environment:
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms2G -Xmx2G"
- ELASTIC_USERNAME=elastic
- ELASTIC_PASSWORD=ES密码 # 此处请修改
- xpack.security.enabled=true
volumes:
- ./data:/usr/share/elasticsearch/data
networks:
- es717net
kproxy:
image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:1.9d
depends_on:
- es
environment:
- ES_ENDPOINT=es:9200
- SLS_ENDPOINT=https://etl-dev.cn-huhehaote.log.aliyuncs.com/es/ # 此处请修改,规则为 https://${project名}.${slsEnpoint名}/es/
- SLS_PROJECT=etl-dev # 此处请修改
- SLS_ACCESS_KEY_ID=ALIYUN_ACCESS_KEY_ID # 此处请修改, 确保有读logstore的权限
- SLS_ACCESS_KEY_SECRET=ALIYUN_ACCESS_KEY_SECRET # 此处请修改为真实accessKeySecret
networks:
- es717net
kibana:
image: kibana:7.17.3
depends_on:
- kproxy
environment:
- ELASTICSEARCH_HOSTS=http://kproxy:9201
- ELASTICSEARCH_USERNAME=elastic
- ELASTICSEARCH_PASSWORD=ES密码 # 此处请修改(跟前面设置的ES密码相同)
- XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true
ports:
- "5601:5601"
networks:
- es717net
networks:
es717net:
ipam:
driver: default
로컬 Kibana 서비스를 시작합니다.
docker compose up -d
Docker Compose 시작 상태를 확인하세요.
docker compose ps
키바나 방문
브라우저를 사용하여 http://$( Kibaba 배포 IP 주소):5601에 액세스하고 계정과 비밀번호를 입력하여 Kibana에 로그인합니다.
인덱스 패턴 구성
스택 관리 선택:
인덱스 패턴 탭을 클릭합니다. 인덱스 패턴 목록에 데이터가 표시되지 않는 것은 정상적인 현상입니다. 로그 서비스의 로그 저장소는 Kibana의 인덱스 패턴에 매핑되며 수동으로 생성해야 합니다. 프롬프트 상자에서 숨겨진 인덱스 또는 시스템 인덱스에 대한 인덱스 패턴 생성을 클릭합니다.
인덱스 패턴 생성 페이지에서 이름 형식은 ${project}.${logstore}입니다. 비율은 완전히 채워야 하며 * 일치는 지원되지 않습니다.
Create Index Pattern을 클릭하여 Pattern 생성을 완료한 후 Discover를 입력하여 데이터를 쿼리합니다.
로그 저장소 쿼리
Kibana의 쿼리 상자에서 KQL과 Lucene을 선택할 수 있으며, SLS의 ES 호환 인터페이스가 모두 지원됩니다.
간단한 호스트 쿼리:
일부 복잡한 쿼리 및 필터를 쿼리할 수 있습니다.
시각적 차트
그렇다면 쿼리 외에도 Kibana를 시각화에 사용할 수 있나요? 확신하는! 대시보드를 선택합니다.
입력 후 대시보드 생성을 클릭하면 차트가 생성됩니다.
가로축, 세로축의 필드와 통계방법을 설정하여 원하는 그래프를 쉽게 생성할 수 있습니다.
예를 들어, 가장 간단한 히스토그램은 요청된 방문 수를 계산하는 히스토그램으로, 가로 축은 시간, 세로 축은 기록 수입니다.
이제 각 열의 상태를 확인하고 싶습니다. 분류 기준 필드를 상태로 선택할 수 있습니다.
자주하는 질문
1) Kibana의 SLS에서 Logstore를 볼 수 없는 이유는 무엇입니까?
SLS의 Logstore는 Kibana의 Index Pattern을 통해 쿼리되며 SLS의 Logstore는 수동으로 Index Pattern을 생성하여 생성해야 합니다.
2) Kibana에서 인덱스 패턴을 생성할 때 입력이 없을 때 프롬프트가 표시되지 않는 이유는 무엇입니까?
이는 정상적인 현상입니다. 왼쪽에 올바른 ${project}.${logstore}(${project} 및 ${logstore}를 실제 값으로 바꿔야 함)를 입력하면 다음이 표시됩니다.
3) Kibana는 인덱스 패턴을 생성할 때 * 와일드카드를 지원합니까?
와일드카드는 지원되지 않으며 ${project}.${logstore}는 일치하도록 etl-dev.accesslog와 같이 완전히 채워야 합니다.
4) Kibana에서 Logstore의 Index Pattern을 생성할 때 오른쪽에 프롬프트가 표시되지 않는 이유는 무엇입니까?
여러 가지 가능성이 있습니다:
- SLS의 ES 호환 주소가 잘못되었습니다. kproxy에서 구성할 때 규칙은 https://${project name}.${slsEnpoint name}/es/ 입니다 . 2. 해당 accessKeyId 및 accessKeySelect에는 SLS Logstore에 접근할 수 있는 권한(읽기 권한)이 없습니다.
- 5) Kibana에서 액세스하고 싶은 SLS 프로젝트가 여러 개 있습니다. 이 작업을 수행할 수 있습니까?
예, 핵심은 kproxy 구성에 있습니다. SLS_PROJECT, SLS_ENDPOINT, SLS_ACCESS_KEY_ID, SLS_ACCESS_KEY_SECRET는 첫 번째 프로젝트와 관련된 변수 이름입니다. 두 번째 프로젝트부터 관련 변수 이름에 SLS_PROJECT2, SLS_ENDPOINT2, SLS_ACCESS_KEY_ID2, SLS_ACCESS_KEY_SECRET2와 같은 숫자 접미사를 추가해야 합니다. 후속 프로젝트의 AccessKey가 첫 번째 프로젝트와 동일한 경우 해당 프로젝트에 해당하는 AccessKey 구성을 생략할 수 있습니다.
예를 들어, Kibaba가 다른 프로젝트를 확인하고 두 번째 kproxy로 확인한다고 가정하면 다음과 같습니다.
- SLS_ENDPOINT2=https://etl-dev2.cn-huhehaote.log.aliyuncs.com/es/
- SLS_PROJECT2=etl-dev2
- SLS_ACCESS_KEY_ID2=etl-dev2对应的accessKeyId #如果和SLS_ACCESS_KEY_ID2一样可以不加
- SLS_ACCESS_KEY_SECRET2=etl-dev2对应的accessKeyKey #如果和SLS_ACCESS_KEY_ID2一样可以不加
요약
이 문서에서는 Kibana를 사용하여 쿼리 및 분석을 위해 SLS ES 호환 인터페이스에 연결하는 방법을 보여줍니다. Kibana의 쿼리 및 시각화 기능을 정상적으로 연결하고 사용할 수 있습니다. 다음 두 가지 상황에 적합합니다.
- 이전 사용 습관이 Kibana이고 로그가 이미 Alibaba Cloud SLS에 존재하는 경우 이 솔루션을 사용하여 연결할 수 있습니다.
- 현재 표준 ELK 솔루션을 사용하고 있지만 ES를 사용할 때 유지 관리 작업이나 튜닝에 지쳤다면 Alibaba Cloud SLS 솔루션(C++ 하위 계층, 서버리스, 저비용, ES 호환)을 사용해 볼 수 있습니다.
여러분의 이용을 기대합니다.
참조 문서:
-
SLS 호환 ES 소개
-
Kibana를 사용하여 ES 호환 인터페이스 https://help.aliyun.com/zh/sls/user-guide/use-kibana-to-access-the-elasticsearch- Compatible-api-of-log-service?spm에 연결 =a2c4g.11186623.0.0.27bc54e3bgGvsa#cdb8c7a157t0v