꼬반 Blog

[모니터링] influxdb 2과 grafana 연동 시 과거 alias by 대체하기

과거 influxdb 1에서 grafana 연동 후 사용하는 쿼리는 influxql 기반으로 호출을 하였었고 호출한 데이터의 legend를 위와 같이 ALIAS BY로 재정의 할 수 있었다. 그러나 최근 influxdb 2 기반에서는 사용하는 쿼리가 flux로 변경이 되었고 grafana 에서 과거와 같이 alias by 를 사용할 수 없어 대체 방법을 찾아보았고 아래와 같은 방법으로 사용하면 된다. 오른쪽의 Overrides 탭을 선택하여 Fields with name 추가 후 변경하고자 하는 Legend 를 선택하고 Add override property를 클릭하여 Standard options > Display name을 추가한 뒤 사용하고자 하는 필드명을 입력한다. 끝. 참고사이트 : 정규표현식의..

Read More

Nginx, GeoIP, Grok Pattern, InfluxDB, Telegraf, WroldMap, Grafana 연동 삽질기

각 서비스의 접속 지역을 확인하기 위해 Nginx 를 1.13.3 으로 소스 재컴파일을 하였고 GeoIP Module 을 설치하였으며 (이와중에 dependancy 로 설치된 nginx 때문에 소스 컴파일 한 nginx 가 영향을 받아 스크립트가 정상동작 하지 않는 부분이 발생.. 하여 system service daemon 을 수정하여 정상 동작 확보 - bin 파일을 rpm 의 nginx 가 아닌 source build 된 nginx 로 실행 위치 변경) 이후 grafana 에 world map plugin 을 설치하고 지도에 표시하느라 쿼리와 telegraf, influxdb 에 nginx log 넣느라 삽질 삽질 하다가 어 됬다! 하고 좋아했다. (지난번 포스트) 그런데 몇일 후 보니.. 다시 정..

Read More

Nginx, GeoIP, Telegraf, Influxdb, Grafana 연동!

회사에서 사용하고 있는 웹 서비스의 구성은 간단하게 다음과 같다. Nginx (리버스 프록시 서버) --- WAS (각 어플리케이션 서버) --- 백엔드 (DB, 스토리지 등) 여기서 유저는 가장 상단의 Nginx 서버에만 접근이 가능하다. 이러한 구성은 기본적으로 보안이나 관리 등에 용이하다. 그리고 각 서버들의 상태 모니터링 및 로그 수집을 위해 2가지 시스템을 혼용하여 사용하는데 ELK 와 TICK 이 바로 그것이다. ELK는 Elasticsearch, Logstash, Kibana 를 지칭하는데 과거 버전에서 5.x 버전으로 업그레이드를 하면서 이 로그 수집방식이 Logstash-forward 대신에 beat 로 대체 되었다. 그래서 각 단말에 beat가 서버의 로그를 수집하여 Elasticsea..

Read More

[모니터링] influxdb 2과 grafana 연동 시 과거 alias by 대체하기

과거 influxdb 1에서 grafana 연동 후 사용하는 쿼리는 influxql 기반으로 호출을 하였었고 호출한 데이터의 legend를 

위와 같이 ALIAS BY로 재정의 할 수 있었다.

 

그러나 최근 influxdb 2 기반에서는 사용하는 쿼리가 flux로 변경이 되었고 grafana 에서 과거와 같이 alias by 를 사용할 수 없어 대체 방법을 찾아보았고 아래와 같은 방법으로 사용하면 된다.

오른쪽의 Overrides 탭을 선택하여 Fields with name 추가 후 변경하고자 하는 Legend 를 선택하고 

Add override property를 클릭하여 Standard options > Display name을 추가한 뒤 사용하고자 하는 필드명을 입력한다.

 

끝.

 

참고사이트 : 정규표현식의 개념과 패턴 사용법 총정리 · Wireframe (soooprmx.com)

 

정규표현식의 개념과 패턴 사용법 총정리 · Wireframe

정규 표현식은 텍스트 내에서 특정한 규칙에 따른 문자열이 나타나는 범위를 검색하는 기법으로 텍스트를 다룰 때 널리 사용되며, 특히 텍스트 편집기에서 찾기/바꾸기와 관련해서 정규식을 어

soooprmx.com

참고사이트 : RegExr: Learn, Build, & Test RegEx

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

참고사이트 : range() function | Flux 0.x Documentation (influxdata.com)

 

range() function | Flux 0.x Documentation

Thank you for your feedback! Let us know what we can do better:

docs.influxdata.com

 

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

Nginx, GeoIP, Grok Pattern, InfluxDB, Telegraf, WroldMap, Grafana 연동 삽질기

각 서비스의 접속 지역을 확인하기 위해 Nginx 를 1.13.3 으로 소스 재컴파일을 하였고


GeoIP Module 을 설치하였으며 (이와중에 dependancy 로 설치된 nginx 때문에 소스 컴파일 한


nginx 가 영향을 받아 스크립트가 정상동작 하지 않는 부분이 발생.. 하여 system service daemon 을


수정하여 정상 동작 확보 - bin 파일을 rpm 의 nginx 가 아닌 source build 된 nginx 로 실행 위치 변경)


이후 grafana 에 world map plugin 을 설치하고 지도에 표시하느라 쿼리와 telegraf, influxdb 에 


nginx log 넣느라 삽질 삽질 하다가 어 됬다! 하고 좋아했다. (지난번 포스트)


그런데 몇일 후 보니.. 다시 정상적으로 안나온다 ㅠㅠ What!!!


influxdb 쪽 로그를 보니 사용자 태그로 설정한 geoip_country_code 가 nginx 로그 상에는


아무런 문제가 없지만 inflxudb 로 들어가면 앞에 /"KR/" 형태가 붙는걸 발견..


헐.. 처음엔 안그랬는데?!?!


이걸 해결하려고 nginx log format 을 바꿔보고 telegraf 에서 grok pattern 을 이거저거 수정해보았는데


원인은 일반적인 fields 는 " " 안의 값만 input 으로 받는데 tag로 설정한 값은 " " 값도 같이 


인식해서 db에 넣는다. 덕분에 /" /" 가 같이 붙는것..


그래서 nginx log format 에서 tag 로 사용할 $geoip_country_code 는 " " 를 빼고 그냥 사용해주고


telegraf에서 %{type:tag_name:tag} 로 설정해서 테스트 하니 다시 정상적으로 db로 입력이 된다.


이제야 다시 맵에서 정상적으로 확인이 된다...


원인을 찾아봐야겠는데.. 


https://github.com/elastic/logstash/blob/v1.4.2/patterns/grok-patterns


여길 참고하면 기본 tag로 지정되는 verb 값은 "" 안에 있지만 정규식으로 추출해서 쓰는 문법으로 추정된다.


으음 아직 내공이 부족하다 ㅠㅠ



반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

Nginx, GeoIP, Telegraf, Influxdb, Grafana 연동!

회사에서 사용하고 있는 웹 서비스의 구성은 간단하게 다음과 같다.


Nginx (리버스 프록시 서버) --- WAS (각 어플리케이션 서버) --- 백엔드 (DB, 스토리지 등)


여기서 유저는 가장 상단의 Nginx 서버에만 접근이 가능하다. 이러한 구성은 


기본적으로 보안이나 관리 등에 용이하다.


그리고 각 서버들의 상태 모니터링 및 로그 수집을 위해 2가지 시스템을 혼용하여 사용하는데


ELK 와 TICK 이 바로 그것이다.


ELK는 Elasticsearch, Logstash, Kibana 를 지칭하는데 과거 버전에서 5.x 버전으로 


업그레이드를 하면서 이 로그 수집방식이 Logstash-forward 대신에 beat 로 대체 되었다.


그래서 각 단말에 beat가 서버의 로그를 수집하여 Elasticsearch 로 보내고 저장되며 Kibana를 통해


모니터링 및 대시보드를 통한 Visualize 가 가능하다.


Elasticsearch 와 Kibana 는 Docker와 Docker-composer 를 통해 관리된다. 


TICK 은 Telegraf, Influxdb, Chronograf, Kapacitor를 의미하며 각각 수집, 시계열DB, 모니터링 및 관리, 알람


의 기능을 가지고 있다.


그리고 이 데이터들은 Grafana 라는 Visualize platform 에서 활용이 가능하다.


이번에 한 작업은 다음의 목적을 가지고 진행되었다.


1. 특정 사이트의 접속 로그에 대한 모니터링이 필요

2. 접속 지역에 대한 확인이 가능할 것.

3. Nginx access log 에는 기본 apache log + agent, response time 이 붙은 custom log 이며 접속자의 IP가

   확인이 된다. 이 IP를 IP조회 사이트에서 조회하여 지역이 확인이 가능하나 불편하다.

4. Dashboard 를 통해 바로 확인할 방법이 필요.


그래서 위의 목적을 달성하기 위해 다음과 같은 작업을 진행 하였다.


1. 기존 리버스 프록시 서버인 Nginx 서버에 GeoIP Module 연동

  1.1. nginx-module-geoip 를 설치

  1.2. 설정 파일에 load module 후 테스트 -> 로드 X (버전 문제 nginx geoip version 1013003 

        instead of 1013000, 즉 현재 nginx 는 1.13.0 버전 이고 모듈은 1.13.3 버전

  1.2. 기존 사용하던 1.13.0 버전을 1.13.3 버전으로 재컴파일 (rpm, yum 버전 등 build 버전은 사용하지 않음

        http2 지원등을 위해 직접 소스 컴파일, 라이브 서버에 적용 전 VM에 테스트 후 진행)

  1.3. 1.13.3 버전 설치 후 모듈 연동 테스트 -> 성공

  1.4. access log 형식에 geoip_city, geoip_region, geoip_country_code, geoip_country_code2 추가 후 확인 완료


2. Telegraf 수집 형식 변경

  2.1. 기존 logparse 에 grok matching 을 위해 필드 추가 적용 (country_code 는 2개 추가한 이유가 하나는 tag로

       지정하기 위함.)

  2.2. influxdb 에서 수집된 field, tag 에 반영 확인


3. Grafana 연동

  3.1. Grafana World Map Plugin 설치

  3.2. https://github.com/grafana/worldmap-panelhttps://github.com/grafana/worldmap-panel/issues/30

       참고하여 설정 진행

  3.3. World-Map 연동 확인




총평. 진행된 내용만 간략히 적었지만 사실 각 작업간에 많은 시행착오가 있었다. 물논 그런 시행착오가 없을 순

       없다. 각 작업 내용은 다시 한번 정리해서 추후 포스팅 해야겠다.

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post